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.
76 This manual documents (ding) Gnus 0.11. Gnus is now up to 0.29, so this
77 documentation is totally out of date. The only authoratative
78 documentation available is the source code.
81 * History:: How Gnus got where it is today.
82 * Starting Up:: Finding news can be a pain.
83 * The Group Buffer:: Treating groups.
84 * The Summary Buffer:: Reading articles.
85 * The Article Buffer:: Doing stuff to articles.
86 * Various:: General options.
87 * Customization:: Tailoring Gnus to your needs.
88 * Troubleshooting:: What you might try if things do not work.
89 * Reporting Bugs:: Bugs? What bugs?!
91 * Key Index:: Key Index.
94 Note: This is a work of fiction. Any similarity between this manual and
95 real programs is purely coincidental.
100 GNUS was written by Masanobu UMEDA. When autumn crept up in '94, Lars
101 Magne Ingebrigtsen grew bored and decided to write (ding) Gnus.
103 (ding) Gnus is based on GNUS 4.1 and includes bits and pieces by Per
104 Abrahamsen, Sudish Joseph, Felix Lee and jwz.
106 The recommended pronounciation of the name this program is "ding
107 guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
108 and "guh-noose" being grumbled and a disaffected fashion. Any irritation
109 and/or damage this name may cause you is not the responsibility of the
110 author, even though you might like to strangle him for the stupid idea.
112 "(ding)", is, of course, short for "Ding Is Not Gnus", which is a total
113 and utter lie, but who cares? (Besides, the "Gnus" in this abbreviation
114 should probably be pronounced "news" as UMEDA intended, which makes it a
115 more appropriate name, don't you think?)
118 * Compatibility:: Just how compatible is (ding) Gnus with GNUS?
119 * New Features:: A short description of all the new stuff in Gnus.
123 @section Compatibility
125 (ding) Gnus was designed to be fully compatible with GNUS. Almost all
126 key binding have been kept. More key binding have been added, of course,
127 but only in one or two obscure cases have key bindings been changed.
129 All commands have kept their names. Some internal functions have changed
132 Even though old methods of doing things are still supported, only the
133 new methods are documented in this manual. If you detect a new method of
134 doing something while reading this manual, that does not mean you have
135 to stop doing it the old way.
137 (ding) Gnus understands all GNUS startup files.
140 Overall, a casual user who hasn't written much code that depends on GNUS
141 internals should suffer no problems. If problems occur, please let me
142 know (@kbd{M-x gnus-bug}).
144 However, code that depends on the buffers looking a particular way will
145 almost invaribaly fail. For instance, the summary buffer no longer
146 displays article numbers by default.
149 @section New Features
151 The look of all buffers can be changed by setting format-like variables.
153 Local spool and several NNTP servers can be used at once. Virtual
154 groups and private mail groups are featured.
156 Gnus can use various strategies for gathering threads that have lost
157 their roots (thereby gathering loose sub-threads in one thread) or it
158 can go back and retrieve enough headers to build a complete thread.
160 Killed groups can be displayed in the group buffer, and you can read
163 Gnus can do partial updates of new articles - you do not have to
164 retrieve the entire active file just to check for new articles in a few
167 Gnus implements a sliding scale of subscribedness to groups.
169 The approach to killing has been changed. Instead of simply killing or
170 not, you can score articles for easier reading.
173 @chapter Starting Gnus
176 If your systems administrator has set thing up properly, starting Gnus
177 and reading news is extremely easy - you just type @kbd{M-x gnus}.
179 If things do not go smoothly at startup, you have to twiddle some
183 * Finding the News:: Choosing a method for getting news.
184 * First Time:: What does Gnus do the first time you start it?
185 * The Server is Down:: How can I read my mail then?
186 * New Groups:: What is Gnus supposed to do with new groups?
187 * Startup Files:: Those pesky startup files - @file{.newsrc}.
188 * Auto Save:: Recovering from a crash.
189 * The Active File:: Reading the active file over a slow line Takes Time.
190 * Startup Variables:: Other variables you might change.
193 @node Finding the News
194 @section Finding the News
196 @vindex gnus-select-method
197 The @code{gnus-select-method} variable controls how Gnus finds news.
198 This variable should be a list where the first element says "how" and
199 the second element says "where". This server is is your @dfn{local
200 server}. All other servers are @dfn{foreign servers}.
202 For instance, if you want to get your daily dosage of news from the NNTP
203 server "news.friendly.server", you'd say:
206 (setq gnus-select-method '(nntp "news.friendly.server"))
209 If you want to use a local spool, say:
212 (setq gnus-select-method '(nnspool ""))
215 If this variable is not set, Gnus will take a look at the
216 @code{NNTPSERVER} environment variable. If that isn't set either, it
217 will try to use the machine that is running Emacs as an NNTP server.
219 @vindex gnus-secondary-servers
220 You can also make Gnus prompt you interactively for the name of an NNTP
221 server. If you give a non-numerical prefix to `gnus' (ie. `C-u M-x
222 gnus'), Gnus will let you choose between the servers in the
223 @code{gnus-secondary-servers} variable (if any). You can also just type
224 in the name of any server you feel like visiting.
226 However, if you use one NNTP server regularly, and is just interested in
227 a couple of groups from a different server, you would be better
228 served by using the @code{gnus-group-browse-foreign-server} command from
229 the group buffer. It will let you have a look at what groups are
230 available, and you can subscribe to any of the groups you want to. This
231 also makes @file{.newsrc} maintenance much tidier.
233 @vindex gnus-secondary-select-methods
234 A slightly different approach is to set the
235 @code{gnus-secondary-select-methods}. The select methods listed in this
236 variable are in many ways just as local as the @code{gnus-select-method}
237 server. They will also be asked for active files during startup (if
238 that's wanted), and new newsgroups that appear from these servers will
239 be subscribed (or not) just as local groups are.
241 For instance, if you use the @code{nnmbox} backend to read you mail, you
242 would typically set this variable to
245 (setq gnus-secondary-select-methods
250 @section The First Time
252 One time has to be the first, but it doesn't have to be painful.
254 If no startup files exist, Gnus will try to determine what groups
255 that should be subscribed by default.
257 @vindex gnus-default-subscribed-newsgroups
258 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
259 will subscribe you to just those groups in that list, leaving the
260 rest killed. Your systems administrator should have set this variable to
263 Since she hasn't, Gnus will just subscribe you to a few randomly picked
264 groups (ie. @samp{*.newusers}). (@dfn{Random} is here defined as
265 "whatever Lars think you should read".)
267 If @code{gnus-default-subscribed-newsgroups} is t, Gnus will just use
268 the normal functions for treating new groups, and not do anything
271 @node The Server is Down
272 @section The Server is Down
274 If the default server is down, Gnus will understandably have some
275 problems starting. However, if you have some mail groups in addition to
276 the news groups, you may want to start Gnus anyway.
278 You can bo that by @kbd{M-x gnus-no-server}. This will start Gnus
279 without attempting to contact the default server. Gnus will be started
280 on level two, so you shouldn't have any groups from the local server on
281 level one or two, but only have mail groups and other foreign groups on
287 @vindex gnus-subscribe-newsgroup-method
288 What Gnus does when it encounters a new group is determined by the
289 @code{gnus-subscribe-newsgroup-method} variable.
291 This variable should contain a function. Some handy ready-made values
295 @item gnus-subscribe-randomly
296 @vindex gnus-subscribe-randomly
297 Subscribe all new groups randomly.
299 @item gnus-subscribe-alphabetically
300 @vindex gnus-subscribe-alphabetically
301 Subscribe all new groups alphabetically.
303 @item gnus-subscribe-hierarchically
304 @vindex gnus-subscribe-hierarchically
305 Subscribe all new groups hierarchially.
307 @item gnus-subscribe-interactively
308 @vindex gnus-subscribe-interactively
309 Subscribe new groups interactively. This means that Gnus will ask
310 you about *all* new groups.
312 @item gnus-subscribe-zombies
313 @vindex gnus-subscribe-zombies
314 Make all new groups zombies. You can browse the zombies later and
315 either kill them off properly or subscribe to them. This is the
320 @vindex gnus-subscribe-hierarchical-interactive
321 A closely related variable is
322 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
323 mouthful.) If this variable is non-nil, Gnus will ask you in a
324 hierarchial fashion whether to subscribe to new groups or not. Gnus
325 will ask you for each sub-hierarchy whether you want to descend the
328 One common way to control which new newsgroups should be subscribed or
329 ignored is to put an @dfn{options} line at the start of the
330 @file{.newsrc} file. Here's an example:
333 options -n !alt.all !rec.all sci.all
336 @vindex gnus-subscribe-options-newsgroup-method
337 This line obviously belongs to a serious-minded intellectual scientific
338 person (or she may just be plain old boring), because it says that all
339 groups that have names beginning with @samp{alt} and @samp{rec} should
340 be ignored, and all groups with names beginning with @samp{sci} should
341 be subscribed. Gnus doesn't use the normal subscription method for
342 subscribing these groups. @code{gnus-subscribe-options-newsgroup-method}
343 is used instead. This variable defaults to
344 @code{gnus-subscribe-alphabetically}.
346 @vindex gnus-check-new-newsgroups
347 If you are satisfied that you never really want to see any new
348 groups, you could set @code{gnus-check-new-newsgroups} to
349 nil. This will also save you some time at startup. Even if this
350 variable is nil, you can always subscribe to the new groups
351 by just pressing @kbd{U} in the @dfn{group buffer}.
353 If @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask
354 the server for new groups since last time it asked instead of
355 determining what groups are new by comparing active groups with known
356 groups. This is both faster & cheaper. This also means that you can get
357 rid of the list of killed groups altogether, so you may set
358 @code{gnus-save-killed-list} to nil, which will save time both at
359 startup, at exit, and all over. Saves disk space, too. The only problem
360 with this method is that not all servers support this functionality.
363 @section Startup Files
365 Now, you all know about the @file{.newsrc} files. All information about
366 what groups you read is traditionally stored in this file, which has
367 a rather rigid structure.
369 Things got a bit more complicated with GNUS. In addition to keeping the
370 @file{.newsrc} file updated, it also used a file called @file{.newsrc.el} for
371 storing all the information that didn't fit into the @file{.newsrc}
372 file. (Actually, it duplicated everything in the @file{.newsrc} file.)
373 GNUS would read whichever one of these files that were the most recently
374 saved, which enabled people to swap between GNUS and other newsreaders.
376 That was kinda silly, so (ding) Gnus went one better: In addition to the
377 @file{.newsrc} and @file{.newsrc.el} files, (ding) Gnus also has a file
378 called @file{.newsrc.eld}. It will read whichever of these files that
379 are most recent, but it will never write a @file{.newsrc.el} file.
381 @vindex gnus-save-newsrc-file
382 You can also turn off writing @file{.newsrc} by setting
383 @code{gnus-save-newsrc-file} to nil, which means you can delete
384 the file and save some space, as well as some time when quitting
385 Gnus. However, that will make it impossible to use other newsreaders
386 than (ding) Gnus. But hey, who would want to, right?
388 @vindex gnus-save-killed-list
389 If @code{gnus-save-killed-list} is nil, Gnus will not save the list of
390 killed groups to the startup file. This will save both time (when
391 starting and quitting) and space (on disk). It will also means that
392 Gnus has no record of what groups are new or old, so the automatic new
393 groups subscription methods become meaningless. You should always set
394 @code{gnus-check-new-newsgroups} to nil if you set this variable to nil.
396 @vindex gnus-startup-file
397 The @code{gnus-startup-file} variable says where the startup files are.
398 The default value is @file{"~/.newsrc"}, with the Gnus (El Dingo)
399 startup file being whatever that one is with a @samp{".eld"} appended.
401 @vindex gnus-save-newsrc-hook
402 @code{gnus-save-newsrc-hook} is called before saving the @file{.newsrc}
408 Whenever you do something that changes the Gnus data (reading articles,
409 cathing up, killing/subscribing to groups,) the change is added to a
410 special @dfn{dribble} buffer. This buffer is auto-saved the normal
413 If Gnus detects this file at startup, it will ask the user whether to
416 The auto save file is deleted whenever the real startup file is saved.
418 @node The Active File
419 @section The Active File
421 When Gnus starts, or indeed whenever it tries to determine if new
422 articles has arrived, it reads the active file. This is a file stored
423 on the NNTP server or in the local spool.
425 @vindex gnus-ignored-newsgroups
426 Before examining the active file to see what groups are available, Gnus
427 deletes all lines in this file that match
428 @code{gnus-ignored-newsgroups}. You may even use this variable to make
429 Gnus ignore hierarchies you aren't interested in.
431 @vindex gnus-read-active-file
432 The active file can be rather Huge, so if you have a slow network, you
433 can set @code{gnus-read-active-file} to nil to prevent Gnus from reading
434 the entire active file.
436 Gnus will try to make do by just getting information on the groups
437 that you actually subscribe to.
439 Note that if you subscribe to lots and lots of groups, setting this
440 variable to nil will probabaly make Gnus slower, not faster.
442 @node Startup Variables
443 @section Startup Variables
446 @item gnus-check-bogus-newsgroups
447 @vindex gnus-check-bogus-newsgroups
448 If non-nil, Gnus will check for and delete all bogus groups at
449 startup. A @dfn{bogus group} is a group that you have in you
450 @file{.newsrc} file, but doesn't exist on the news server. Checking for
451 bogus groups isn't very quick, so to save time and resources, it's
452 best to leave this option off, and instead do the checking for bogus
453 groups once in a while from the group buffer.
454 @item gnus-inhibit-startup-message
455 @vindex gnus-inhibit-startup-message
456 If non-nil, the startup message won't be displayed. That way, nobody will
457 notice thay you are reading news instead of doing your job.
460 @node The Group Buffer
461 @chapter The Group Buffer
463 The @dfn{group buffer} lists all (or parts) of the available
464 groups and displays various information regarding these groups.
465 It is the first buffer displayed when Gnus starts.
468 * Group Buffer Format:: Information listed and how you can change it.
469 * Group Manouvering:: Commands for moving in the group buffer.
470 * Selecting a Group:: Actually reading news.
471 * Group Subscribing:: Unsubscribing, killing, subscribing.
472 * Group Levels:: Levels? What are those, then?
473 * Foreign Groups:: How to create foreign groups.
474 * Listing Groups:: Gnus can list various classes of groups.
475 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
476 * Browse Foreign Server:: You can browse a server. See what if has to offer.
477 * Exiting Gnus:: Stop reading news and get some work done.
478 * Misc Group Stuff:: Other stuff that you can to do.
481 @node Group Buffer Format
482 @section Group Buffer Format
484 The default format of the group buffer is nice and dull, but you can
485 make it as exciting and ugly as you feel like.
487 Here's a couple of example group lines:
490 25: news.announce.newusers
491 * 0: alt.fan.andrea-dworkin
496 Those lines mean that there are 25 unread articles in
497 @samp{news.announce.newusers} and no unread articles, but some ticked
498 articles in @samp{alt.fan.andrea-dworkin} (see that little asterisk at
499 the beginning of the line?)
501 @vindex gnus-group-line-format
502 You can fuck that up to your heart's delight by fiddling with the
503 @code{gnus-group-line-format} variable. This variable works along the
504 lines of a @code{format} specification, which is pretty much the same as
505 a @code{printf} specifications, for those of you who use (feh!) C.
507 One extension is that specifications like @samp{%7,12s} is allowed,
508 which means that the field will be at least 7 characters long, and no
509 more that 12 characters long.
511 The default value that produced those lines above is
512 @samp{"%M%S%5y: %g\n"}.
514 There should always be a colon on the line; the cursor is always moved
515 to the colon. Nothing else is required - not even the group name.
517 Here's a list of all available format characters:
523 Whether the group is subscribed
525 Level of subscribedness
527 Number of unread articles
529 Number of dormant articles
531 Number of ticked articles
533 Number of read articles
535 Total number of articles
537 Number of unread, unticked, non-dormant articles
539 Number of ticked and dormant articles
545 Newsgroup description
555 A string that look like @samp{<%s:%n>} if a foreign select method is
559 @vindex gnus-group-mode-line-format
560 The mode line can also be changed (@code{gnus-group-mode-line-format}).
561 It does not understand that many format specifiers:
567 Default select method
570 @node Group Manouvering
571 @section Group Manouvering
573 All movement commands understand the numeric prefix and will behave as
579 @findex gnus-group-next-unread-group
580 Go to the next group with unread articles
581 (@code{gnus-group-next-unread-group}).
585 @findex gnus-group-prev-unread-group
586 Go to the previous group group with unread articles
587 (@code{gnus-group-prev-unread-group}).
590 @findex gnus-group-next-group
591 Go to the next group (@code{gnus-group-next-group}).
594 @findex gnus-group-prev-group
595 Go to the previous group (@code{gnus-group-prev-group}).
598 @findex gnus-group-next-unread-group-same-level
599 Go to the next unread group on the same level (or lower)
600 (@code{gnus-group-next-unread-group-same-level}).
603 @findex gnus-group-prev-unread-group-same-level
604 Go to the previous unread group on the same level (or lower)
605 (@code{gnus-group-prev-unread-group-same-level}).
608 @findex gnus-group-jump-to-group
609 Jump to a group (and make it visible if it isn't already)
610 (@code{gnus-group-jump-to-group}).
613 @node Selecting a Group
614 @section Selecting a Group
618 @kindex SPACE (Group)
619 @findex gnus-group-read-group
620 Select the current group, switch to the summary buffer and display
621 the first unread article in the group
622 (@code{gnus-group-read-group}). If there are no unread articles in the
623 group, or if you give a prefix to this command, Gnus will offer to
624 fetch all the old articles in this group from the server.
628 @findex gnus-group-select-group
629 Select the current group and switch to the summary buffer
630 (@code{gnus-group-select-group}).
633 @findex gnus-group-catchup-current
634 Mark all unticked articles in this group as read
635 (@code{gnus-group-catchup-current}).
638 @findex gnus-group-catchup-current-all
639 Mark all articles in this group, even the ticked ones, as read
640 (@code{gnus-group-catchup-current-all}).
643 @vindex gnus-large-newsgroup
644 The @code{gnus-large-newsgroup} variable says what Gnus considers to be
645 a "big" group. If the group is big, Gnus will query the user before
646 entering the group. The user can then specify how many articles should
647 be fetched from the server. If the user specifies a negative number
648 (@samp{-n}), the @samp{n} oldest articles will be fetched. If it is
649 positive, the @samp{n} articles that have arrived most recently will be
652 @vindex gnus-auto-select-newsgroup
653 If @code{gnus-auto-select-newsgroup} is non-nil, the first unread
654 article in the group will be displayed when you enter the group. If you
655 want to prevent automatic selection in some group (say, in a binary
656 group with Huge articles) you can set this variable to nil in
657 `gnus-select-group-hook', which is called when a group is selected.
658 This hook is also popularly used for sorting headers before generating
661 @node Group Subscribing
662 @section Group Subscribing
667 @findex gnus-group-unsubscribe-current-group
668 Unsubscribe the current group, or, if it was unsubscribed already,
669 subscribe it (@code{gnus-group-unsubscribe-current-group}).
672 @findex gnus-group-unsubscribe-group
673 Ask the user for a group to unsubscribe, and then unsubscribe it. If
674 it was unsubscribed already, subscribe it instead
675 (@code{gnus-group-unsubscribe-group}).
678 @findex gnus-group-kill-group
679 Kill the current group (@code{gnus-group-kill-group}).
682 @findex gnus-group-yank-group
683 Yank the last killed group (@code{gnus-group-yank-group}).
686 @findex gnus-group-kill-region
687 Kill all groups in the region (@code{gnus-group-kill-region}).
690 @findex gnus-group-kill-all-zombies
691 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
695 @section Group Levels
697 All groups have a level of "subscribedness". For instance, if a
698 group is on level 2, it is "more" subscribed than a group on
699 level 5. You can ask Gnus to just list groups on a given level and
700 lower, or to just check new articles in groups on a given level and
706 @findex gnus-group-set-current-level
707 Set the level of the current group depending on the numeric
708 prefix. For instance, @kbd{3 s} will set the level of the current
709 group to three (@code{gnus-group-set-current-level}).
712 Gnus considers groups on levels 1-5 to be subscribed, 6-7 to be
713 unsubscribed, 8 to be zombies (walking dead) and 9 to be killed,
714 completely dead. Gnus treats subscribed and unsubscribed groups exactly
715 the same, but zombie and killed groups have no information on what
716 articles you have read, etc, stored.
718 It is recommended that you keep all your "ordinary" groups on level 3 or
719 higher, and keep your mail groups (if any) on level 1 or 2.
721 @vindex gnus-keep-same-level
722 If @code{gnus-keep-same-level} is non-nil, some movement commands will
723 only move to groups that are of the same level (or lower). In
724 particular, going from the last article in one group to the next group
725 will go to the next group of the same level (or lower). This might be
726 handy if you want to read the most important groups before you read the
730 @section Foreign Groups
732 A @dfn{foreign group} is a group that is not read by the usual (or
733 default) means. It could be, for instance, a group from a different
734 NNTP server, it could be a virtual group or it could be your own
740 @findex gnus-group-add-group
741 Add a new group. Gnus will prompt you for a name, a method and an
742 "address" (@code{gnus-group-add-group}).
745 @findex gnus-group-edit-group
746 Edit a group entry. Gnus will pop up a new buffer where you can edit
747 the entry (@code{gnus-group-edit-group}).
750 The different methods all have their peculiarities, of course.
753 * nntp:: Reading news from a different NNTP server.
754 * nnspool:: Reading news from the local spool.
755 * nnvirtual:: Combining articles from many groups.
756 * nndir:: You can read a directory as if it were a newsgroup.
757 * Mail:: Reading your personal mail with Gnus.
760 @vindex gnus-activate-foreign-newsgroups
761 If the @code{gnus-activate-foreign-newsgroups} is a positive number,
762 Gnus will check all foreign groups with this level or lower at startup.
763 This might take quite a while, especially if you subscribe to lots of
764 groups from different NNTP servers. It is nil by default, which means
765 that you won't be told whether there are new articles in these groups.
766 How many unread articles there are will be determined when, or if, you
767 decide to enter them.
772 Subscribing to a foreign group from an NNTP server is rather easy. You
773 just specify @code{nntp} as method and the address of the NNTP server as
776 The name of the foreign group can be the same as a native group. In
777 fact, you can subscribe to the same group from as many different servers
778 you feel like. There will be no name collisions.
783 Subscribing to a foreign group from the local spool is extremely easy,
784 and might be useful, for instance, to speed up reading binaries groups.
786 Anyways, you just specify @code{nnspool} as the method and @samp{""} as
790 @subsection nnvirtual
792 A @dfn{virtual group} is really nothing more than a collection of
795 You specify @code{nnvirtual} as the method and a regular expression that
796 says which groups that you wish to have in this one as the address.
798 For instance, if you are tired of reading many small group, you can
799 put them all in one big group, and then grow tired of reading one
800 big, unwieldy group. The joys of computing!
803 "^alt\\.fan\\.andrea-dworkin$\\|rec\\.dworkin.*"
806 These groups can be native or foreign; everything should work smoothly,
807 but if your computer explodes, it was probably my fault. (Including
808 other virtual groups in this one will probably confuse Gnus, so don't do
811 One limitation, however - all groups that are included in a virtual
812 group has to be alive (ie. subscribed or unsubscribed). In fact, if you
813 include a group in a virtual group, and it was killed, it will be
814 subscribed automagically.
819 If you have a directory that has lots of articles in separate files in
820 it, you might treat it as a newsgroup. The files have to have numerical
823 This situation is kinda special, so there's a shortcut for creating
824 these "groups": @kbd{d} (@code{gnus-group-make-directory-group}) in the
825 group buffer. You will be prompted for a directory to read.
830 Reading mail with a newsreader - isn't that just plain WeIrD? But of
834 * Creating Mail Groups:: How to create mail groups (duh).
835 * Expiring Old Mail Articles:: Getting rid of unwanted mail.
838 Gnus will read the mail spool when you activate a mail group. The mail
839 file is first copied to your home directory. What happens after that
840 depends on what format you want to store you mail in.
843 * nnmbox:: Using the quite standard Un*x mbox.
844 * nnrmail:: Many Emacs programs use the rmail babyl format.
845 * nnml:: Store your mail in a private spool?
846 * nnmh:: An mhspool-like backend useful for procmail people.
849 @vindex nnmail-read-incoming-hook
850 The mail backends all call @code{nnmail-read-incoming-hook} after
851 reading new mail. You can use this hook to notify any mail watch
852 programs, if you want to.
854 Gnus gives you all the opportunity you want for shooting yourself in
855 your foot. Let's say you create a group that will contain all the mail
856 you get from your boss. And then you accidentally unsubscribe from the
857 group. Gnus will still put all the mail from your boss in the
858 unsubscribed group, and so, when your boss mails you "Have that report
859 ready by Monday or you're fired!", you'll never see it and, come
860 Tuesday, you'll still believe that you're gainfully unemplyed while you
861 really should be out collecting empty bottles to save up for next
864 @node Creating Mail Groups
865 @subsubsection Creating Mail Groups
867 You can make Gnus read your personal, private, secret mail.
869 You should first set @code{gnus-secondary-select-methods} to, for
870 instance, @code{((nnmbox ""))}. When you start up Gnus, Gnus will ask
871 this backend for what groups it has (@samp{mail.misc} by default) and
872 subscribe it the normal way. (Which means you may have to look for it
873 among the zombie groups, I guess, all depending on your
874 @code{gnus-subscribe-newsgroup-method} variable.)
876 @vindex nnmail-split-methods
877 The you should set the variable @code{nnmail-split-methods} to specify
878 how the incoming mail is to be split into groups.
881 (setq nnmail-split-methods
882 '(("mail.junk" "^From:.*Lars Ingebrigtsen")
883 ("mail.crazzy" "^Subject:.*die\\|^Organization:.*flabby")
887 This variable is a list of lists, where the first element of each of
888 these lists contain the name of the mail group (they do not have to be
889 called something beginning with @samp{"mail"}, by the way), and the
890 second element is a regular expression used on the header of each mail
891 to determine if it belongs in this mail group.
893 The last of these groups should always be a general one, and the regular
894 expression should *always* be @samp{""} so that it matches all mails.
896 @node Expiring Old Mail Articles
897 @subsubsection Expiring Old Mail Articles
899 Traditional mail readers have a tendency to remove mail articles when
900 you mark them as read, in some way. Gnus takes a fundamentally
901 different approach to mail reading.
903 Gnus basically considers mail just to be news that has been received in
904 a rather peculiar manner. It does not think that it has the power to
905 actually change the mail, or delete any mail messages. If you enter a
906 mail group, and mark articles as "read", or kill them in some other
907 fashion, the mail articles will still exist on the system. I repeat:
908 Gnus will not delete your old, read mail. Unless you ask it to, of
911 To make Gnus get rid of your unwanted mail, you have to mark the
912 articles as @dfn{expirable}. This does not mean that the articles will
913 disappear right away, however. In general, a mail article will be
914 deleted from your system if, 1) it is marked as expirable, AND 2) it is
915 more than one week old. If you do not mark an article as expirable, it
916 will remain on your system until hell freezes over. This bears repeating
917 one more time, with some spurious capitalization: IF you do NOT mark
918 articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES.
920 @vindex gnus-auto-expirable-newsgroups
921 You do not have to mark articles as expirable by hand. Groups that
922 match the regular expression @code{gnus-auto-expirable-newsgroups} will
923 have all articles that you read marked as expirable automatically. All
924 articles that are marked as expirable have an @samp{X} in the third
925 column in the summary buffer.
927 Let's say you subscribe to a couple of mailing lists, and you want the
928 articles you have read to disappear after a while:
931 (setq gnus-auto-expirable-newsgroups
932 "^mail.nonsense-list\\|^mail.nice-list")
935 @vindex nnmail-expiry-wait
936 The @code{nnmail-expiry-wait} variable supplies the default time an
937 expirable article has to live. The default is seven days.
939 Gnus also supplies a function that lets you fine-tune how long articles
940 are to live, based on what group they are in. Let's say you want to
941 have one month expiry period in the @samp{mail.private} group, a one day
942 expiry period in the @samp{mail.junk} group, and a six day expiry period
946 (setq nnmail-expiry-wait-function
948 (cond ((string= group "mail.private")
950 ((string= group "mail.junk")
957 @subsubsection nnmbox
959 @vindex nnmbox-active-file
960 @vindex nnmbox-mbox-file
961 The @dfn{nnmbox} backend will use the standard Un*x mbox file to store
962 mail. The path of the mbox file is given by the @code{nnmbox-mbox-file}
963 variable. In addition, Gnus needs to store information about active
964 articles. The file specified by @code{nnmbox-active-file} will be used
968 @subsubsection nnrmail
970 @vindex nnrmail-active-file
971 @vindex nnrmail-mbox-file
972 The @dfn{nnrmail} backend will use a babyl mail box to store mail. The
973 path of the rmail mail box file is given by the @code{nnrmail-mbox-file}
974 variable. In addition, Gnus needs to store information about active
975 articles. The file specified by @code{nnrmail-active-file} will be used
981 The spool mail format (@code{nnml}) isn't compatible with any other
982 known format. It should be used with some caution.
984 @vindex nnml-directory
985 If you use this backend, Gnus will split all incoming mail into files;
986 one file for each mail, and put the articles into the correct
987 directories under the directory specified by the @code{nnml-directory}
988 variable. The default value is @samp{"~/Mail/"}.
990 You do not have to create any directories beforehand; Gnus will take
993 If you have a strict limit as to how many files you are allowed to store
994 in your account, you should not use this backend. As each mail gets its
995 own file, you might very well occupy thousands of inodes within a few
996 weeks. If this is no problem for you, and it isn't a problem for you
997 having your friendly systems administrator walking around, madly,
998 shouting "Who is eating all my inodes?! Who? Who!?!", then you should
999 know that this is probably the fastest format to use. You do not have
1000 to trudge through a big mbox file just to read your new mail.
1002 @code{nnml} is probably the slowest backend when it comes to article
1003 splitting. It has to create lots of files, and it also generates NOV
1004 databases for the incoming mails. This makes is the fastest backend when
1005 it comes to reading mail.
1010 @code{nnmh} is just like @code{nnml}, except that is doesn't generate
1011 NOV databases and it doesn't keep an active file. This makes @code{nnmh}
1012 a *much* slower backend than @code{nnml}, but it also makes it easier to
1013 write procmail scripts for.
1015 @node Listing Groups
1016 @section Listing Groups
1021 @findex gnus-group-list-groups
1022 List all subscribed groups that have unread articles
1023 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
1024 command will list only groups of level ARG and lower. By default, it
1025 only lists groups of level five or lower (ie. just subscribed groups).
1028 @findex gnus-group-list-all-groups
1029 List all subscribed and unsubscribed groups, whether they have unread
1030 articles or not (@code{gnus-group-list-all-groups}). If the numeric
1031 prefix is used, this command will list only groups of level ARG and
1032 lower. By default, it lists groups of level seven or lower (ie. just
1033 subscribed and unsubscribed groups).
1035 @kindex C-c C-k (Group)
1036 @findex gnus-group-list-killed
1037 List all killed groups (@code{gnus-group-list-killed}).
1039 @kindex C-c C-z (Group)
1040 @findex gnus-group-list-zombies
1041 List all zombie groups (@code{gnus-group-list-zombies}).
1044 @node Group Maintenance
1045 @section Group Maintenance
1050 @findex gnus-group-check-bogus-groups
1051 Check bogus groups and delete them
1052 (@code{gnus-group-check-bogus-groups}).
1055 @findex gnus-find-new-newsgroups
1056 Find new groups (@code{gnus-find-new-newsgroups}).
1058 @kindex C-c C-x (Group)
1059 @findex gnus-group-expire-articles
1060 Run all expirable articles in the current group through the expiry
1061 process (if any) (@code{gnus-group-expire-articles}).
1063 @kindex C-c M-C-x (Group)
1064 @findex gnus-group-expire-all-groups
1065 Run all articles in all groups through the expiry process
1066 (@code{gnus-group-expire-all-groups}).
1069 @node Browse Foreign Server
1070 @section Browse Foreign Server
1075 @findex gnus-group-browse-foreign-server
1076 You will be queried for a select method and a server name. Gnus will
1077 then attempt to contact this server and let you browse the groups there
1078 (@code{gnus-group-browse-foreign-server}).
1081 A new buffer with a list of available groups will appear. This buffer
1082 will be use the @code{gnus-browse-server-mode}. This buffer looks a bit
1083 (well, a lot) like a normal group buffer, but with one major difference
1084 - you can't enter any of the groups. If you want to read any of the
1085 news available on that server, you have to subscribe to the groups you
1086 think may be interesting, and then you have to exit this buffer. The
1087 new groups will be added to the group buffer, and then you can read them
1088 as you would any other group.
1090 Here's a list of keystrokes available in the browse mode:
1095 @findex gnus-group-next-group
1096 Go to the next group (@code{gnus-group-next-group}).
1098 @kindex C-p (Browse)
1100 @findex gnus-group-prev-group
1101 Go to the previous group (@code{gnus-group-prev-group}).
1104 @findex gnus-browse-unsubscribe-current-group
1105 Unsubscribe to the current group, or, as will be the case here,
1106 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
1109 @findex gnus-browse-exit
1110 Exit browse mode (@code{gnus-browse-exit}).
1113 @findex gnus-browse-describe-briefly
1114 Describe browse mode briefly (well, there's not much to describe, is
1115 there) (@code{gnus-browse-describe-briefly}).
1119 @section Exiting Gnus
1121 Yes, Gnus is exiting.
1126 @findex gnus-group-suspend
1127 Suspend Gnus (@code{gnus-group-suspend}).
1130 @findex gnus-group-exit
1131 Quit Gnus (@code{gnus-group-exit}).
1134 @findex gnus-group-quit
1135 Quit Gnus without saving any startup files (@code{gnus-group-quit}).
1138 @vindex gnus-exit-gnus-hook
1139 @vindex gnus-suspend-gnus-hook
1140 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
1141 @code{gnus-exit-gnus-hook} is called when you quit Gnus.
1143 @node Misc Group Stuff
1144 @section Misc Group Stuff
1149 @findex gnus-group-get-new-news
1150 Check server for new articles.
1151 If the numeric prefix is used, this command will check only groups of
1152 level ARG and lower (@code{gnus-group-get-new-news}).
1155 @findex gnus-group-get-new-news-this-group
1156 Check whether new articles have arrived in the current group
1157 (@code{gnus-group-get-new-news-this-group}).
1160 @findex gnus-group-restart
1161 Restart Gnus (@code{gnus-group-restart}).
1164 @findex gnus-group-read-init-file
1165 Read the init file (@code{gnus-init-file}, which defaults to
1166 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
1169 @findex gnus-group-save-newsrc
1170 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
1171 (@code{gnus-group-save-newsrc}).
1174 @findex gnus-group-clear-dribble
1175 Clear the dribble buffer (@code{gnus-group-clear-dribble}).
1178 @findex gnus-group-describe-group
1179 Give a description of the current group
1180 (@code{gnus-group-describe-group}).
1182 @kindex C-c C-a (Group)
1183 @findex gnus-group-apropos
1184 Give a listing of all groups that have names that match a regexp
1185 (@code{gnus-group-apropos}).
1187 @kindex C-c M-C-a (Group)
1188 @findex gnus-group-description-apropos
1189 Give a listing of all groups that have names or descriptions that match
1190 a regexp (@code{gnus-group-description-apropos}).
1193 @findex gnus-group-post-news
1194 Post an article to a group (@code{gnus-group-post-news}).
1197 @findex gnus-group-mail
1198 Mail a message somewhere (@code{gnus-group-mail}).
1200 @kindex C-x C-t (Group)
1201 @findex gnus-group-transpose-groups
1202 Transpose two groups (@code{gnus-group-transpose-groups}).
1205 @findex gnus-version
1206 Display current Gnus version numbers (@code{gnus-version}).
1209 @findex gnus-group-describe-briefly
1210 Give a very short help message (@code{gnus-group-describe-briefly}).
1212 @kindex C-c C-i (Group)
1213 @findex gnus-info-find-node
1214 Go to the Gnus info node (@code{gnus-info-find-node}).
1217 @vindex gnus-group-prepare-hook
1218 @code{gnus-group-prepare-hook} is called after the group list is
1219 created in the Group buffer. It may be used to modify the group
1220 buffer in some strange, unnatural way.
1222 @node The Summary Buffer
1223 @chapter The Summary Buffer
1225 A line for each article is displayed in the Summay buffer. You can move
1226 around, read articles, post articles and reply to them.
1229 * Summary Buffer Format:: Deciding how the summar buffer is to look.
1230 * Summary Manouvering:: Moving around the summary buffer.
1231 * Choosing Articles:: Reading articles.
1232 * Paging the Article:: Scrolling the current article.
1233 * Reply Followup and Post:: Posting articles.
1234 * Cancelling and Superceding:: "Whoops, I shouldn't have called him that."
1235 * Ticking and Marking:: Marking articles as read, expirable, etc.
1236 * Threading:: How threads are made.
1237 * Exiting the Summary Buffer:: Returning to the Group buffer.
1238 * Saving Articles:: Ways of customizing article saving.
1239 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
1240 * Various Article Stuff:: Various stuff dealing with articles.
1241 * Summary Sorting:: You can sort the summary buffer four ways.
1242 * Finding the Parent:: No child support? Get the parent.
1243 * Score Files:: Maintaining a score file.
1244 * Mail Group Commands:: Some commands can only be used in mail groups.
1245 * Various Summary Stuff:: What didn't fit anywhere else.
1248 @node Summary Buffer Format
1249 @section Summary Buffer Format
1251 @vindex gnus-summary-line-format
1252 You can change the format of the lines in the summary buffer by changing
1253 the @code{gnus-summary-line-format} variable. It works along the same
1254 lines a a normal @code{format} string, with some extensions.
1256 The default string is @samp{"%U%R%X%i %I%[%4L: %-20,20n%] %s\n"}.
1258 The following format specification characters are understood:
1266 Subject if the article is the root, @code{gnus-summary-same-subject}
1271 The name (from the @code{From} header field)
1273 The address (from the @code{From} header field)
1275 Number of lines in the article
1277 Number of characters in the article
1279 Indentation based on thread level
1281 Nothing if the article is a root and lots of spaces if it isn't (it
1282 pushes everything after it off the screen)
1284 Opening bracket, which is normally @samp{\[}, but can also be @samp{<}
1285 for adopted articles.
1287 Closing bracked, which is normally @samp{\]}, but can also be @samp{<}
1288 for adopted articles.
1290 One space for each thread level.
1292 Twenty minus thread level spaces.
1313 No elements are required, except the @samp{%U}, @samp{%R}, @samp{%X} and
1314 @samp{%i} fields which have to be at the beginning of the line for
1315 reasons of efficiency. If you try to remove those, or change them,
1316 you'll probably end up with a mess, at least in this version of Gnus.
1318 @vindex gnus-summary-mode-line-format
1319 You can also change the format of the summary mode bar. Set
1320 @code{gnus-summary-mode-line-format} to whatever you like. Here's what
1321 elements you have to play with:
1327 Current article number
1331 Number of unread articles in this group
1333 Number of unselected articles in this group
1335 A string with the number of unread and unselected articles represented
1336 either as @samp{<%U(+%u) more>} if there are both unselected articles,
1337 and just as @samp{<%U more>} if there are just unread articles and no
1341 @node Summary Manouvering
1342 @section Summary Manouvering
1344 All the straight movement commands understand the numeric prefix and
1345 behave pretty much as you'd expect.
1347 None of these commands select articles.
1351 @kindex down (Summary)
1352 @findex gnus-summary-next-subject
1353 Go to the next subject line (@code{gnus-summary-next-subject}).
1355 @kindex up (Summary)
1356 @findex gnus-summary-prev-subject
1357 Go to the previous subject line (@code{gnus-summary-prev-subject}).
1359 @kindex M-n (Summary)
1360 @findex gnus-summary-next-unread-subject
1361 Go to the next summary line of an unread article
1362 (@code{gnus-summary-next-unread-subject}).
1364 @kindex M-p (Summary)
1365 @findex gnus-summary-prev-unread-subject
1366 Go to the previous summary line of an unread article
1367 (@code{gnus-summary-prev-unread-subject}).
1370 @findex gnus-summary-goto-subject
1371 Ask for an article number and then go to this summary line
1372 (@code{gnus-summary-goto-subject}).
1375 @findex gnus-summary-goto-last-article
1376 Go to the summary line of the previous article
1377 (@code{gnus-summary-goto-last-article}).
1380 @vindex gnus-auto-select-next
1381 If you are at the end of the group and issue one of the movement
1382 commands, Gnus will offer to go to the next group. If
1383 @code{gnus-auto-select-next} is t and the next group is empty, Gnus
1384 will exit summary mode and return to the group buffer. If this
1385 variable is neither t nor nil, Gnus will select the next group, no
1386 matter if it has any unread articles or not. As a special case, if this
1387 variable equals @code{quietly}, Gnus will select the next group
1388 without asking for confirmation. Also see @code{gnus-keep-same-level}.
1390 @vindex gnus-auto-center-summary
1391 If @code{gnus-auto-center-summary} is non-nil, Gnus will keep the point
1392 in the summary buffer centered at all times. This makes things quite
1393 tidy, but if you have a slow network connection, or do simply not like
1394 this un-Emacsism, you can set this variable to nil to get the normal
1395 Emacs scrolling action.
1397 @node Choosing Articles
1398 @section Choosing Articles
1400 All the movement commands understand the numeric prefix.
1402 All the following commands select an article.
1406 @kindex SPACE (Summary)
1407 @findex gnus-summary-next-page
1408 Select the current article, or, if that one's read already, the next
1409 unread article (@code{gnus-summary-next-page}).
1412 @findex gnus-summary-next-unread-article
1413 Go to next unread article (@code{gnus-summary-next-unread-article}).
1416 @findex gnus-summary-prev-unread-article
1417 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
1420 @findex gnus-summary-next-article
1421 Go to the next article (@code{gnus-summary-next-article}).
1424 @findex gnus-summary-prev-article
1425 Go to the previous article (@code{gnus-summary-prev-article}).
1427 @kindex M-C-n (Summary)
1428 @findex gnus-summary-next-same-subject
1429 Go to the next article with the same subject
1430 (@code{gnus-summary-next-same-subject}).
1432 @kindex M-C-p (Summary)
1433 @findex gnus-summary-prev-same-subject
1434 Go to the previous article with the same subject
1435 (@code{gnus-summary-prev-same-subject}).
1438 @findex gnus-summary-first-unread-article
1439 Go to the first unread article (@code{gnus-summary-first-unread-article}).
1442 @vindex gnus-auto-extend-newsgroup
1443 All the movement commands will try to go to the previous (or next)
1444 article, even if that article isn't displayed in the Summary buffer if
1445 @code{gnus-auto-extend-newsgroup} is non-nil. Gnus will fetch the
1446 article from the server and present it in the article buffer.
1448 @vindex gnus-select-article-hook
1449 @code{gnus-select-article-hook} is called whenever an article is
1450 selected. By default it makes any threads hidden under the current
1453 @vindex gnus-mark-article-hook
1454 @code{gnus-mark-article-hook} is called when an article is selected for
1455 the first time. It is intended to be used for marking articles as read
1456 automatically when articles are selected.
1458 @node Paging the Article
1459 @section Scrolling the Article
1463 @kindex SPACE (Summary)
1464 @findex gnus-summary-next-page
1465 Pressing @kbd{SPACE} will scroll the current article forward one page,
1466 or, if you have come to the end of the current article, will choose the
1467 next article (@code{gnus-summary-next-page}).
1469 @kindex DEL (Summary)
1470 @findex gnus-summary-prev-page
1471 Scoll the current article back one page (@code{gnus-summary-prev-page}).
1473 @kindex RET (Summary)
1474 @findex gnus-summary-scroll-up
1475 Scroll the current article one line forward
1476 (@code{gnus-summary-scroll-up}).
1479 @findex gnus-summary-beginning-of-article
1480 Scroll to the beginning of the article
1481 (@code{gnus-summary-beginning-of-article}).
1484 @findex gnus-summary-end-of-article
1485 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
1488 @node Reply Followup and Post
1489 @section Reply Followup and Post
1491 @kindex C-c C-c (Post)
1492 All the commands for posting and mailing will put you in a post or mail
1493 buffer where you can edit the article all you like, before you send the
1494 article by pressing @kbd{C-c C-c}.
1499 @findex gnus-summary-post-news
1500 Post an article to the current group
1501 (@code{gnus-summary-post-news}).
1504 @findex gnus-summary-followup
1505 Post a followup to the current article (@code{gnus-summary-followup}).
1508 @findex gnus-summary-followup-with-original
1509 Post a followup to the current article and include the original message
1510 (@code{gnus-summary-followup-with-original}).
1513 @findex gnus-summary-reply
1514 Mail a reply to the author of the current article
1515 (@code{gnus-summary-reply}).
1518 @findex gnus-summary-reply-with-original
1519 Mail a reply to the author of the current article and include the
1520 original message (@code{gnus-summary-reply-with-original}).
1522 @kindex C-c C-f (Summary)
1523 @findex gnus-summary-mail-forward
1524 Forward the current article to some other person
1525 (@code{gnus-summary-mail-forward}).
1528 @findex gnus-summary-mail-other-window
1529 Send a mail to some other person
1530 (@code{gnus-summary-mail-other-window}).
1533 @vindex gnus-required-headers
1534 Gnus determines which headers it should generate in outgoing posts by
1535 consulting the @code{gnus-required-headers} variable. This is a list of
1536 headers that Gnus makes sure is present in all outgoing posts before it
1539 @vindex gnus-followup-to-function
1540 @vindex gnus-reply-to-function
1541 Gnus uses the normal methods to determine where replys and follow-ups
1542 are to go, but you can change the behaviour to suit your need by
1543 fiddling with the @code{gnus-reply-to-function} and
1544 @code{gnus-followup-to-function} variables.
1546 To take "reply" as an example: If you want the replies to go to the
1547 "sender" instead of the "from" in the group "mail.stupid-list", you
1548 could do something like this:
1551 (setq gnus-reply-to-function
1553 (cond ((string= group "mail.stupid-list")
1554 (mail-fetch-field "sender"))
1559 These functions will be called with point in the buffer of the article
1560 that is being replied to (or followed up).
1562 @vindex mail-signature
1563 @vindex gnus-signature-file
1564 If @code{gnus-signature-file} is non-nil, it should be the name of a
1565 file containing a signature (@samp{~/.signature} by default). This
1566 signature will be appended to all outgoing post. Most people find it
1567 more convenient to use @code{mail-signature}, which does the same, but
1568 inserts the signature into the buffer before you start editing the post
1569 (or mail). So - if you have both of these variables set, you will get
1572 @vindex gnus-post-prepare-function
1573 In any case, @code{gnus-post-prepare-function} is called with the name
1574 of the current group after the post buffer has been initialized, and can
1575 be used for inserting a signature. Nice if you use different signatures
1576 in different groups.
1578 @vindex gnus-auto-mail-to-author
1579 If @code{gnus-auto-mail-to-author} is non-nil, Gnus will send a mail
1580 with a copy of all follow-ups to the authors of the articles you follow
1581 up. It's nice in one way - you make sure that the person you are
1582 responding to gets your response. Other people loathe this method and
1583 will hate you dearly for it, because it means that they will first get a
1584 mail, and then have to read the same article later when they read the
1585 news. It is nil by default.
1587 @vindex gnus-mail-send-method
1588 @code{gnus-mail-send-method} says how a mail should be mailed. It uses
1589 the function in the @code{send-mail-function} as the default.
1591 @vindex gnus-prepare-article-hook
1592 @code{gnus-prepare-article-hook} is called before the header fields have
1593 been prepared. By default it inserts the signature specified by
1594 @code{gnus-signature-file}.
1596 @vindex gnus-inews-article-hook
1597 @code{gnus-inews-article-hook} is called right before the article is
1598 posted. By default it handles FCC processing (ie. saving the article to
1601 @node Cancelling and Superceding
1602 @section Cancelling Articles
1604 Have you ever written something, and then decided that you really,
1605 really, really hadn't posted that?
1607 Well, you can't cancel mail, but you can cancel posts.
1609 @findex gnus-summary-cancel-article
1611 Find the article you wish to cancel (you can only cancel your own
1612 articles, so don't try any funny stuff). Then press @kbd{C}
1613 (@code{gnus-summary-cancel-article}). Your article will be cancelled.
1615 Be aware, however, that not all sites honor cancels, so your article may
1616 live on in some parts of the world, while most sites will delete the
1619 If you discover that you have made some mistakes and want to do some
1620 corrections, you can post a @dfn{superseding} article that will replace
1621 your original article.
1623 @findex gnus-summary-supersede-article
1625 Go to the original article and press @kbd{S}
1626 (@code{gnus-summary-supersede-article}). You will be put in a buffer
1627 where you can edit the article all you want before sending it off the
1630 The same goes for superseding as for cancelling, only more so: Some
1631 sites do not honor superseding. On those sites, it will appear that you
1632 have posted almost the same article twice.
1634 If you have just posted the article, and changed your mind right away,
1635 there is a trick you can use to cancel/supersede the article without
1636 waiting for the article to appear on your site first. You simply return
1637 to the post buffer (which is called @code{*post-buf*}). There you will
1638 find the article you just posted, with all the headers intact. Change
1639 the @samp{Message-ID} header to a @samp{Cancel} or @samp{Supersedes}
1640 header by substituting one of those words for @samp{Message-ID}. Then
1641 just press @kbd{C-c C-c} to send the article as you would do normally.
1642 The previous article will be cancelled/superseded.
1644 @node Ticking and Marking
1645 @section Ticking and Marking
1647 There are several marks you can set on an article.
1649 First you have the marks that decide the "readed-ness" (whoo,
1650 neato-keano neologism ohoy!) of the article. It can be unread, ticked,
1651 dormant or read, in ascending readed-ness ordering.
1653 @dfn{Ticked articles} are articles that will remain visible always. If
1654 you see an article that you find interesting, or you want to put off
1655 reading it, or replying to it, until sometime later, you'd typically
1656 tick it. However, articles can be expired, so if you want to keep an
1657 article forever, you'll have to save it. Ticked articles have a @samp{-}
1658 in the first column.
1660 A @dfn{dormant} article is marked with a @samp{+}, and will only appear
1661 in the summary buffer if there are followups to it.
1663 Articles that are marked as read - are just that. They have a @samp{D}
1664 in the first column. Unread articles have a space in the first column.
1666 There are also some marks that do not affect readed-ness:
1668 You can also mark articles as @dfn{expirable} (or have them marked as
1669 such automatically). That doesn't make much sense in normal groups,
1670 because a user does not control the expiring of news articles, but in
1671 mail groups, for instance, articles that are marked as @dfn{expirable}
1672 can be deleted by Gnus at any time. Expirable articles have a @samp{X}
1673 in the third column.
1675 You can set a bookmark in the current article. Say you are reading a
1676 long thesis on cat's urinary tracts, and have to go home for dinner
1677 before you've finished reading the thesis. You can then set a bookmark
1678 in the article, and Gnus will jump to this bookmark the next time it
1679 encounters the article.
1681 Finally we have the @dfn{process mark}. A variety of commands react to
1682 the presence of the process mark. For instance, @kbd{C-c C-v M-C-v}
1683 (@code{gnus-uu-decode-and-view-marked-articles}) will uudecode and view
1684 all artciles that have been marked with the process mark. Articles
1685 marked with the process mark have a @samp{#} in the third column.
1687 All the marking commands understand the numeric prefix.
1692 @findex gnus-summary-mark-as-unread-forward
1693 Tick the current article (@code{gnus-summary-mark-as-unread-forward}).
1696 @findex gnus-summary-mark-as-dormant
1697 Mark the current article as dormant
1698 (@code{gnus-summary-mark-as-dormant}).
1701 @findex gnus-summary-mark-as-read-forward
1702 Mark the current article as read
1703 (@code{gnus-summary-mark-as-read-forward}).
1706 @findex gnus-summary-kill-same-subject-and-select
1707 Mark all articles that have the same subject as the current one as read,
1708 and then select the next unread article
1709 (@code{gnus-summary-kill-same-subject-and-select}).
1711 @kindex C-k (Summary)
1712 @findex gnus-summary-kill-same-subject
1713 Mark all articles that have the same subject as the current one as read
1714 (@code{gnus-summary-kill-same-subject}).
1716 @kindex M-u (Summary)
1717 @findex gnus-summary-clear-mark-forward
1718 Clear tick and read marks from the current article
1719 (@code{gnus-summary-clear-mark-forward}).
1722 @findex gnus-summary-mark-as-expirable
1723 Mark the current article as expirable
1724 (@code{gnus-summary-mark-as-expirable}).
1727 @findex gnus-summary-unmark-as-expirable
1728 Remove the expiry mark from the current article
1729 (@code{gnus-summary-unmark-as-expirable}).
1732 @findex gnus-summary-set-bookmark
1733 Set a bookmark in the current article
1734 (@code{gnus-summary-set-bookmark}).
1737 @findex gnus-summary-remove-bookmark
1738 Remove the bookmark from the current article
1739 (@code{gnus-summary-remove-bookmark}).
1741 @kindex M-d (Summary)
1742 @findex gnus-summary-delete-marked-as-read
1743 Expunge all deleted articles from the summary buffer
1744 (@code{gnus-summary-delete-marked-as-read}).
1746 @kindex M-C-d (Summary)
1747 @findex gnus-summary-delete-marked-with
1748 Ask for a mark and then expunge all articles that have been marked with
1749 that mark (@code{gnus-summary-delete-marked-with}).
1751 @kindex C-c M-C-s (Summary)
1752 @findex gnus-summary-show-all-expunged
1753 Display all expunged articles (@code{gnus-summary-show-all-expunged}).
1755 @kindex M-+ (Summary)
1756 @findex gnus-summary-show-all-dormant
1757 Display all dormant articles (@code{gnus-summary-show-all-dormant}).
1760 There are a few functions for setting the process mark:
1765 @findex gnus-summary-mark-article-as-processable
1766 Mark the current article with the process mark
1767 (@code{gnus-summary-mark-article-as-processable}).
1768 @findex gnus-summary-unmark-article-as-processable
1770 @kindex M-# (Summary)
1771 Remove the process mark from the current article
1772 (@code{gnus-summary-unmark-article-as-processable}).
1774 @kindex C-c M-# (Summary)
1775 @findex gnus-summary-unmark-all-articles-as-processable
1776 Remove the process mark from all articles
1777 (@code{gnus-summary-unmark-all-articles-as-processable}).
1779 @kindex C-c C-v C-r (Summary)
1780 @findex gnus-uu-mark-by-regexp
1781 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}).
1783 @kindex C-c C-v r (Summary)
1784 @findex gnus-uu-mark-region
1785 Mark articles in the region (@code{gnus-uu-mark-region}).
1787 @kindex C-c C-v t (Summary)
1788 @findex gnus-uu-mark-thread
1789 Mark all articles in the current (sub)thread
1790 (@code{gnus-uu-mark-thread}).
1793 @findex gnus-uu-marked-universal-argument
1794 @kindex C-c C-v C-u (Summary)
1795 Finally, we have @kbd{C-c C-v C-u}
1796 (@code{gnus-uu-marked-universal-argument}) that will perform any
1797 operation on all articles that have been marked with the process mark.
1802 Gnus @dfn{threads} articles by default. @dfn{Threading} is to put
1803 replies to articles directly after the articles they reply to - in a
1804 hierarchial fashion.
1807 * Customizing Threading:: Variables you can change to affect the threading.
1808 * Threading Commands:: Thread based commands in the summary buffer.
1811 @node Customizing Threading
1812 @subsection Customizing Threading
1815 @item gnus-show-threads
1816 @vindex gnus-show-threads
1817 If this variable is nil, no threading will be done, and all of the rest
1818 of the variables here will have no effect. Turning threading off will
1819 speed group selection up a bit, but it is sure to make reading
1820 slower and more awkward.
1821 @item gnus-fetch-old-headers
1822 @vindex gnus-fetch-old-headers
1823 If non-nil, Gnus will attempt to build old threads by fetching more old
1824 headers - headers to articles that are marked as read. This only works
1825 if the server you are using supports XOVER. Also remember that if the
1826 root of the thread has been expired by the server, there's not much Gnus
1828 @item gnus-gather-loose-threads
1829 @vindex gnus-gather-loose-threads
1830 If non-nil, Gnus will gather all loose subtrees into one big tree and
1831 create a dummy root at the top. (Wait a minute. Root at the top? Yup.)
1832 Loose subtrees occur when the real root has expired, or you've read it
1833 in a previous session.
1834 @item gnus-summary-make-false-root
1835 @vindex gnus-summary-make-false-root
1836 When there is no real root of a thread, Gnus will have to fudge
1837 something. This variable says what method Gnus should use while
1838 fudging. There are four possible value:
1842 Gnus will make the first of the orphaned articles the parent. This
1843 parent will adopt all the other articles. The adopted articles will be
1844 marked as such by pointy brackeds instead of square brackets.
1846 Gnus will create a dummy that will stand in as the parent. This dummy
1847 will be displayed on a line of its own, but it does not correspond to
1850 Gnus won't actually make any article the parent, but simply leave the
1851 subject field of all orphans except the first empty. (It will use
1852 @code{gnus-summary-same-subject} as the subject.)
1854 Don't make any article parent at all.
1857 @item gnus-thread-hide-subtree
1858 @vindex gnus-thread-hide-subtree
1859 If non-nil, all subtrees will be hidden when the summary buffer is
1861 @item gnus-thread-hide-killed
1862 @vindex gnus-thread-hide-killed
1863 if you kill a thread and this variable is non-nil, the subtree will be
1865 @item gnus-thread-ignore-subject
1866 @vindex gnus-thread-ignore-subject
1867 Sometimes somebody changes the subject in the middle of a thread. If
1868 this variable is non-nil, the change in subject is ignored. If it is
1869 nil, which is the default, a change in the subject will result in a new
1871 @item gnus-thread-indent-level
1872 @vindex gnus-thread-indent-level
1873 This is a number which says how many spaces to indent a thread. The
1874 default is @samp{4}.
1877 @node Threading Commands
1878 @subsection Threading Commands
1882 @kindex M-C-k (Summary)
1883 @findex gnus-summary-kill-thread
1884 Mark all articles under the current one as read
1885 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
1886 remove all marks. If the prefix argument is negative, tick articles.
1888 @kindex M-C-t (Summary)
1889 @findex gnus-summary-toggle-threads
1890 Toggle showing threads (@code{gnus-summary-toggle-threads}).
1892 @kindex M-C-s (Summary)
1893 @findex gnus-summary-show-thread
1894 Show the thread hidden under the current article, if any
1895 (@code{gnus-summary-show-thread}).
1897 @kindex M-C-h (Summary)
1898 @findex gnus-summary-hide-thread
1899 Hide the current (sub)thread (@code{gnus-summary-hide-thread}).
1902 The following commands are all thread movement commands. They all
1903 understand the numeric prefix.
1907 @kindex M-C-f (Summary)
1908 @findex gnus-summary-next-thread
1909 Go to the next thread (@code{gnus-summary-next-thread}).
1911 @kindex M-C-b (Summary)
1912 @findex gnus-summary-prev-thread
1913 Go to the previous thread (@code{gnus-summary-prev-thread}).
1915 @kindex M-C-d (Summary)
1916 @findex gnus-summary-down-thread
1917 Descend the thread (@code{gnus-summary-down-thread}).
1919 @kindex M-C-u (Summary)
1920 @findex gnus-summary-up-thread
1921 Ascend the thread (@code{gnus-summary-up-thread}).
1924 @node Exiting the Summary Buffer
1925 @section Exiting the Summary Buffer
1930 @findex gnus-summary-exit
1931 Exit the current group and update all the information
1932 (@code{gnus-summary-exit}).
1935 @findex gnus-summary-quit
1936 Exit the current group without updating any information
1937 (@code{gnus-summary-quit}).
1940 @findex gnus-summary-catchup-and-exit
1941 Mark all articles in the group as read and exit
1942 (@code{gnus-summary-catchup-and-exit}).
1945 @vindex gnus-exit-group-hook
1946 @code{gnus-exit-group-hook} is called when you exit the current
1949 @vindex gnus-use-cross-reference
1950 When you exit the summary buffer, the data on the current group will
1951 be updated (which articles you have read, which articles you have
1952 replied to, etc.) If the @code{gnus-use-cross-reference} variable is
1953 non-nil, articles that are cross-referenced to this group, and are
1954 marked as read, will also be marked as read in the other groups they
1955 were cross-posted to. This ensures that you'll never have to read the
1956 same article more than once.
1958 Unless, of course, somebody has posted it to several groups
1959 separately. If so, send them a nasty-gram.
1961 One other thing that may cause Gnus to not do the cross-posting thing
1962 correctly is if you use an NNTP server that supports xover (which is
1963 very nice, because it speeds things up considerably) which does not
1964 include the Xref header in its NOV lines. This is Evil, but it's
1965 common. Gnus tries to Do The Right Thing even with xover by registering
1966 the Xref lines of all articles you actually read, but if you kill the
1967 articles, or just mark them as read without reading them, Gnus will not
1968 get a chance to snoop the Xref lines out of these articles, and will be
1969 unable to use the cross reference mechanism.
1971 @vindex gnus-nov-is-evil
1972 If you want Gnus to get the Xrefs right all the time, you have to set
1973 @code{gnus-nov-is-evil} to t, which slows things down considerably.
1977 @node Saving Articles
1978 @section Saving Articles
1980 Gnus can save articles in a number of ways. Below is the documentation
1981 for saving articles in a fairly straight-forward fashion (ie. little
1982 processing of the article is done before it is saved). For a different
1983 approach (uudecoding, unsharing, digesting) see gnus-uu.
1985 @vindex gnus-save-all-headers
1986 If @code{gnus-save-all-headers} is non-nil, Gnus will not delete
1987 unwanted headers before saving the article.
1992 @findex gnus-summary-save-article
1993 Save the current article (@code{gnus-summary-save-article}).
1995 @kindex C-o (Summary)
1996 @findex gnus-summary-save-rmail
1997 Save the current article in rmail format
1998 (@code{gnus-summary-save-rmail}).
2001 @vindex gnus-default-article-saver
2002 You can customize the @code{gnus-default-article-saver} variable to make
2003 Gnus what you want it to. You can use any of the four ready-made
2004 functions below, or you can create your own.
2007 @item gnus-summary-save-in-rmail
2008 @vindex gnus-summary-save-in-rmail
2009 This is the format Gnus uses by default, @dfn{babyl}. Uses the function
2010 in the @code{gnus-rmail-save-name} variable to get a file name to save
2011 the article in. The default is @code{gnus-plain-save-name}.
2012 @item gnus-summary-save-in-mail
2013 @vindex gnus-summary-save-in-mail
2014 Save in a Unix mail (mbox) file. Uses the function in the
2015 @code{gnus-mail-save-name} variable to get a file name to save the
2016 article in. The default is @code{gnus-plain-save-name}.
2017 @item gnus-summary-save-in-file
2018 @vindex gnus-summary-save-in-file
2019 Append the article straight to an ordinary file. Uses the function in
2020 the @code{gnus-file-save-name} variable to get a file name to save the
2021 article in. The default is @code{gnus-numeric-save-name}.
2022 @item gnus-summary-save-in-folder
2023 @vindex gnus-summary-save-in-folder
2024 Save the article to an MH folder using @code{rcvstore} from the MH
2028 All of these functions, except for the last one, will save the article
2029 in the @code{gnus-article-save-directory}, which is initialized from the
2030 @samp{SAVEDIR} environment variable.
2032 As you can see above, the functions use different functions to find a
2033 suitable name of a file to save the article in. Below is a list of
2034 available functions that generates names:
2037 @item gnus-Numeric-save-name
2038 @findex gnus-Numeric-save-name
2039 Generates file names that look like @samp{~/News/Alt.andrea-dworkin/45}.
2040 @item gnus-numeric-save-name
2041 @findex gnus-numeric-save-name
2042 Generates file names that look like @samp{~/News/alt.andrea-dworkin/45}.
2043 @item gnus-Plain-save-name
2044 @findex gnus-Plain-save-name
2045 Generates file names that look like @samp{~/News/Alt.andrea-dworkin}.
2046 @item gnus-plain-save-name
2047 @findex gnus-plain-save-name
2048 Generates file names that look like @samp{~/News/alt.andrea-dworkin}.
2051 @vindex gnus-use-long-file-name
2052 Finally, you have the @code{gnus-use-long-file-name} variable. If it is
2053 nil, all the preceding functions will replace all periods (@samp{.}) in
2054 the group names with slashes (@samp{/}) - which means that the functions
2055 will generate hierarchies of directories instead of having all the files
2056 in the toplevel directory (@samp{~/News/alt/andrea-dworkin} instead of
2057 @samp{~/News/alt.andrea-dworkin}.)
2059 @node Decoding Articles
2060 @section Decoding Articles
2062 Gnus has a plethora of functions for handling series of (uu)encoded
2063 articles. Gnus can find out by itself what articles belong to one
2064 series, decode all the articles and unpack/view/save the resulting
2065 file(s). All these functions belong to the `gnus-uu' package and are
2066 reached from the summary buffer as three-key keystrokes: @key{C-c C-v
2067 KEY}. That last key varies, of course, but all these functions use the
2068 @key{C-c C-v} prefix keystroke.
2070 Gnus guesses what articles are in the series according to the following
2071 simplish rule: The subjects must be (nearly) identical, except for the
2072 last two numbers of the line. (Spaces are largely ignored, however.)
2074 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
2075 will find all the articles that match the regexp @samp{^cat.gif
2076 ([0-9]+/[0-9]+).*$}.
2078 Subjects that are nonstandard, like @samp{cat.gif (2/3) Part 6 of a
2079 series}, will not be properly recognized by any of the automatic viewing
2080 commands, and you have to mark the articles manually with @key{#}.
2083 * Decoding Commands:: Decoding in various ways.
2084 * Setting the Process Mark:: You can mark which articles to work on.
2085 * Other Related Commands:: Other related commands.
2086 * Viewing Files:: You can view the resulting decoded files.
2087 * Decoding Variables:: No, you do not have to decode any variables.
2090 @node Decoding Commands
2091 @subsection Decoding Commands
2093 All the keystrokes for decoding follow a strict pattern.
2097 This is a function for decoding and viewing.
2099 This is a function for decoding and saving.
2100 @item C-c C-v M-C-KEY
2101 This is a function for decoding and viewing marked articles.
2103 This is a function for decoding and saving marked articles.
2107 * Decoding With uudecode:: The most common encoding on the net.
2108 * Decoding With unshar:: This is used some in source groups.
2109 * Decoding With Other Decoders:: Binhex and plain save.
2112 @node Decoding With uudecode
2113 @subsubsection Decoding With uudecode
2117 @kindex C-c C-v C-v (Summary)
2118 @findex gnus-uu-decode-and-view
2119 Decode and view the series of articles that the current article is a
2120 part of (@code{gnus-uu-decode-and-view}).
2122 @kindex C-c C-v v (Summary)
2123 @findex gnus-uu-decode-and-save
2124 Decode and save the series of articles that the current article is a
2125 part of (@code{gnus-uu-decode-and-save}).
2127 @kindex C-c C-v M-C-v (Summary)
2128 @findex gnus-uu-marked-decode-and-view
2129 Decode and view the marked articles
2130 (@code{gnus-uu-marked-decode-and-view}).
2132 @kindex C-c C-v M-v (Summary)
2133 @findex gnus-uu-marked-decode-and-view
2134 Decode and save the marked articles
2135 (@code{gnus-uu-marked-decode-and-view}).
2137 @kindex C-c C-v C-w (Summary)
2138 @findex gnus-uu-decode-and-view-all-articles
2139 Decode and view all articles in the group
2140 (@code{gnus-uu-decode-and-view-all-articles}).
2142 @kindex C-c C-v w (Summary)
2143 @findex gnus-uu-decode-and-save-all-articles
2144 Decode and save all articles in the group
2145 (@code{gnus-uu-decode-and-save-all-articles}).
2147 @kindex C-c C-v M-C-w (Summary)
2148 @findex gnus-uu-decode-and-view-all-marked-files
2149 Decode and view all series of articles that are marked
2150 (@code{gnus-uu-decode-and-view-all-marked-files}).
2152 @kindex C-c C-v M-w (Summary)
2153 @findex gnus-uu-decode-and-save-all-marked-files
2154 Decode and save all series of articles that are marked
2155 (@code{gnus-uu-decode-and-save-all-marked-files}).
2157 @kindex C-c C-v C-a (Summary)
2158 @findex gnus-uu-decode-and-view-all-articles
2159 Decode and view all unread articles in the group
2160 (@code{gnus-uu-decode-and-view-all-articles}).
2162 @kindex C-c C-v a (Summary)
2163 @findex gnus-uu-decode-and-save-all-articles
2164 Decode and save all unread articles in the group
2165 (@code{gnus-uu-decode-and-save-all-articles}).
2167 @kindex C-c C-v C-b (Summary)
2168 @findex gnus-uu-decode-and-show-in-buffer
2169 Decode the current article and show the result in the article
2170 buffer. This might be useful if somebody has encoded (parts of) an
2171 article, for some strange reason
2172 (@code{gnus-uu-decode-and-show-in-buffer}).
2175 The @code{gnus-uu-decode-and-save-all-marked-files} need some
2176 explanation. It allows you to mark all articles that are part of series
2177 of articles you are interested in in a group. You only have to mark
2178 one article for each series of articles you want, and then you call this
2179 function, which will find all articles that are part of the series you
2180 want. Is that clear? And they say it's a stupid idea getting drunk
2181 before writing documentation! Bah!
2183 @node Decoding With unshar
2184 @subsubsection Decoding With unshar
2186 Using @code{unshar} introduces rather large security holes - it actually
2187 runs the code it finds in the articles. So you should, at least, peek
2188 through the articles you want to unshar before using these functions.
2192 @kindex C-c C-v C-s (Summary)
2193 @findex gnus-uu-shar-and-view
2194 @kindex C-c C-v C-s (Summary)
2195 @findex gnus-uu-shar-and-view
2196 Unshar and view the series of articles that the current article is a
2197 part of (@code{gnus-uu-shar-and-view}).
2199 @kindex C-c C-v s (Summary)
2200 @findex gnus-uu-shar-and-save
2201 @kindex C-c C-v s (Summary)
2202 @findex gnus-uu-shar-and-save
2203 Unshar and save the series of articles that the current article is a
2204 part of (@code{gnus-uu-shar-and-save}).
2206 @kindex C-c C-v M-C-s (Summary)
2207 @findex gnus-uu-marked-shar-and-view
2208 @kindex C-c C-v M-C-s (Summary)
2209 @findex gnus-uu-marked-shar-and-view
2210 Unshar and view the marked articles
2211 (@code{gnus-uu-marked-shar-and-view}).
2213 @kindex C-c C-v M-s (Summary)
2214 @findex gnus-uu-marked-shar-and-view
2215 @kindex C-c C-v M-s (Summary)
2216 @findex gnus-uu-marked-shar-and-view
2217 Unshar and save the marked articles
2218 (@code{gnus-uu-marked-shar-and-view}).
2221 @node Decoding With Other Decoders
2222 @subsubsection Decoding With Other Decoders
2224 These commands are entry points to all the decoding methods Gnus knows -
2225 uudecode, unshar, unbinhex and save. You will be prompted for what
2226 method you want to employ.
2230 @kindex C-c C-v C-m (Summary)
2231 @findex gnus-uu-multi-decode-and-view
2232 Decode (by some method) and view the series of articles that the current
2233 article is a part of (@code{gnus-uu-multi-decode-and-view}).
2235 @kindex C-c C-v m (Summary)
2236 @findex gnus-uu-multi-decode-and-save
2237 Decode (by some method) and save the series of articles that the current
2238 article is a part of (@code{gnus-uu-multi-decode-and-save}).
2240 @kindex C-c C-v M-C-m (Summary)
2241 @findex gnus-uu-marked-multi-decode-and-view
2242 Decode (by some method) and view the marked articles
2243 (@code{gnus-uu-marked-multi-decode-and-view}).
2245 @kindex C-c C-v M-m (Summary)
2246 @findex gnus-uu-marked-multi-decode-and-view
2247 Decode (by some method) and save the marked articles
2248 (@code{gnus-uu-marked-multi-decode-and-view}).
2250 @kindex C-c C-v C-j (Summary)
2251 @findex gnus-uu-threaded-multi-decode-and-view
2252 Decode (by some method) and view all articles in the current thread
2253 (@code{gnus-uu-threaded-multi-decode-and-view}).
2255 @kindex C-c C-v C-j (Summary)
2256 @findex gnus-uu-threaded-multi-decode-and-view
2257 Decode (by some method) and save all articles in the current thread
2258 (@code{gnus-uu-threaded-multi-decode-and-view}).
2261 @node Setting the Process Mark
2262 @subsection Setting the Process Mark
2264 The process mark is used by other parts of Gnus, not just the `gnus-uu'
2265 package. However, this is where it is most useful, so it adds some
2266 further methods for setting the mark.
2270 @kindex C-c C-v C-r (Summary)
2271 @findex gnus-uu-mark-by-regexp
2272 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}).
2274 @kindex C-c C-v r (Summary)
2275 @findex gnus-uu-mark-region
2276 Mark all articles between point and mark (@code{gnus-uu-mark-region}).
2278 @kindex C-c C-v t (Summary)
2279 @findex gnus-uu-mark-thread
2280 Mark all articles downward in the current thread
2281 (@code{gnus-uu-mark-thread}).
2284 @node Other Related Commands
2285 @subsection Other Related Commands
2289 @kindex C-c C-v f (Summary)
2290 @findex gnus-uu-digest-and-forward
2291 Digest and forward all articles that are part of a series
2292 (@code{gnus-uu-digest-and-forward}).
2294 @kindex C-c C-v M-f (Summary)
2295 @findex gnus-uu-marked-digest-and-forward
2296 Digest and forward all marked articles
2297 (@code{gnus-uu-marked-digest-and-forward}).
2299 @kindex C-c C-v C-i (Summary)
2300 @findex gnus-uu-toggle-interactive-view
2301 Instead of having windows popping up automatically, it can be handy to
2302 view files interactivly, especially when viewing archives
2303 (@code{gnus-uu-toggle-interactive-view}).
2305 @kindex C-c C-v C-t (Summary)
2307 Toggle any of the most important @code{gnus-uu} variables
2308 (@code{gnus-uu-toggle-any-variable}).
2310 @kindex C-c C-v C-l (Summary)
2311 @findex gnus-uu-edit-begin-line
2312 Edit the @samp{begin} line of an uuencoded article, if any
2313 (@code{gnus-uu-edit-begin-line}).
2315 @kindex C-c C-v p (Summary)
2316 @findex gnus-uu-post-news
2317 Uuencode and post an file. If the file is large, it will be split into a
2318 series of articles that will be posted (@code{gnus-uu-post-news}).
2322 @subsection Viewing Files
2324 When using the view commands, @code{gnus-uu-decode-and-view} for
2325 instance, Gnus will (normally, see below) try to view the file according
2326 to the rules given in @code{gnus-uu-default-view-rules} and
2327 @code{gnus-uu-user-view-rules}. If it recognizes the file, it will
2328 display it immediately. If the file is some sort of archive, Gnus will
2329 attempt to unpack the archive and see if any of the files in the archive
2330 can be viewed. For instance, if you have a gzipped tar file
2331 @file{pics.tar.gz} containing the files @file{pic1.jpg} and
2332 @file{pic2.gif}, Gnus will uncompress and detar the main file, and then
2333 view the two pictures. This unpacking process is recursive, so if the
2334 archive contains archives of archives, it'll all be unpacked.
2336 If the view command doesn't recognise the file type, or can't view it
2337 because you don't have the viewer, or can't view *any* of the files in
2338 the archive, the user will be asked if she wishes to have the file saved
2339 somewhere. Note that if the decoded file is an archive, and Gnus
2340 manages to view some of the files in the archive, it won't tell the user
2341 that there were some files that were unviewable. Try interactive view
2342 for a different approach.
2344 @node Decoding Variables
2345 @subsection Decoding Variables
2347 Adjective, not verb.
2350 * Rule Variables:: Variables that say how a file is to be viewed.
2351 * Other Decode Variables:: Other decode variables.
2354 @node Rule Variables
2355 @subsubsection Rule Variables
2357 Gnus uses @dfn{rule} variables to decide how to view a file. All these
2358 variables are on the form
2361 (list '(regexp1 command2)
2367 @item gnus-uu-user-view-rules
2368 @vindex gnus-uu-user-view-rules
2369 This variable is consulted first when viewing files. If you wish to use,
2370 for instance, @code{sox} to convert an @samp{.au} sound file, you could
2373 (setq gnus-uu-user-view-rules
2374 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
2376 @item gnus-uu-user-view-rules-end
2377 @vindex gnus-uu-user-view-rules-end
2378 This variable is consulted if Gnus couldn't make any matches from the
2379 user and default view rules.
2380 @item gnus-uu-user-interactive-view-rules
2381 @vindex gnus-uu-user-interactive-view-rules
2382 This is the variable used instead of @code{gnus-uu-user-view-rules}
2383 when in interactive mode.
2384 @item gnus-uu-user-interactive-view-rules-end
2385 @vindex gnus-uu-user-interactive-view-rules-end
2386 This variable is used instead of @code{gnus-uu-user-view-rules-end} when
2387 in interactive mode.
2388 @item gnus-uu-user-archive-rules
2389 @vindex gnus-uu-user-archive-rules
2390 This variable can be used to say what comamnds should be used to unpack
2394 @node Other Decode Variables
2395 @subsubsection Other Decode Variables
2398 @item gnus-uu-ignore-files-by-name
2399 @vindex gnus-uu-ignore-files-by-name
2400 Files with name matching this regular expression won't be viewed.
2402 @item gnus-uu-ignore-files-by-type
2403 @vindex gnus-uu-ignore-files-by-type
2404 Files with a MIME type matching this variable won't be viewed. Note
2405 that Gnus tries to guess what type the file is based on the
2406 name. gnus-uu is not a MIME package, so this is slightly kludgy.
2408 @item gnus-uu-tmp-dir
2409 @vindex gnus-uu-tmp-dir
2410 Where gnus-uu does its work.
2412 @item gnus-uu-do-not-unpack-archives
2413 @vindex gnus-uu-do-not-unpack-archives
2414 Non-nil means that gnus-uu won't peek inside archives looking for files
2417 @item gnus-uu-view-and-save
2418 @vindex gnus-uu-view-and-save
2419 Non-nil means that the user will always be asked to save a file after
2422 @item gnus-uu-asynchronous
2423 @vindex gnus-uu-asynchronous
2424 Non-nil means that files will be viewed asynchronously. This can be
2425 useful if you're viewing long @file{.mod} files, for instance, which
2426 often takes several minutes. Note, however, that since gnus-uu doesn't
2427 ask, and if you are viewing an archive with lots of viewable files,
2428 you'll get them all up more or less at once, which can be confusing, to
2429 say the least. To get gnus-uu to ask you before viewing a file, set the
2430 @code{gnus-uu-ask-before-view} variable.
2432 @item gnus-uu-ask-before-view
2433 @vindex gnus-uu-ask-before-view
2434 Non-nil means that gnus-uu will ask you before viewing each file.
2436 @item gnus-uu-ignore-default-view-rules
2437 @vindex gnus-uu-ignore-default-view-rules
2438 Non-nil means that gnus-uu will ignore the default viewing rules.
2440 @item gnus-uu-ignore-default-archive-rules
2441 @vindex gnus-uu-ignore-default-archive-rules
2442 Non-nil means that gnus-uu will ignore the default archive unpacking
2445 @item gnus-uu-kill-carriage-return
2446 @vindex gnus-uu-kill-carriage-return
2447 Non-nil means that gnus-uu will strip all carriage returns from
2450 @item gnus-uu-unmark-articles-not-decoded
2451 @vindex gnus-uu-unmark-articles-not-decoded
2452 Non-nil means that gnus-uu will mark articles that were unsuccessfully
2455 @item gnus-uu-output-window-height
2456 @vindex gnus-uu-output-window-height
2457 This variable says how tall the output buffer window is to be when using
2458 interactive view mode.
2460 @item gnus-uu-correct-stripped-uucode
2461 @vindex gnus-uu-correct-stripped-uucode
2462 Non-nil means that gnus-uu will *try* to fix uuencoded files that have
2463 had traling spaces deleted.
2465 @item gnus-uu-use-interactive-view
2466 @vindex gnus-uu-use-interactive-view
2467 Non-nil means that gnus-uu will use interactive viewing mode.
2469 @item gnus-uu-view-with-metamail
2470 @vindex gnus-uu-view-with-metamail
2471 Non-nil means that gnus-uu will ignore the viewing commands defined by
2472 the rule variables and just fudge a MIME content type based on the file
2473 name. The result will be fed to metamail for viewing.
2475 @item gnus-uu-save-in-digest
2476 @vindex gnus-uu-save-in-digest
2477 Non-nil means that gnus-uu, when asked to save without decoding, will
2478 save in digests. If this variable is nil, gnus-uu will just save
2479 everything in a file without any embellishments. The digesting almost
2480 conforms to RFC1153 - no easy way to specify any meaningful volume and
2481 issue numbers were found, so I simply dropped them.
2483 @item gnus-uu-post-include-before-composing
2484 @vindex gnus-uu-post-include-before-composing
2485 Non-nil means that gnus-uu will ask for a file to encode before you
2486 compose the article. If this variable is t, you can either include an
2487 encoded file with @key{C-c C-i} or have one included for you when you
2490 @item gnus-uu-post-length
2491 @vindex gnus-uu-post-length
2492 Maximum length of an article. The encoded file will be split into how
2493 many articles it takes to post the entire file.
2495 @item gnus-uu-post-threaded
2496 @vindex gnus-uu-post-threaded
2497 Non-nil means that gnus-uu will post the encoded file in a thread. This
2498 may not be smart, as no other decoder I have seen are able to follow
2499 threads when collecting uuencoded articles. (Well, I have seen one
2500 package that does that - gnus-uu, but somehow, I don't think that
2501 counts...) Default is nil.
2503 @item gnus-uu-post-separate-description
2504 @vindex gnus-uu-post-separate-description
2505 Non-nil means that the description will be posted in a separate article.
2506 The first article will typically be numbered (0/x). If this variable is
2507 nil, the description the user enters will be included at the beginning
2508 of the first article, which will be numbered (1/x). Default is t.
2512 @node Various Article Stuff
2513 @section Various Article Stuff
2518 @findex gnus-summary-stop-page-breaking
2519 Remove page breaking from the current article
2520 (@code{gnus-summary-stop-page-breaking}).
2522 @kindex C-c C-r (Summary)
2523 @findex gnus-summary-caesar-message
2524 Do a Caesar rotate (rot13) on the article buffer
2525 (@code{gnus-summary-caesar-message}).
2528 @findex gnus-summary-show-article
2529 Select the current article (@code{gnus-summary-show-article}).
2532 @findex gnus-summary-toggle-header
2533 Toggle whether to display all headers in the article buffer
2534 (@code{gnus-summary-toggle-header}).
2536 @kindex M-t (Summary)
2537 @findex gnus-summary-toggle-mime
2538 Toggle whether to run the article through MIME before displaying
2539 (@code{gnus-summary-toggle-mime}).
2542 @findex gnus-summary-pipe-output
2543 Pipe the current article through a filter
2544 (@code{gnus-summary-pipe-output}).
2547 @node Summary Sorting
2548 @section Summary Sorting
2550 You can have the summary buffer sorted in various ways, even though I
2551 can't really se why you'd want that.
2555 @kindex C-c C-s C-n (Summary)
2556 @findex gnus-summary-sort-by-number
2557 Sort by article number (@code{gnus-summary-sort-by-number}).
2559 @kindex C-c C-s C-a (Summary)
2560 @findex gnus-summary-sort-by-author
2561 Sort by author (@code{gnus-summary-sort-by-author}).
2563 @kindex C-c C-s C-s (Summary)
2564 @findex gnus-summary-sort-by-subject
2565 Sort by subject (@code{gnus-summary-sort-by-subject}).
2567 @kindex C-c C-s C-d (Summary)
2568 @findex gnus-summary-sort-by-date
2569 Sort by date (@code{gnus-summary-sort-by-date}).
2572 @node Finding the Parent
2573 @section Finding the Parent
2575 @findex gnus-summary-refer-parent-article
2577 If you'd like to read the parent of the current article, and it is not
2578 displayed in the article buffer, you might still be able to. That is,
2579 if the current group is fetched by NNTP, the parent hasn't expired and
2580 the References in the current article are not mangled, you can just
2581 press @kbd{^} (@code{gnus-summary-refer-parent-article}). If everything
2582 goes well, you'll get the parent. If the parent is already displayed in
2583 the summary buffer, point will just move to this article.
2585 @findex gnus-summary-refer-article
2586 @kindex M-^ (Summary)
2587 You can also ask the NNTP server for an arbitrary article, no matter
2588 what group it belongs to. @kbd{M-^} (@code{gnus-summary-refer-article})
2589 will ask you for a message-id, which is one of those long thingies that
2590 look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You have to
2591 get it all exactly right.
2594 @section Score Files
2596 Other people call them @dfn{kill files}, but we here at (ding) Gnus
2597 Towers likes scoring better than killing, so we've changed the
2598 name. We've also changed what they do, so sit up straight and pay
2601 All articles have a default score (@code{gnus-summary-default-score}).
2602 This score may be raised or lowered either interactively or by the score
2603 files. Articles that have a score lower than
2604 @code{gnus-summary-mark-below} are marked as read.
2606 If a @dfn{score file} for the current group exists, Gnus will read it
2607 after generating the summary buffer.
2609 The score files are files that may contain, in general, any elisp
2610 functions. However, it is most common just to put functions that either
2611 raises or lowers the score of articles based on their headers in those
2612 files. Hence the name.
2614 There are several commands reachable from the summary buffer that
2615 inserts commands for scoring articles based on the current article. You
2616 can, for instance, ask Gnus to lower or raise the score of all articles
2617 with a certain subject.
2620 * Summary Score Commands:: Adding simple score commands to the score file.
2621 * Score Mode:: A mode for editing the score file.
2622 * Score Variables:: Customize your scoring. (My, what terminology).
2625 @node Summary Score Commands
2626 @subsection Summary Score Commands
2630 @kindex C-c C-k C-s (Summary)
2631 @findex gnus-kill-file-kill-by-subject
2632 Kill all articles with the current subject
2633 (@code{gnus-kill-file-kill-by-subject}).
2635 @kindex C-c C-k C-a (Summary)
2636 @findex gnus-kill-file-kill-by-author
2637 Kill all articles from the current author
2638 (@code{gnus-kill-file-kill-by-author}).
2640 @kindex C-c C-k C-t (Summary)
2641 @findex gnus-kill-file-kill-by-thread
2642 Kill all articles in the current subthread
2643 (@code{gnus-kill-file-kill-by-thread}).
2645 @kindex C-c C-k C-o (Summary)
2646 @findex gnus-kill-file-kill-by-organization
2647 Kill all articles from the current organization
2648 (@code{gnus-kill-file-kill-by-organization}).
2650 @kindex C-c C-k C-x (Summary)
2651 @findex gnus-kill-file-kill-by-xref
2652 Kill all articles that have similar Xrefs to the current article
2653 (@code{gnus-kill-file-kill-by-xref}). This is one way to get rid of
2658 @subsection Score Mode
2660 To enter either the global or local score file, you can use the
2661 following keystrokes in the summary buffer:
2665 @kindex M-k (Summary)
2666 @findex gnus-summary-edit-local-kill
2667 Edit the kill file for the current group
2668 (@code{gnus-summary-edit-local-kill}).
2670 @kindex M-K (Summary)
2671 @findex gnus-summary-edit-global-kill
2672 Edit the global kill file (@code{gnus-summary-edit-global-kill}).
2675 @node Score Variables
2676 @subsection Score Variables
2679 @item gnus-kill-killed
2680 @vindex gnus-kill-killed
2681 If this variable is nil, Gnus will never apply score files to articles
2682 that have already been through the kill process. While this may save
2683 you lots of time, it also means that if you apply a kill file to a
2684 group, and then change the kill file and want to run it over you group
2685 again to kill more articles, it won't work. You have to set this
2686 variable to t to do that.
2687 @item gnus-apply-kill-hook
2688 @vindex gnus-apply-kill-hook
2689 This hook is called to do the actual article killing. This hook may do
2690 anything, of course, but it should call the @code{gnus-apply-kill-file}
2691 function, or some equivalent function, to do the killing.
2692 @item gnus-kill-files-directory
2693 @vindex gnus-kill-files-directory
2694 All kill files will be stored in this directory, which is initialized
2695 from the @samp{SAVEDIR} environment variable by default.
2696 @item gnus-kill-file-name
2697 @vindex gnus-kill-file-name
2698 This variable is a string that will be appended to group names to
2699 make a kill file name. The default is @samp{KILL}.
2702 @node Mail Group Commands
2703 @section Mail Group Commands
2705 Some commands only make sense in mail groups.
2709 @kindex M-C-x (Summary)
2710 @findex gnus-summary-expire-articles
2711 Expire all expirable articles in the group
2712 (@code{gnus-summary-expire-articles}).
2714 @kindex M-DEL (Summary)
2715 @findex gnus-summary-delete-articles
2716 Delete the mail article. This is "delete" as in "delete it from your
2717 disk forever and ever, never to return again." Use with caution.
2718 (@code{gnus-summary-delete-article}).
2720 @kindex M-m (Summary)
2721 @findex gnus-summary-move-article
2722 Move the article from one mail group to another
2723 (@code{gnus-summary-move-article}).
2725 @kindex M-C-m (Summary)
2726 @findex gnus-summary-respool-article
2727 Respool the mail article (@code{gnus-summary-move-article}).
2730 @node Various Summary Stuff
2731 @section Various Summary Stuff
2736 @findex gnus-summary-expand-window
2737 This command will prompt you for a header field, a regular expression to
2738 be matched this field, and a command to be executed if the match is
2742 @findex gnus-summary-expand-window
2743 Delete all other windows (@code{gnus-summary-expand-window}).
2745 @kindex C-x C-s (Summary)
2746 @findex gnus-summary-reselect-current-group
2747 Exit this group, and then enter it again
2748 (@code{gnus-summary-reselect-current-group}).
2750 @kindex C-c C-d (Summary)
2751 @findex gnus-summary-describe-group
2752 Give a brief description of the current group
2753 (@code{gnus-summary-describe-group}).
2755 @kindex M-g (Summary)
2756 @findex gnus-summary-rescan-group
2757 Exit group, check for new articles in the group, and select the group
2758 (@code{gnus-summary-rescan-group}).
2761 @findex gnus-version
2762 Display the Gnus version numbers (@code{gnus-version}).
2765 @findex gnus-summary-describe-briefly
2766 Give a very brief description of the most important summary keystrokes
2767 (@code{gnus-summary-describe-briefly}).
2769 @kindex C-c C-i (Summary)
2770 @findex gnus-info-find-node
2771 Go to the Gnus info node (@code{gnus-info-find-node}).
2774 @vindex gnus-summary-prepare-hook
2775 @code{gnus-summary-prepare-hook} is called after the summary buffer has
2776 been generated. You might use it to, for instance, hilight lines, modify
2777 the look, or anything else you feel like. I don't care.
2779 @node The Article Buffer
2780 @chapter The Article Buffer
2782 The articles are displayed in the article buffer, of which there is only
2783 one. All the summary buffer share the same article buffer.
2786 * Hiding Headers:: Deciding what headers should be displayed.
2787 * Using Mime:: Pushing articles through MIME before reading them.
2788 * Customizing Articles:: Tailoring the look of the articles.
2789 * Article Keymap:: Keystrokes available in the article buffer
2790 * Misc Article:: Other stuff.
2793 @node Hiding Headers
2794 @section Hiding Headers
2796 The top section of each article is the @dfn{header}. (The rest is the
2797 @dfn{body}, but you may have guessed that already.)
2799 @vindex gnus-show-all-headers
2800 There is a lot of information in the header - the name of the person who
2801 wrote the article, the date and the subject of the article. That might
2802 be very useful, buf there's also lots of information most people do not
2803 want to see - what systems the article has passed through before
2804 reaching you, the message id, the references, etc. ad nauseum - and
2805 you'll probably want to get rid of some of those lines. If you want to
2806 keep all those lines in the article buffer, you can set
2807 @code{gnus-show-all-headers} to t.
2809 Gnus provides you with two variables for sifting header lines:
2812 @item gnus-visible-headers
2813 @vindex gnus-visible-headers
2814 If this variable is non-nil, it should be a regular expression that says
2815 what header lines you wish to keep in the article buffer. All header
2816 lines that does not match this variable will be hidden.
2818 For instance, if you only want to see the name of the person who wrote
2819 the article and the subject, you'd say:
2822 (setq gnus-visible-headers "^From:\\|^Subject:")
2825 @item gnus-ignored-headers
2826 @vindex gnus-ignored-headers
2827 This variable is the reverse of @code{gnus-visible-headers}. If this
2828 variable is set (and @code{gnus-visible-headers} is nil), it should be a
2829 regular expression that matches all lines that you want to hide. All
2830 lines that does not match this variable will remain visible.
2832 For instance, if you just want to get rid of the references line and the
2833 xref line, you might say:
2836 (setq gnus-ignored-headers "^References:\\^Xref:")
2839 Note that if @code{gnus-visible-headers} is non-nil, this variable will
2843 @vindex gnus-sorted-header-list
2844 Gnus can also sort the headers for you. (It does this by default.) You
2845 can control the sorting by setting the @code{gnus-sorted-header-list}
2846 variable. It is a list of regular expressions that says in what order
2847 the header lines are to be displayed.
2849 For instance, if you want the name of the author of the article first,
2850 and then the subject, you might say something like:
2853 (setq gnus-sorted-header-list '("^From:" "^Subject:"))
2856 Any headers that are to remain visible, but are not listed in this
2857 variable, will be displayed after all the headers that are listed in
2863 Mime is a standard for waving your hands through the air, aimlessly,
2864 while people stand around yawning.
2866 MIME, however, is a standard for encoding your articles, aimlessly,
2867 while all newsreaders die of fear.
2869 MIME may specify what character set the article uses, the encoding of
2870 the characters, and it also makes it possible to embed pictures and
2871 other naughty stuff in innocent-looking articles.
2873 @vindex gnus-show-mime
2874 @vindex gnus-show-mime-method
2875 Gnus handles MIME by shoving the articles through
2876 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by
2877 default. Set @code{gnus-show-mime} to t if you want to use MIME all the
2878 time; it might be best just use the toggling functions from the summary
2879 buffer to avoid getting nasty surprises (for instance, you enter the
2880 group @samp{alt.sing-a-long} and, before you know it, MIME has
2881 decoded the sounds file in the article and some horrible sing-a-long
2882 song comes streaming out out your speakers, and you can't find the
2883 volume button, because there isn't one, and people are starting to look
2884 at you, and you try to stop the program, but you can't, and you can't
2885 find the program to control the volume, and everybody else in the room
2886 suddenly decides to look at you disdainfully, and you'll feel rather
2889 Any similarity to real events and people is purely coincidental. Ahem.
2891 @node Customizing Articles
2892 @section Customizing Articles
2894 @vindex gnus-article-display-hook
2895 The @code{gnus-article-display-hook} is called after the article has
2896 been inserted into the article buffer. It is meant to handle all
2897 treatment of the article before it is displayed. By default it contains
2898 @code{gnus-article-hide-headers}, which hides unwanted headers.
2900 @findex gnus-article-subcite
2901 @findex gnus-article-hide-signature
2902 @findex gnus-article-hide-citation
2903 Other useful functions you might add to this hook is
2904 @code{gnus-article-hide-citation} (which hides all cited text);
2905 @code{gnus-article-hide-signature} (which, umn, hides the signature);
2906 @code{gnus-article-subcite} (which tries to clean up the mess supercite
2907 makes in The Hands Of The Mad; @code{gnus-article-treat-overstrike}
2908 (which treats @samp{^H_} in a reasonable manner); and
2909 @code{gnus-article-remove-cr} (which removes trailing carriage returns).
2911 You can, of course, write your own functions. The functions are called
2912 in the article buffer, and you can do anything you like, pretty
2913 much. There is no information that you have to keep in the buffer - you
2914 can change everything.
2916 @node Article Keymap
2917 @section Article Keymap
2919 Most of the keystrokes in the summary buffer can also be used in the
2920 article buffer. They should behave as if you typed them in the summary
2921 buffer, which means that you don't actually have to have a summary
2922 buffer displayed when you're reading. You can do it all from the article
2925 A few additional keystrokes are available:
2929 @kindex SPACE (Article)
2930 @findex gnus-article-next-page
2931 Scroll forwards one page (@code{gnus-article-next-page}).
2933 @kindex DEL (Article)
2934 @findex gnus-article-prev-page
2935 Scroll backwards one page (@code{gnus-article-prev-page}).
2937 @kindex C-x r (Article)
2938 @findex gnus-article-refer-article
2939 If point is in the neighborhood of a message-id and you press @kbd{r},
2940 Gnus will try to get that article from the server. (Only available with
2941 nntp). (@code{gnus-article-refer-article}).
2943 @kindex C-x m (Article)
2944 @findex gnus-article-mail
2945 Send a reply to the address near point (@code{gnus-article-mail}).
2947 @kindex C-x M (Article)
2948 @findex gnus-article-mail-with-original
2949 Send a reply to the address near point and include the original article
2950 (@code{gnus-article-mail-with-original}).
2953 @findex gnus-article-show-summary
2954 Reconfigure the buffers so that the summary buffer becomes visible
2955 (@code{gnus-article-show-summary}).
2958 @findex gnus-article-describe-briefly
2959 Give a very brief description of the available keystrokes
2960 (@code{gnus-article-describe-briefly}).
2964 @section Misc Article
2966 @vindex gnus-article-display-hook
2967 @vindex gnus-article-prepare-hook
2968 The @code{gnus-article-prepare-hook} is called right after the article
2969 has been inserted into the article buffer. It is mainly intended for
2970 functions that do something depending on the contents; it should
2971 probably not be used for changing the contents of the article
2972 buffer. Use the @code{gnus-article-display-hook} for that, which is
2973 called after this hook is called.
2975 @vindex gnus-article-mode-line-format
2976 @code{gnus-article-mode-line-format} is a format string along the same
2977 lines as @code{gnus-summary-mode-line-format}. It accepts exactly the
2978 same format specifications as that variable.
2980 @vindex gnus-break-pages
2981 The @code{gnus-break-pages} variable controls whether @dfn{page
2982 breaking} is to take place. If this variable is non-nil, the articles
2983 will be divided into pages whenever a @code{gnus-page-delimiter} appears
2984 in the article. If this variable is nil, paging will not be done.
2986 @vindex gnus-page-delimiter
2987 @code{gnus-page-delimiter} is @samp{^L} (form linefeed) by default.
2993 * Interactive:: Making Gnus ask you many questions.
2994 * Windows Configuration:: Configuring the Gnus buffer windows.
2995 * Various Various:: Things that are really various.
2999 @section Interactive
3002 @item gnus-novice-user
3003 @vindex gnus-novice-user
3004 If this variable is non-nil, you are either a newcomer to the usenet
3005 world, or you are very cautious, which is a nice thing to be,
3006 really. You will be given questions of the type "Are you sure you want
3007 to do this?" before doing anything dangerous.
3008 @item gnus-expert-user
3009 @vindex gnus-expert-user
3010 If this variable is non-nil, you will never ever be asked any questions
3011 by Gnus. It will simply assume you know what your are doing, no matter
3013 @item gnus-interactive-catchup
3014 @vindex gnus-interactive-catchup
3015 Require confirmation before catching up a group if non-nil.
3016 @item gnus-interactive-post
3017 @vindex gnus-interactive-post
3018 If non-nil, the user will be prompted for a group name when posting
3020 @item gnus-interactive-exit
3021 @vindex gnus-interactive-exit
3022 Require confirmation before exiting Gnus.
3025 @node Windows Configuration
3026 @section Windows Configuration
3028 No, there's nothing here about X, so be quiet.
3031 @item gnus-use-full-window
3032 @vindex gnus-use-full-window
3033 If non-nil, Gnus will delete all other windows and occupy the entire
3034 Emacs screen by itself. It is t by default.
3035 @item gnus-window-configuration
3036 @vindex gnus-window-configuration
3037 This variable describes how much space each Gnus buffer should be given,
3038 compared to the other Gnus buffers. Here's an example:
3041 (setq gnus-window-configuration
3044 (article (0 3 10))))
3047 This variable is a list of lists, where each of these small lists is on
3048 the form @var{(action (g s a))}. As you can see, there are three
3049 possible @var{action}s - @code{group} (which is what happens when
3050 you first start Gnus, or returns from the summary buffer),
3051 @code{summary} (which is what happens when there are no unread articles
3052 in the group, and @code{article} (which is what happens when there
3053 is an unread article in the group).
3055 We see that in the first two actions, the respective buffers will fill
3056 the screen, and in the last, the article buffer will take ten lines for
3057 each three the summary buffer gets.
3059 @findex gnus-window-configuration-split
3060 This variable can also have a function as its value. In that case,
3061 whenever Gnus tries to configure the Gnus buffers, that function will be
3062 called with the @var{action} as its parameter. There is one pre-made
3063 function supplied, @code{gnus-window-configuration-split}, which may be
3064 suitable if you have a very wide Emacs window, and wants to have the
3065 summary buffer and the article buffer side by side. Here's the
3066 definition of this function, which you may use as a template for your
3070 (defun gnus-window-configuration-split (action)
3071 ;; The group buffer always exists, so it's nice to use
3072 ;; it as a starting point.
3073 (switch-to-buffer gnus-group-buffer t)
3074 (delete-other-windows)
3075 (split-window-horizontally)
3076 (cond ((or (eq action 'group) (eq action 'summary))
3077 (if (and (get-buffer gnus-summary-buffer)
3078 (buffer-name gnus-summary-buffer))
3079 (switch-to-buffer-other-window gnus-summary-buffer)))
3080 ((eq action 'article)
3081 (switch-to-buffer gnus-summary-buffer t)
3083 ;; Create and initialize the article buffer if it doesn't
3085 (gnus-article-setup-buffer)
3086 (switch-to-buffer gnus-article-buffer t))))
3090 @node Various Various
3091 @section Various Various
3093 @vindex gnus-updated-mode-lines
3094 The @code{gnus-updated-mode-lines} variable is a list of buffers that
3095 should keep their mode lines updated. The list may contain the symbols
3096 `group', `article' and `summary'. If the corresponding symbol is
3097 present, Gnus will keep that mode line updated with information that may
3098 be pertinent. If this variable is nil, screen refresh may be quicker.
3101 @chapter Customization
3103 All variables are properly documented elsewhere in this manual. This
3104 section is designed to give general pointers on how to customize Gnus
3105 for some quite common situations.
3108 * Slow NNTP Connection:: You run a local Emacs and get the news elsewhere.
3109 * Slow Terminal Connection:: You run a remote Emacs.
3110 * Little Disk Space:: You feel that having large setup files is icky.
3111 * Slow Machine:: You feel like buying a faster machine.
3114 @node Slow NNTP Connection
3115 @section Slow NNTP Connection
3117 If you run Emacs on a machine locally, and get your news from a machine
3118 over some very thin strings, you want to cut down on the amount of data
3119 Gnus has to get from the NNTP server.
3122 @item gnus-read-active-file
3123 Set this to nil, which will inhibit Gnus from requesting the entire active
3124 file from the server. This file is often v. large. You also have to set
3125 @code{gnus-check-new-news} and @code{gnus-check-bogus-newsgroups} to nil
3126 to make sure that Gnus doesn't suddenly decide to fetch the active file
3127 anyway. Note that this will make it difficult for you to get hold of new
3129 @item nntp-xover-is-evil
3130 This one has to be nil. If not, grabbing article headers from the NNTP
3131 server will not be very fast. Not all NNTP servers support XOVER; Gnus
3132 will detect this by itself.
3135 @node Slow Terminal Connection
3136 @section Slow Terminal Connection
3138 Let's say you use your home computer for dialling up the system that
3139 runs Emacs and Gnus. If your modem is slow, you want to reduce the
3140 amount of data that is sent over the wires as much as possible.
3143 @item gnus-auto-center-summary
3144 Set this to nil to inhibit Gnus from recentering the summary buffer all
3146 @item gnus-visible-headers
3147 Cut down on the headers that are included in the articles to the
3148 minimum. You can, in fact, make do without them altogether - most of the
3149 useful data is in the summary buffer, anyway. Set this variable to
3150 @samp{""} or @samp{"^Date:"}, or whatever you feel you need.
3151 @item gnus-article-display-hook
3152 Set this hook to all the available hiding commands:
3154 (setq gnus-article-display-hook
3155 '(gnus-article-hide-headers gnus-article-hide-signature
3156 gnus-article-hide-citation))
3158 @item gnus-use-full-window
3159 By setting this to nil, you can make all the windows smaller. While this
3160 doesn't really cut down much generally, it means that you have to see
3161 smaller portions of articles before deciding that you didn't want to
3163 @item gnus-thread-hide-subtree
3164 If this is non-nil, all threads in the summary buffer will be hidden
3166 @item gnus-updated-mode-lines
3167 If this is nil, Gnus will not put information in the buffer mode lines,
3168 which might save some time.
3171 @node Little Disk Space
3172 @section Little Disk Space
3174 The startup files can get rather large, so you may want to keep their
3175 sizes down a bit if you are running out of space.
3178 @item gnus-save-newsrc-file
3179 If this is nil, Gnus will never save @file{.newsrc} - it will only save
3180 @file{.newsrc.eld}. This means that you will not be able to use any
3181 other newsreaders than Gnus.
3182 @item gnus-save-killed-list
3183 If this is nil, Gnus will not save the list of dead groups. That
3184 means that Gnus will not know whether groups are new or old, which
3185 makes automatic handling of new groups impossible. You should also
3186 set @code{gnus-check-new-newsgroups} and
3187 @code{gnus-check-bogus-newsgroups} to nil if you set this variable to
3192 @section Slow Machine
3194 If you have a slow machine, or are just really impatient, there are a
3195 few things you can do to make Gnus run faster.
3197 Set @code{gnus-read-active-file}, @code{gnus-check-new-newsgroups},
3198 @code{gnus-check-bogus-newsgroups} to nil to make startup faster.
3200 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and
3201 @code{nntp-xover-is-evil} to nil to make entering and exiting the
3202 summary buffer faster.
3204 Set @code{gnus-article-display-hook} to nil to make article processing a
3207 @node Troubleshooting
3208 @chapter Troubleshooting
3210 @node Reporting Bugs
3211 @chapter Reporting Bugs
3213 If you find a bug in (ding) Gnus, you can report it with the @kbd{M-x
3214 gnus-bug} command. @code{(setq debug-on-error t)}, and send me the
3215 backtrace. I will fix bugs, but I can only fix them if you send me a
3216 precise description as to how to reproduce the bug.
3218 If you just need help, you are better off asking on
3219 @samp{gnu.emacs.gnus}.
3235 @c outline-regexp: "@chap\\|@\\(sub\\)*section\\|@appendix \\|@appendix\\(sub\\)*sec\\|\^L"