1 \input texinfo @c -*-texinfo-*-
4 @settitle Gnus 5.4.48 Manual
11 @setchapternewpage odd
15 \documentclass[twoside,a4paper,openright]{book}
16 \usepackage[latin1]{inputenc}
17 \usepackage{pagestyle}
19 \fontfamily{bembo}\selectfont
24 \newcommand{\gnuschaptername}{}
25 \newcommand{\gnussectionname}{}
27 \newcommand{\gnusbackslash}{/}
29 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
30 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
32 \newcommand{\gnuskindex}[1]{\index{#1}}
33 \newcommand{\gnusindex}[1]{\index{#1}}
35 \newcommand{\gnustt}[1]{{\textbf{\textsf{#1}}}}
36 \newcommand{\gnuscode}[1]{\gnustt{#1}}
37 \newcommand{\gnussamp}[1]{``\gnustt{#1}''}
38 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
39 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
40 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
41 \newcommand{\gnusdfn}[1]{\textit{#1}}
42 \newcommand{\gnusi}[1]{\textit{#1}}
43 \newcommand{\gnusstrong}[1]{\textbf{#1}}
44 \newcommand{\gnusemph}[1]{\textit{#1}}
45 \newcommand{\gnusvar}[1]{\textsl{\textsf{#1}}}
46 \newcommand{\gnussc}[1]{\textsc{#1}}
47 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
48 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
50 \newcommand{\gnusbullet}{{${\bullet}$}}
51 \newcommand{\gnusdollar}{\$}
52 \newcommand{\gnusampersand}{\&}
53 \newcommand{\gnuspercent}{\%}
54 \newcommand{\gnushash}{\#}
55 \newcommand{\gnushat}{\symbol{"5E}}
56 \newcommand{\gnusunderline}{\symbol{"5F}}
57 \newcommand{\gnusnot}{$\neg$}
58 \newcommand{\gnustilde}{\symbol{"7E}}
59 \newcommand{\gnusless}{{$<$}}
60 \newcommand{\gnusgreater}{{$>$}}
62 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}}
63 \newcommand{\gnusinteresting}{
64 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead}
67 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
69 \newcommand{\gnuspagechapter}[1]{
76 \newcommand{\gnuschapter}[2]{
78 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
80 \renewcommand{\gnussectionname}{}
81 \renewcommand{\gnuschaptername}{#2}
84 \begin{picture}(500,500)(0,0)
85 \put(0,0){\makebox(480,350)[tr]{#1}}
86 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
91 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
93 \newcommand{\gnussection}[1]{
94 \renewcommand{\gnussectionname}{#1}
98 \newenvironment{codelist}%
103 \newenvironment{kbdlist}%
109 \newenvironment{dfnlist}%
114 \newenvironment{stronglist}%
119 \newenvironment{samplist}%
124 \newenvironment{varlist}%
129 \newenvironment{emphlist}%
134 \newlength\gnusheadtextwidth
135 \setlength{\gnusheadtextwidth}{\headtextwidth}
136 \addtolength{\gnusheadtextwidth}{1cm}
138 \newpagestyle{gnuspreamble}%
143 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
147 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
156 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
158 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
163 \newpagestyle{gnusindex}%
168 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
172 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
180 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
182 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
192 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}
196 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
204 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
206 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
211 \pagenumbering{roman}
212 \pagestyle{gnuspreamble}
222 %\addtolength{\oddsidemargin}{-5cm}
223 %\addtolength{\evensidemargin}{-5cm}
225 \addtolength{\textheight}{2cm}
227 \gnustitle{\gnustitlename}\\
230 \hspace*{-1cm}\epsfig{figure=gnus-big-logo.eps,height=15cm}
233 \gnusauthor{by Lars Magne Ingebrigtsen}
240 \thispagestyle{empty}
242 Copyright \copyright{} 1995,96 Free Software Foundation, Inc.
244 Permission is granted to make and distribute verbatim copies of
245 this manual provided the copyright notice and this permission notice
246 are preserved on all copies.
248 Permission is granted to copy and distribute modified versions of this
249 manual under the conditions for verbatim copying, provided that the
250 entire resulting derived work is distributed under the terms of a
251 permission notice identical to this one.
253 Permission is granted to copy and distribute translations of this manual
254 into another language, under the above conditions for modified versions.
263 This file documents Gnus, the GNU Emacs newsreader.
265 Copyright (C) 1995,96 Free Software Foundation, Inc.
267 Permission is granted to make and distribute verbatim copies of
268 this manual provided the copyright notice and this permission notice
269 are preserved on all copies.
272 Permission is granted to process this file through Tex and print the
273 results, provided the printed document carries copying permission
274 notice identical to this one except for the removal of this paragraph
275 (this paragraph not being relevant to the printed manual).
278 Permission is granted to copy and distribute modified versions of this
279 manual under the conditions for verbatim copying, provided also that the
280 entire resulting derived work is distributed under the terms of a
281 permission notice identical to this one.
283 Permission is granted to copy and distribute translations of this manual
284 into another language, under the above conditions for modified versions.
290 @title Gnus 5.4.48 Manual
292 @author by Lars Magne Ingebrigtsen
295 @vskip 0pt plus 1filll
296 Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc.
298 Permission is granted to make and distribute verbatim copies of
299 this manual provided the copyright notice and this permission notice
300 are preserved on all copies.
302 Permission is granted to copy and distribute modified versions of this
303 manual under the conditions for verbatim copying, provided that the
304 entire resulting derived work is distributed under the terms of a
305 permission notice identical to this one.
307 Permission is granted to copy and distribute translations of this manual
308 into another language, under the above conditions for modified versions.
317 @top The Gnus Newsreader
321 You can read news (and mail) from within Emacs by using Gnus. The news
322 can be gotten by any nefarious means you can think of---@sc{nntp}, local
323 spool or your mbox file. All at the same time, if you want to push your
326 This manual corresponds to Gnus 5.4.48.
337 Gnus is the advanced, self-documenting, customizable, extensible
338 unreal-time newsreader for GNU Emacs.
340 Oops. That sounds oddly familiar, so let's start over again to avoid
341 being accused of plagiarism:
343 Gnus is a message-reading laboratory. It will let you look at just
344 about anything as if it were a newsgroup. You can read mail with it,
345 you can browse directories with it, you can @code{ftp} with it---you can
346 even read news with it!
348 Gnus tries to empower people who read news the same way Emacs empowers
349 people who edit text. Gnus sets no limits to what the user should be
350 allowed to do. Users are encouraged to extend Gnus to make it behave
351 like they want it to behave. A program should not control people;
352 people should be empowered to do what they want by using (or abusing)
359 * Starting Up:: Finding news can be a pain.
360 * The Group Buffer:: Selecting, subscribing and killing groups.
361 * The Summary Buffer:: Reading, saving and posting articles.
362 * The Article Buffer:: Displaying and handling articles.
363 * Composing Messages:: Information on sending mail and news.
364 * Select Methods:: Gnus reads all messages from various select methods.
365 * Scoring:: Assigning values to articles.
366 * Various:: General purpose settings.
367 * The End:: Farewell and goodbye.
368 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
369 * Index:: Variable, function and concept index.
370 * Key Index:: Key Index.
374 @chapter Starting Gnus
379 If your system administrator has set things up properly, starting Gnus
380 and reading news is extremely easy---you just type @kbd{M-x gnus} in
383 @findex gnus-other-frame
384 @kindex M-x gnus-other-frame
385 If you want to start Gnus in a different frame, you can use the command
386 @kbd{M-x gnus-other-frame} instead.
388 If things do not go smoothly at startup, you have to twiddle some
392 * Finding the News:: Choosing a method for getting news.
393 * The First Time:: What does Gnus do the first time you start it?
394 * The Server is Down:: How can I read my mail then?
395 * Slave Gnusae:: You can have more than one Gnus active at a time.
396 * Fetching a Group:: Starting Gnus just to read a group.
397 * New Groups:: What is Gnus supposed to do with new groups?
398 * Startup Files:: Those pesky startup files---@file{.newsrc}.
399 * Auto Save:: Recovering from a crash.
400 * The Active File:: Reading the active file over a slow line Takes Time.
401 * Changing Servers:: You may want to move from one server to another.
402 * Startup Variables:: Other variables you might change.
406 @node Finding the News
407 @section Finding the News
410 @vindex gnus-select-method
412 The @code{gnus-select-method} variable says where Gnus should look for
413 news. This variable should be a list where the first element says
414 @dfn{how} and the second element says @dfn{where}. This method is your
415 native method. All groups that are not fetched with this method are
418 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
419 you want to get your daily dosage of news from, you'd say:
422 (setq gnus-select-method '(nntp "news.somewhere.edu"))
425 If you want to read directly from the local spool, say:
428 (setq gnus-select-method '(nnspool ""))
431 If you can use a local spool, you probably should, as it will almost
432 certainly be much faster.
434 @vindex gnus-nntpserver-file
436 @cindex @sc{nntp} server
437 If this variable is not set, Gnus will take a look at the
438 @code{NNTPSERVER} environment variable. If that variable isn't set,
439 Gnus will see whether @code{gnus-nntpserver-file}
440 (@file{/etc/nntpserver} by default) has any opinions on the matter. If
441 that fails as well, Gnus will will try to use the machine that is
442 running Emacs as an @sc{nntp} server. That's a long shot, though.
444 @vindex gnus-nntp-server
445 If @code{gnus-nntp-server} is set, this variable will override
446 @code{gnus-select-method}. You should therefore set
447 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
449 @vindex gnus-secondary-servers
450 You can also make Gnus prompt you interactively for the name of an
451 @sc{nntp} server. If you give a non-numerical prefix to @code{gnus}
452 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
453 in the @code{gnus-secondary-servers} list (if any). You can also just
454 type in the name of any server you feel like visiting.
456 @findex gnus-group-browse-foreign-server
458 However, if you use one @sc{nntp} server regularly and are just
459 interested in a couple of groups from a different server, you would be
460 better served by using the @kbd{B} command in the group buffer. It will
461 let you have a look at what groups are available, and you can subscribe
462 to any of the groups you want to. This also makes @file{.newsrc}
463 maintenance much tidier. @xref{Foreign Groups}.
465 @vindex gnus-secondary-select-methods
467 A slightly different approach to foreign groups is to set the
468 @code{gnus-secondary-select-methods} variable. The select methods
469 listed in this variable are in many ways just as native as the
470 @code{gnus-select-method} server. They will also be queried for active
471 files during startup (if that's required), and new newsgroups that
472 appear on these servers will be subscribed (or not) just as native
475 For instance, if you use the @code{nnmbox} backend to read your mail, you
476 would typically set this variable to
479 (setq gnus-secondary-select-methods '((nnmbox "")))
484 @section The First Time
485 @cindex first time usage
487 If no startup files exist, Gnus will try to determine what groups should
488 be subscribed by default.
490 @vindex gnus-default-subscribed-newsgroups
491 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
492 will subscribe you to just those groups in that list, leaving the rest
493 killed. Your system administrator should have set this variable to
496 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
497 picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is here
498 defined as @dfn{whatever Lars thinks you should read}.)
500 You'll also be subscribed to the Gnus documentation group, which should
501 help you with most common problems.
503 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
504 use the normal functions for handling new groups, and not do anything
508 @node The Server is Down
509 @section The Server is Down
510 @cindex server errors
512 If the default server is down, Gnus will understandably have some
513 problems starting. However, if you have some mail groups in addition to
514 the news groups, you may want to start Gnus anyway.
516 Gnus, being the trusting sort of program, will ask whether to proceed
517 without a native select method if that server can't be contacted. This
518 will happen whether the server doesn't actually exist (i.e., you have
519 given the wrong address) or the server has just momentarily taken ill
520 for some reason or other. If you decide to continue and have no foreign
521 groups, you'll find it difficult to actually do anything in the group
522 buffer. But, hey, that's your problem. Blllrph!
524 @findex gnus-no-server
525 @kindex M-x gnus-no-server
527 If you know that the server is definitely down, or you just want to read
528 your mail without bothering with the server at all, you can use the
529 @code{gnus-no-server} command to start Gnus. That might come in handy
530 if you're in a hurry as well. This command will not attempt to contact
531 your primary server---instead, it will just activate all groups on level
532 1 and 2. (You should preferably keep no native groups on those two
537 @section Slave Gnusae
540 You might want to run more than one Emacs with more than one Gnus at the
541 same time. If you are using different @file{.newsrc} files (e.g., if you
542 are using the two different Gnusae to read from two different servers),
543 that is no problem whatsoever. You just do it.
545 The problem appears when you want to run two Gnusae that use the same
548 To work around that problem some, we here at the Think-Tank at the Gnus
549 Towers have come up with a new concept: @dfn{Masters} and
550 @dfn{slaves}. (We have applied for a patent on this concept, and have
551 taken out a copyright on those words. If you wish to use those words in
552 conjunction with each other, you have to send $1 per usage instance to
553 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
554 Applications}) will be much more expensive, of course.)
556 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
557 however you do it). Each subsequent slave Gnusae should be started with
558 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
559 files, but instead save @dfn{slave files} that contain information only
560 on what groups have been read in the slave session. When a master Gnus
561 starts, it will read (and delete) these slave files, incorporating all
562 information from them. (The slave files will be read in the sequence
563 they were created, so the latest changes will have precedence.)
565 Information from the slave files has, of course, precedence over the
566 information in the normal (i.e., master) @code{.newsrc} file.
569 @node Fetching a Group
570 @section Fetching a Group
571 @cindex fetching a group
573 @findex gnus-fetch-group
574 It it sometimes convenient to be able to just say ``I want to read this
575 group and I don't care whether Gnus has been started or not''. This is
576 perhaps more useful for people who write code than for users, but the
577 command @code{gnus-fetch-group} provides this functionality in any case.
578 It takes the group name as a parameter.
586 @vindex gnus-check-new-newsgroups
587 If you are satisfied that you really never want to see any new groups,
588 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
589 also save you some time at startup. Even if this variable is
590 @code{nil}, you can always subscribe to the new groups just by pressing
591 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
592 is @code{t} by default. If you set this variable to @code{always}, then
593 Gnus will query the backends for new groups even when you do the @kbd{g}
594 command (@pxref{Scanning New Messages}).
597 * Checking New Groups:: Determining what groups are new.
598 * Subscription Methods:: What Gnus should do with new groups.
599 * Filtering New Groups:: Making Gnus ignore certain new groups.
603 @node Checking New Groups
604 @subsection Checking New Groups
606 Gnus normally determines whether a group is new or not by comparing the
607 list of groups from the active file(s) with the lists of subscribed and
608 dead groups. This isn't a particularly fast method. If
609 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
610 server for new groups since the last time. This is both faster and
611 cheaper. This also means that you can get rid of the list of killed
612 groups altogether, so you may set @code{gnus-save-killed-list} to
613 @code{nil}, which will save time both at startup, at exit, and all over.
614 Saves disk space, too. Why isn't this the default, then?
615 Unfortunately, not all servers support this command.
617 I bet I know what you're thinking now: How do I find out whether my
618 server supports @code{ask-server}? No? Good, because I don't have a
619 fail-safe answer. I would suggest just setting this variable to
620 @code{ask-server} and see whether any new groups appear within the next
621 few days. If any do, then it works. If none do, then it doesn't
622 work. I could write a function to make Gnus guess whether the server
623 supports @code{ask-server}, but it would just be a guess. So I won't.
624 You could @code{telnet} to the server and say @code{HELP} and see
625 whether it lists @samp{NEWGROUPS} among the commands it understands. If
626 it does, then it might work. (But there are servers that lists
627 @samp{NEWGROUPS} without supporting the function properly.)
629 This variable can also be a list of select methods. If so, Gnus will
630 issue an @code{ask-server} command to each of the select methods, and
631 subscribe them (or not) using the normal methods. This might be handy
632 if you are monitoring a few servers for new groups. A side effect is
633 that startup will take much longer, so you can meditate while waiting.
634 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
637 @node Subscription Methods
638 @subsection Subscription Methods
640 @vindex gnus-subscribe-newsgroup-method
641 What Gnus does when it encounters a new group is determined by the
642 @code{gnus-subscribe-newsgroup-method} variable.
644 This variable should contain a function. This function will be called
645 with the name of the new group as the only parameter.
647 Some handy pre-fab functions are:
651 @item gnus-subscribe-zombies
652 @vindex gnus-subscribe-zombies
653 Make all new groups zombies. This is the default. You can browse the
654 zombies later (with @kbd{A z}) and either kill them all off properly
655 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
657 @item gnus-subscribe-randomly
658 @vindex gnus-subscribe-randomly
659 Subscribe all new groups randomly.
661 @item gnus-subscribe-alphabetically
662 @vindex gnus-subscribe-alphabetically
663 Subscribe all new groups alphabetically.
665 @item gnus-subscribe-hierarchically
666 @vindex gnus-subscribe-hierarchically
667 Subscribe all new groups hierarchically. The difference between this
668 function and @code{gnus-subscribe-alphabetically} is slight.
669 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
670 alphabetical fashion, while this function will enter groups into it's
671 hierarchy. So if you want to have the @samp{rec} hierarchy before the
672 @samp{comp} hierarchy, this function will not mess that configuration
673 up. Or something like that.
675 @item gnus-subscribe-interactively
676 @vindex gnus-subscribe-interactively
677 Subscribe new groups interactively. This means that Gnus will ask
678 you about @strong{all} new groups.
680 @item gnus-subscribe-killed
681 @vindex gnus-subscribe-killed
686 @vindex gnus-subscribe-hierarchical-interactive
687 A closely related variable is
688 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
689 mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
690 hierarchical fashion whether to subscribe to new groups or not. Gnus
691 will ask you for each sub-hierarchy whether you want to descend the
694 One common mistake is to set the variable a few paragraphs above to
695 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This
696 will not work. This is ga-ga. So don't do it.
699 @node Filtering New Groups
700 @subsection Filtering New Groups
702 A nice and portable way to control which new newsgroups should be
703 subscribed (or ignored) is to put an @dfn{options} line at the start of
704 the @file{.newsrc} file. Here's an example:
707 options -n !alt.all !rec.all sci.all
710 @vindex gnus-subscribe-options-newsgroup-method
711 This line obviously belongs to a serious-minded intellectual scientific
712 person (or she may just be plain old boring), because it says that all
713 groups that have names beginning with @samp{alt} and @samp{rec} should
714 be ignored, and all groups with names beginning with @samp{sci} should
715 be subscribed. Gnus will not use the normal subscription method for
716 subscribing these groups.
717 @code{gnus-subscribe-options-newsgroup-method} is used instead. This
718 variable defaults to @code{gnus-subscribe-alphabetically}.
720 @vindex gnus-options-not-subscribe
721 @vindex gnus-options-subscribe
722 If you don't want to mess with your @file{.newsrc} file, you can just
723 set the two variables @code{gnus-options-subscribe} and
724 @code{gnus-options-not-subscribe}. These two variables do exactly the
725 same as the @file{.newsrc} @samp{options -n} trick. Both are regexps,
726 and if the the new group matches the former, it will be unconditionally
727 subscribed, and if it matches the latter, it will be ignored.
729 @vindex gnus-auto-subscribed-groups
730 Yet another variable that meddles here is
731 @code{gnus-auto-subscribed-groups}. It works exactly like
732 @code{gnus-options-subscribe}, and is therefore really superfluous, but I
733 thought it would be nice to have two of these. This variable is more
734 meant for setting some ground rules, while the other variable is used
735 more for user fiddling. By default this variable makes all new groups
736 that come from mail backends (@code{nnml}, @code{nnbabyl},
737 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
738 don't like that, just set this variable to @code{nil}.
740 New groups that match this regexp are subscribed using
741 @code{gnus-subscribe-options-newsgroup-method}.
744 @node Changing Servers
745 @section Changing Servers
746 @cindex changing servers
748 Sometimes it is necessary to move from one @sc{nntp} server to another.
749 This happens very rarely, but perhaps you change jobs, or one server is
750 very flaky and you want to use another.
752 Changing the server is pretty easy, right? You just change
753 @code{gnus-select-method} to point to the new server?
757 Article numbers are not (in any way) kept synchronized between different
758 @sc{nntp} servers, and the only way Gnus keeps track of what articles
759 you have read is by keeping track of article numbers. So when you
760 change @code{gnus-select-method}, your @file{.newsrc} file becomes
763 Gnus provides a few functions to attempt to translate a @file{.newsrc}
764 file from one server to another. They all have one thing in
765 common---they take a looong time to run. You don't want to use these
766 functions more than absolutely necessary.
768 @kindex M-x gnus-change-server
769 @findex gnus-change-server
770 If you have access to both servers, Gnus can request the headers for all
771 the articles you have read and compare @code{Message-ID}s and map the
772 article numbers of the read articles and article marks. The @kbd{M-x
773 gnus-change-server} command will do this for all your native groups. It
774 will prompt for the method you want to move to.
776 @kindex M-x gnus-group-move-group-to-server
777 @findex gnus-group-move-group-to-server
778 You can also move individual groups with the @kbd{M-x
779 gnus-group-move-group-to-server} command. This is useful if you want to
780 move a (foreign) group from one server to another.
782 @kindex M-x gnus-group-clear-data-on-native-groups
783 @findex gnus-group-clear-data-on-native-groups
784 If you don't have access to both the old and new server, all your marks
785 and read ranges have become worthless. You can use the @kbd{M-x
786 gnus-group-clear-data-on-native-groups} command to clear out all data
787 that you have on your native groups. Use with caution.
791 @section Startup Files
792 @cindex startup files
797 Now, you all know about the @file{.newsrc} file. All subscription
798 information is traditionally stored in this file.
800 Things got a bit more complicated with @sc{gnus}. In addition to
801 keeping the @file{.newsrc} file updated, it also used a file called
802 @file{.newsrc.el} for storing all the information that didn't fit into
803 the @file{.newsrc} file. (Actually, it also duplicated everything in
804 the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
805 files was the most recently saved, which enabled people to swap between
806 @sc{gnus} and other newsreaders.
808 That was kinda silly, so Gnus went one better: In addition to the
809 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
810 @file{.newsrc.eld}. It will read whichever of these files that are most
811 recent, but it will never write a @file{.newsrc.el} file.
813 @vindex gnus-save-newsrc-file
814 You can turn off writing the @file{.newsrc} file by setting
815 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
816 the file and save some space, as well as making exit from Gnus faster.
817 However, this will make it impossible to use other newsreaders than
818 Gnus. But hey, who would want to, right?
820 @vindex gnus-save-killed-list
821 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
822 will not save the list of killed groups to the startup file. This will
823 save both time (when starting and quitting) and space (on disk). It
824 will also mean that Gnus has no record of what groups are new or old,
825 so the automatic new groups subscription methods become meaningless.
826 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
827 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
828 Groups}). This variable can also be a regular expression. If that's
829 the case, remove all groups that do not match this regexp before
830 saving. This can be useful in certain obscure situations that involve
831 several servers where not all servers support @code{ask-server}.
833 @vindex gnus-startup-file
834 The @code{gnus-startup-file} variable says where the startup files are.
835 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
836 file being whatever that one is with a @samp{.eld} appended.
838 @vindex gnus-save-newsrc-hook
839 @vindex gnus-save-quick-newsrc-hook
840 @vindex gnus-save-standard-newsrc-hook
841 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
842 files, while @code{gnus-save-quick-newsrc-hook} is called just before
843 saving the @file{.newsrc.eld} file, and
844 @code{gnus-save-standard-newsrc-hook} is called just before saving the
845 @file{.newsrc} file. The latter two are commonly used to turn version
846 control on or off. Version control is on by default when saving the
847 startup files. If you want to turn backup creation off, say something like:
850 (defun turn-off-backup ()
851 (set (make-local-variable 'backup-inhibited) t))
853 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
854 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
857 @vindex gnus-init-file
858 When Gnus starts, it will read the @code{gnus-site-init-file}
859 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
860 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files
861 and can be used to avoid cluttering your @file{~/.emacs} and
862 @file{site-init} files with Gnus stuff. Gnus will also check for files
863 with the same names as these, but with @file{.elc} and @file{.el}
864 suffixes. In other words, if you have set @code{gnus-init-file} to
865 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
866 and finally @file{~/.gnus} (in this order).
875 Whenever you do something that changes the Gnus data (reading articles,
876 catching up, killing/subscribing groups), the change is added to a
877 special @dfn{dribble buffer}. This buffer is auto-saved the normal
878 Emacs way. If your Emacs should crash before you have saved the
879 @file{.newsrc} files, all changes you have made can be recovered from
882 If Gnus detects this file at startup, it will ask the user whether to
883 read it. The auto save file is deleted whenever the real startup file is
886 @vindex gnus-use-dribble-file
887 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
888 maintain a dribble buffer. The default is @code{t}.
890 @vindex gnus-dribble-directory
891 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
892 this variable is @code{nil}, which it is by default, Gnus will dribble
893 into the directory where the @file{.newsrc} file is located. (This is
894 normally the user's home directory.) The dribble file will get the same
895 file permissions as the @code{.newsrc} file.
898 @node The Active File
899 @section The Active File
901 @cindex ignored groups
903 When Gnus starts, or indeed whenever it tries to determine whether new
904 articles have arrived, it reads the active file. This is a very large
905 file that lists all the active groups and articles on the server.
907 @vindex gnus-ignored-newsgroups
908 Before examining the active file, Gnus deletes all lines that match the
909 regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
910 any groups with bogus names, but you can use this variable to make Gnus
911 ignore hierarchies you aren't ever interested in. However, this is not
912 recommended. In fact, it's highly discouraged. Instead, @pxref{New
913 Groups} for an overview of other variables that can be used instead.
916 @c @code{nil} by default, and will slow down active file handling somewhat
917 @c if you set it to anything else.
919 @vindex gnus-read-active-file
921 The active file can be rather Huge, so if you have a slow network, you
922 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
923 reading the active file. This variable is @code{t} by default.
925 Gnus will try to make do by getting information just on the groups that
926 you actually subscribe to.
928 Note that if you subscribe to lots and lots of groups, setting this
929 variable to @code{nil} will probably make Gnus slower, not faster. At
930 present, having this variable @code{nil} will slow Gnus down
931 considerably, unless you read news over a 2400 baud modem.
933 This variable can also have the value @code{some}. Gnus will then
934 attempt to read active info only on the subscribed groups. On some
935 servers this is quite fast (on sparkling, brand new INN servers that
936 support the @code{LIST ACTIVE group} command), on others this isn't fast
937 at all. In any case, @code{some} should be faster than @code{nil}, and
938 is certainly faster than @code{t} over slow lines.
940 If this variable is @code{nil}, Gnus will ask for group info in total
941 lock-step, which isn't very fast. If it is @code{some} and you use an
942 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
943 read all the replies in one swoop. This will normally result in better
944 performance, but if the server does not support the aforementioned
945 @code{LIST ACTIVE group} command, this isn't very nice to the server.
947 In any case, if you use @code{some} or @code{nil}, you should definitely
948 kill all groups that you aren't interested in to speed things up.
950 Note that this variable also affects active file retrieval from
951 secondary select methods.
954 @node Startup Variables
955 @section Startup Variables
960 @vindex gnus-load-hook
961 A hook that is run while Gnus is being loaded. Note that this hook will
962 normally be run just once in each Emacs session, no matter how many
963 times you start Gnus.
965 @item gnus-startup-hook
966 @vindex gnus-startup-hook
967 A hook that is run after starting up Gnus successfully.
969 @item gnus-started-hook
970 @vindex gnus-started-hook
971 A hook that is run as the very last thing after starting up Gnus
974 @item gnus-check-bogus-newsgroups
975 @vindex gnus-check-bogus-newsgroups
976 If non-@code{nil}, Gnus will check for and delete all bogus groups at
977 startup. A @dfn{bogus group} is a group that you have in your
978 @file{.newsrc} file, but doesn't exist on the news server. Checking for
979 bogus groups can take quite a while, so to save time and resources it's
980 best to leave this option off, and do the checking for bogus groups once
981 in a while from the group buffer instead (@pxref{Group Maintenance}).
983 @item gnus-inhibit-startup-message
984 @vindex gnus-inhibit-startup-message
985 If non-@code{nil}, the startup message won't be displayed. That way,
986 your boss might not notice as easily that you are reading news instead
987 of doing your job. Note that this variable is used before
988 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
990 @item gnus-no-groups-message
991 @vindex gnus-no-groups-message
992 Message displayed by Gnus when no groups are available.
994 @item gnus-play-startup-jingle
995 @vindex gnus-play-startup-jingle
996 If non-@code{nil}, play the Gnus jingle at startup.
998 @item gnus-startup-jingle
999 @vindex gnus-startup-jingle
1000 Jingle to be played if the above variable is non-@code{nil}. The
1001 default is @samp{Tuxedomoon.Jingle4.au}.
1006 @node The Group Buffer
1007 @chapter The Group Buffer
1008 @cindex group buffer
1010 The @dfn{group buffer} lists all (or parts) of the available groups. It
1011 is the first buffer shown when Gnus starts, and will never be killed as
1012 long as Gnus is active.
1015 * Group Buffer Format:: Information listed and how you can change it.
1016 * Group Maneuvering:: Commands for moving in the group buffer.
1017 * Selecting a Group:: Actually reading news.
1018 * Group Data:: Changing the info for a group.
1019 * Subscription Commands:: Unsubscribing, killing, subscribing.
1020 * Group Levels:: Levels? What are those, then?
1021 * Group Score:: A mechanism for finding out what groups you like.
1022 * Marking Groups:: You can mark groups for later processing.
1023 * Foreign Groups:: Creating and editing groups.
1024 * Group Parameters:: Each group may have different parameters set.
1025 * Listing Groups:: Gnus can list various subsets of the groups.
1026 * Sorting Groups:: Re-arrange the group order.
1027 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1028 * Browse Foreign Server:: You can browse a server. See what it has to offer.
1029 * Exiting Gnus:: Stop reading news and get some work done.
1030 * Group Topics:: A folding group mode divided into topics.
1031 * Misc Group Stuff:: Other stuff that you can to do.
1035 @node Group Buffer Format
1036 @section Group Buffer Format
1039 * Group Line Specification:: Deciding how the group buffer is to look.
1040 * Group Modeline Specification:: The group buffer modeline.
1041 * Group Highlighting:: Having nice colors in the group buffer.
1045 @node Group Line Specification
1046 @subsection Group Line Specification
1047 @cindex group buffer format
1049 The default format of the group buffer is nice and dull, but you can
1050 make it as exciting and ugly as you feel like.
1052 Here's a couple of example group lines:
1055 25: news.announce.newusers
1056 * 0: alt.fan.andrea-dworkin
1061 You can see that there are 25 unread articles in
1062 @samp{news.announce.newusers}. There are no unread articles, but some
1063 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1064 asterisk at the beginning of the line?)
1066 @vindex gnus-group-line-format
1067 You can change that format to whatever you want by fiddling with the
1068 @code{gnus-group-line-format} variable. This variable works along the
1069 lines of a @code{format} specification, which is pretty much the same as
1070 a @code{printf} specifications, for those of you who use (feh!) C.
1071 @xref{Formatting Variables}.
1073 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1075 There should always be a colon on the line; the cursor always moves to
1076 the colon after performing an operation. Nothing else is required---not
1077 even the group name. All displayed text is just window dressing, and is
1078 never examined by Gnus. Gnus stores all real information it needs using
1081 (Note that if you make a really strange, wonderful, spreadsheet-like
1082 layout, everybody will believe you are hard at work with the accounting
1083 instead of wasting time reading news.)
1085 Here's a list of all available format characters:
1090 An asterisk if the group only has marked articles.
1093 Whether the group is subscribed.
1096 Level of subscribedness.
1099 Number of unread articles.
1102 Number of dormant articles.
1105 Number of ticked articles.
1108 Number of read articles.
1111 Estimated total number of articles. (This is really @var{max-number}
1112 minus @var{min-number} plus 1.)
1115 Number of unread, unticked, non-dormant articles.
1118 Number of ticked and dormant articles.
1127 Newsgroup description.
1130 @samp{m} if moderated.
1133 @samp{(m)} if moderated.
1142 A string that looks like @samp{<%s:%n>} if a foreign select method is
1146 Indentation based on the level of the topic (@pxref{Group Topics}).
1149 @vindex gnus-group-uncollapsed-levels
1150 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1151 variable says how many levels to leave at the end of the group name.
1152 The default is 1---this will mean that group names like
1153 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
1156 @vindex gnus-new-mail-mark
1158 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1162 A string that says when you last read the group (@pxref{Group
1166 User defined specifier. The next character in the format string should
1167 be a letter. @sc{gnus} will call the function
1168 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1169 following @samp{%u}. The function will be passed a single dummy
1170 parameter as argument. The function should return a string, which will
1171 be inserted into the buffer just like information from any other
1176 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1177 if no info is available---for instance, if it is a non-activated foreign
1178 group, or a bogus native group.
1181 @node Group Modeline Specification
1182 @subsection Group Modeline Specification
1183 @cindex group modeline
1185 @vindex gnus-group-mode-line-format
1186 The mode line can be changed by setting
1187 @code{gnus-group-mode-line-format} (@pxref{Formatting Variables}). It
1188 doesn't understand that many format specifiers:
1192 The native news server.
1194 The native select method.
1198 @node Group Highlighting
1199 @subsection Group Highlighting
1200 @cindex highlighting
1201 @cindex group highlighting
1203 @vindex gnus-group-highlight
1204 Highlighting in the group buffer is controlled by the
1205 @code{gnus-group-highlight} variable. This is an alist with elements
1206 that look like @var{(form . face)}. If @var{form} evaluates to
1207 something non-@code{nil}, the @var{face} will be used on the line.
1209 Here's an example value for this variable that might look nice if the
1213 (setq gnus-group-highlight
1215 ,(custom-face-lookup "Red" nil nil t nil nil))
1216 ((and (< level 3) (zerop unread)) .
1217 ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
1219 ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
1221 ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
1223 ,(custom-face-lookup "SkyBlue" nil nil t nil nil))))
1226 Variables that are dynamically bound when the forms are evaluated
1233 The number of unread articles in the group.
1237 Whether the group is a mail group.
1239 The level of the group.
1241 The score of the group.
1243 The number of ticked articles in the group.
1245 The total number of articles in the group. Or rather, MAX-NUMBER minus
1248 When using the topic minor mode, this variable is bound to the current
1249 topic being inserted.
1252 When the forms are @code{eval}ed, point is at the beginning of the line
1253 of the group in question, so you can use many of the normal Gnus
1254 functions for snarfing info on the group.
1256 @vindex gnus-group-update-hook
1257 @findex gnus-group-highlight-line
1258 @code{gnus-group-update-hook} is called when a group line is changed.
1259 It will not be called when @code{gnus-visual} is @code{nil}. This hook
1260 calls @code{gnus-group-highlight-line} by default.
1263 @node Group Maneuvering
1264 @section Group Maneuvering
1265 @cindex group movement
1267 All movement commands understand the numeric prefix and will behave as
1268 expected, hopefully.
1274 @findex gnus-group-next-unread-group
1275 Go to the next group that has unread articles
1276 (@code{gnus-group-next-unread-group}).
1282 @findex gnus-group-prev-unread-group
1283 Go to the previous group that has unread articles
1284 (@code{gnus-group-prev-unread-group}).
1288 @findex gnus-group-next-group
1289 Go to the next group (@code{gnus-group-next-group}).
1293 @findex gnus-group-prev-group
1294 Go to the previous group (@code{gnus-group-prev-group}).
1298 @findex gnus-group-next-unread-group-same-level
1299 Go to the next unread group on the same (or lower) level
1300 (@code{gnus-group-next-unread-group-same-level}).
1304 @findex gnus-group-prev-unread-group-same-level
1305 Go to the previous unread group on the same (or lower) level
1306 (@code{gnus-group-prev-unread-group-same-level}).
1309 Three commands for jumping to groups:
1315 @findex gnus-group-jump-to-group
1316 Jump to a group (and make it visible if it isn't already)
1317 (@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
1322 @findex gnus-group-best-unread-group
1323 Jump to the unread group with the lowest level
1324 (@code{gnus-group-best-unread-group}).
1328 @findex gnus-group-first-unread-group
1329 Jump to the first group with unread articles
1330 (@code{gnus-group-first-unread-group}).
1333 @vindex gnus-group-goto-unread
1334 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1335 commands will move to the next group, not the next unread group. Even
1336 the commands that say they move to the next unread group. The default
1340 @node Selecting a Group
1341 @section Selecting a Group
1342 @cindex group selection
1347 @kindex SPACE (Group)
1348 @findex gnus-group-read-group
1349 Select the current group, switch to the summary buffer and display the
1350 first unread article (@code{gnus-group-read-group}). If there are no
1351 unread articles in the group, or if you give a non-numerical prefix to
1352 this command, Gnus will offer to fetch all the old articles in this
1353 group from the server. If you give a numerical prefix @var{N}, @var{N}
1354 determines the number of articles Gnus will fetch. If @var{N} is
1355 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1356 negative, Gnus fetches the @var{abs(N)} oldest articles.
1360 @findex gnus-group-select-group
1361 Select the current group and switch to the summary buffer
1362 (@code{gnus-group-select-group}). Takes the same arguments as
1363 @code{gnus-group-read-group}---the only difference is that this command
1364 does not display the first unread article automatically upon group
1368 @kindex M-RET (Group)
1369 @findex gnus-group-quick-select-group
1370 This does the same as the command above, but tries to do it with the
1371 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
1372 scoring/killing will be performed, there will be no highlights and no
1373 expunging. This might be useful if you're in a real hurry and have to
1374 enter some humongous group. If you give a 0 prefix to this command
1375 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer.
1376 This might be useful if you want to toggle threading before entering the
1380 @kindex M-SPACE (Group)
1381 @findex gnus-group-visible-select-group
1382 This is yet one more command that does the same as the @kbd{RET}
1383 command, but this one does it without expunging and hiding dormants
1384 (@code{gnus-group-visible-select-group}).
1387 @kindex M-C-RET (Group)
1388 @findex gnus-group-select-group-ephemerally
1389 Finally, this command selects the current group ephemerally without
1390 doing any processing of its contents
1391 (@code{gnus-group-select-group-ephemerally}). Even threading has been
1392 turned off. Everything you do in the group after selecting it in this
1393 manner will have no permanent effects.
1397 @vindex gnus-large-newsgroup
1398 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1399 to be a big group. This is 200 by default. If the group has more
1400 (unread and/or ticked) articles than this, Gnus will query the user
1401 before entering the group. The user can then specify how many articles
1402 should be fetched from the server. If the user specifies a negative
1403 number (@code{-n}), the @code{n} oldest articles will be fetched. If it
1404 is positive, the @code{n} articles that have arrived most recently will
1407 @vindex gnus-select-group-hook
1408 @vindex gnus-auto-select-first
1409 @code{gnus-auto-select-first} control whether any articles are selected
1410 automatically when entering a group with the @kbd{SPACE} command.
1415 Don't select any articles when entering the group. Just display the
1416 full summary buffer.
1419 Select the first unread article when entering the group.
1422 Select the most high-scored article in the group when entering the
1426 If you want to prevent automatic selection in some group (say, in a
1427 binary group with Huge articles) you can set this variable to @code{nil}
1428 in @code{gnus-select-group-hook}, which is called when a group is
1432 @node Subscription Commands
1433 @section Subscription Commands
1434 @cindex subscription
1442 @findex gnus-group-unsubscribe-current-group
1443 Toggle subscription to the current group
1444 (@code{gnus-group-unsubscribe-current-group}).
1450 @findex gnus-group-unsubscribe-group
1451 Prompt for a group to subscribe, and then subscribe it. If it was
1452 subscribed already, unsubscribe it instead
1453 (@code{gnus-group-unsubscribe-group}).
1459 @findex gnus-group-kill-group
1460 Kill the current group (@code{gnus-group-kill-group}).
1466 @findex gnus-group-yank-group
1467 Yank the last killed group (@code{gnus-group-yank-group}).
1470 @kindex C-x C-t (Group)
1471 @findex gnus-group-transpose-groups
1472 Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
1473 really a subscription command, but you can use it instead of a
1474 kill-and-yank sequence sometimes.
1480 @findex gnus-group-kill-region
1481 Kill all groups in the region (@code{gnus-group-kill-region}).
1485 @findex gnus-group-kill-all-zombies
1486 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1489 @kindex S C-k (Group)
1490 @findex gnus-group-kill-level
1491 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1492 These groups can't be yanked back after killing, so this command should
1493 be used with some caution. The only time where this command comes in
1494 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1495 groups that you want to get rid off. @kbd{S C-k} on level 7 will
1496 kill off all unsubscribed groups that do not have message numbers in the
1497 @file{.newsrc} file.
1501 Also @pxref{Group Levels}.
1511 @findex gnus-group-catchup-current
1512 @vindex gnus-group-catchup-group-hook
1513 Mark all unticked articles in this group as read
1514 (@code{gnus-group-catchup-current}).
1515 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1520 @findex gnus-group-catchup-current-all
1521 Mark all articles in this group, even the ticked ones, as read
1522 (@code{gnus-group-catchup-current-all}).
1526 @findex gnus-group-clear-data
1527 Clear the data from the current group---nix out marks and the list of
1528 read articles (@code{gnus-group-clear-data}).
1530 @item M-x gnus-group-clear-data-on-native-groups
1531 @kindex M-x gnus-group-clear-data-on-native-groups
1532 @findex gnus-group-clear-data-on-native-groups
1533 If you have switched from one @sc{nntp} server to another, all your marks
1534 and read ranges have become worthless. You can use this command to
1535 clear out all data that you have on your native groups. Use with
1542 @section Group Levels
1546 All groups have a level of @dfn{subscribedness}. For instance, if a
1547 group is on level 2, it is more subscribed than a group on level 5. You
1548 can ask Gnus to just list groups on a given level or lower
1549 (@pxref{Listing Groups}), or to just check for new articles in groups on
1550 a given level or lower (@pxref{Scanning New Messages}).
1552 Remember: The higher the level of the group, the less important it is.
1558 @findex gnus-group-set-current-level
1559 Set the level of the current group. If a numeric prefix is given, the
1560 next @var{n} groups will have their levels set. The user will be
1561 prompted for a level.
1564 @vindex gnus-level-killed
1565 @vindex gnus-level-zombie
1566 @vindex gnus-level-unsubscribed
1567 @vindex gnus-level-subscribed
1568 Gnus considers groups on between levels 1 and
1569 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
1570 @code{gnus-level-subscribed} (exclusive) and
1571 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
1572 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
1573 (default 8) and @code{gnus-level-killed} to be killed (default 9),
1574 completely dead. Gnus treats subscribed and unsubscribed groups exactly
1575 the same, but zombie and killed groups have no information on what
1576 articles you have read, etc, stored. This distinction between dead and
1577 living groups isn't done because it is nice or clever, it is done purely
1578 for reasons of efficiency.
1580 It is recommended that you keep all your mail groups (if any) on quite
1581 low levels (e.g. 1 or 2).
1583 If you want to play with the level variables, you should show some care.
1584 Set them once, and don't touch them ever again. Better yet, don't touch
1585 them at all unless you know exactly what you're doing.
1587 @vindex gnus-level-default-unsubscribed
1588 @vindex gnus-level-default-subscribed
1589 Two closely related variables are @code{gnus-level-default-subscribed}
1590 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
1591 which are the levels that new groups will be put on if they are
1592 (un)subscribed. These two variables should, of course, be inside the
1593 relevant legal ranges.
1595 @vindex gnus-keep-same-level
1596 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1597 will only move to groups that are of the same level (or lower). In
1598 particular, going from the last article in one group to the next group
1599 will go to the next group of the same level (or lower). This might be
1600 handy if you want to read the most important groups before you read the
1603 @vindex gnus-group-default-list-level
1604 All groups with a level less than or equal to
1605 @code{gnus-group-default-list-level} will be listed in the group buffer
1608 @vindex gnus-group-list-inactive-groups
1609 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
1610 groups will be listed along with the unread groups. This variable is
1611 @code{t} by default. If it is @code{nil}, inactive groups won't be
1614 @vindex gnus-group-use-permanent-levels
1615 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1616 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1617 use this level as the ``work'' level.
1619 @vindex gnus-activate-level
1620 Gnus will normally just activate groups that are on level
1621 @code{gnus-activate-level} or less. If you don't want to activate
1622 unsubscribed groups, for instance, you might set this variable to
1623 5. The default is 6.
1627 @section Group Score
1630 You would normally keep important groups on high levels, but that scheme
1631 is somewhat restrictive. Don't you wish you could have Gnus sort the
1632 group buffer according to how often you read groups, perhaps? Within
1635 This is what @dfn{group score} is for. You can assign a score to each
1636 group. You can then sort the group buffer based on this score.
1637 Alternatively, you can sort on score and then level. (Taken together,
1638 the level and the score is called the @dfn{rank} of the group. A group
1639 that is on level 4 and has a score of 1 has a higher rank than a group
1640 on level 5 that has a score of 300. (The level is the most significant
1641 part and the score is the least significant part.))
1643 @findex gnus-summary-bubble-group
1644 If you want groups you read often to get higher scores than groups you
1645 read seldom you can add the @code{gnus-summary-bubble-group} function to
1646 the @code{gnus-summary-exit-hook} hook. This will result (after
1647 sorting) in a bubbling sort of action. If you want to see that in
1648 action after each summary exit, you can add
1649 @code{gnus-group-sort-groups-by-rank} or
1650 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
1651 slow things down somewhat.
1654 @node Marking Groups
1655 @section Marking Groups
1656 @cindex marking groups
1658 If you want to perform some command on several groups, and they appear
1659 subsequently in the group buffer, you would normally just give a
1660 numerical prefix to the command. Most group commands will then do your
1661 bidding on those groups.
1663 However, if the groups are not in sequential order, you can still
1664 perform a command on several groups. You simply mark the groups first
1665 with the process mark and then execute the command.
1673 @findex gnus-group-mark-group
1674 Set the mark on the current group (@code{gnus-group-mark-group}).
1680 @findex gnus-group-unmark-group
1681 Remove the mark from the current group
1682 (@code{gnus-group-unmark-group}).
1686 @findex gnus-group-unmark-all-groups
1687 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
1691 @findex gnus-group-mark-region
1692 Mark all groups between point and mark (@code{gnus-group-mark-region}).
1696 @findex gnus-group-mark-buffer
1697 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
1701 @findex gnus-group-mark-regexp
1702 Mark all groups that match some regular expression
1703 (@code{gnus-group-mark-regexp}).
1706 Also @pxref{Process/Prefix}.
1708 @findex gnus-group-universal-argument
1709 If you want to execute some command on all groups that have been marked
1710 with the process mark, you can use the @kbd{M-&}
1711 (@code{gnus-group-universal-argument}) command. It will prompt you for
1712 the command to be executed.
1715 @node Foreign Groups
1716 @section Foreign Groups
1717 @cindex foreign groups
1719 Below are some group mode commands for making and editing general foreign
1720 groups, as well as commands to ease the creation of a few
1721 special-purpose groups. All these commands insert the newly created
1722 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1729 @findex gnus-group-make-group
1730 @cindex making groups
1731 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
1732 for a name, a method and possibly an @dfn{address}. For an easier way
1733 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1737 @findex gnus-group-rename-group
1738 @cindex renaming groups
1739 Rename the current group to something else
1740 (@code{gnus-group-rename-group}). This is legal only on some
1741 groups---mail groups mostly. This command might very well be quite slow
1747 @findex gnus-group-customize
1748 Customize the group parameters (@code{gnus-group-customize}).
1752 @findex gnus-group-edit-group-method
1753 @cindex renaming groups
1754 Enter a buffer where you can edit the select method of the current
1755 group (@code{gnus-group-edit-group-method}).
1759 @findex gnus-group-edit-group-parameters
1760 Enter a buffer where you can edit the group parameters
1761 (@code{gnus-group-edit-group-parameters}).
1765 @findex gnus-group-edit-group
1766 Enter a buffer where you can edit the group info
1767 (@code{gnus-group-edit-group}).
1771 @findex gnus-group-make-directory-group
1773 Make a directory group (@pxref{Directory Groups}). You will be prompted
1774 for a directory name (@code{gnus-group-make-directory-group}).
1779 @findex gnus-group-make-help-group
1780 Make the Gnus help group (@code{gnus-group-make-help-group}).
1784 @cindex (ding) archive
1785 @cindex archive group
1786 @findex gnus-group-make-archive-group
1787 @vindex gnus-group-archive-directory
1788 @vindex gnus-group-recent-archive-directory
1789 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
1790 default a group pointing to the most recent articles will be created
1791 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
1792 group will be created from @code{gnus-group-archive-directory}.
1796 @findex gnus-group-make-kiboze-group
1798 Make a kiboze group. You will be prompted for a name, for a regexp to
1799 match groups to be ``included'' in the kiboze group, and a series of
1800 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1801 @xref{Kibozed Groups}.
1805 @findex gnus-group-enter-directory
1807 Read an arbitrary directory as if with were a newsgroup with the
1808 @code{nneething} backend (@code{gnus-group-enter-directory}).
1809 @xref{Anything Groups}.
1813 @findex gnus-group-make-doc-group
1814 @cindex ClariNet Briefs
1816 Make a group based on some file or other
1817 (@code{gnus-group-make-doc-group}). If you give a prefix to this
1818 command, you will be prompted for a file name and a file type.
1819 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1820 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
1821 @code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run
1822 this command without a prefix, Gnus will guess at the file type.
1823 @xref{Document Groups}.
1827 @findex gnus-group-make-web-group
1832 Make an ephemeral group based on a web search
1833 (@code{gnus-group-make-web-group}). If you give a prefix to this
1834 command, make a solid group instead. You will be prompted for the
1835 search engine type and the search string. Legal search engine types
1836 include @code{dejanews}, @code{altavista} and @code{reference}.
1837 @xref{Web Searches}.
1840 @kindex G DEL (Group)
1841 @findex gnus-group-delete-group
1842 This function will delete the current group
1843 (@code{gnus-group-delete-group}). If given a prefix, this function will
1844 actually delete all the articles in the group, and forcibly remove the
1845 group itself from the face of the Earth. Use a prefix only if you are
1846 absolutely sure of what you are doing.
1850 @findex gnus-group-make-empty-virtual
1851 Make a new, fresh, empty @code{nnvirtual} group
1852 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
1856 @findex gnus-group-add-to-virtual
1857 Add the current group to an @code{nnvirtual} group
1858 (@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
1861 @xref{Select Methods} for more information on the various select
1864 @vindex gnus-activate-foreign-newsgroups
1865 If @code{gnus-activate-foreign-newsgroups} is a positive number,
1866 Gnus will check all foreign groups with this level or lower at startup.
1867 This might take quite a while, especially if you subscribe to lots of
1868 groups from different @sc{nntp} servers.
1871 @node Group Parameters
1872 @section Group Parameters
1873 @cindex group parameters
1875 The group parameters store information local to a particular group:
1880 If the group parameter list contains an element that looks like
1881 @code{(to-address . "some@@where.com")}, that address will be used by
1882 the backend when doing followups and posts. This is primarily useful in
1883 mail groups that represent closed mailing lists---mailing lists where
1884 it's expected that everybody that writes to the mailing list is
1885 subscribed to it. Since using this parameter ensures that the mail only
1886 goes to the mailing list itself, it means that members won't receive two
1887 copies of your followups.
1889 Using @code{to-address} will actually work whether the group is foreign
1890 or not. Let's say there's a group on the server that is called
1891 @samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
1892 the articles from a mail-to-news gateway. Posting directly to this
1893 group is therefore impossible---you have to send mail to the mailing
1894 list address instead.
1898 If the group parameter list has an element that looks like
1899 @code{(to-list . "some@@where.com")}, that address will be used when
1900 doing a @kbd{a} in any group. It is totally ignored when doing a
1901 followup---except that if it is present in a news group, you'll get mail
1902 group semantics when doing @kbd{f}.
1904 If you do an @kbd{a} command in a mail group and you don't have a
1905 @code{to-list} group parameter, one will be added automatically upon
1906 sending the message.
1908 @item broken-reply-to
1909 @cindex broken-reply-to
1910 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
1911 headers in this group are to be ignored. This can be useful if you're
1912 reading a mailing list group where the listserv has inserted
1913 @code{Reply-To} headers that point back to the listserv itself. This is
1914 broken behavior. So there!
1918 Elements like @code{(to-group . "some.group.name")} means that all
1919 posts in that group will be sent to @code{some.group.name}.
1923 If this symbol is present in the group parameter list, Gnus will treat
1924 all responses as if they were responses to news articles. This can be
1925 useful if you have a mail group that's really a mirror of a news group.
1929 If this symbol is present in the group parameter list and set to
1930 @code{t}, new composed messages will be @code{Gcc}'d to the current
1931 group. If it is present and set to @code{none}, no @code{Gcc:} header
1932 will be generated, if it is present and a string, this string will be
1933 inserted literally as a @code{gcc} header (this symbol takes precedence over
1934 any default @code{Gcc} rules as described later).
1938 If the group parameter has an element that looks like @code{(auto-expire
1939 . t)}, , all articles that are read will be marked as expirable. For an
1940 alternative approach, @pxref{Expiring Mail}.
1943 @cindex total-expire
1944 If the group parameter has an element that looks like
1945 @code{(total-expire . t)}, all read articles will be put through the
1946 expiry process, even if they are not marked as expirable. Use with
1951 @vindex nnmail-expiry-wait-function
1952 If the group parameter has an element that looks like @code{(expiry-wait
1953 . 10)}, this value will override any @code{nnmail-expiry-wait} and
1954 @code{nnmail-expiry-wait-function} when expiring expirable messages.
1955 The value can either be a number of days (not necessarily an integer) or
1956 the symbols @code{never} or @code{immediate}.
1959 @cindex score file group parameter
1960 Elements that look like @code{(score-file . "file")} will make
1961 @file{file} into the current score file for the group in question. This
1962 means that all score commands you issue will end up in that file.
1965 @cindex adapt file group parameter
1966 Elements that look like @code{(adapt-file . "file")} will make
1967 @file{file} into the current adaptive file for the group in question.
1968 All adaptive score entries will be put into this file.
1971 When unsubscribing to a mailing list you should never send the
1972 unsubscription notice to the mailing list itself. Instead, you'd send
1973 messages to the administrative address. This parameter allows you to
1974 put the admin address somewhere convenient.
1977 Elements that look like @code{(display . MODE)} says which articles to
1978 display on entering the group. Legal values are:
1982 Display all articles, both read and unread.
1985 Display the default visible articles, which normally includes unread and
1990 Elements that look like @code{(comment . "This is a comment")}
1991 are arbitrary comments on the group. They are currently ignored by
1992 Gnus, but provide a place for you to store information on particular
1995 @item @var{(variable form)}
1996 You can use the group parameters to set variables local to the group you
1997 are entering. If you want to turn threading off in @samp{news.answers},
1998 you could put @code{(gnus-show-threads nil)} in the group parameters of
1999 that group. @code{gnus-show-threads} will be made into a local variable
2000 in the summary buffer you enter, and the form @code{nil} will be
2001 @code{eval}ed there.
2003 This can also be used as a group-specific hook function, if you'd like.
2004 If you want to hear a beep when you enter a group, you could put
2005 something like @code{(dummy-variable (ding))} in the parameters of that
2006 group. @code{dummy-variable} will be set to the result of the
2007 @code{(ding)} form, but who cares?
2011 Use the @kbd{G p} command to edit group parameters of a group.
2013 Also @pxref{Topic Parameters}.
2015 Here's an example group parameter list:
2018 ((to-address . "ding@@gnus.org")
2023 @node Listing Groups
2024 @section Listing Groups
2025 @cindex group listing
2027 These commands all list various slices of the groups that are available.
2035 @findex gnus-group-list-groups
2036 List all groups that have unread articles
2037 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
2038 command will list only groups of level ARG and lower. By default, it
2039 only lists groups of level five (i. e.,
2040 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2047 @findex gnus-group-list-all-groups
2048 List all groups, whether they have unread articles or not
2049 (@code{gnus-group-list-all-groups}). If the numeric prefix is used,
2050 this command will list only groups of level ARG and lower. By default,
2051 it lists groups of level seven or lower (i.e., just subscribed and
2052 unsubscribed groups).
2056 @findex gnus-group-list-level
2057 List all unread groups on a specific level
2058 (@code{gnus-group-list-level}). If given a prefix, also list the groups
2059 with no unread articles.
2063 @findex gnus-group-l