1 \input texinfo @c -*-texinfo-*- -*- coding: iso-latin-1 -*-
4 @settitle Pterodactyl Gnus Manual
9 @c * Gnus: (gnus). The newsreader Gnus.
14 @setchapternewpage odd
18 \documentclass[twoside,a4paper,openright,11pt]{book}
19 \usepackage[latin1]{inputenc}
20 \usepackage{pagestyle}
28 \newcommand{\gnuschaptername}{}
29 \newcommand{\gnussectionname}{}
31 \newcommand{\gnusbackslash}{/}
33 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
34 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
36 \newcommand{\gnuskindex}[1]{\index{#1}}
37 \newcommand{\gnusindex}[1]{\index{#1}}
39 \newcommand{\gnustt}[1]{{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}}
40 \newcommand{\gnuscode}[1]{\gnustt{#1}}
41 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}''}
42 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
43 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
44 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
45 \newcommand{\gnusdfn}[1]{\textit{#1}}
46 \newcommand{\gnusi}[1]{\textit{#1}}
47 \newcommand{\gnusstrong}[1]{\textbf{#1}}
48 \newcommand{\gnusemph}[1]{\textit{#1}}
49 \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
50 \newcommand{\gnussc}[1]{\textsc{#1}}
51 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
52 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
53 \newcommand{\gnusresult}[1]{\gnustt{=> #1}}
55 \newcommand{\gnusbullet}{{${\bullet}$}}
56 \newcommand{\gnusdollar}{\$}
57 \newcommand{\gnusampersand}{\&}
58 \newcommand{\gnuspercent}{\%}
59 \newcommand{\gnushash}{\#}
60 \newcommand{\gnushat}{\symbol{"5E}}
61 \newcommand{\gnusunderline}{\symbol{"5F}}
62 \newcommand{\gnusnot}{$\neg$}
63 \newcommand{\gnustilde}{\symbol{"7E}}
64 \newcommand{\gnusless}{{$<$}}
65 \newcommand{\gnusgreater}{{$>$}}
66 \newcommand{\gnusbraceleft}{{$>$}}
67 \newcommand{\gnusbraceright}{{$>$}}
69 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head.eps,height=1cm}}}
70 \newcommand{\gnusinteresting}{
71 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
74 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
76 \newcommand{\gnuspagechapter}[1]{
83 \newcommand{\gnuschapter}[2]{
85 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
87 \renewcommand{\gnussectionname}{}
88 \renewcommand{\gnuschaptername}{#2}
91 \begin{picture}(500,500)(0,0)
92 \put(480,350){\makebox(0,0)[tr]{#1}}
93 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
98 \newcommand{\gnusfigure}[3]{
100 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
107 \newcommand{\gnusicon}[1]{
108 \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=tmp/#1-up.ps,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=tmp/#1-up.ps,height=1cm}}}
111 \newcommand{\gnuspicon}[1]{
112 \margindex{\epsfig{figure=#1,width=2cm}}
115 \newcommand{\gnusxface}[2]{
116 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
119 \newcommand{\gnussmiley}[2]{
120 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
123 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
125 \newcommand{\gnussection}[1]{
126 \renewcommand{\gnussectionname}{#1}
130 \newenvironment{codelist}%
135 \newenvironment{kbdlist}%
141 \newenvironment{dfnlist}%
146 \newenvironment{stronglist}%
151 \newenvironment{samplist}%
156 \newenvironment{varlist}%
161 \newenvironment{emphlist}%
166 \newlength\gnusheadtextwidth
167 \setlength{\gnusheadtextwidth}{\headtextwidth}
168 \addtolength{\gnusheadtextwidth}{1cm}
170 \newpagestyle{gnuspreamble}%
175 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
179 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
188 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
190 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
195 \newpagestyle{gnusindex}%
200 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
204 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
212 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
214 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
224 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
228 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
236 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
238 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
243 \pagenumbering{roman}
244 \pagestyle{gnuspreamble}
254 %\addtolength{\oddsidemargin}{-5cm}
255 %\addtolength{\evensidemargin}{-5cm}
257 \addtolength{\textheight}{2cm}
259 \gnustitle{\gnustitlename}\\
262 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo.eps,height=15cm}
265 \gnusauthor{by Lars Magne Ingebrigtsen}
272 \thispagestyle{empty}
274 Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
276 Permission is granted to make and distribute verbatim copies of
277 this manual provided the copyright notice and this permission notice
278 are preserved on all copies.
280 Permission is granted to copy and distribute modified versions of this
281 manual under the conditions for verbatim copying, provided that the
282 entire resulting derived work is distributed under the terms of a
283 permission notice identical to this one.
285 Permission is granted to copy and distribute translations of this manual
286 into another language, under the above conditions for modified versions.
295 This file documents Gnus, the GNU Emacs newsreader.
297 Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
299 Permission is granted to make and distribute verbatim copies of
300 this manual provided the copyright notice and this permission notice
301 are preserved on all copies.
304 Permission is granted to process this file through Tex and print the
305 results, provided the printed document carries copying permission
306 notice identical to this one except for the removal of this paragraph
307 (this paragraph not being relevant to the printed manual).
310 Permission is granted to copy and distribute modified versions of this
311 manual under the conditions for verbatim copying, provided also that the
312 entire resulting derived work is distributed under the terms of a
313 permission notice identical to this one.
315 Permission is granted to copy and distribute translations of this manual
316 into another language, under the above conditions for modified versions.
322 @title Pterodactyl Gnus Manual
324 @author by Lars Magne Ingebrigtsen
327 @vskip 0pt plus 1filll
328 Copyright @copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
330 Permission is granted to make and distribute verbatim copies of
331 this manual provided the copyright notice and this permission notice
332 are preserved on all copies.
334 Permission is granted to copy and distribute modified versions of this
335 manual under the conditions for verbatim copying, provided that the
336 entire resulting derived work is distributed under the terms of a
337 permission notice identical to this one.
339 Permission is granted to copy and distribute translations of this manual
340 into another language, under the above conditions for modified versions.
349 @top The Gnus Newsreader
353 You can read news (and mail) from within Emacs by using Gnus. The news
354 can be gotten by any nefarious means you can think of---@sc{nntp}, local
355 spool or your mbox file. All at the same time, if you want to push your
358 This manual corresponds to Pterodactyl Gnus .
369 Gnus is the advanced, self-documenting, customizable, extensible
370 unreal-time newsreader for GNU Emacs.
372 Oops. That sounds oddly familiar, so let's start over again to avoid
373 being accused of plagiarism:
375 Gnus is a message-reading laboratory. It will let you look at just
376 about anything as if it were a newsgroup. You can read mail with it,
377 you can browse directories with it, you can @code{ftp} with it---you can
378 even read news with it!
380 Gnus tries to empower people who read news the same way Emacs empowers
381 people who edit text. Gnus sets no limits to what the user should be
382 allowed to do. Users are encouraged to extend Gnus to make it behave
383 like they want it to behave. A program should not control people;
384 people should be empowered to do what they want by using (or abusing)
391 * Starting Up:: Finding news can be a pain.
392 * The Group Buffer:: Selecting, subscribing and killing groups.
393 * The Summary Buffer:: Reading, saving and posting articles.
394 * The Article Buffer:: Displaying and handling articles.
395 * Composing Messages:: Information on sending mail and news.
396 * Select Methods:: Gnus reads all messages from various select methods.
397 * Scoring:: Assigning values to articles.
398 * Various:: General purpose settings.
399 * The End:: Farewell and goodbye.
400 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
401 * Index:: Variable, function and concept index.
402 * Key Index:: Key Index.
406 @chapter Starting Gnus
411 If your system administrator has set things up properly, starting Gnus
412 and reading news is extremely easy---you just type @kbd{M-x gnus} in
415 @findex gnus-other-frame
416 @kindex M-x gnus-other-frame
417 If you want to start Gnus in a different frame, you can use the command
418 @kbd{M-x gnus-other-frame} instead.
420 If things do not go smoothly at startup, you have to twiddle some
421 variables in your @file{~/.gnus} file. This file is similar to
422 @file{~/.emacs}, but is read when gnus starts.
424 If you puzzle at any terms used in this manual, please refer to the
425 terminology section (@pxref{Terminology}).
428 * Finding the News:: Choosing a method for getting news.
429 * The First Time:: What does Gnus do the first time you start it?
430 * The Server is Down:: How can I read my mail then?
431 * Slave Gnusae:: You can have more than one Gnus active at a time.
432 * Fetching a Group:: Starting Gnus just to read a group.
433 * New Groups:: What is Gnus supposed to do with new groups?
434 * Startup Files:: Those pesky startup files---@file{.newsrc}.
435 * Auto Save:: Recovering from a crash.
436 * The Active File:: Reading the active file over a slow line Takes Time.
437 * Changing Servers:: You may want to move from one server to another.
438 * Startup Variables:: Other variables you might change.
442 @node Finding the News
443 @section Finding the News
446 @vindex gnus-select-method
448 The @code{gnus-select-method} variable says where Gnus should look for
449 news. This variable should be a list where the first element says
450 @dfn{how} and the second element says @dfn{where}. This method is your
451 native method. All groups not fetched with this method are
454 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
455 you want to get your daily dosage of news from, you'd say:
458 (setq gnus-select-method '(nntp "news.somewhere.edu"))
461 If you want to read directly from the local spool, say:
464 (setq gnus-select-method '(nnspool ""))
467 If you can use a local spool, you probably should, as it will almost
468 certainly be much faster.
470 @vindex gnus-nntpserver-file
472 @cindex @sc{nntp} server
473 If this variable is not set, Gnus will take a look at the
474 @code{NNTPSERVER} environment variable. If that variable isn't set,
475 Gnus will see whether @code{gnus-nntpserver-file}
476 (@file{/etc/nntpserver} by default) has any opinions on the matter. If
477 that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server. That's a long shot, though.
479 @vindex gnus-nntp-server
480 If @code{gnus-nntp-server} is set, this variable will override
481 @code{gnus-select-method}. You should therefore set
482 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
484 @vindex gnus-secondary-servers
485 @vindex gnus-nntp-server
486 You can also make Gnus prompt you interactively for the name of an
487 @sc{nntp} server. If you give a non-numerical prefix to @code{gnus}
488 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
489 in the @code{gnus-secondary-servers} list (if any). You can also just
490 type in the name of any server you feel like visiting. (Note that this
491 will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
492 gnus} later in the same Emacs session, Gnus will contact the same
495 @findex gnus-group-browse-foreign-server
497 However, if you use one @sc{nntp} server regularly and are just
498 interested in a couple of groups from a different server, you would be
499 better served by using the @kbd{B} command in the group buffer. It will
500 let you have a look at what groups are available, and you can subscribe
501 to any of the groups you want to. This also makes @file{.newsrc}
502 maintenance much tidier. @xref{Foreign Groups}.
504 @vindex gnus-secondary-select-methods
506 A slightly different approach to foreign groups is to set the
507 @code{gnus-secondary-select-methods} variable. The select methods
508 listed in this variable are in many ways just as native as the
509 @code{gnus-select-method} server. They will also be queried for active
510 files during startup (if that's required), and new newsgroups that
511 appear on these servers will be subscribed (or not) just as native
514 For instance, if you use the @code{nnmbox} backend to read your mail, you
515 would typically set this variable to
518 (setq gnus-secondary-select-methods '((nnmbox "")))
523 @section The First Time
524 @cindex first time usage
526 If no startup files exist, Gnus will try to determine what groups should
527 be subscribed by default.
529 @vindex gnus-default-subscribed-newsgroups
530 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
531 will subscribe you to just those groups in that list, leaving the rest
532 killed. Your system administrator should have set this variable to
535 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
536 picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
537 here as @dfn{whatever Lars thinks you should read}.)
539 You'll also be subscribed to the Gnus documentation group, which should
540 help you with most common problems.
542 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
543 use the normal functions for handling new groups, and not do anything
547 @node The Server is Down
548 @section The Server is Down
549 @cindex server errors
551 If the default server is down, Gnus will understandably have some
552 problems starting. However, if you have some mail groups in addition to
553 the news groups, you may want to start Gnus anyway.
555 Gnus, being the trusting sort of program, will ask whether to proceed
556 without a native select method if that server can't be contacted. This
557 will happen whether the server doesn't actually exist (i.e., you have
558 given the wrong address) or the server has just momentarily taken ill
559 for some reason or other. If you decide to continue and have no foreign
560 groups, you'll find it difficult to actually do anything in the group
561 buffer. But, hey, that's your problem. Blllrph!
563 @findex gnus-no-server
564 @kindex M-x gnus-no-server
566 If you know that the server is definitely down, or you just want to read
567 your mail without bothering with the server at all, you can use the
568 @code{gnus-no-server} command to start Gnus. That might come in handy
569 if you're in a hurry as well. This command will not attempt to contact
570 your primary server---instead, it will just activate all groups on level
571 1 and 2. (You should preferably keep no native groups on those two
576 @section Slave Gnusae
579 You might want to run more than one Emacs with more than one Gnus at the
580 same time. If you are using different @file{.newsrc} files (e.g., if you
581 are using the two different Gnusae to read from two different servers),
582 that is no problem whatsoever. You just do it.
584 The problem appears when you want to run two Gnusae that use the same
587 To work around that problem some, we here at the Think-Tank at the Gnus
588 Towers have come up with a new concept: @dfn{Masters} and
589 @dfn{slaves}. (We have applied for a patent on this concept, and have
590 taken out a copyright on those words. If you wish to use those words in
591 conjunction with each other, you have to send $1 per usage instance to
592 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
593 Applications}) will be much more expensive, of course.)
595 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
596 however you do it). Each subsequent slave Gnusae should be started with
597 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
598 files, but instead save @dfn{slave files} that contain information only
599 on what groups have been read in the slave session. When a master Gnus
600 starts, it will read (and delete) these slave files, incorporating all
601 information from them. (The slave files will be read in the sequence
602 they were created, so the latest changes will have precedence.)
604 Information from the slave files has, of course, precedence over the
605 information in the normal (i.e., master) @code{.newsrc} file.
608 @node Fetching a Group
609 @section Fetching a Group
610 @cindex fetching a group
612 @findex gnus-fetch-group
613 It is sometimes convenient to be able to just say ``I want to read this
614 group and I don't care whether Gnus has been started or not''. This is
615 perhaps more useful for people who write code than for users, but the
616 command @code{gnus-fetch-group} provides this functionality in any case.
617 It takes the group name as a parameter.
625 @vindex gnus-check-new-newsgroups
626 If you are satisfied that you really never want to see any new groups,
627 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
628 also save you some time at startup. Even if this variable is
629 @code{nil}, you can always subscribe to the new groups just by pressing
630 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
631 is @code{ask-server} by default. If you set this variable to
632 @code{always}, then Gnus will query the backends for new groups even
633 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
636 * Checking New Groups:: Determining what groups are new.
637 * Subscription Methods:: What Gnus should do with new groups.
638 * Filtering New Groups:: Making Gnus ignore certain new groups.
642 @node Checking New Groups
643 @subsection Checking New Groups
645 Gnus normally determines whether a group is new or not by comparing the
646 list of groups from the active file(s) with the lists of subscribed and
647 dead groups. This isn't a particularly fast method. If
648 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
649 server for new groups since the last time. This is both faster and
650 cheaper. This also means that you can get rid of the list of killed
651 groups altogether, so you may set @code{gnus-save-killed-list} to
652 @code{nil}, which will save time both at startup, at exit, and all over.
653 Saves disk space, too. Why isn't this the default, then?
654 Unfortunately, not all servers support this command.
656 I bet I know what you're thinking now: How do I find out whether my
657 server supports @code{ask-server}? No? Good, because I don't have a
658 fail-safe answer. I would suggest just setting this variable to
659 @code{ask-server} and see whether any new groups appear within the next
660 few days. If any do, then it works. If none do, then it doesn't
661 work. I could write a function to make Gnus guess whether the server
662 supports @code{ask-server}, but it would just be a guess. So I won't.
663 You could @code{telnet} to the server and say @code{HELP} and see
664 whether it lists @samp{NEWGROUPS} among the commands it understands. If
665 it does, then it might work. (But there are servers that lists
666 @samp{NEWGROUPS} without supporting the function properly.)
668 This variable can also be a list of select methods. If so, Gnus will
669 issue an @code{ask-server} command to each of the select methods, and
670 subscribe them (or not) using the normal methods. This might be handy
671 if you are monitoring a few servers for new groups. A side effect is
672 that startup will take much longer, so you can meditate while waiting.
673 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
676 @node Subscription Methods
677 @subsection Subscription Methods
679 @vindex gnus-subscribe-newsgroup-method
680 What Gnus does when it encounters a new group is determined by the
681 @code{gnus-subscribe-newsgroup-method} variable.
683 This variable should contain a function. This function will be called
684 with the name of the new group as the only parameter.
686 Some handy pre-fab functions are:
690 @item gnus-subscribe-zombies
691 @vindex gnus-subscribe-zombies
692 Make all new groups zombies. This is the default. You can browse the
693 zombies later (with @kbd{A z}) and either kill them all off properly
694 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
696 @item gnus-subscribe-randomly
697 @vindex gnus-subscribe-randomly
698 Subscribe all new groups in arbitrary order. This really means that all
699 new groups will be added at ``the top'' of the group buffer.
701 @item gnus-subscribe-alphabetically
702 @vindex gnus-subscribe-alphabetically
703 Subscribe all new groups in alphabetical order.
705 @item gnus-subscribe-hierarchically
706 @vindex gnus-subscribe-hierarchically
707 Subscribe all new groups hierarchically. The difference between this
708 function and @code{gnus-subscribe-alphabetically} is slight.
709 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
710 alphabetical fashion, while this function will enter groups into its
711 hierarchy. So if you want to have the @samp{rec} hierarchy before the
712 @samp{comp} hierarchy, this function will not mess that configuration
713 up. Or something like that.
715 @item gnus-subscribe-interactively
716 @vindex gnus-subscribe-interactively
717 Subscribe new groups interactively. This means that Gnus will ask
718 you about @strong{all} new groups. The groups you choose to subscribe
719 to will be subscribed hierarchically.
721 @item gnus-subscribe-killed
722 @vindex gnus-subscribe-killed
725 @item gnus-subscribe-topics
726 @vindex gnus-subscribe-topics
727 Put the groups into the topic that has a matching @code{subscribe} topic
728 parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe}
729 topic parameter that looks like
735 will mean that all groups that match that regex will be subscribed under
738 If no topics match the groups, the groups will be subscribed in the
743 @vindex gnus-subscribe-hierarchical-interactive
744 A closely related variable is
745 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
746 mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
747 hierarchical fashion whether to subscribe to new groups or not. Gnus
748 will ask you for each sub-hierarchy whether you want to descend the
751 One common mistake is to set the variable a few paragraphs above
752 (@code{gnus-subscribe-newsgroup-method}) to
753 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This
754 will not work. This is ga-ga. So don't do it.
757 @node Filtering New Groups
758 @subsection Filtering New Groups
760 A nice and portable way to control which new newsgroups should be
761 subscribed (or ignored) is to put an @dfn{options} line at the start of
762 the @file{.newsrc} file. Here's an example:
765 options -n !alt.all !rec.all sci.all
768 @vindex gnus-subscribe-options-newsgroup-method
769 This line obviously belongs to a serious-minded intellectual scientific
770 person (or she may just be plain old boring), because it says that all
771 groups that have names beginning with @samp{alt} and @samp{rec} should
772 be ignored, and all groups with names beginning with @samp{sci} should
773 be subscribed. Gnus will not use the normal subscription method for
774 subscribing these groups.
775 @code{gnus-subscribe-options-newsgroup-method} is used instead. This
776 variable defaults to @code{gnus-subscribe-alphabetically}.
778 @vindex gnus-options-not-subscribe
779 @vindex gnus-options-subscribe
780 If you don't want to mess with your @file{.newsrc} file, you can just
781 set the two variables @code{gnus-options-subscribe} and
782 @code{gnus-options-not-subscribe}. These two variables do exactly the
783 same as the @file{.newsrc} @samp{options -n} trick. Both are regexps,
784 and if the new group matches the former, it will be unconditionally
785 subscribed, and if it matches the latter, it will be ignored.
787 @vindex gnus-auto-subscribed-groups
788 Yet another variable that meddles here is
789 @code{gnus-auto-subscribed-groups}. It works exactly like
790 @code{gnus-options-subscribe}, and is therefore really superfluous, but I
791 thought it would be nice to have two of these. This variable is more
792 meant for setting some ground rules, while the other variable is used
793 more for user fiddling. By default this variable makes all new groups
794 that come from mail backends (@code{nnml}, @code{nnbabyl},
795 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
796 don't like that, just set this variable to @code{nil}.
798 New groups that match this regexp are subscribed using
799 @code{gnus-subscribe-options-newsgroup-method}.
802 @node Changing Servers
803 @section Changing Servers
804 @cindex changing servers
806 Sometimes it is necessary to move from one @sc{nntp} server to another.
807 This happens very rarely, but perhaps you change jobs, or one server is
808 very flaky and you want to use another.
810 Changing the server is pretty easy, right? You just change
811 @code{gnus-select-method} to point to the new server?
815 Article numbers are not (in any way) kept synchronized between different
816 @sc{nntp} servers, and the only way Gnus keeps track of what articles
817 you have read is by keeping track of article numbers. So when you
818 change @code{gnus-select-method}, your @file{.newsrc} file becomes
821 Gnus provides a few functions to attempt to translate a @file{.newsrc}
822 file from one server to another. They all have one thing in
823 common---they take a looong time to run. You don't want to use these
824 functions more than absolutely necessary.
826 @kindex M-x gnus-change-server
827 @findex gnus-change-server
828 If you have access to both servers, Gnus can request the headers for all
829 the articles you have read and compare @code{Message-ID}s and map the
830 article numbers of the read articles and article marks. The @kbd{M-x
831 gnus-change-server} command will do this for all your native groups. It
832 will prompt for the method you want to move to.
834 @kindex M-x gnus-group-move-group-to-server
835 @findex gnus-group-move-group-to-server
836 You can also move individual groups with the @kbd{M-x
837 gnus-group-move-group-to-server} command. This is useful if you want to
838 move a (foreign) group from one server to another.
840 @kindex M-x gnus-group-clear-data-on-native-groups
841 @findex gnus-group-clear-data-on-native-groups
842 If you don't have access to both the old and new server, all your marks
843 and read ranges have become worthless. You can use the @kbd{M-x
844 gnus-group-clear-data-on-native-groups} command to clear out all data
845 that you have on your native groups. Use with caution.
847 After changing servers, you @strong{must} move the cache hierarchy away,
848 since the cached articles will have wrong article numbers, which will
849 affect which articles Gnus thinks are read.
853 @section Startup Files
854 @cindex startup files
859 Now, you all know about the @file{.newsrc} file. All subscription
860 information is traditionally stored in this file.
862 Things got a bit more complicated with @sc{gnus}. In addition to
863 keeping the @file{.newsrc} file updated, it also used a file called
864 @file{.newsrc.el} for storing all the information that didn't fit into
865 the @file{.newsrc} file. (Actually, it also duplicated everything in
866 the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
867 files was the most recently saved, which enabled people to swap between
868 @sc{gnus} and other newsreaders.
870 That was kinda silly, so Gnus went one better: In addition to the
871 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
872 @file{.newsrc.eld}. It will read whichever of these files that are most
873 recent, but it will never write a @file{.newsrc.el} file. You should
874 never delete the @file{.newsrc.eld} file---it contains much information
875 not stored in the @file{.newsrc} file.
877 @vindex gnus-save-newsrc-file
878 @vindex gnus-read-newsrc-file
879 You can turn off writing the @file{.newsrc} file by setting
880 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
881 the file and save some space, as well as exiting from Gnus faster.
882 However, this will make it impossible to use other newsreaders than
883 Gnus. But hey, who would want to, right? Similarly, setting
884 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
885 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which is
886 convenient if you have a tendency to use Netscape once in a while.
888 @vindex gnus-save-killed-list
889 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
890 will not save the list of killed groups to the startup file. This will
891 save both time (when starting and quitting) and space (on disk). It
892 will also mean that Gnus has no record of what groups are new or old,
893 so the automatic new groups subscription methods become meaningless.
894 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
895 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
896 Groups}). This variable can also be a regular expression. If that's
897 the case, remove all groups that do not match this regexp before
898 saving. This can be useful in certain obscure situations that involve
899 several servers where not all servers support @code{ask-server}.
901 @vindex gnus-startup-file
902 The @code{gnus-startup-file} variable says where the startup files are.
903 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
904 file being whatever that one is, with a @samp{.eld} appended.
906 @vindex gnus-save-newsrc-hook
907 @vindex gnus-save-quick-newsrc-hook
908 @vindex gnus-save-standard-newsrc-hook
909 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
910 files, while @code{gnus-save-quick-newsrc-hook} is called just before
911 saving the @file{.newsrc.eld} file, and
912 @code{gnus-save-standard-newsrc-hook} is called just before saving the
913 @file{.newsrc} file. The latter two are commonly used to turn version
914 control on or off. Version control is on by default when saving the
915 startup files. If you want to turn backup creation off, say something like:
918 (defun turn-off-backup ()
919 (set (make-local-variable 'backup-inhibited) t))
921 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
922 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
925 @vindex gnus-init-file
926 When Gnus starts, it will read the @code{gnus-site-init-file}
927 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
928 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files
929 and can be used to avoid cluttering your @file{~/.emacs} and
930 @file{site-init} files with Gnus stuff. Gnus will also check for files
931 with the same names as these, but with @file{.elc} and @file{.el}
932 suffixes. In other words, if you have set @code{gnus-init-file} to
933 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
934 and finally @file{~/.gnus} (in this order).
943 Whenever you do something that changes the Gnus data (reading articles,
944 catching up, killing/subscribing groups), the change is added to a
945 special @dfn{dribble buffer}. This buffer is auto-saved the normal
946 Emacs way. If your Emacs should crash before you have saved the
947 @file{.newsrc} files, all changes you have made can be recovered from
950 If Gnus detects this file at startup, it will ask the user whether to
951 read it. The auto save file is deleted whenever the real startup file is
954 @vindex gnus-use-dribble-file
955 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
956 maintain a dribble buffer. The default is @code{t}.
958 @vindex gnus-dribble-directory
959 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
960 this variable is @code{nil}, which it is by default, Gnus will dribble
961 into the directory where the @file{.newsrc} file is located. (This is
962 normally the user's home directory.) The dribble file will get the same
963 file permissions as the @code{.newsrc} file.
965 @vindex gnus-always-read-dribble-file
966 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
967 read the dribble file on startup without querying the user.
970 @node The Active File
971 @section The Active File
973 @cindex ignored groups
975 When Gnus starts, or indeed whenever it tries to determine whether new
976 articles have arrived, it reads the active file. This is a very large
977 file that lists all the active groups and articles on the server.
979 @vindex gnus-ignored-newsgroups
980 Before examining the active file, Gnus deletes all lines that match the
981 regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
982 any groups with bogus names, but you can use this variable to make Gnus
983 ignore hierarchies you aren't ever interested in. However, this is not
984 recommended. In fact, it's highly discouraged. Instead, @pxref{New
985 Groups} for an overview of other variables that can be used instead.
988 @c @code{nil} by default, and will slow down active file handling somewhat
989 @c if you set it to anything else.
991 @vindex gnus-read-active-file
993 The active file can be rather Huge, so if you have a slow network, you
994 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
995 reading the active file. This variable is @code{some} by default.
997 Gnus will try to make do by getting information just on the groups that
998 you actually subscribe to.
1000 Note that if you subscribe to lots and lots of groups, setting this
1001 variable to @code{nil} will probably make Gnus slower, not faster. At
1002 present, having this variable @code{nil} will slow Gnus down
1003 considerably, unless you read news over a 2400 baud modem.
1005 This variable can also have the value @code{some}. Gnus will then
1006 attempt to read active info only on the subscribed groups. On some
1007 servers this is quite fast (on sparkling, brand new INN servers that
1008 support the @code{LIST ACTIVE group} command), on others this isn't fast
1009 at all. In any case, @code{some} should be faster than @code{nil}, and
1010 is certainly faster than @code{t} over slow lines.
1012 Some news servers (Leafnode and old versions of INN, for instance) do
1013 not support the @code{LIST ACTIVE group}. For these servers, @code{nil}
1014 is probably the most efficient value for this variable.
1016 If this variable is @code{nil}, Gnus will ask for group info in total
1017 lock-step, which isn't very fast. If it is @code{some} and you use an
1018 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
1019 read all the replies in one swoop. This will normally result in better
1020 performance, but if the server does not support the aforementioned
1021 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1023 If you think that starting up Gnus takes too long, try all the three
1024 different values for this variable and see what works best for you.
1026 In any case, if you use @code{some} or @code{nil}, you should definitely
1027 kill all groups that you aren't interested in to speed things up.
1029 Note that this variable also affects active file retrieval from
1030 secondary select methods.
1033 @node Startup Variables
1034 @section Startup Variables
1038 @item gnus-load-hook
1039 @vindex gnus-load-hook
1040 A hook run while Gnus is being loaded. Note that this hook will
1041 normally be run just once in each Emacs session, no matter how many
1042 times you start Gnus.
1044 @item gnus-before-startup-hook
1045 @vindex gnus-before-startup-hook
1046 A hook run after starting up Gnus successfully.
1048 @item gnus-startup-hook
1049 @vindex gnus-startup-hook
1050 A hook run as the very last thing after starting up Gnus
1052 @item gnus-started-hook
1053 @vindex gnus-started-hook
1054 A hook that is run as the very last thing after starting up Gnus
1057 @item gnus-setup-news-hook
1058 @vindex gnus-setup-news-hook
1059 A hook that is run after reading the @file{.newsrc} file(s), but before
1060 generating the group buffer.
1062 @item gnus-check-bogus-newsgroups
1063 @vindex gnus-check-bogus-newsgroups
1064 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1065 startup. A @dfn{bogus group} is a group that you have in your
1066 @file{.newsrc} file, but doesn't exist on the news server. Checking for
1067 bogus groups can take quite a while, so to save time and resources it's
1068 best to leave this option off, and do the checking for bogus groups once
1069 in a while from the group buffer instead (@pxref{Group Maintenance}).
1071 @item gnus-inhibit-startup-message
1072 @vindex gnus-inhibit-startup-message
1073 If non-@code{nil}, the startup message won't be displayed. That way,
1074 your boss might not notice as easily that you are reading news instead
1075 of doing your job. Note that this variable is used before
1076 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
1078 @item gnus-no-groups-message
1079 @vindex gnus-no-groups-message
1080 Message displayed by Gnus when no groups are available.
1082 @item gnus-play-startup-jingle
1083 @vindex gnus-play-startup-jingle
1084 If non-@code{nil}, play the Gnus jingle at startup.
1086 @item gnus-startup-jingle
1087 @vindex gnus-startup-jingle
1088 Jingle to be played if the above variable is non-@code{nil}. The
1089 default is @samp{Tuxedomoon.Jingle4.au}.
1094 @node The Group Buffer
1095 @chapter The Group Buffer
1096 @cindex group buffer
1098 The @dfn{group buffer} lists all (or parts) of the available groups. It
1099 is the first buffer shown when Gnus starts, and will never be killed as
1100 long as Gnus is active.
1104 \gnusfigure{The Group Buffer}{320}{
1105 \put(75,50){\epsfig{figure=tmp/group.ps,height=9cm}}
1106 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1107 \put(120,38){\vector(1,2){10}}
1108 \put(40,60){\makebox(0,0)[r]{Mode line}}
1109 \put(40,58){\vector(1,0){30}}
1110 \put(200,28){\makebox(0,0)[t]{Native select method}}
1111 \put(200,26){\vector(-1,2){15}}
1117 * Group Buffer Format:: Information listed and how you can change it.
1118 * Group Maneuvering:: Commands for moving in the group buffer.
1119 * Selecting a Group:: Actually reading news.
1120 * Group Data:: Changing the info for a group.
1121 * Subscription Commands:: Unsubscribing, killing, subscribing.
1122 * Group Levels:: Levels? What are those, then?
1123 * Group Score:: A mechanism for finding out what groups you like.
1124 * Marking Groups:: You can mark groups for later processing.
1125 * Foreign Groups:: Creating and editing groups.
1126 * Group Parameters:: Each group may have different parameters set.
1127 * Listing Groups:: Gnus can list various subsets of the groups.
1128 * Sorting Groups:: Re-arrange the group order.
1129 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1130 * Browse Foreign Server:: You can browse a server. See what it has to offer.
1131 * Exiting Gnus:: Stop reading news and get some work done.
1132 * Group Topics:: A folding group mode divided into topics.
1133 * Misc Group Stuff:: Other stuff that you can to do.
1137 @node Group Buffer Format
1138 @section Group Buffer Format
1141 * Group Line Specification:: Deciding how the group buffer is to look.
1142 * Group Modeline Specification:: The group buffer modeline.
1143 * Group Highlighting:: Having nice colors in the group buffer.
1147 @node Group Line Specification
1148 @subsection Group Line Specification
1149 @cindex group buffer format
1151 The default format of the group buffer is nice and dull, but you can
1152 make it as exciting and ugly as you feel like.
1154 Here's a couple of example group lines:
1157 25: news.announce.newusers
1158 * 0: alt.fan.andrea-dworkin
1163 You can see that there are 25 unread articles in
1164 @samp{news.announce.newusers}. There are no unread articles, but some
1165 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1166 asterisk at the beginning of the line?).
1168 @vindex gnus-group-line-format
1169 You can change that format to whatever you want by fiddling with the
1170 @code{gnus-group-line-format} variable. This variable works along the
1171 lines of a @code{format} specification, which is pretty much the same as
1172 a @code{printf} specifications, for those of you who use (feh!) C.
1173 @xref{Formatting Variables}.
1175 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1177 There should always be a colon on the line; the cursor always moves to
1178 the colon after performing an operation. Nothing else is required---not
1179 even the group name. All displayed text is just window dressing, and is
1180 never examined by Gnus. Gnus stores all real information it needs using
1183 (Note that if you make a really strange, wonderful, spreadsheet-like
1184 layout, everybody will believe you are hard at work with the accounting
1185 instead of wasting time reading news.)
1187 Here's a list of all available format characters:
1192 An asterisk if the group only has marked articles.
1195 Whether the group is subscribed.
1198 Level of subscribedness.
1201 Number of unread articles.
1204 Number of dormant articles.
1207 Number of ticked articles.
1210 Number of read articles.
1213 Estimated total number of articles. (This is really @var{max-number}
1214 minus @var{min-number} plus 1.)
1217 Number of unread, unticked, non-dormant articles.
1220 Number of ticked and dormant articles.
1229 Newsgroup description.
1232 @samp{m} if moderated.
1235 @samp{(m)} if moderated.
1244 A string that looks like @samp{<%s:%n>} if a foreign select method is
1248 Indentation based on the level of the topic (@pxref{Group Topics}).
1251 @vindex gnus-group-uncollapsed-levels
1252 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1253 variable says how many levels to leave at the end of the group name.
1254 The default is 1---this will mean that group names like
1255 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1258 @vindex gnus-new-mail-mark
1260 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1264 A string that says when you last read the group (@pxref{Group
1268 User defined specifier. The next character in the format string should
1269 be a letter. Gnus will call the function
1270 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1271 following @samp{%u}. The function will be passed a single dummy
1272 parameter as argument. The function should return a string, which will
1273 be inserted into the buffer just like information from any other
1278 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1279 if no info is available---for instance, if it is a non-activated foreign
1280 group, or a bogus native group.
1283 @node Group Modeline Specification
1284 @subsection Group Modeline Specification
1285 @cindex group modeline
1287 @vindex gnus-group-mode-line-format
1288 The mode line can be changed by setting
1289 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It
1290 doesn't understand that many format specifiers:
1294 The native news server.
1296 The native select method.
1300 @node Group Highlighting
1301 @subsection Group Highlighting
1302 @cindex highlighting
1303 @cindex group highlighting
1305 @vindex gnus-group-highlight
1306 Highlighting in the group buffer is controlled by the
1307 @code{gnus-group-highlight} variable. This is an alist with elements
1308 that look like @code{(@var{form} . @var{face})}. If @var{form} evaluates to
1309 something non-@code{nil}, the @var{face} will be used on the line.
1311 Here's an example value for this variable that might look nice if the
1315 (face-spec-set 'my-group-face-1
1316 '((t (:foreground "Red" :bold t))))
1317 (face-spec-set 'my-group-face-2
1318 '((t (:foreground "SeaGreen" :bold t))))
1319 (face-spec-set 'my-group-face-3
1320 '((t (:foreground "SpringGreen" :bold t))))
1321 (face-spec-set 'my-group-face-4
1322 '((t (:foreground "SteelBlue" :bold t))))
1323 (face-spec-set 'my-group-face-5
1324 '((t (:foreground "SkyBlue" :bold t))))
1326 (setq gnus-group-highlight
1327 '(((> unread 200) . my-group-face-1)
1328 ((and (< level 3) (zerop unread)) . my-group-face-2)
1329 ((< level 3) . my-group-face-3)
1330 ((zerop unread) . my-group-face-4)
1331 (t . my-group-face-5)))
1334 Also @pxref{Faces and Fonts}.
1336 Variables that are dynamically bound when the forms are evaluated
1343 The number of unread articles in the group.
1347 Whether the group is a mail group.
1349 The level of the group.
1351 The score of the group.
1353 The number of ticked articles in the group.
1355 The total number of articles in the group. Or rather, MAX-NUMBER minus
1356 MIN-NUMBER plus one.
1358 When using the topic minor mode, this variable is bound to the current
1359 topic being inserted.
1362 When the forms are @code{eval}ed, point is at the beginning of the line
1363 of the group in question, so you can use many of the normal Gnus
1364 functions for snarfing info on the group.
1366 @vindex gnus-group-update-hook
1367 @findex gnus-group-highlight-line
1368 @code{gnus-group-update-hook} is called when a group line is changed.
1369 It will not be called when @code{gnus-visual} is @code{nil}. This hook
1370 calls @code{gnus-group-highlight-line} by default.
1373 @node Group Maneuvering
1374 @section Group Maneuvering
1375 @cindex group movement
1377 All movement commands understand the numeric prefix and will behave as
1378 expected, hopefully.
1384 @findex gnus-group-next-unread-group
1385 Go to the next group that has unread articles
1386 (@code{gnus-group-next-unread-group}).
1392 @findex gnus-group-prev-unread-group
1393 Go to the previous group that has unread articles
1394 (@code{gnus-group-prev-unread-group}).
1398 @findex gnus-group-next-group
1399 Go to the next group (@code{gnus-group-next-group}).
1403 @findex gnus-group-prev-group
1404 Go to the previous group (@code{gnus-group-prev-group}).
1408 @findex gnus-group-next-unread-group-same-level
1409 Go to the next unread group on the same (or lower) level
1410 (@code{gnus-group-next-unread-group-same-level}).
1414 @findex gnus-group-prev-unread-group-same-level
1415 Go to the previous unread group on the same (or lower) level
1416 (@code{gnus-group-prev-unread-group-same-level}).
1419 Three commands for jumping to groups:
1425 @findex gnus-group-jump-to-group
1426 Jump to a group (and make it visible if it isn't already)
1427 (@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
1432 @findex gnus-group-best-unread-group
1433 Jump to the unread group with the lowest level
1434 (@code{gnus-group-best-unread-group}).
1438 @findex gnus-group-first-unread-group
1439 Jump to the first group with unread articles
1440 (@code{gnus-group-first-unread-group}).
1443 @vindex gnus-group-goto-unread
1444 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1445 commands will move to the next group, not the next unread group. Even
1446 the commands that say they move to the next unread group. The default
1450 @node Selecting a Group
1451 @section Selecting a Group
1452 @cindex group selection
1457 @kindex SPACE (Group)
1458 @findex gnus-group-read-group
1459 Select the current group, switch to the summary buffer and display the
1460 first unread article (@code{gnus-group-read-group}). If there are no
1461 unread articles in the group, or if you give a non-numerical prefix to
1462 this command, Gnus will offer to fetch all the old articles in this
1463 group from the server. If you give a numerical prefix @var{N}, @var{N}
1464 determines the number of articles Gnus will fetch. If @var{N} is
1465 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1466 negative, Gnus fetches the @code{abs(@var{N})} oldest articles.
1470 @findex gnus-group-select-group
1471 Select the current group and switch to the summary buffer
1472 (@code{gnus-group-select-group}). Takes the same arguments as
1473 @code{gnus-group-read-group}---the only difference is that this command
1474 does not display the first unread article automatically upon group
1478 @kindex M-RET (Group)
1479 @findex gnus-group-quick-select-group
1480 This does the same as the command above, but tries to do it with the
1481 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
1482 scoring/killing will be performed, there will be no highlights and no
1483 expunging. This might be useful if you're in a real hurry and have to
1484 enter some humongous group. If you give a 0 prefix to this command
1485 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
1486 which is useful if you want to toggle threading before generating the
1487 summary buffer (@pxref{Summary Generation Commands}).
1490 @kindex M-SPACE (Group)
1491 @findex gnus-group-visible-select-group
1492 This is yet one more command that does the same as the @kbd{RET}
1493 command, but this one does it without expunging and hiding dormants
1494 (@code{gnus-group-visible-select-group}).
1497 @kindex M-C-RET (Group)
1498 @findex gnus-group-select-group-ephemerally
1499 Finally, this command selects the current group ephemerally without
1500 doing any processing of its contents
1501 (@code{gnus-group-select-group-ephemerally}). Even threading has been
1502 turned off. Everything you do in the group after selecting it in this
1503 manner will have no permanent effects.
1507 @vindex gnus-large-newsgroup
1508 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1509 to be a big group. This is 200 by default. If the group has more
1510 (unread and/or ticked) articles than this, Gnus will query the user
1511 before entering the group. The user can then specify how many articles
1512 should be fetched from the server. If the user specifies a negative
1513 number (@code{-n}), the @code{n} oldest articles will be fetched. If it
1514 is positive, the @code{n} articles that have arrived most recently will
1517 @vindex gnus-select-group-hook
1518 @vindex gnus-auto-select-first
1519 @code{gnus-auto-select-first} control whether any articles are selected
1520 automatically when entering a group with the @kbd{SPACE} command.
1525 Don't select any articles when entering the group. Just display the
1526 full summary buffer.
1529 Select the first unread article when entering the group.
1532 Select the highest scored article in the group when entering the
1537 This variable can also be a function. In that case, that function will
1538 be called to place point on a subject line, and/or select some article.
1539 Useful functions include:
1542 @item gnus-summary-first-unread-subject
1543 Place point on the subject line of the first unread article, but
1544 don't select the article.
1546 @item gnus-summary-first-unread-article
1547 Select the first unread article.
1549 @item gnus-summary-best-unread-article
1550 Select the highest-scored unread article.
1554 If you want to prevent automatic selection in some group (say, in a
1555 binary group with Huge articles) you can set this variable to @code{nil}
1556 in @code{gnus-select-group-hook}, which is called when a group is
1560 @node Subscription Commands
1561 @section Subscription Commands
1562 @cindex subscription
1570 @findex gnus-group-unsubscribe-current-group
1571 @c @icon{gnus-group-unsubscribe}
1572 Toggle subscription to the current group
1573 (@code{gnus-group-unsubscribe-current-group}).
1579 @findex gnus-group-unsubscribe-group
1580 Prompt for a group to subscribe, and then subscribe it. If it was
1581 subscribed already, unsubscribe it instead
1582 (@code{gnus-group-unsubscribe-group}).
1588 @findex gnus-group-kill-group
1589 @c @icon{gnus-group-kill-group}
1590 Kill the current group (@code{gnus-group-kill-group}).
1596 @findex gnus-group-yank-group
1597 Yank the last killed group (@code{gnus-group-yank-group}).
1600 @kindex C-x C-t (Group)
1601 @findex gnus-group-transpose-groups
1602 Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
1603 really a subscription command, but you can use it instead of a
1604 kill-and-yank sequence sometimes.
1610 @findex gnus-group-kill-region
1611 Kill all groups in the region (@code{gnus-group-kill-region}).
1615 @findex gnus-group-kill-all-zombies
1616 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1619 @kindex S C-k (Group)
1620 @findex gnus-group-kill-level
1621 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1622 These groups can't be yanked back after killing, so this command should
1623 be used with some caution. The only time where this command comes in
1624 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1625 groups that you want to get rid off. @kbd{S C-k} on level 7 will
1626 kill off all unsubscribed groups that do not have message numbers in the
1627 @file{.newsrc} file.
1631 Also @pxref{Group Levels}.
1641 @findex gnus-group-catchup-current
1642 @vindex gnus-group-catchup-group-hook
1643 @c @icon{gnus-group-catchup-current}
1644 Mark all unticked articles in this group as read
1645 (@code{gnus-group-catchup-current}).
1646 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1651 @findex gnus-group-catchup-current-all
1652 Mark all articles in this group, even the ticked ones, as read
1653 (@code{gnus-group-catchup-current-all}).
1657 @findex gnus-group-clear-data
1658 Clear the data from the current group---nix out marks and the list of
1659 read articles (@code{gnus-group-clear-data}).
1661 @item M-x gnus-group-clear-data-on-native-groups
1662 @kindex M-x gnus-group-clear-data-on-native-groups
1663 @findex gnus-group-clear-data-on-native-groups
1664 If you have switched from one @sc{nntp} server to another, all your marks
1665 and read ranges have become worthless. You can use this command to
1666 clear out all data that you have on your native groups. Use with
1673 @section Group Levels
1677 All groups have a level of @dfn{subscribedness}. For instance, if a
1678 group is on level 2, it is more subscribed than a group on level 5. You
1679 can ask Gnus to just list groups on a given level or lower
1680 (@pxref{Listing Groups}), or to just check for new articles in groups on
1681 a given level or lower (@pxref{Scanning New Messages}).
1683 Remember: The higher the level of the group, the less important it is.
1689 @findex gnus-group-set-current-level
1690 Set the level of the current group. If a numeric prefix is given, the
1691 next @var{n} groups will have their levels set. The user will be
1692 prompted for a level.
1695 @vindex gnus-level-killed
1696 @vindex gnus-level-zombie
1697 @vindex gnus-level-unsubscribed
1698 @vindex gnus-level-subscribed
1699 Gnus considers groups from levels 1 to
1700 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
1701 @code{gnus-level-subscribed} (exclusive) and
1702 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
1703 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
1704 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
1705 (default 9). Gnus treats subscribed and unsubscribed groups exactly the
1706 same, but zombie and killed groups have no information on what articles
1707 you have read, etc, stored. This distinction between dead and living
1708 groups isn't done because it is nice or clever, it is done purely for
1709 reasons of efficiency.
1711 It is recommended that you keep all your mail groups (if any) on quite
1712 low levels (e.g. 1 or 2).
1714 If you want to play with the level variables, you should show some care.
1715 Set them once, and don't touch them ever again. Better yet, don't touch
1716 them at all unless you know exactly what you're doing.
1718 @vindex gnus-level-default-unsubscribed
1719 @vindex gnus-level-default-subscribed
1720 Two closely related variables are @code{gnus-level-default-subscribed}
1721 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
1722 which are the levels that new groups will be put on if they are
1723 (un)subscribed. These two variables should, of course, be inside the
1724 relevant valid ranges.
1726 @vindex gnus-keep-same-level
1727 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1728 will only move to groups of the same level (or lower). In
1729 particular, going from the last article in one group to the next group
1730 will go to the next group of the same level (or lower). This might be
1731 handy if you want to read the most important groups before you read the
1734 @vindex gnus-group-default-list-level
1735 All groups with a level less than or equal to
1736 @code{gnus-group-default-list-level} will be listed in the group buffer
1739 @vindex gnus-group-list-inactive-groups
1740 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
1741 groups will be listed along with the unread groups. This variable is
1742 @code{t} by default. If it is @code{nil}, inactive groups won't be
1745 @vindex gnus-group-use-permanent-levels
1746 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1747 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1748 use this level as the ``work'' level.
1750 @vindex gnus-activate-level
1751 Gnus will normally just activate (i. e., query the server about) groups
1752 on level @code{gnus-activate-level} or less. If you don't want to
1753 activate unsubscribed groups, for instance, you might set this variable
1754 to 5. The default is 6.
1758 @section Group Score
1763 You would normally keep important groups on high levels, but that scheme
1764 is somewhat restrictive. Don't you wish you could have Gnus sort the
1765 group buffer according to how often you read groups, perhaps? Within
1768 This is what @dfn{group score} is for. You can have Gnus assign a score
1769 to each group through the mechanism described below. You can then sort
1770 the group buffer based on this score. Alternatively, you can sort on
1771 score and then level. (Taken together, the level and the score is
1772 called the @dfn{rank} of the group. A group that is on level 4 and has
1773 a score of 1 has a higher rank than a group on level 5 that has a score
1774 of 300. (The level is the most significant part and the score is the
1775 least significant part.))
1777 @findex gnus-summary-bubble-group
1778 If you want groups you read often to get higher scores than groups you
1779 read seldom you can add the @code{gnus-summary-bubble-group} function to
1780 the @code{gnus-summary-exit-hook} hook. This will result (after
1781 sorting) in a bubbling sort of action. If you want to see that in
1782 action after each summary exit, you can add
1783 @code{gnus-group-sort-groups-by-rank} or
1784 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
1785 slow things down somewhat.
1788 @node Marking Groups
1789 @section Marking Groups
1790 @cindex marking groups
1792 If you want to perform some command on several groups, and they appear
1793 subsequently in the group buffer, you would normally just give a
1794 numerical prefix to the command. Most group commands will then do your
1795 bidding on those groups.
1797 However, if the groups are not in sequential order, you can still
1798 perform a command on several groups. You simply mark the groups first
1799 with the process mark and then execute the command.
1807 @findex gnus-group-mark-group
1808 Set the mark on the current group (@code{gnus-group-mark-group}).
1814 @findex gnus-group-unmark-group
1815 Remove the mark from the current group
1816 (@code{gnus-group-unmark-group}).
1820 @findex gnus-group-unmark-all-groups
1821 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
1825 @findex gnus-group-mark-region
1826 Mark all groups between point and mark (@code{gnus-group-mark-region}).
1830 @findex gnus-group-mark-buffer
1831 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
1835 @findex gnus-group-mark-regexp
1836 Mark all groups that match some regular expression
1837 (@code{gnus-group-mark-regexp}).
1840 Also @pxref{Process/Prefix}.
1842 @findex gnus-group-universal-argument
1843 If you want to execute some command on all groups that have been marked
1844 with the process mark, you can use the @kbd{M-&}
1845 (@code{gnus-group-universal-argument}) command. It will prompt you for
1846 the command to be executed.
1849 @node Foreign Groups
1850 @section Foreign Groups
1851 @cindex foreign groups
1853 Below are some group mode commands for making and editing general foreign
1854 groups, as well as commands to ease the creation of a few
1855 special-purpose groups. All these commands insert the newly created
1856 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1863 @findex gnus-group-make-group
1864 @cindex making groups
1865 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
1866 for a name, a method and possibly an @dfn{address}. For an easier way
1867 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1871 @findex gnus-group-rename-group
1872 @cindex renaming groups
1873 Rename the current group to something else
1874 (@code{gnus-group-rename-group}). This is valid only on some
1875 groups---mail groups mostly. This command might very well be quite slow
1881 @findex gnus-group-customize
1882 Customize the group parameters (@code{gnus-group-customize}).
1886 @findex gnus-group-edit-group-method
1887 @cindex renaming groups
1888 Enter a buffer where you can edit the select method of the current
1889 group (@code{gnus-group-edit-group-method}).
1893 @findex gnus-group-edit-group-parameters
1894 Enter a buffer where you can edit the group parameters
1895 (@code{gnus-group-edit-group-parameters}).
1899 @findex gnus-group-edit-group
1900 Enter a buffer where you can edit the group info
1901 (@code{gnus-group-edit-group}).
1905 @findex gnus-group-make-directory-group
1907 Make a directory group (@pxref{Directory Groups}). You will be prompted
1908 for a directory name (@code{gnus-group-make-directory-group}).
1913 @findex gnus-group-make-help-group
1914 Make the Gnus help group (@code{gnus-group-make-help-group}).
1918 @cindex (ding) archive
1919 @cindex archive group
1920 @findex gnus-group-make-archive-group
1921 @vindex gnus-group-archive-directory
1922 @vindex gnus-group-recent-archive-directory
1923 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
1924 default a group pointing to the most recent articles will be created
1925 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
1926 group will be created from @code{gnus-group-archive-directory}.
1930 @findex gnus-group-make-kiboze-group
1932 Make a kiboze group. You will be prompted for a name, for a regexp to
1933 match groups to be ``included'' in the kiboze group, and a series of
1934 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1935 @xref{Kibozed Groups}.
1939 @findex gnus-group-enter-directory
1941 Read an arbitrary directory as if it were a newsgroup with the
1942 @code{nneething} backend (@code{gnus-group-enter-directory}).
1943 @xref{Anything Groups}.
1947 @findex gnus-group-make-doc-group
1948 @cindex ClariNet Briefs
1950 Make a group based on some file or other
1951 (@code{gnus-group-make-doc-group}). If you give a prefix to this
1952 command, you will be prompted for a file name and a file type.
1953 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1954 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
1955 @code{rfc934}, @code{rfc822-forward}, @code{nsmail} and @code{forward}.
1956 If you run this command without a prefix, Gnus will guess at the file
1957 type. @xref{Document Groups}.
1961 @vindex gnus-useful-groups
1962 @findex gnus-group-make-useful-group
1963 Create one of the groups mentioned in @code{gnus-useful-groups}
1964 (@code{gnus-group-make-useful-group}).
1968 @findex gnus-group-make-web-group
1973 Make an ephemeral group based on a web search
1974 (@code{gnus-group-make-web-group}). If you give a prefix to this
1975 command, make a solid group instead. You will be prompted for the
1976 search engine type and the search string. Valid search engine types
1977 include @code{dejanews}, @code{altavista} and @code{reference}.
1978 @xref{Web Searches}.
1980 If you use the @code{dejanews} search engine, you can limit the search
1981 to a particular group by using a match string like
1982 @samp{~g alt.sysadmin.recovery shaving}.
1985 @kindex G DEL (Group)
1986 @findex gnus-group-delete-group
1987 This function will delete the current group
1988 (@code{gnus-group-delete-group}). If given a prefix, this function will
1989 actually delete all the articles in the group, and forcibly remove the
1990 group itself from the face of the Earth. Use a prefix only if you are
1991 absolutely sure of what you are doing. This command can't be used on
1992 read-only groups (like @code{nntp} group), though.
1996 @findex gnus-group-make-empty-virtual
1997 Make a new, fresh, empty @code{nnvirtual} group
1998 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
2002 @findex gnus-group-add-to-virtual
2003 Add the current group to an @code{nnvirtual} group
2004 (@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
2007 @xref{Select Methods}, for more information on the various select
2010 @vindex gnus-activate-foreign-newsgroups
2011 If @code{gnus-activate-foreign-newsgroups} is a positive number,
2012 Gnus will check all foreign groups with this level or lower at startup.
2013 This might take quite a while, especially if you subscribe to lots of
2014 groups from different @sc{nntp} servers. Also @pxref{Group Levels};
2015 @code{gnus-activate-level} also affects activation of foreign
2019 @node Group Parameters
2020 @section Group Parameters
2021 @cindex group parameters
2023 The group parameters store information local to a particular group.
2024 Here's an example group parameter list:
2027 ((to-address . "ding@@gnus.org")
2031 We see that each element consists of a "dotted pair"---the thing before
2032 the dot is the key, while the thing after the dot is the value. All the
2033 parameters have this form @emph{except} local variable specs, which are
2034 not dotted pairs, but proper lists.
2036 The following group parameters can be used:
2041 Address used by when doing followups and new posts.
2044 (to-address . "some@@where.com")
2047 This is primarily useful in mail groups that represent closed mailing
2048 lists---mailing lists where it's expected that everybody that writes to
2049 the mailing list is subscribed to it. Since using this parameter
2050 ensures that the mail only goes to the mailing list itself, it means
2051 that members won't receive two copies of your followups.
2053 Using @code{to-address} will actually work whether the group is foreign
2054 or not. Let's say there's a group on the server that is called
2055 @samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2056 the articles from a mail-to-news gateway. Posting directly to this
2057 group is therefore impossible---you have to send mail to the mailing
2058 list address instead.
2062 Address used when doing a @kbd{a} in that group.
2065 (to-list . "some@@where.com")
2068 It is totally ignored
2069 when doing a followup---except that if it is present in a news group,
2070 you'll get mail group semantics when doing @kbd{f}.
2072 If you do an @kbd{a} command in a mail group and you have neither a
2073 @code{to-list} group parameter nor a @code{to-address} group parameter,
2074 then a @code{to-list} group parameter will be added automatically upon
2075 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2076 @vindex gnus-add-to-list
2078 If you do an @kbd{a} command in a mail group and you don't have a
2079 @code{to-list} group parameter, one will be added automatically upon
2080 sending the message.
2084 If the group parameter list has the element @code{(visible . t)},
2085 that group will always be visible in the Group buffer, regardless
2086 of whether it has any unread articles.
2088 @item broken-reply-to
2089 @cindex broken-reply-to
2090 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2091 headers in this group are to be ignored. This can be useful if you're
2092 reading a mailing list group where the listserv has inserted
2093 @code{Reply-To} headers that point back to the listserv itself. This is
2094 broken behavior. So there!
2098 Elements like @code{(to-group . "some.group.name")} means that all
2099 posts in that group will be sent to @code{some.group.name}.
2103 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2104 will treat all responses as if they were responses to news articles.
2105 This can be useful if you have a mail group that's really a mirror of a
2110 If @code{(gcc-self . t)} is present in the group parameter list, newly
2111 composed messages will be @code{Gcc}'d to the current group. If
2112 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2113 generated, if @code{(gcc-self . "string")} is present, this string will
2114 be inserted literally as a @code{gcc} header. This parameter takes
2115 precedence over any default @code{Gcc} rules as described later
2116 (@pxref{Archived Messages}).
2120 If the group parameter has an element that looks like @code{(auto-expire
2121 . t)}, all articles read will be marked as expirable. For an
2122 alternative approach, @pxref{Expiring Mail}.
2125 @cindex total-expire
2126 If the group parameter has an element that looks like
2127 @code{(total-expire . t)}, all read articles will be put through the
2128 expiry process, even if they are not marked as expirable. Use with
2129 caution. Unread, ticked and dormant articles are not eligible for
2134 @vindex nnmail-expiry-wait-function
2135 If the group parameter has an element that looks like @code{(expiry-wait
2136 . 10)}, this value will override any @code{nnmail-expiry-wait} and
2137 @code{nnmail-expiry-wait-function} when expiring expirable messages.
2138 The value can either be a number of days (not necessarily an integer) or
2139 the symbols @code{never} or @code{immediate}.
2142 @cindex score file group parameter
2143 Elements that look like @code{(score-file . "file")} will make
2144 @file{file} into the current score file for the group in question. All
2145 interactive score entries will be put into this file.
2148 @cindex adapt file group parameter
2149 Elements that look like @code{(adapt-file . "file")} will make
2150 @file{file} into the current adaptive file for the group in question.
2151 All adaptive score entries will be put into this file.
2154 When unsubscribing from a mailing list you should never send the
2155 unsubscription notice to the mailing list itself. Instead, you'd send
2156 messages to the administrative address. This parameter allows you to
2157 put the admin address somewhere convenient.
2160 Elements that look like @code{(display . MODE)} say which articles to
2161 display on entering the group. Valid values are:
2165 Display all articles, both read and unread.
2168 Display the default visible articles, which normally includes unread and
2173 Elements that look like @code{(comment . "This is a comment")}
2174 are arbitrary comments on the group. They are currently ignored by
2175 Gnus, but provide a place for you to store information on particular
2179 Elements that look like @code{(charset . iso-8859-1)} will make
2180 @code{iso-8859-1} the default charset; that is, the charset that will be
2181 used for all articles that do not specify a charset.
2183 @item (@var{variable} @var{form})
2184 You can use the group parameters to set variables local to the group you
2185 are entering. If you want to turn threading off in @samp{news.answers},
2186 you could put @code{(gnus-show-threads nil)} in the group parameters of
2187 that group. @code{gnus-show-threads} will be made into a local variable
2188 in the summary buffer you enter, and the form @code{nil} will be
2189 @code{eval}ed there.
2191 This can also be used as a group-specific hook function, if you'd like.
2192 If you want to hear a beep when you enter a group, you could put
2193 something like @code{(dummy-variable (ding))} in the parameters of that
2194 group. @code{dummy-variable} will be set to the result of the
2195 @code{(ding)} form, but who cares?
2198 You can store additional posting style information for this group only
2199 here (@pxref{Posting Styles}). The format is that of an entry in the
2200 @code{gnus-posting-styles} alist, except that there's no regexp matching
2201 the group name (of course). Style elements in this group parameter will
2202 take precedence over the ones found in @code{gnus-posting-styles}.
2204 For instance, if you want a funky name and signature in this group only,
2205 instead of hacking @code{gnus-posting-styles}, you could put something
2206 like this in the group parameters:
2211 (signature "Funky Signature"))
2216 Use the @kbd{G p} command to edit group parameters of a group. You
2217 might also be interested in reading about topic parameters (@pxref{Topic
2221 @node Listing Groups
2222 @section Listing Groups
2223 @cindex group listing
2225 These commands all list various slices of the groups available.
2233 @findex gnus-group-list-groups
2234 List all groups that have unread articles
2235 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
2236 command will list only groups of level ARG and lower. By default, it
2237 only lists groups of level five (i. e.,
2238 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2245 @findex gnus-group-list-all-groups
2246 List all groups, whether they have unread articles or not
2247 (@code{gnus-group-list-all-groups}). If the numeric prefix is used,
2248 this command will list only groups of level ARG and lower. By default,
2249 it lists groups of level seven or lower (i.e., just subscribed and
2250 unsubscribed groups).
2254 @findex gnus-group-list-level
2255 List all unread groups on a specific level
2256 (@code{gnus-group-list-level}). If given a prefix, also list the groups
2257 with no unread articles.
2261 @findex gnus-group-list-killed
2262 List all killed groups (@code{gnus-group-list-killed}). If given a
2263 prefix argument, really list all groups that are available, but aren't
2264 currently (un)subscribed. This could entail reading the active file
2269 @findex gnus-group-list-zombies
2270 List all zombie groups (@code{gnus-group-list-zombies}).
2274 @findex gnus-group-list-matching
2275 List all unread, subscribed groups with names that match a regexp
2276 (@code{gnus-group-list-matching}).
2280 @findex gnus-group-list-all-matching
2281 List groups that match a regexp (@code{gnus-group-list-all-matching}).
2285 @findex gnus-group-list-active
2286 List absolutely all groups in the active file(s) of the
2287 server(s) you are connected to (@code{gnus-group-list-active}). This
2288 might very well take quite a while. It might actually be a better idea
2289 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2290 thing to match on. Also note that this command may list groups that
2291 don't exist (yet)---these will be listed as if they were killed groups.
2292 Take the output with some grains of salt.
2296 @findex gnus-group-apropos
2297 List all groups that have names that match a regexp
2298 (@code{gnus-group-apropos}).
2302 @findex gnus-group-description-apropos
2303 List all groups that have names or descriptions that match a regexp
2304 (@code{gnus-group-description-apropos}).
2308 @vindex gnus-permanently-visible-groups
2309 @cindex visible group parameter
2310 Groups that match the @code{gnus-permanently-visible-groups} regexp will
2311 always be shown, whether they have unread articles or not. You can also
2312 add the @code{visible} element to the group parameters in question to
2313 get the same effect.
2315 @vindex gnus-list-groups-with-ticked-articles
2316 Groups that have just ticked articles in it are normally listed in the
2317 group buffer. If @code{gnus-list-groups-with-ticked-articles} is
2318 @code{nil}, these groups will be treated just like totally empty
2319 groups. It is @code{t} by default.
2322 @node Sorting Groups
2323 @section Sorting Groups
2324 @cindex sorting groups
2326 @kindex C-c C-s (Group)
2327 @findex gnus-group-sort-groups
2328 @vindex gnus-group-sort-function
2329 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
2330 group buffer according to the function(s) given by the
2331 @code{gnus-group-sort-function} variable. Available sorting functions
2336 @item gnus-group-sort-by-alphabet
2337 @findex gnus-group-sort-by-alphabet
2338 Sort the group names alphabetically. This is the default.
2340 @item gnus-group-sort-by-real-name
2341 @findex gnus-group-sort-by-real-name
2342 Sort the group alphabetically on the real (unprefixed) group names.
2344 @item gnus-group-sort-by-level
2345 @findex gnus-group-sort-by-level
2346 Sort by group level.
2348 @item gnus-group-sort-by-score
2349 @findex gnus-group-sort-by-score
2350 Sort by group score. @xref{Group Score}.
2352 @item gnus-group-sort-by-rank
2353 @findex gnus-group-sort-by-rank
2354 Sort by group score and then the group level. The level and the score
2355 are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
2357 @item gnus-group-sort-by-unread
2358 @findex gnus-group-sort-by-unread
2359 Sort by number of unread articles.
2361 @item gnus-group-sort-by-method
2362 @findex gnus-group-sort-by-method
2363 Sort alphabetically on the select method.
2368 @code{gnus-group-sort-function} can also be a list of sorting
2369 functions. In that case, the most significant sort key function must be
2373 There are also a number of commands for sorting directly according to
2374 some sorting criteria:
2378 @kindex G S a (Group)
2379 @findex gnus-group-sort-groups-by-alphabet
2380 Sort the group buffer alphabetically by group name
2381 (@code{gnus-group-sort-groups-by-alphabet}).
2384 @kindex G S u (Group)
2385 @findex gnus-group-sort-groups-by-unread
2386 Sort the group buffer by the number of unread articles
2387 (@code{gnus-group-sort-groups-by-unread}).
2390 @kindex G S l (Group)
2391 @findex gnus-group-sort-groups-by-level
2392 Sort the group buffer by group level
2393 (@code{gnus-group-sort-groups-by-level}).
2396 @kindex G S v (Group)
2397 @findex gnus-group-sort-groups-by-score
2398 Sort the group buffer by group score
2399 (@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
2402 @kindex G S r (Group)
2403 @findex gnus-group-sort-groups-by-rank
2404 Sort the group buffer by group rank
2405 (@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
2408 @kindex G S m (Group)
2409 @findex gnus-group-sort-groups-by-method
2410 Sort the group buffer alphabetically by backend name
2411 (@code{gnus-group-sort-groups-by-method}).
2415 All the commands below obey the process/prefix convention
2416 (@pxref{Process/Prefix}).
2418 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
2419 commands will sort in reverse order.
2421 You can also sort a subset of the groups:
2425 @kindex G P a (Group)
2426 @findex gnus-group-sort-selected-groups-by-alphabet
2427 Sort the groups alphabetically by group name
2428 (@code{gnus-group-sort-selected-groups-by-alphabet}).
2431 @kindex G P u (Group)
2432 @findex gnus-group-sort-selected-groups-by-unread
2433 Sort the groups by the number of unread articles
2434 (@code{gnus-group-sort-selected-groups-by-unread}).
2437 @kindex G P l (Group)
2438 @findex gnus-group-sort-selected-groups-by-level
2439 Sort the groups by group level
2440 (@code{gnus-group-sort-selected-groups-by-level}).
2443 @kindex G P v (Group)
2444 @findex gnus-group-sort-selected-groups-by-score
2445 Sort the groups by group score
2446 (@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
2449 @kindex G P r (Group)
2450 @findex gnus-group-sort-selected-groups-by-rank
2451 Sort the groups by group rank
2452 (@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
2455 @kindex G P m (Group)
2456 @findex gnus-group-sort-selected-groups-by-method
2457 Sort the groups alphabetically by backend name
2458 (@code{gnus-group-sort-selected-groups-by-method}).
2464 @node Group Maintenance
2465 @section Group Maintenance
2466 @cindex bogus groups
2471 @findex gnus-group-check-bogus-groups
2472 Find bogus groups and delete them
2473 (@code{gnus-group-check-bogus-groups}).
2477 @findex gnus-group-find-new-groups
2478 Find new groups and process them (@code{gnus-group-find-new-groups}).
2479 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
2480 for new groups. With 2 @kbd{C-u}'s, use most complete method possible
2481 to query the server for new groups, and subscribe the new groups as
2485 @kindex C-c C-x (Group)
2486 @findex gnus-group-expire-articles
2487 Run all expirable articles in the current group through the expiry
2488 process (if any) (@code{gnus-group-expire-articles}).
2491 @kindex C-c M-C-x (Group)
2492 @findex gnus-group-expire-all-groups
2493 Run all articles in all groups through the expiry process
2494 (@code{gnus-group-expire-all-groups}).
2499 @node Browse Foreign Server
2500 @section Browse Foreign Server
2501 @cindex foreign servers
2502 @cindex browsing servers
2507 @findex gnus-group-browse-foreign-server
2508 You will be queried for a select method and a server name. Gnus will
2509 then attempt to contact this server and let you browse the groups there
2510 (@code{gnus-group-browse-foreign-server}).
2513 @findex gnus-browse-mode
2514 A new buffer with a list of available groups will appear. This buffer
2515 will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
2516 a lot) like a normal group buffer.
2518 Here's a list of keystrokes available in the browse mode:
2523 @findex gnus-group-next-group
2524 Go to the next group (@code{gnus-group-next-group}).
2528 @findex gnus-group-prev-group
2529 Go to the previous group (@code{gnus-group-prev-group}).
2532 @kindex SPACE (Browse)
2533 @findex gnus-browse-read-group
2534 Enter the current group and display the first article
2535 (@code{gnus-browse-read-group}).
2538 @kindex RET (Browse)
2539 @findex gnus-browse-select-group
2540 Enter the current group (@code{gnus-browse-select-group}).
2544 @findex gnus-browse-unsubscribe-current-group
2545 Unsubscribe to the current group, or, as will be the case here,
2546 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
2552 @findex gnus-browse-exit
2553 Exit browse mode (@code{gnus-browse-exit}).
2557 @findex gnus-browse-describe-briefly
2558 Describe browse mode briefly (well, there's not much to describe, is
2559 there) (@code{gnus-browse-describe-briefly}).
2564 @section Exiting Gnus
2565 @cindex exiting Gnus
2567 Yes, Gnus is ex(c)iting.
2572 @findex gnus-group-suspend
2573 Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
2574 but it kills all buffers except the Group buffer. I'm not sure why this
2575 is a gain, but then who am I to judge?
2579 @findex gnus-group-exit
2580 @c @icon{gnus-group-exit}
2581 Quit Gnus (@code{gnus-group-exit}).
2585 @findex gnus-group-quit
2586 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
2587 The dribble file will be saved, though (@pxref{Auto Save}).
2590 @vindex gnus-exit-gnus-hook
2591 @vindex gnus-suspend-gnus-hook
2592 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
2593 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
2594 @code{gnus-after-exiting-gnus-hook} is called as the final item when
2599 If you wish to completely unload Gnus and all its adherents, you can use
2600 the @code{gnus-unload} command. This command is also very handy when
2601 trying to customize meta-variables.
2606 Miss Lisa Cannifax, while sitting in English class, felt her feet go
2607 numbly heavy and herself fall into a hazy trance as the boy sitting
2608 behind her drew repeated lines with his pencil across the back of her
2614 @section Group Topics
2617 If you read lots and lots of groups, it might be convenient to group
2618 them hierarchically according to topics. You put your Emacs groups over
2619 here, your sex groups over there, and the rest (what, two groups or so?)
2620 you put in some misc section that you never bother with anyway. You can
2621 even group the Emacs sex groups as a sub-topic to either the Emacs
2622 groups or the sex groups---or both! Go wild!
2626 \gnusfigure{Group Topics}{400}{
2627 \put(75,50){\epsfig{figure=tmp/group-topic.ps,height=9cm}}
2638 2: alt.religion.emacs
2641 0: comp.talk.emacs.recovery
2643 8: comp.binaries.fractals
2644 13: comp.sources.unix
2647 @findex gnus-topic-mode
2649 To get this @emph{fab} functionality you simply turn on (ooh!) the
2650 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
2651 is a toggling command.)
2653 Go ahead, just try it. I'll still be here when you get back. La de
2654 dum... Nice tune, that... la la la... What, you're back? Yes, and now
2655 press @kbd{l}. There. All your groups are now listed under
2656 @samp{misc}. Doesn't that make you feel all warm and fuzzy? Hot and
2659 If you want this permanently enabled, you should add that minor mode to
2660 the hook for the group mode:
2663 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
2667 * Topic Variables:: How to customize the topics the Lisp Way.
2668 * Topic Commands:: Interactive E-Z commands.
2669 * Topic Sorting:: Sorting each topic individually.
2670 * Topic Topology:: A map of the world.
2671 * Topic Parameters:: Parameters that apply to all groups in a topic.
2675 @node Topic Variables
2676 @subsection Topic Variables
2677 @cindex topic variables
2679 Now, if you select a topic, it will fold/unfold that topic, which is
2680 really neat, I think.
2682 @vindex gnus-topic-line-format
2683 The topic lines themselves are created according to the
2684 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
2697 Number of groups in the topic.
2699 Number of unread articles in the topic.
2701 Number of unread articles in the topic and all its subtopics.
2704 @vindex gnus-topic-indent-level
2705 Each sub-topic (and the groups in the sub-topics) will be indented with
2706 @code{gnus-topic-indent-level} times the topic level number of spaces.
2709 @vindex gnus-topic-mode-hook
2710 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
2712 @vindex gnus-topic-display-empty-topics
2713 The @code{gnus-topic-display-empty-topics} says whether to display even
2714 topics that have no unread articles in them. The default is @code{t}.
2717 @node Topic Commands
2718 @subsection Topic Commands
2719 @cindex topic commands
2721 When the topic minor mode is turned on, a new @kbd{T} submap will be
2722 available. In addition, a few of the standard keys change their
2723 definitions slightly.
2729 @findex gnus-topic-create-topic
2730 Prompt for a new topic name and create it
2731 (@code{gnus-topic-create-topic}).
2735 @findex gnus-topic-move-group
2736 Move the current group to some other topic
2737 (@code{gnus-topic-move-group}). This command uses the process/prefix
2738 convention (@pxref{Process/Prefix}).
2742 @findex gnus-topic-jump-to-topic
2743 Go to a topic (@code{gnus-topic-jump-to-topic}).
2747 @findex gnus-topic-copy-group
2748 Copy the current group to some other topic
2749 (@code{gnus-topic-copy-group}). This command uses the process/prefix
2750 convention (@pxref{Process/Prefix}).
2754 @findex gnus-topic-remove-group
2755 Remove a group from the current topic (@code{gnus-topic-remove-group}).
2756 This command is mainly useful if you have the same group in several
2757 topics and wish to remove it from one of the topics. You may also
2758 remove a group from all topics, but in that case, Gnus will add it to
2759 the root topic the next time you start Gnus. In fact, all new groups
2760 (which, naturally, don't belong to any topic) will show up in the root
2763 This command uses the process/prefix convention
2764 (@pxref{Process/Prefix}).
2768 @findex gnus-topic-move-matching
2769 Move all groups that match some regular expression to a topic
2770 (@code{gnus-topic-move-matching}).
2774 @findex gnus-topic-copy-matching
2775 Copy all groups that match some regular expression to a topic
2776 (@code{gnus-topic-copy-matching}).
2780 @findex gnus-topic-toggle-display-empty-topics
2781 Toggle hiding empty topics
2782 (@code{gnus-topic-toggle-display-empty-topics}).
2786 @findex gnus-topic-mark-topic
2787 Mark all groups in the current topic with the process mark
2788 (@code{gnus-topic-mark-topic}).
2791 @kindex T M-# (Topic)
2792 @findex gnus-topic-unmark-topic
2793 Remove the process mark from all groups in the current topic
2794 (@code{gnus-topic-unmark-topic}).
2798 @kindex T TAB (Topic)
2800 @findex gnus-topic-indent
2801 ``Indent'' the current topic so that it becomes a sub-topic of the
2802 previous topic (@code{gnus-topic-indent}). If given a prefix,
2803 ``un-indent'' the topic instead.
2806 @kindex M-TAB (Topic)
2807 @findex gnus-topic-unindent
2808 ``Un-indent'' the current topic so that it becomes a sub-topic of the
2809 parent of its current parent (@code{gnus-topic-unindent}).
2813 @findex gnus-topic-select-group
2815 Either select a group or fold a topic (@code{gnus-topic-select-group}).
2816 When you perform this command on a group, you'll enter the group, as
2817 usual. When done on a topic line, the topic will be folded (if it was
2818 visible) or unfolded (if it was folded already). So it's basically a
2819 toggling command on topics. In addition, if you give a numerical
2820 prefix, group on that level (and lower) will be displayed.
2823 @kindex C-c C-x (Topic)
2824 @findex gnus-topic-expire-articles
2825 Run all expirable articles in the current group or topic through the expiry
2826 process (if any) (@code{gnus-topic-expire-articles}).
2830 @findex gnus-topic-kill-group
2831 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
2832 topic will be removed along with the topic.
2836 @findex gnus-topic-yank-group
2837 Yank the previously killed group or topic
2838 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
2843 @findex gnus-topic-rename
2844 Rename a topic (@code{gnus-topic-rename}).
2847 @kindex T DEL (Topic)
2848 @findex gnus-topic-delete
2849 Delete an empty topic (@code{gnus-topic-delete}).
2853 @findex gnus-topic-list-active
2854 List all groups that Gnus knows about in a topics-ified way
2855 (@code{gnus-topic-list-active}).
2859 @findex gnus-topic-edit-parameters
2860 @cindex group parameters
2861 @cindex topic parameters
2863 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
2864 @xref{Topic Parameters}.
2870 @subsection Topic Sorting
2871 @cindex topic sorting
2873 You can sort the groups in each topic individually with the following
2879 @kindex T S a (Topic)
2880 @findex gnus-topic-sort-groups-by-alphabet
2881 Sort the current topic alphabetically by group name
2882 (@code{gnus-topic-sort-groups-by-alphabet}).
2885 @kindex T S u (Topic)
2886 @findex gnus-topic-sort-groups-by-unread
2887 Sort the current topic by the number of unread articles
2888 (@code{gnus-topic-sort-groups-by-unread}).
2891 @kindex T S l (Topic)
2892 @findex gnus-topic-sort-groups-by-level
2893 Sort the current topic by group level
2894 (@code{gnus-topic-sort-groups-by-level}).
2897 @kindex T S v (Topic)
2898 @findex gnus-topic-sort-groups-by-score
2899 Sort the current topic by group score
2900 (@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
2903 @kindex T S r (Topic)
2904 @findex gnus-topic-sort-groups-by-rank
2905 Sort the current topic by group rank
2906 (@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
2909 @kindex T S m (Topic)
2910 @findex gnus-topic-sort-groups-by-method
2911 Sort the current topic alphabetically by backend name
2912 (@code{gnus-topic-sort-groups-by-method}).
2916 @xref{Sorting Groups}, for more information about group sorting.
2919 @node Topic Topology
2920 @subsection Topic Topology
2921 @cindex topic topology
2924 So, let's have a look at an example group buffer:
2930 2: alt.religion.emacs
2933 0: comp.talk.emacs.recovery
2935 8: comp.binaries.fractals
2936 13: comp.sources.unix
2939 So, here we have one top-level topic (@samp{Gnus}), two topics under
2940 that, and one sub-topic under one of the sub-topics. (There is always
2941 just one (1) top-level topic). This topology can be expressed as
2946 (("Emacs -- I wuw it!" visible)
2947 (("Naughty Emacs" visible)))
2951 @vindex gnus-topic-topology
2952 This is in fact how the variable @code{gnus-topic-topology} would look
2953 for the display above. That variable is saved in the @file{.newsrc.eld}
2954 file, and shouldn't be messed with manually---unless you really want
2955 to. Since this variable is read from the @file{.newsrc.eld} file,
2956 setting it in any other startup files will have no effect.
2958 This topology shows what topics are sub-topics of what topics (right),
2959 and which topics are visible. Two settings are currently
2960 allowed---@code{visible} and @code{invisible}.
2963 @node Topic Parameters
2964 @subsection Topic Parameters
2965 @cindex topic parameters
2967 All groups in a topic will inherit group parameters from the parent (and
2968 ancestor) topic parameters. All valid group parameters are valid topic
2969 parameters (@pxref{Group Parameters}).
2971 In addition, the following parameters are only valid as topic
2976 When subscribing new groups by topic (@pxref{Subscription Methods}), the
2977 @code{subscribe} topic parameter says what groups go in what topic. Its
2978 value should be a regexp to match the groups that should go in that
2983 Group parameters (of course) override topic parameters, and topic
2984 parameters in sub-topics override topic parameters in super-topics. You
2985 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
2986 verb, although you may feel free to disagree with me here.)
2992 2: alt.religion.emacs
2996 0: comp.talk.emacs.recovery
2998 8: comp.binaries.fractals
2999 13: comp.sources.unix
3003 The @samp{Emacs} topic has the topic parameter @code{(score-file
3004 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
3005 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
3006 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
3007 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
3008 . "religion.SCORE")}.
3010 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
3011 will get the @file{relief.SCORE} home score file. If you enter the same
3012 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
3013 score file. If you enter the group @samp{alt.religion.emacs}, you'll
3014 get the @file{religion.SCORE} home score file.
3016 This seems rather simple and self-evident, doesn't it? Well, yes. But
3017 there are some problems, especially with the @code{total-expiry}
3018 parameter. Say you have a mail group in two topics; one with
3019 @code{total-expiry} and one without. What happens when you do @kbd{M-x
3020 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
3021 of these topics you mean to expire articles from, so anything may
3022 happen. In fact, I hereby declare that it is @dfn{undefined} what
3023 happens. You just have to be careful if you do stuff like that.
3026 @node Misc Group Stuff
3027 @section Misc Group Stuff
3030 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
3031 * Group Information:: Information and help on groups and Gnus.
3032 * Group Timestamp:: Making Gnus keep track of when you last read a group.
3033 * File Commands:: Reading and writing the Gnus files.
3040 @findex gnus-group-enter-server-mode
3041 Enter the server buffer (@code{gnus-group-enter-server-mode}).
3042 @xref{The Server Buffer}.
3046 @findex gnus-group-post-news
3047 Post an article to a group (@code{gnus-group-post-news}). If given a
3048 prefix, the current group name will be used as the default.
3052 @findex gnus-group-mail
3053 Mail a message somewhere (@code{gnus-group-mail}).
3057 Variables for the group buffer:
3061 @item gnus-group-mode-hook
3062 @vindex gnus-group-mode-hook
3063 is called after the group buffer has been
3066 @item gnus-group-prepare-hook
3067 @vindex gnus-group-prepare-hook
3068 is called after the group buffer is
3069 generated. It may be used to modify the buffer in some strange,
3072 @item gnus-group-prepared-hook
3073 @vindex gnus-group-prepare-hook
3074 is called as the very last thing after the group buffer has been
3075 generated. It may be used to move point around, for instance.
3077 @item gnus-permanently-visible-groups
3078 @vindex gnus-permanently-visible-groups
3079 Groups matching this regexp will always be listed in the group buffer,
3080 whether they are empty or not.
3085 @node Scanning New Messages
3086 @subsection Scanning New Messages
3087 @cindex new messages
3088 @cindex scanning new news
3094 @findex gnus-group-get-new-news
3095 @c @icon{gnus-group-get-new-news}
3096 Check the server(s) for new articles. If the numerical prefix is used,
3097 this command will check only groups of level @var{arg} and lower
3098 (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
3099 command will force a total re-reading of the active file(s) from the
3104 @findex gnus-group-get-new-news-this-group
3105 @vindex gnus-goto-next-group-when-activating
3106 @c @icon{gnus-group-get-new-news-this-group}
3107 Check whether new articles have arrived in the current group
3108 (@code{gnus-group-get-new-news-this-group}).
3109 @code{gnus-goto-next-group-when-activating} says whether this command is
3110 to move point to the next group or not. It is @code{t} by default.
3112 @findex gnus-activate-all-groups
3113 @cindex activating groups
3115 @kindex C-c M-g (Group)
3116 Activate absolutely all groups (@code{gnus-activate-all-groups}).
3121 @findex gnus-group-restart
3122 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
3123 file(s), closes the connection to all servers, clears up all run-time
3124 Gnus variables, and then starts Gnus all over again.
3128 @vindex gnus-get-new-news-hook
3129 @code{gnus-get-new-news-hook} is run just before checking for new news.
3131 @vindex gnus-after-getting-new-news-hook
3132 @code{gnus-after-getting-new-news-hook} is run after checking for new
3136 @node Group Information
3137 @subsection Group Information
3138 @cindex group information
3139 @cindex information on groups
3146 @findex gnus-group-fetch-faq
3147 @vindex gnus-group-faq-directory
3150 Try to fetch the FAQ for the current group
3151 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from
3152 @code{gnus-group-faq-directory}, which is usually a directory on a
3153 remote machine. This variable can also be a list of directories. In
3154 that case, giving a prefix to this command will allow you to choose
3155 between the various sites. @code{ange-ftp} (or @code{efs}) will be used
3156 for fetching the file.
3158 If fetching from the first site is unsuccessful, Gnus will attempt to go
3159 through @code{gnus-group-faq-directory} and try to open them one by one.
3163 @c @icon{gnus-group-describe-group}
3165 @kindex C-c C-d (Group)
3166 @cindex describing groups
3167 @cindex group description
3168 @findex gnus-group-describe-group
3169 Describe the current group (@code{gnus-group-describe-group}). If given
3170 a prefix, force Gnus to re-read the description from the server.
3174 @findex gnus-group-describe-all-groups
3175 Describe all groups (@code{gnus-group-describe-all-groups}). If given a
3176 prefix, force Gnus to re-read the description file from the server.
3183 @findex gnus-version
3184 Display current Gnus version numbers (@code{gnus-version}).
3188 @findex gnus-group-describe-briefly
3189 Give a very short help message (@code{gnus-group-describe-briefly}).
3192 @kindex C-c C-i (Group)
3195 @findex gnus-info-find-node
3196 Go to the Gnus info node (@code{gnus-info-find-node}).
3200 @node Group Timestamp
3201 @subsection Group Timestamp
3203 @cindex group timestamps
3205 It can be convenient to let Gnus keep track of when you last read a
3206 group. To set the ball rolling, you should add
3207 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
3210 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
3213 After doing this, each time you enter a group, it'll be recorded.
3215 This information can be displayed in various ways---the easiest is to
3216 use the @samp{%d} spec in the group line format:
3219 (setq gnus-group-line-format
3220 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
3223 This will result in lines looking like:
3226 * 0: mail.ding 19961002T012943
3227 0: custom 19961002T012713
3230 As you can see, the date is displayed in compact ISO 8601 format. This
3231 may be a bit too much, so to just display the date, you could say
3235 (setq gnus-group-line-format
3236 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
3241 @subsection File Commands
3242 @cindex file commands
3248 @findex gnus-group-read-init-file
3249 @vindex gnus-init-file
3250 @cindex reading init file
3251 Re-read the init file (@code{gnus-init-file}, which defaults to
3252 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
3256 @findex gnus-group-save-newsrc
3257 @cindex saving .newsrc
3258 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
3259 (@code{gnus-group-save-newsrc}). If given a prefix, force saving the
3260 file(s) whether Gnus thinks it is necessary or not.
3263 @c @kindex Z (Group)
3264 @c @findex gnus-group-clear-dribble
3265 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
3270 @node The Summary Buffer
3271 @chapter The Summary Buffer
3272 @cindex summary buffer
3274 A line for each article is displayed in the summary buffer. You can
3275 move around, read articles, post articles and reply to articles.
3277 The most common way to a summary buffer is to select a group from the
3278 group buffer (@pxref{Selecting a Group}).
3280 You can have as many summary buffers open as you wish.
3283 * Summary Buffer Format:: Deciding how the summary buffer is to look.
3284 * Summary Maneuvering:: Moving around the summary buffer.
3285 * Choosing Articles:: Reading articles.
3286 * Paging the Article:: Scrolling the current article.
3287 * Reply Followup and Post:: Posting articles.
3288 * Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
3289 * Marking Articles:: Marking articles as read, expirable, etc.
3290 * Limiting:: You can limit the summary buffer.
3291 * Threading:: How threads are made.
3292 * Sorting:: How articles and threads are sorted.
3293 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
3294 * Article Caching:: You may store articles in a cache.
3295 * Persistent Articles:: Making articles expiry-resistant.
3296 * Article Backlog:: Having already read articles hang around.
3297 * Saving Articles:: Ways of customizing article saving.
3298 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
3299 * Article Treatment:: The article buffer can be mangled at will.
3300 * MIME Commands:: Doing MIMEy things with the articles.
3301 * Charsets:: Character set issues.
3302 * Article Commands:: Doing various things with the article buffer.
3303 * Summary Sorting:: Sorting the summary buffer in various ways.
3304 * Finding the Parent:: No child support? Get the parent.
3305 * Alternative Approaches:: Reading using non-default summaries.
3306 * Tree Display:: A more visual display of threads.
3307 * Mail Group Commands:: Some commands can only be used in mail groups.
3308 * Various Summary Stuff:: What didn't fit anywhere else.
3309 * Exiting the Summary Buffer:: Returning to the Group buffer.
3310 * Crosspost Handling:: How crossposted articles are dealt with.
3311 * Duplicate Suppression:: An alternative when crosspost handling fails.
3315 @node Summary Buffer Format
3316 @section Summary Buffer Format
3317 @cindex summary buffer format
3321 \gnusfigure{The Summary Buffer}{180}{
3322 \put(0,0){\epsfig{figure=tmp/summary.ps,width=7.5cm}}
3323 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-article.ps,width=7.5cm}}}
3329 * Summary Buffer Lines:: You can specify how summary lines should look.
3330 * To From Newsgroups:: How to not display your own name.
3331 * Summary Buffer Mode Line:: You can say how the mode line should look.
3332 * Summary Highlighting:: Making the summary buffer all pretty and nice.
3335 @findex mail-extract-address-components
3336 @findex gnus-extract-address-components
3337 @vindex gnus-extract-address-components
3338 Gnus will use the value of the @code{gnus-extract-address-components}
3339 variable as a function for getting the name and address parts of a
3340 @code{From} header. Two pre-defined functions exist:
3341 @code{gnus-extract-address-components}, which is the default, quite
3342 fast, and too simplistic solution; and
3343 @code{mail-extract-address-components}, which works very nicely, but is
3344 slower. The default function will return the wrong answer in 5% of the
3345 cases. If this is unacceptable to you, use the other function instead:
3348 (setq gnus-extract-address-components
3349 'mail-extract-address-components)
3352 @vindex gnus-summary-same-subject
3353 @code{gnus-summary-same-subject} is a string indicating that the current
3354 article has the same subject as the previous. This string will be used
3355 with those specs that require it. The default is @code{""}.
3358 @node Summary Buffer Lines
3359 @subsection Summary Buffer Lines
3361 @vindex gnus-summary-line-format
3362 You can change the format of the lines in the summary buffer by changing
3363 the @code{gnus-summary-line-format} variable. It works along the same
3364 lines as a normal @code{format} string, with some extensions
3365 (@pxref{Formatting Variables}).
3367 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
3369 The following format specification characters are understood:
3375 Subject string. List identifiers stripped, @code{gnus-list-identifies}. @xref{Article Hiding}.
3377 Subject if the article is the root of the thread or the previous article
3378 had a different subject, @code{gnus-summary-same-subject} otherwise.
3379 (@code{gnus-summary-same-subject} defaults to @code{""}.)
3381 Full @code{From} header.
3383 The name (from the @code{From} header).
3385 The name, code @code{To} header or the @code{Newsgroups} header
3386 (@pxref{To From Newsgroups}).
3388 The name (from the @code{From} header). This differs from the @code{n}
3389 spec in that it uses the function designated by the
3390 @code{gnus-extract-address-components} variable, which is slower, but
3391 may be more thorough.
3393 The address (from the @code{From} header). This works the same way as
3396 Number of lines in the article.
3398 Number of characters in the article.
3400 Indentation based on thread level (@pxref{Customizing Threading}).
3402 Nothing if the article is a root and lots of spaces if it isn't (it
3403 pushes everything after it off the screen).
3405 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
3406 for adopted articles (@pxref{Customizing Threading}).
3408 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
3409 for adopted articles.
3411 One space for each thread level.
3413 Twenty minus thread level spaces.
3418 This misleadingly named specifier is the @dfn{secondary mark}. This
3419 mark will say whether the article has been replied to, has been cached,
3423 Score as a number (@pxref{Scoring}).
3425 @vindex gnus-summary-zcore-fuzz
3426 Zcore, @samp{+} if above the default level and @samp{-} if below the
3427 default level. If the difference between
3428 @code{gnus-summary-default-score} and the score is less than
3429 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
3437 The @code{Date} in @code{DD-MMM} format.
3439 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
3445 Number of articles in the current sub-thread. Using this spec will slow
3446 down summary buffer generation somewhat.
3448 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3449 article has any children.
3455 User defined specifier. The next character in the format string should
3456 be a letter. Gnus will call the function
3457 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
3458 following @samp{%u}. The function will be passed the current header as
3459 argument. The function should return a string, which will be inserted
3460 into the summary just like information from any other summary specifier.
3463 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
3464 have to be handled with care. For reasons of efficiency, Gnus will
3465 compute what column these characters will end up in, and ``hard-code''
3466 that. This means that it is invalid to have these specs after a
3467 variable-length spec. Well, you might not be arrested, but your summary
3468 buffer will look strange, which is bad enough.
3470 The smart choice is to have these specs as far to the left as possible.
3471 (Isn't that the case with everything, though? But I digress.)
3473 This restriction may disappear in later versions of Gnus.
3476 @node To From Newsgroups
3477 @subsection To From Newsgroups
3481 In some groups (particularly in archive groups), the @code{From} header
3482 isn't very interesting, since all the articles there are written by
3483 you. To display the information in the @code{To} or @code{Newsgroups}
3484 headers instead, you need to decide three things: What information to
3485 gather; where to display it; and when to display it.
3489 @vindex gnus-extra-headers
3490 The reading of extra header information is controlled by the
3491 @code{gnus-extra-headers}. This is a list of header symbols. For
3495 (setq gnus-extra-headers
3496 '(To Newsgroups X-Newsreader))
3499 This will result in Gnus trying to obtain these three headers, and
3500 storing it in header structures for later easy retrieval.
3503 @findex gnus-extra-header
3504 The value of these extra headers can be accessed via the
3505 @code{gnus-extra-header} function. Here's a format line spec that will
3506 access the @code{X-Newsreader} header:
3509 "%~(form (gnus-extra-header 'X-Newsreader))@@"
3513 @vindex gnus-ignored-from-addresses
3514 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
3515 summary line spec returns the @code{To}, @code{Newsreader} or
3516 @code{From} header. If this regexp matches the contents of the
3517 @code{From} header, the value of the @code{To} or @code{Newsreader}
3518 headers are used instead.
3522 @vindex nnmail-extra-headers
3523 A related variable is @code{nnmail-extra-headers}, which controls when
3524 to include extra headers when generating overview (@sc{nov}) files. If
3525 you have old overview files, you should regenerate them after changing
3528 @vindex gnus-summary-line-format
3529 You also have to instruct Gnus to display the data by changing the
3530 @code{%n} spec to the @code{%f} spec in the
3531 @code{gnus-summary-line-format} variable.
3533 In summary, you'd typically do something like the following:
3536 (setq gnus-extra-headers
3538 (setq nnmail-extra-headers gnus-extra-headers)
3539 (setq gnus-summary-line-format
3540 "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
3541 (setq gnus-ignored-from-addresses
3545 Now, this is mostly useful for mail groups, where you have control over
3546 the @sc{nov} files that are created. However, if you can persuade your
3553 to the end of her @file{overview.fmt} file, then you can use that just
3554 as you would the extra headers from the mail groups.
3557 @node Summary Buffer Mode Line
3558 @subsection Summary Buffer Mode Line
3560 @vindex gnus-summary-mode-line-format
3561 You can also change the format of the summary mode bar (@pxref{Mode Line
3562 Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
3563 like. The default is @samp{Gnus: %%b [%A] %Z}.
3565 Here are the elements you can play with:
3571 Unprefixed group name.
3573 Current article number.
3575 Current article score.
3579 Number of unread articles in this group.
3581 Number of unread articles in this group that aren't displayed in the
3584 A string with the number of unread and unselected articles represented
3585 either as @samp{<%U(+%e) more>} if there are both unread and unselected
3586 articles, and just as @samp{<%U more>} if there are just unread articles
3587 and no unselected ones.
3589 Shortish group name. For instance, @samp{rec.arts.anime} will be
3590 shortened to @samp{r.a.anime}.
3592 Subject of the current article.
3594 User-defined spec (@pxref{User-Defined Specs}).
3596 Name of the current score file (@pxref{Scoring}).
3598 Number of dormant articles (@pxref{Unread Articles}).
3600 Number of ticked articles (@pxref{Unread Articles}).
3602 Number of articles that have been marked as read in this session.
3604 Number of articles expunged by the score files.
3608 @node Summary Highlighting
3609 @subsection Summary Highlighting
3613 @item gnus-visual-mark-article-hook
3614 @vindex gnus-visual-mark-article-hook
3615 This hook is run after selecting an article. It is meant to be used for
3616 highlighting the article in some way. It is not run if
3617 @code{gnus-visual} is @code{nil}.
3619 @item gnus-summary-update-hook
3620 @vindex gnus-summary-update-hook
3621 This hook is called when a summary line is changed. It is not run if
3622 @code{gnus-visual} is @code{nil}.
3624 @item gnus-summary-selected-face
3625 @vindex gnus-summary-selected-face
3626 This is the face (or @dfn{font} as some people call it) used to
3627 highlight the current article in the summary buffer.
3629 @item gnus-summary-highlight
3630 @vindex gnus-summary-highlight
3631 Summary lines are highlighted according to this variable, which is a
3632 list where the elements are of the format @code{(@var{form}
3633 . @var{face})}. If you would, for instance, like ticked articles to be
3634 italic and high-scored articles to be bold, you could set this variable
3637 (((eq mark gnus-ticked-mark) . italic)
3638 ((> score default) . bold))
3640 As you may have guessed, if @var{form} returns a non-@code{nil} value,
3641 @var{face} will be applied to the line.
3645 @node Summary Maneuvering
3646 @section Summary Maneuvering
3647 @cindex summary movement
3649 All the straight movement commands understand the numeric prefix and
3650 behave pretty much as you'd expect.
3652 None of these commands select articles.
3657 @kindex M-n (Summary)
3658 @kindex G M-n (Summary)
3659 @findex gnus-summary-next-unread-subject
3660 Go to the next summary line of an unread article
3661 (@code{gnus-summary-next-unread-subject}).
3665 @kindex M-p (Summary)
3666 @kindex G M-p (Summary)
3667 @findex gnus-summary-prev-unread-subject
3668 Go to the previous summary line of an unread article
3669 (@code{gnus-summary-prev-unread-subject}).
3674 @kindex G j (Summary)
3675 @findex gnus-summary-goto-article
3676 Ask for an article number or @code{Message-ID}, and then go to that
3677 article (@code{gnus-summary-goto-article}).
3680 @kindex G g (Summary)
3681 @findex gnus-summary-goto-subject
3682 Ask for an article number and then go to the summary line of that article
3683 without displaying the article (@code{gnus-summary-goto-subject}).
3686 If Gnus asks you to press a key to confirm going to the next group, you
3687 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
3688 buffer, searching for the next group to read without actually returning
3689 to the group buffer.
3691 Variables related to summary movement:
3695 @vindex gnus-auto-select-next
3696 @item gnus-auto-select-next
3697 If you issue one of the movement commands (like @kbd{n}) and there are
3698 no more unread articles after the current one, Gnus will offer to go to
3699 the next group. If this variable is @code{t} and the next group is
3700 empty, Gnus will exit summary mode and return to the group buffer. If
3701 this variable is neither @code{t} nor @code{nil}, Gnus will select the
3702 next group, no matter whether it has any unread articles or not. As a
3703 special case, if this variable is @code{quietly}, Gnus will select the
3704 next group without asking for confirmation. If this variable is
3705 @code{almost-quietly}, the same will happen only if you are located on
3706 the last article in the group. Finally, if this variable is
3707 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
3708 without confirmation. Also @pxref{Group Levels}.
3710 @item gnus-auto-select-same
3711 @vindex gnus-auto-select-same
3712 If non-@code{nil}, all the movement commands will try to go to the next
3713 article with the same subject as the current. (@dfn{Same} here might
3714 mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
3715 for details (@pxref{Customizing Threading}).) If there are no more
3716 articles with the same subject, go to the first unread article.
3718 This variable is not particularly useful if you use a threaded display.
3720 @item gnus-summary-check-current
3721 @vindex gnus-summary-check-current
3722 If non-@code{nil}, all the ``unread'' movement commands will not proceed
3723 to the next (or previous) article if the current article is unread.
3724 Instead, they will choose the current article.
3726 @item gnus-auto-center-summary
3727 @vindex gnus-auto-center-summary
3728 If non-@code{nil}, Gnus will keep the point in the summary buffer
3729 centered at all times. This makes things quite tidy, but if you have a
3730 slow network connection, or simply do not like this un-Emacsism, you can
3731 set this variable to @code{nil} to get the normal Emacs scrolling
3732 action. This will also inhibit horizontal re-centering of the summary
3733 buffer, which might make it more inconvenient to read extremely long
3736 This variable can also be a number. In that case, center the window at
3737 the given number of lines from the top.
3742 @node Choosing Articles
3743 @section Choosing Articles
3744 @cindex selecting articles
3747 * Choosing Commands:: Commands for choosing articles.
3748 * Choosing Variables:: Variables that influence these commands.
3752 @node Choosing Commands
3753 @subsection Choosing Commands
3755 None of the following movement commands understand the numeric prefix,
3756 and they all select and display an article.
3760 @kindex SPACE (Summary)
3761 @findex gnus-summary-next-page
3762 Select the current article, or, if that one's read already, the next
3763 unread article (@code{gnus-summary-next-page}).
3768 @kindex G n (Summary)
3769 @findex gnus-summary-next-unread-article
3770 @c @icon{gnus-summary-next-unread}
3771 Go to next unread article (@code{gnus-summary-next-unread-article}).
3776 @findex gnus-summary-prev-unread-article
3777 @c @icon{gnus-summary-prev-unread}
3778 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
3783 @kindex G N (Summary)
3784 @findex gnus-summary-next-article
3785 Go to the next article (@code{gnus-summary-next-article}).
3790 @kindex G P (Summary)
3791 @findex gnus-summary-prev-article
3792 Go to the previous article (@code{gnus-summary-prev-article}).
3795 @kindex G C-n (Summary)
3796 @findex gnus-summary-next-same-subject
3797 Go to the next article with the same subject
3798 (@code{gnus-summary-next-same-subject}).
3801 @kindex G C-p (Summary)
3802 @findex gnus-summary-prev-same-subject
3803 Go to the previous article with the same subject
3804 (@code{gnus-summary-prev-same-subject}).
3808 @kindex G f (Summary)
3810 @findex gnus-summary-first-unread-article
3811 Go to the first unread article
3812 (@code{gnus-summary-first-unread-article}).
3816 @kindex G b (Summary)
3818 @findex gnus-summary-best-unread-article
3819 Go to the article with the highest score
3820 (@code{gnus-summary-best-unread-article}).
3825 @kindex G l (Summary)
3826 @findex gnus-summary-goto-last-article
3827 Go to the previous article read (@code{gnus-summary-goto-last-article}).
3830 @kindex G o (Summary)
3831 @findex gnus-summary-pop-article
3833 @cindex article history
3834 Pop an article off the summary history and go to this article
3835 (@code{gnus-summary-pop-article}). This command differs from the
3836 command above in that you can pop as many previous articles off the
3837 history as you like, while @kbd{l} toggles the two last read articles.
3838 For a somewhat related issue (if you use these commands a lot),
3839 @pxref{Article Backlog}.
3843 @node Choosing Variables
3844 @subsection Choosing Variables
3846 Some variables relevant for moving and selecting articles:
3849 @item gnus-auto-extend-newsgroup
3850 @vindex gnus-auto-extend-newsgroup
3851 All the movement commands will try to go to the previous (or next)
3852 article, even if that article isn't displayed in the Summary buffer if
3853 this variable is non-@code{nil}. Gnus will then fetch the article from
3854 the server and display it in the article buffer.
3856 @item gnus-select-article-hook
3857 @vindex gnus-select-article-hook
3858 This hook is called whenever an article is selected. By default it
3859 exposes any threads hidden under the selected article.
3861 @item gnus-mark-article-hook
3862 @vindex gnus-mark-article-hook
3863 @findex gnus-summary-mark-unread-as-read
3864 @findex gnus-summary-mark-read-and-unread-as-read
3865 @findex gnus-unread-mark
3866 This hook is called whenever an article is selected. It is intended to
3867 be used for marking articles as read. The default value is
3868 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
3869 mark of almost any article you read to @code{gnus-unread-mark}. The
3870 only articles not affected by this function are ticked, dormant, and
3871 expirable articles. If you'd instead like to just have unread articles
3872 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
3873 instead. It will leave marks like @code{gnus-low-score-mark},
3874 @code{gnus-del-mark} (and so on) alone.
3879 @node Paging the Article
3880 @section Scrolling the Article
3881 @cindex article scrolling
3886 @kindex SPACE (Summary)
3887 @findex gnus-summary-next-page
3888 Pressing @kbd{SPACE} will scroll the current article forward one page,
3889 or, if you have come to the end of the current article, will choose the
3890 next article (@code{gnus-summary-next-page}).
3893 @kindex DEL (Summary)
3894 @findex gnus-summary-prev-page
3895 Scroll the current article back one page (@code{gnus-summary-prev-page}).
3898 @kindex RET (Summary)
3899 @findex gnus-summary-scroll-up
3900 Scroll the current article one line forward
3901 (@code{gnus-summary-scroll-up}).
3904 @kindex M-RET (Summary)
3905 @findex gnus-summary-scroll-down
3906 Scroll the current article one line backward
3907 (@code{gnus-summary-scroll-down}).
3911 @kindex A g (Summary)
3913 @findex gnus-summary-show-article
3914 (Re)fetch the current article (@code{gnus-summary-show-article}). If
3915 given a prefix, fetch the current article, but don't run any of the
3916 article treatment functions. This will give you a ``raw'' article, just
3917 the way it came from the server.
3922 @kindex A < (Summary)
3923 @findex gnus-summary-beginning-of-article
3924 Scroll to the beginning of the article
3925 (@code{gnus-summary-beginning-of-article}).
3930 @kindex A > (Summary)
3931 @findex gnus-summary-end-of-article
3932 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
3936 @kindex A s (Summary)
3938 @findex gnus-summary-isearch-article
3939 Perform an isearch in the article buffer
3940 (@code{gnus-summary-isearch-article}).