1 \input texinfo @c -*-texinfo-*-
2 @comment %**start of header (This is for running Texinfo on a region.)
4 @settitle Gnus 5.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) 1995 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.
50 @author by Lars Magne Ingebrigtsen
52 @vskip 0pt plus 1filll
53 Copyright @copyright{} 1995 Free Software Foundation, Inc.
55 Permission is granted to make and distribute verbatim copies of
56 this manual provided the copyright notice and this permission notice
57 are preserved on all copies.
59 Permission is granted to copy and distribute modified versions of this
60 manual under the conditions for verbatim copying, provided that the
61 entire resulting derived work is distributed under the terms of a
62 permission notice identical to this one.
64 Permission is granted to copy and distribute translations of this manual
65 into another language, under the above conditions for modified versions.
67 Cover art by Etienne Suvasa.
74 @top The Gnus Newsreader
76 You can read news (and mail) from within Emacs by using Gnus. The news
77 can be gotten by any nefarious means you can think of - @sc{nntp}, local
78 spool or your mbox file. All at the same time, if you want to push your
82 * History:: How Gnus got where it is today.
83 * Terminology:: We use really difficult, like, words here.
84 * Starting Up:: Finding news can be a pain.
85 * The Group Buffer:: Selecting, subscribing and killing groups.
86 * The Summary Buffer:: Reading, saving and posting articles.
87 * The Article Buffer:: Displaying and handling articles.
88 * The Server Buffer:: Making and editing virtual servers.
89 * Various:: General purpose settings.
90 * Customization:: Tailoring Gnus to your needs.
91 * Troubleshooting:: What you might try if things do not work.
92 * The End:: Farewell and goodbye.
93 * Appendix:: Technical stuff for technical people.
94 * Index:: Variable, function and concept index.
95 * Key Index:: Key Index.
102 @sc{gnus} was written by Masanobu UMEDA. When autumn crept up in '94,
103 Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus.
105 The recommended pronunciation of the name this program is "ding
106 guh-noose", with "ding" being half-sung in a loud, high-pitched voice,
107 and "guh-noose" being grumbled and a disaffected fashion. Any
108 irritation and/or damage this name may cause you is not the
109 responsibility of the author, even though you might like to strangle him
112 If you want to investigate the person responsible for this outrage, you
113 can point your (feh!) web browser to
114 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary
115 distribution point for the new and spiffy versions of Gnus, also know as
116 The Site That Destroys Newsrcs And Drives People Mad.
118 During the first extended alpha period of develpment, the new Gnus was
119 called "(ding) Gnus". @dfn{(ding)}, is, of course, short for @dfn{ding
120 is not Gnus}, which is a total and utter lie, but who cares? (Besides,
121 the "Gnus" in this abbreviation should probably be pronounced "news" as
122 UMEDA intended, which makes it a more appropriate name, don't you
125 In any case, after spending all that energy with coming up with a new
126 and spiffy name, we decided that the name was @emph{too} spiffy, so we
127 renamamed it back again to "Gnus". But in mixed case. "Gnus" vs.
128 @sc{gnus}. New vs. old.
130 Incidentally, the next Gnus generation will be called "September Gnus",
131 and won't be released until February. Confused? You will be.
134 * Why?:: What's the point of Gnus?
135 * Compatibility:: Just how compatible is Gnus with @sc{gnus}?
136 * Conformity:: Gnus tries to conform to all standards.
137 * Contributors:: Oodles of people.
138 * New Features:: Pointers to some of the new stuff in Gnus.
139 * Newest Features:: Features so new that they haven't been written yet.
145 What's the point of Gnus?
147 I want to provide a "rad", "happening", "way cool" and "hep" newsreader,
148 that lets you do anything you can think of. That was my original
149 motivation, but while working on Gnus, it has become clear to me that
150 this generation of newsreaders really belong in the stone age.
151 Newsreaders haven't developed much since the infancy of the net. If the
152 volume continues to rise with the current rate of increase, all current
153 newsreaders will be pretty much useless. How do you deal with
154 newsgroups that have hundreds (or thousands) of new articles each day?
156 Gnus offer no real solutions to these questions, but I would very much
157 like to see Gnus being used as a testing ground for new methods of
158 reading and fetching news. Expanding on Umeda-san's wise decision to
159 separate the newsreader from the backends, Gnus now offers a simple
160 interface for anybody who wants to write new backends for fetching mail
161 and news from different sources. I have added hooks for customizations
162 everywhere I can imagine useful. By doing so, I'm inviting every one of
163 you to explore and invent new ways of reading news.
165 May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}.
168 @section Compatibility
170 @cindex compatibility
171 Gnus was designed to be fully compatible with @sc{gnus}. Almost all key
172 bindings have been kept. More key bindings have been added, of course,
173 but only in one or two obscure cases have old bindings been changed.
178 @center In a cloud bones of steel.
182 All commands have kept their names. Some internal functions have changed
185 The @code{gnus-uu} package has changed drastically. @xref{Decoding
188 One major compatibility question if the presence of several summary
189 buffers. All variables that are relevant while reading a group are
190 buffer-local to the summary buffer they belong in. Although most
191 important variables have their values copied into their global
192 counterparts whenever a command is executed in the summary buffer, this
193 change might lead to incorrect values being used unless you are careful.
195 All code that relies on knowledge of @sc{gnus} internals will probably
196 fail. To take two examples: Sorting @code{gnus-newsrc-assoc} (or
197 changing it in any way, as a matter of fact) is strictly verboten. Gnus
198 maintains a hash table that points to the entries in this assoc (which
199 speeds up many functions), and changing the assoc directly will lead to
204 Old hilit19 code does not work at all. In fact, you should probably
205 remove all hilit code from all Gnus hooks
206 (@code{gnus-group-prepare-hook}, @code{gnus-summary-prepare-hook} and
207 @code{gnus-summary-article-hook}). (Well, at the very least the first
208 two.) Gnus provides various integrated functions for highlighting.
209 These are faster and more accurate. To make life easier for everybody,
210 Gnus will by default remove all hilit calls from all hilit hooks.
213 Packages like @code{expire-kill} will no longer work. As a matter of
214 fact, you should probably remove all old @sc{gnus} packages (and other
215 code) when you start using Gnus. More likely than not, Gnus already
216 does what you have written code to make @sc{gnus} do. (Snicker.)
218 Even though old methods of doing things are still supported, only the
219 new methods are documented in this manual. If you detect a new method of
220 doing something while reading this manual, that does not mean you have
221 to stop doing it the old way.
223 Gnus understands all @sc{gnus} startup files.
226 Overall, a casual user who hasn't written much code that depends on
227 @sc{gnus} internals should suffer no problems. If problems occur,
228 please let me know (@kbd{M-x gnus-bug}).
230 Problems specific to GNU XEmacs can be reported to popineau@@ese-metz.fr
231 (Fabrice Popineau). I will just forward any such questions to him,
232 anyway, so you might have to wait longer if you mail XEmacs questions to
239 No rebels without a clue here, ma'am. We conform to all standards known
240 to man. Except, of course, where we disagree with the standards and/or
246 There are no known breaches to this standard.
249 There are no known breaches to this standard, either.
251 @item Usenet Seal of Approval
252 Gnus hasn't been formally through the Seal process, but I have read
253 through the Seal text, and I think that Gnus would pass.
255 @item Son-of-RFC 1036
256 We do have some breaches to this one.
260 Gnus does no MIME handling, and this standard-to-be seems to think that
261 MIME is the bees' knees, so we have major breakage here.
263 This is considered to be a "vanity header", while I consider it to be
264 consumer information. After seeing so many badly formatted articles
265 coming from @code{tin} and @code{Netscape} I know not to use either of
266 those for posting articles. I would not have known that if it wasn't
267 for the @code{X-Newsreader} header.
269 Gnus does line breaking on this header. I infer from RFC1036 that being
270 conservative in what you output is not creating 5000-character lines, so
271 it seems like a good idea to me. However, this standard-to-be says that
272 whitespace in the @code{References} header is to be preserved, so... It
273 doesn't matter one way or the other to Gnus, so if somebody tells me
274 what The Way is, I'll change it. Or not.
279 If you ever see Gnus act noncompliantly to the texts mentioned above,
280 don't hesitate to drop a note to Gnus Towers and let us know.
284 @section Contributors
287 The new Gnus version couldn't have been done without the help of all the
288 people on the (ding) mailing list. Every day for months I have gotten
289 tens of nice bug reports from them, filling me with joy, every single
290 one of them. Smooches. The people on the list have been tried beyond
291 endurance, what with my "oh, that's a neat idea <type type>, yup, I'll
292 release it right away <ship off> no wait, that doesn't work at all <type
293 type>, yup, I'll ship that one off right away <ship off> no, wait, that
294 absolutely does not work" policy for releases. Microsoft - bah. I'm
297 I would like to take this opportunity to thank the Academy for... oops,
302 Of course, GNUS was written by Masanobu UMEDA.
304 Many excellent functions, especially dealing with scoring and
305 highlighting (as well as the soon-to-come @sc{soup} support) was written
308 Innumerable bug fixes were written by Sudish Joseph.
310 The refcard was written by Vladimir Alexiev.
312 I stole some pieces from the XGnus distribution by Felix Lee and JWZ.
314 nnfolder has been much enhanced by Scott Byer.
316 The orphan scoring was written by Peter Mutsaers.
318 GNU XEmacs support has been added by Fabrice Popineau.
320 Various bits and pieces, especially dealing with .newsrc files, was
321 suggested and added by Hallvard B Furuseth.
323 Brian Edmonds has written @code{gnus-bbdb}, as well as other bits and
326 Ricardo Nassif did the proof-reading.
328 Kevin Davidson came up with the name @dfn{ding}, so blame him.
330 Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel Quinlan, Ilja
331 Weis, Frank D. Cringle, Geoffrey T. Dairiki and Andrew Eskilsson have
332 all contributed code and suggestions.
337 @section New Features
343 The look of all buffers can be changed by setting format-like variables
344 (@pxref{Group Buffer Format} and @pxref{Summary Buffer Format}).
347 Local spool and several @sc{nntp} servers can be used at once
348 (@pxref{Foreign Groups}).
351 You can combine groups into virtual groups (@pxref{nnvirtual}).
354 You can read a number of different mail formats (@pxref{Reading Mail}).
355 All the mail backends implement a convenient mail expiry scheme
356 (@code{Expiring Old Mail Articles}).
359 Gnus can use various strategies for gathering threads that have lost
360 their roots (thereby gathering loose sub-threads in one thread) or it
361 can go back and retrieve enough headers to build a complete thread
362 (@pxref{Customizing Threading}).
365 Killed groups can be displayed in the group buffer, and you can read
369 Gnus can do partial group updates - you do not have to retrieve the
370 entire active file just to check for new articles in a few groups
371 (@pxref{The Active File}).
374 Gnus implements a sliding scale of subscribedness to groups
375 (@pxref{Group Levels}).
378 You can score articles according to any number of criteria (@pxref{Score
379 Files}). You can even get Gnus to score articles for you
380 (@pxref{Adaptive Scoring}).
383 Gnus maintains a dribble buffer that is auto-saved the normal Emacs
384 manner, so it should be difficult to lose much data on what you have
385 read if your machine should go down (@pxref{Auto Save}).
388 Gnus now has its own startup file to avoid cluttering up the
392 You can set the process mark on both groups and articles and perform
393 operations on all the marked items (@pxref{Process/Prefix}).
396 You can grep through a subset of groups and create a group from the
397 results (@pxref{nnkiboze}).
400 You can list subsets of groups according to, well, anything
401 (@pxref{Listing Groups}).
404 You can browse foreign servers and subscribe to groups from those
405 servers (@pxref{Browse Foreign Server}).
408 Gnus can fetch articles asynchronously on a second connection to the
409 server (@pxref{Asynchronous Fetching}).
412 You can cache articles locally (@pxref{Article Caching}).
415 The uudecode functions have been expanded and generalized