1 \input texinfo @c -*-texinfo-*-
4 @settitle Pterodactyl Gnus 0.35 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}}}
54 \newcommand{\gnusbullet}{{${\bullet}$}}
55 \newcommand{\gnusdollar}{\$}
56 \newcommand{\gnusampersand}{\&}
57 \newcommand{\gnuspercent}{\%}
58 \newcommand{\gnushash}{\#}
59 \newcommand{\gnushat}{\symbol{"5E}}
60 \newcommand{\gnusunderline}{\symbol{"5F}}
61 \newcommand{\gnusnot}{$\neg$}
62 \newcommand{\gnustilde}{\symbol{"7E}}
63 \newcommand{\gnusless}{{$<$}}
64 \newcommand{\gnusgreater}{{$>$}}
65 \newcommand{\gnusbraceleft}{{$>$}}
66 \newcommand{\gnusbraceright}{{$>$}}
68 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head.eps,height=1cm}}}
69 \newcommand{\gnusinteresting}{
70 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
73 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
75 \newcommand{\gnuspagechapter}[1]{
82 \newcommand{\gnuschapter}[2]{
84 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
86 \renewcommand{\gnussectionname}{}
87 \renewcommand{\gnuschaptername}{#2}
90 \begin{picture}(500,500)(0,0)
91 \put(480,350){\makebox(0,0)[tr]{#1}}
92 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
97 \newcommand{\gnusfigure}[3]{
99 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
106 \newcommand{\gnusicon}[1]{
107 \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}}}
110 \newcommand{\gnuspicon}[1]{
111 \margindex{\epsfig{figure=#1,width=2cm}}
114 \newcommand{\gnusxface}[2]{
115 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
118 \newcommand{\gnussmiley}[2]{
119 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
122 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
124 \newcommand{\gnussection}[1]{
125 \renewcommand{\gnussectionname}{#1}
129 \newenvironment{codelist}%
134 \newenvironment{kbdlist}%
140 \newenvironment{dfnlist}%
145 \newenvironment{stronglist}%
150 \newenvironment{samplist}%
155 \newenvironment{varlist}%
160 \newenvironment{emphlist}%
165 \newlength\gnusheadtextwidth
166 \setlength{\gnusheadtextwidth}{\headtextwidth}
167 \addtolength{\gnusheadtextwidth}{1cm}
169 \newpagestyle{gnuspreamble}%
174 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
178 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
187 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
189 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
194 \newpagestyle{gnusindex}%
199 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
203 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
211 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
213 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
223 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
227 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
235 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
237 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
242 \pagenumbering{roman}
243 \pagestyle{gnuspreamble}
253 %\addtolength{\oddsidemargin}{-5cm}
254 %\addtolength{\evensidemargin}{-5cm}
256 \addtolength{\textheight}{2cm}
258 \gnustitle{\gnustitlename}\\
261 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo.eps,height=15cm}
264 \gnusauthor{by Lars Magne Ingebrigtsen}
271 \thispagestyle{empty}
273 Copyright \copyright{} 1995,96,97,98 Free Software Foundation, Inc.
275 Permission is granted to make and distribute verbatim copies of
276 this manual provided the copyright notice and this permission notice
277 are preserved on all copies.
279 Permission is granted to copy and distribute modified versions of this
280 manual under the conditions for verbatim copying, provided that the
281 entire resulting derived work is distributed under the terms of a
282 permission notice identical to this one.
284 Permission is granted to copy and distribute translations of this manual
285 into another language, under the above conditions for modified versions.
294 This file documents Gnus, the GNU Emacs newsreader.
296 Copyright (C) 1995,96 Free Software Foundation, Inc.
298 Permission is granted to make and distribute verbatim copies of
299 this manual provided the copyright notice and this permission notice
300 are preserved on all copies.
303 Permission is granted to process this file through Tex and print the
304 results, provided the printed document carries copying permission
305 notice identical to this one except for the removal of this paragraph
306 (this paragraph not being relevant to the printed manual).
309 Permission is granted to copy and distribute modified versions of this
310 manual under the conditions for verbatim copying, provided also that the
311 entire resulting derived work is distributed under the terms of a
312 permission notice identical to this one.
314 Permission is granted to copy and distribute translations of this manual
315 into another language, under the above conditions for modified versions.
321 @title Pterodactyl Gnus 0.35 Manual
323 @author by Lars Magne Ingebrigtsen
326 @vskip 0pt plus 1filll
327 Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc.
329 Permission is granted to make and distribute verbatim copies of
330 this manual provided the copyright notice and this permission notice
331 are preserved on all copies.
333 Permission is granted to copy and distribute modified versions of this
334 manual under the conditions for verbatim copying, provided that the
335 entire resulting derived work is distributed under the terms of a
336 permission notice identical to this one.
338 Permission is granted to copy and distribute translations of this manual
339 into another language, under the above conditions for modified versions.
348 @top The Gnus Newsreader
352 You can read news (and mail) from within Emacs by using Gnus. The news
353 can be gotten by any nefarious means you can think of---@sc{nntp}, local
354 spool or your mbox file. All at the same time, if you want to push your
357 This manual corresponds to Pterodactyl Gnus 0.35.
368 Gnus is the advanced, self-documenting, customizable, extensible
369 unreal-time newsreader for GNU Emacs.
371 Oops. That sounds oddly familiar, so let's start over again to avoid
372 being accused of plagiarism:
374 Gnus is a message-reading laboratory. It will let you look at just
375 about anything as if it were a newsgroup. You can read mail with it,
376 you can browse directories with it, you can @code{ftp} with it---you can
377 even read news with it!
379 Gnus tries to empower people who read news the same way Emacs empowers
380 people who edit text. Gnus sets no limits to what the user should be
381 allowed to do. Users are encouraged to extend Gnus to make it behave
382 like they want it to behave. A program should not control people;
383 people should be empowered to do what they want by using (or abusing)
390 * Starting Up:: Finding news can be a pain.
391 * The Group Buffer:: Selecting, subscribing and killing groups.
392 * The Summary Buffer:: Reading, saving and posting articles.
393 * The Article Buffer:: Displaying and handling articles.
394 * Composing Messages:: Information on sending mail and news.
395 * Select Methods:: Gnus reads all messages from various select methods.
396 * Scoring:: Assigning values to articles.
397 * Various:: General purpose settings.
398 * The End:: Farewell and goodbye.
399 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
400 * Index:: Variable, function and concept index.
401 * Key Index:: Key Index.
405 @chapter Starting Gnus
410 If your system administrator has set things up properly, starting Gnus
411 and reading news is extremely easy---you just type @kbd{M-x gnus} in
414 @findex gnus-other-frame
415 @kindex M-x gnus-other-frame
416 If you want to start Gnus in a different frame, you can use the command
417 @kbd{M-x gnus-other-frame} instead.
419 If things do not go smoothly at startup, you have to twiddle some
420 variables in your @file{~/.gnus} file. This file is similar to
421 @file{~/.emacs}, but is read when gnus starts.
423 If you puzzle at any terms used in this manual, please refer to the
424 terminology section (@pxref{Terminology}).
427 * Finding the News:: Choosing a method for getting news.
428 * The First Time:: What does Gnus do the first time you start it?
429 * The Server is Down:: How can I read my mail then?
430 * Slave Gnusae:: You can have more than one Gnus active at a time.
431 * Fetching a Group:: Starting Gnus just to read a group.
432 * New Groups:: What is Gnus supposed to do with new groups?
433 * Startup Files:: Those pesky startup files---@file{.newsrc}.
434 * Auto Save:: Recovering from a crash.
435 * The Active File:: Reading the active file over a slow line Takes Time.
436 * Changing Servers:: You may want to move from one server to another.
437 * Startup Variables:: Other variables you might change.
441 @node Finding the News
442 @section Finding the News
445 @vindex gnus-select-method
447 The @code{gnus-select-method} variable says where Gnus should look for
448 news. This variable should be a list where the first element says
449 @dfn{how} and the second element says @dfn{where}. This method is your
450 native method. All groups not fetched with this method are
453 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
454 you want to get your daily dosage of news from, you'd say:
457 (setq gnus-select-method '(nntp "news.somewhere.edu"))
460 If you want to read directly from the local spool, say:
463 (setq gnus-select-method '(nnspool ""))
466 If you can use a local spool, you probably should, as it will almost
467 certainly be much faster.
469 @vindex gnus-nntpserver-file
471 @cindex @sc{nntp} server
472 If this variable is not set, Gnus will take a look at the
473 @code{NNTPSERVER} environment variable. If that variable isn't set,
474 Gnus will see whether @code{gnus-nntpserver-file}
475 (@file{/etc/nntpserver} by default) has any opinions on the matter. If
476 that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server. That's a long shot, though.
478 @vindex gnus-nntp-server
479 If @code{gnus-nntp-server} is set, this variable will override
480 @code{gnus-select-method}. You should therefore set
481 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
483 @vindex gnus-secondary-servers
484 You can also make Gnus prompt you interactively for the name of an
485 @sc{nntp} server. If you give a non-numerical prefix to @code{gnus}
486 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
487 in the @code{gnus-secondary-servers} list (if any). You can also just
488 type in the name of any server you feel like visiting.
490 @findex gnus-group-browse-foreign-server
492 However, if you use one @sc{nntp} server regularly and are just
493 interested in a couple of groups from a different server, you would be
494 better served by using the @kbd{B} command in the group buffer. It will
495 let you have a look at what groups are available, and you can subscribe
496 to any of the groups you want to. This also makes @file{.newsrc}
497 maintenance much tidier. @xref{Foreign Groups}.
499 @vindex gnus-secondary-select-methods
501 A slightly different approach to foreign groups is to set the
502 @code{gnus-secondary-select-methods} variable. The select methods
503 listed in this variable are in many ways just as native as the
504 @code{gnus-select-method} server. They will also be queried for active
505 files during startup (if that's required), and new newsgroups that
506 appear on these servers will be subscribed (or not) just as native
509 For instance, if you use the @code{nnmbox} backend to read your mail, you
510 would typically set this variable to
513 (setq gnus-secondary-select-methods '((nnmbox "")))
518 @section The First Time
519 @cindex first time usage
521 If no startup files exist, Gnus will try to determine what groups should
522 be subscribed by default.
524 @vindex gnus-default-subscribed-newsgroups
525 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
526 will subscribe you to just those groups in that list, leaving the rest
527 killed. Your system administrator should have set this variable to
530 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
531 picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
532 here as @dfn{whatever Lars thinks you should read}.)
534 You'll also be subscribed to the Gnus documentation group, which should
535 help you with most common problems.
537 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
538 use the normal functions for handling new groups, and not do anything
542 @node The Server is Down
543 @section The Server is Down
544 @cindex server errors
546 If the default server is down, Gnus will understandably have some
547 problems starting. However, if you have some mail groups in addition to
548 the news groups, you may want to start Gnus anyway.
550 Gnus, being the trusting sort of program, will ask whether to proceed
551 without a native select method if that server can't be contacted. This
552 will happen whether the server doesn't actually exist (i.e., you have
553 given the wrong address) or the server has just momentarily taken ill
554 for some reason or other. If you decide to continue and have no foreign
555 groups, you'll find it difficult to actually do anything in the group
556 buffer. But, hey, that's your problem. Blllrph!
558 @findex gnus-no-server
559 @kindex M-x gnus-no-server
561 If you know that the server is definitely down, or you just want to read
562 your mail without bothering with the server at all, you can use the
563 @code{gnus-no-server} command to start Gnus. That might come in handy
564 if you're in a hurry as well. This command will not attempt to contact
565 your primary server---instead, it will just activate all groups on level
566 1 and 2. (You should preferably keep no native groups on those two
571 @section Slave Gnusae
574 You might want to run more than one Emacs with more than one Gnus at the
575 same time. If you are using different @file{.newsrc} files (e.g., if you
576 are using the two different Gnusae to read from two different servers),
577 that is no problem whatsoever. You just do it.
579 The problem appears when you want to run two Gnusae that use the same
582 To work around that problem some, we here at the Think-Tank at the Gnus
583 Towers have come up with a new concept: @dfn{Masters} and
584 @dfn{slaves}. (We have applied for a patent on this concept, and have
585 taken out a copyright on those words. If you wish to use those words in
586 conjunction with each other, you have to send $1 per usage instance to
587 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
588 Applications}) will be much more expensive, of course.)
590 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
591 however you do it). Each subsequent slave Gnusae should be started with
592 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
593 files, but instead save @dfn{slave files} that contain information only
594 on what groups have been read in the slave session. When a master Gnus
595 starts, it will read (and delete) these slave files, incorporating all
596 information from them. (The slave files will be read in the sequence
597 they were created, so the latest changes will have precedence.)
599 Information from the slave files has, of course, precedence over the
600 information in the normal (i.e., master) @code{.newsrc} file.
603 @node Fetching a Group
604 @section Fetching a Group
605 @cindex fetching a group
607 @findex gnus-fetch-group
608 It is sometimes convenient to be able to just say ``I want to read this
609 group and I don't care whether Gnus has been started or not''. This is
610 perhaps more useful for people who write code than for users, but the
611 command @code{gnus-fetch-group} provides this functionality in any case.
612 It takes the group name as a parameter.
620 @vindex gnus-check-new-newsgroups
621 If you are satisfied that you really never want to see any new groups,
622 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
623 also save you some time at startup. Even if this variable is
624 @code{nil}, you can always subscribe to the new groups just by pressing
625 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
626 is @code{ask-server} by default. If you set this variable to
627 @code{always}, then Gnus will query the backends for new groups even
628 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
631 * Checking New Groups:: Determining what groups are new.
632 * Subscription Methods:: What Gnus should do with new groups.
633 * Filtering New Groups:: Making Gnus ignore certain new groups.
637 @node Checking New Groups
638 @subsection Checking New Groups
640 Gnus normally determines whether a group is new or not by comparing the
641 list of groups from the active file(s) with the lists of subscribed and
642 dead groups. This isn't a particularly fast method. If
643 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
644 server for new groups since the last time. This is both faster and
645 cheaper. This also means that you can get rid of the list of killed
646 groups altogether, so you may set @code{gnus-save-killed-list} to
647 @code{nil}, which will save time both at startup, at exit, and all over.
648 Saves disk space, too. Why isn't this the default, then?
649 Unfortunately, not all servers support this command.
651 I bet I know what you're thinking now: How do I find out whether my
652 server supports @code{ask-server}? No? Good, because I don't have a
653 fail-safe answer. I would suggest just setting this variable to
654 @code{ask-server} and see whether any new groups appear within the next
655 few days. If any do, then it works. If none do, then it doesn't
656 work. I could write a function to make Gnus guess whether the server
657 supports @code{ask-server}, but it would just be a guess. So I won't.
658 You could @code{telnet} to the server and say @code{HELP} and see
659 whether it lists @samp{NEWGROUPS} among the commands it understands. If
660 it does, then it might work. (But there are servers that lists
661 @samp{NEWGROUPS} without supporting the function properly.)
663 This variable can also be a list of select methods. If so, Gnus will
664 issue an @code{ask-server} command to each of the select methods, and
665 subscribe them (or not) using the normal methods. This might be handy
666 if you are monitoring a few servers for new groups. A side effect is
667 that startup will take much longer, so you can meditate while waiting.
668 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
671 @node Subscription Methods
672 @subsection Subscription Methods
674 @vindex gnus-subscribe-newsgroup-method
675 What Gnus does when it encounters a new group is determined by the
676 @code{gnus-subscribe-newsgroup-method} variable.
678 This variable should contain a function. This function will be called
679 with the name of the new group as the only parameter.
681 Some handy pre-fab functions are:
685 @item gnus-subscribe-zombies
686 @vindex gnus-subscribe-zombies
687 Make all new groups zombies. This is the default. You can browse the
688 zombies later (with @kbd{A z}) and either kill them all off properly
689 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
691 @item gnus-subscribe-randomly
692 @vindex gnus-subscribe-randomly
693 Subscribe all new groups in arbitrary order. This really means that all
694 new groups will be added at ``the top'' of the group buffer.
696 @item gnus-subscribe-alphabetically
697 @vindex gnus-subscribe-alphabetically
698 Subscribe all new groups in alphabetical order.
700 @item gnus-subscribe-hierarchically
701 @vindex gnus-subscribe-hierarchically
702 Subscribe all new groups hierarchically. The difference between this
703 function and @code{gnus-subscribe-alphabetically} is slight.
704 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
705 alphabetical fashion, while this function will enter groups into it's
706 hierarchy. So if you want to have the @samp{rec} hierarchy before the
707 @samp{comp} hierarchy, this function will not mess that configuration
708 up. Or something like that.
710 @item gnus-subscribe-interactively
711 @vindex gnus-subscribe-interactively
712 Subscribe new groups interactively. This means that Gnus will ask
713 you about @strong{all} new groups. The groups you choose to subscribe
714 to will be subscribed hierarchically.
716 @item gnus-subscribe-killed
717 @vindex gnus-subscribe-killed
722 @vindex gnus-subscribe-hierarchical-interactive
723 A closely related variable is
724 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
725 mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
726 hierarchical fashion whether to subscribe to new groups or not. Gnus
727 will ask you for each sub-hierarchy whether you want to descend the
730 One common mistake is to set the variable a few paragraphs above
731 (@code{gnus-subscribe-newsgroup-method}) to
732 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This
733 will not work. This is ga-ga. So don't do it.
736 @node Filtering New Groups
737 @subsection Filtering New Groups
739 A nice and portable way to control which new newsgroups should be
740 subscribed (or ignored) is to put an @dfn{options} line at the start of
741 the @file{.newsrc} file. Here's an example:
744 options -n !alt.all !rec.all sci.all
747 @vindex gnus-subscribe-options-newsgroup-method
748 This line obviously belongs to a serious-minded intellectual scientific
749 person (or she may just be plain old boring), because it says that all
750 groups that have names beginning with @samp{alt} and @samp{rec} should
751 be ignored, and all groups with names beginning with @samp{sci} should
752 be subscribed. Gnus will not use the normal subscription method for
753 subscribing these groups.
754 @code{gnus-subscribe-options-newsgroup-method} is used instead. This
755 variable defaults to @code{gnus-subscribe-alphabetically}.
757 @vindex gnus-options-not-subscribe
758 @vindex gnus-options-subscribe
759 If you don't want to mess with your @file{.newsrc} file, you can just
760 set the two variables @code{gnus-options-subscribe} and
761 @code{gnus-options-not-subscribe}. These two variables do exactly the
762 same as the @file{.newsrc} @samp{options -n} trick. Both are regexps,
763 and if the new group matches the former, it will be unconditionally
764 subscribed, and if it matches the latter, it will be ignored.
766 @vindex gnus-auto-subscribed-groups
767 Yet another variable that meddles here is
768 @code{gnus-auto-subscribed-groups}. It works exactly like
769 @code{gnus-options-subscribe}, and is therefore really superfluous, but I
770 thought it would be nice to have two of these. This variable is more
771 meant for setting some ground rules, while the other variable is used
772 more for user fiddling. By default this variable makes all new groups
773 that come from mail backends (@code{nnml}, @code{nnbabyl},
774 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
775 don't like that, just set this variable to @code{nil}.
777 New groups that match this regexp are subscribed using
778 @code{gnus-subscribe-options-newsgroup-method}.
781 @node Changing Servers
782 @section Changing Servers
783 @cindex changing servers
785 Sometimes it is necessary to move from one @sc{nntp} server to another.
786 This happens very rarely, but perhaps you change jobs, or one server is
787 very flaky and you want to use another.
789 Changing the server is pretty easy, right? You just change
790 @code{gnus-select-method} to point to the new server?
794 Article numbers are not (in any way) kept synchronized between different
795 @sc{nntp} servers, and the only way Gnus keeps track of what articles
796 you have read is by keeping track of article numbers. So when you
797 change @code{gnus-select-method}, your @file{.newsrc} file becomes
800 Gnus provides a few functions to attempt to translate a @file{.newsrc}
801 file from one server to another. They all have one thing in
802 common---they take a looong time to run. You don't want to use these
803 functions more than absolutely necessary.
805 @kindex M-x gnus-change-server
806 @findex gnus-change-server
807 If you have access to both servers, Gnus can request the headers for all
808 the articles you have read and compare @code{Message-ID}s and map the
809 article numbers of the read articles and article marks. The @kbd{M-x
810 gnus-change-server} command will do this for all your native groups. It
811 will prompt for the method you want to move to.
813 @kindex M-x gnus-group-move-group-to-server
814 @findex gnus-group-move-group-to-server
815 You can also move individual groups with the @kbd{M-x
816 gnus-group-move-group-to-server} command. This is useful if you want to
817 move a (foreign) group from one server to another.
819 @kindex M-x gnus-group-clear-data-on-native-groups
820 @findex gnus-group-clear-data-on-native-groups
821 If you don't have access to both the old and new server, all your marks
822 and read ranges have become worthless. You can use the @kbd{M-x
823 gnus-group-clear-data-on-native-groups} command to clear out all data
824 that you have on your native groups. Use with caution.
826 After changing servers, you @strong{must} move the cache hierarchy away,
827 since the cached articles will have wrong article numbers, which will
828 affect which articles Gnus thinks are read.
832 @section Startup Files
833 @cindex startup files
838 Now, you all know about the @file{.newsrc} file. All subscription
839 information is traditionally stored in this file.
841 Things got a bit more complicated with @sc{gnus}. In addition to
842 keeping the @file{.newsrc} file updated, it also used a file called
843 @file{.newsrc.el} for storing all the information that didn't fit into
844 the @file{.newsrc} file. (Actually, it also duplicated everything in
845 the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
846 files was the most recently saved, which enabled people to swap between
847 @sc{gnus} and other newsreaders.
849 That was kinda silly, so Gnus went one better: In addition to the
850 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
851 @file{.newsrc.eld}. It will read whichever of these files that are most
852 recent, but it will never write a @file{.newsrc.el} file. You should
853 never delete the @file{.newsrc.eld} file---it contains much information
854 not stored in the @file{.newsrc} file.
856 @vindex gnus-save-newsrc-file
857 You can turn off writing the @file{.newsrc} file by setting
858 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
859 the file and save some space, as well as exiting from Gnus faster.
860 However, this will make it impossible to use other newsreaders than
861 Gnus. But hey, who would want to, right?
863 @vindex gnus-save-killed-list
864 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
865 will not save the list of killed groups to the startup file. This will
866 save both time (when starting and quitting) and space (on disk). It
867 will also mean that Gnus has no record of what groups are new or old,
868 so the automatic new groups subscription methods become meaningless.
869 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
870 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
871 Groups}). This variable can also be a regular expression. If that's
872 the case, remove all groups that do not match this regexp before
873 saving. This can be useful in certain obscure situations that involve
874 several servers where not all servers support @code{ask-server}.
876 @vindex gnus-startup-file
877 The @code{gnus-startup-file} variable says where the startup files are.
878 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
879 file being whatever that one is, with a @samp{.eld} appended.
881 @vindex gnus-save-newsrc-hook
882 @vindex gnus-save-quick-newsrc-hook
883 @vindex gnus-save-standard-newsrc-hook
884 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
885 files, while @code{gnus-save-quick-newsrc-hook} is called just before
886 saving the @file{.newsrc.eld} file, and
887 @code{gnus-save-standard-newsrc-hook} is called just before saving the
888 @file{.newsrc} file. The latter two are commonly used to turn version
889 control on or off. Version control is on by default when saving the
890 startup files. If you want to turn backup creation off, say something like:
893 (defun turn-off-backup ()
894 (set (make-local-variable 'backup-inhibited) t))
896 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
897 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
900 @vindex gnus-init-file
901 When Gnus starts, it will read the @code{gnus-site-init-file}
902 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
903 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files
904 and can be used to avoid cluttering your @file{~/.emacs} and
905 @file{site-init} files with Gnus stuff. Gnus will also check for files
906 with the same names as these, but with @file{.elc} and @file{.el}
907 suffixes. In other words, if you have set @code{gnus-init-file} to
908 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
909 and finally @file{~/.gnus} (in this order).
918 Whenever you do something that changes the Gnus data (reading articles,
919 catching up, killing/subscribing groups), the change is added to a
920 special @dfn{dribble buffer}. This buffer is auto-saved the normal
921 Emacs way. If your Emacs should crash before you have saved the
922 @file{.newsrc} files, all changes you have made can be recovered from
925 If Gnus detects this file at startup, it will ask the user whether to
926 read it. The auto save file is deleted whenever the real startup file is
929 @vindex gnus-use-dribble-file
930 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
931 maintain a dribble buffer. The default is @code{t}.
933 @vindex gnus-dribble-directory
934 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
935 this variable is @code{nil}, which it is by default, Gnus will dribble
936 into the directory where the @file{.newsrc} file is located. (This is
937 normally the user's home directory.) The dribble file will get the same
938 file permissions as the @code{.newsrc} file.
940 @vindex gnus-always-read-dribble-file
941 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
942 read the dribble file on startup without querying the user.
945 @node The Active File
946 @section The Active File
948 @cindex ignored groups
950 When Gnus starts, or indeed whenever it tries to determine whether new
951 articles have arrived, it reads the active file. This is a very large
952 file that lists all the active groups and articles on the server.
954 @vindex gnus-ignored-newsgroups
955 Before examining the active file, Gnus deletes all lines that match the
956 regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
957 any groups with bogus names, but you can use this variable to make Gnus
958 ignore hierarchies you aren't ever interested in. However, this is not
959 recommended. In fact, it's highly discouraged. Instead, @pxref{New
960 Groups} for an overview of other variables that can be used instead.
963 @c @code{nil} by default, and will slow down active file handling somewhat
964 @c if you set it to anything else.
966 @vindex gnus-read-active-file
968 The active file can be rather Huge, so if you have a slow network, you
969 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
970 reading the active file. This variable is @code{some} by default.
972 Gnus will try to make do by getting information just on the groups that
973 you actually subscribe to.
975 Note that if you subscribe to lots and lots of groups, setting this
976 variable to @code{nil} will probably make Gnus slower, not faster. At
977 present, having this variable @code{nil} will slow Gnus down
978 considerably, unless you read news over a 2400 baud modem.
980 This variable can also have the value @code{some}. Gnus will then
981 attempt to read active info only on the subscribed groups. On some
982 servers this is quite fast (on sparkling, brand new INN servers that
983 support the @code{LIST ACTIVE group} command), on others this isn't fast
984 at all. In any case, @code{some} should be faster than @code{nil}, and
985 is certainly faster than @code{t} over slow lines.
987 If this variable is @code{nil}, Gnus will ask for group info in total
988 lock-step, which isn't very fast. If it is @code{some} and you use an
989 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
990 read all the replies in one swoop. This will normally result in better
991 performance, but if the server does not support the aforementioned
992 @code{LIST ACTIVE group} command, this isn't very nice to the server.
994 In any case, if you use @code{some} or @code{nil}, you should definitely
995 kill all groups that you aren't interested in to speed things up.
997 Note that this variable also affects active file retrieval from
998 secondary select methods.
1001 @node Startup Variables
1002 @section Startup Variables
1006 @item gnus-load-hook
1007 @vindex gnus-load-hook
1008 A hook run while Gnus is being loaded. Note that this hook will
1009 normally be run just once in each Emacs session, no matter how many
1010 times you start Gnus.
1012 @item gnus-before-startup-hook
1013 @vindex gnus-before-startup-hook
1014 A hook run after starting up Gnus successfully.
1016 @item gnus-startup-hook
1017 @vindex gnus-startup-hook
1018 A hook run as the very last thing after starting up Gnus
1020 @item gnus-started-hook
1021 @vindex gnus-started-hook
1022 A hook that is run as the very last thing after starting up Gnus
1025 @item gnus-started-hook
1026 @vindex gnus-started-hook
1027 A hook that is run after reading the @file{.newsrc} file(s), but before
1028 generating the group buffer.
1030 @item gnus-check-bogus-newsgroups
1031 @vindex gnus-check-bogus-newsgroups
1032 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1033 startup. A @dfn{bogus group} is a group that you have in your
1034 @file{.newsrc} file, but doesn't exist on the news server. Checking for
1035 bogus groups can take quite a while, so to save time and resources it's
1036 best to leave this option off, and do the checking for bogus groups once
1037 in a while from the group buffer instead (@pxref{Group Maintenance}).
1039 @item gnus-inhibit-startup-message
1040 @vindex gnus-inhibit-startup-message
1041 If non-@code{nil}, the startup message won't be displayed. That way,
1042 your boss might not notice as easily that you are reading news instead
1043 of doing your job. Note that this variable is used before
1044 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
1046 @item gnus-no-groups-message
1047 @vindex gnus-no-groups-message
1048 Message displayed by Gnus when no groups are available.
1050 @item gnus-play-startup-jingle
1051 @vindex gnus-play-startup-jingle
1052 If non-@code{nil}, play the Gnus jingle at startup.
1054 @item gnus-startup-jingle
1055 @vindex gnus-startup-jingle
1056 Jingle to be played if the above variable is non-@code{nil}. The
1057 default is @samp{Tuxedomoon.Jingle4.au}.
1062 @node The Group Buffer
1063 @chapter The Group Buffer
1064 @cindex group buffer
1066 The @dfn{group buffer} lists all (or parts) of the available groups. It
1067 is the first buffer shown when Gnus starts, and will never be killed as
1068 long as Gnus is active.
1072 \gnusfigure{The Group Buffer}{320}{
1073 \put(75,50){\epsfig{figure=tmp/group.ps,height=9cm}}
1074 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1075 \put(120,38){\vector(1,2){10}}
1076 \put(40,60){\makebox(0,0)[r]{Mode line}}
1077 \put(40,58){\vector(1,0){30}}
1078 \put(200,28){\makebox(0,0)[t]{Native select method}}
1079 \put(200,26){\vector(-1,2){15}}
1085 * Group Buffer Format:: Information listed and how you can change it.
1086 * Group Maneuvering:: Commands for moving in the group buffer.
1087 * Selecting a Group:: Actually reading news.
1088 * Group Data:: Changing the info for a group.
1089 * Subscription Commands:: Unsubscribing, killing, subscribing.
1090 * Group Levels:: Levels? What are those, then?
1091 * Group Score:: A mechanism for finding out what groups you like.
1092 * Marking Groups:: You can mark groups for later processing.
1093 * Foreign Groups:: Creating and editing groups.
1094 * Group Parameters:: Each group may have different parameters set.
1095 * Listing Groups:: Gnus can list various subsets of the groups.
1096 * Sorting Groups:: Re-arrange the group order.
1097 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1098 * Browse Foreign Server:: You can browse a server. See what it has to offer.
1099 * Exiting Gnus:: Stop reading news and get some work done.
1100 * Group Topics:: A folding group mode divided into topics.
1101 * Misc Group Stuff:: Other stuff that you can to do.
1105 @node Group Buffer Format
1106 @section Group Buffer Format
1109 * Group Line Specification:: Deciding how the group buffer is to look.
1110 * Group Modeline Specification:: The group buffer modeline.
1111 * Group Highlighting:: Having nice colors in the group buffer.
1115 @node Group Line Specification
1116 @subsection Group Line Specification
1117 @cindex group buffer format
1119 The default format of the group buffer is nice and dull, but you can
1120 make it as exciting and ugly as you feel like.
1122 Here's a couple of example group lines:
1125 25: news.announce.newusers
1126 * 0: alt.fan.andrea-dworkin
1131 You can see that there are 25 unread articles in
1132 @samp{news.announce.newusers}. There are no unread articles, but some
1133 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1134 asterisk at the beginning of the line?).
1136 @vindex gnus-group-line-format
1137 You can change that format to whatever you want by fiddling with the
1138 @code{gnus-group-line-format} variable. This variable works along the
1139 lines of a @code{format} specification, which is pretty much the same as
1140 a @code{printf} specifications, for those of you who use (feh!) C.
1141 @xref{Formatting Variables}.
1143 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1145 There should always be a colon on the line; the cursor always moves to
1146 the colon after performing an operation. Nothing else is required---not
1147 even the group name. All displayed text is just window dressing, and is
1148 never examined by Gnus. Gnus stores all real information it needs using
1151 (Note that if you make a really strange, wonderful, spreadsheet-like
1152 layout, everybody will believe you are hard at work with the accounting
1153 instead of wasting time reading news.)
1155 Here's a list of all available format characters:
1160 An asterisk if the group only has marked articles.
1163 Whether the group is subscribed.
1166 Level of subscribedness.
1169 Number of unread articles.
1172 Number of dormant articles.
1175 Number of ticked articles.
1178 Number of read articles.
1181 Estimated total number of articles. (This is really @var{max-number}
1182 minus @var{min-number} plus 1.)
1185 Number of unread, unticked, non-dormant articles.
1188 Number of ticked and dormant articles.
1197 Newsgroup description.
1200 @samp{m} if moderated.
1203 @samp{(m)} if moderated.
1212 A string that looks like @samp{<%s:%n>} if a foreign select method is
1216 Indentation based on the level of the topic (@pxref{Group Topics}).
1219 @vindex gnus-group-uncollapsed-levels
1220 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1221 variable says how many levels to leave at the end of the group name.
1222 The default is 1---this will mean that group names like
1223 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
1226 @vindex gnus-new-mail-mark
1228 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1232 A string that says when you last read the group (@pxref{Group
1236 User defined specifier. The next character in the format string should
1237 be a letter. Gnus will call the function
1238 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1239 following @samp{%u}. The function will be passed a single dummy
1240 parameter as argument. The function should return a string, which will
1241 be inserted into the buffer just like information from any other
1246 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1247 if no info is available---for instance, if it is a non-activated foreign
1248 group, or a bogus native group.
1251 @node Group Modeline Specification
1252 @subsection Group Modeline Specification
1253 @cindex group modeline
1255 @vindex gnus-group-mode-line-format
1256 The mode line can be changed by setting
1257 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It
1258 doesn't understand that many format specifiers:
1262 The native news server.
1264 The native select method.
1268 @node Group Highlighting
1269 @subsection Group Highlighting
1270 @cindex highlighting
1271 @cindex group highlighting
1273 @vindex gnus-group-highlight
1274 Highlighting in the group buffer is controlled by the
1275 @code{gnus-group-highlight} variable. This is an alist with elements
1276 that look like @var{(form . face)}. If @var{form} evaluates to
1277 something non-@code{nil}, the @var{face} will be used on the line.
1279 Here's an example value for this variable that might look nice if the
1283 (face-spec-set 'my-group-face-1
1284 '((t (:foreground "Red" :bold t))))
1285 (face-spec-set 'my-group-face-2
1286 '((t (:foreground "SeaGreen" :bold t))))
1287 (face-spec-set 'my-group-face-3
1288 '((t (:foreground "SpringGreen" :bold t))))
1289 (face-spec-set 'my-group-face-4
1290 '((t (:foreground "SteelBlue" :bold t))))
1291 (face-spec-set 'my-group-face-5
1292 '((t (:foreground "SkyBlue" :bold t))))
1294 (setq gnus-group-highlight
1295 '(((> unread 200) . my-group-face-1)
1296 ((and (< level 3) (zerop unread)) . my-group-face-2)
1297 ((< level 3) . my-group-face-3)
1298 ((zerop unread) . my-group-face-4)
1299 (t . my-group-face-5)))
1302 Also @pxref{Faces and Fonts}.
1304 Variables that are dynamically bound when the forms are evaluated
1311 The number of unread articles in the group.
1315 Whether the group is a mail group.
1317 The level of the group.
1319 The score of the group.
1321 The number of ticked articles in the group.
1323 The total number of articles in the group. Or rather, MAX-NUMBER minus
1324 MIN-NUMBER plus one.
1326 When using the topic minor mode, this variable is bound to the current
1327 topic being inserted.
1330 When the forms are @code{eval}ed, point is at the beginning of the line
1331 of the group in question, so you can use many of the normal Gnus
1332 functions for snarfing info on the group.
1334 @vindex gnus-group-update-hook
1335 @findex gnus-group-highlight-line
1336 @code{gnus-group-update-hook} is called when a group line is changed.
1337 It will not be called when @code{gnus-visual} is @code{nil}. This hook
1338 calls @code{gnus-group-highlight-line} by default.
1341 @node Group Maneuvering
1342 @section Group Maneuvering
1343 @cindex group movement
1345 All movement commands understand the numeric prefix and will behave as
1346 expected, hopefully.
1352 @findex gnus-group-next-unread-group
1353 Go to the next group that has unread articles
1354 (@code{gnus-group-next-unread-group}).
1360 @findex gnus-group-prev-unread-group
1361 Go to the previous group that has unread articles
1362 (@code{gnus-group-prev-unread-group}).
1366 @findex gnus-group-next-group
1367 Go to the next group (@code{gnus-group-next-group}).
1371 @findex gnus-group-prev-group
1372 Go to the previous group (@code{gnus-group-prev-group}).
1376 @findex gnus-group-next-unread-group-same-level
1377 Go to the next unread group on the same (or lower) level
1378 (@code{gnus-group-next-unread-group-same-level}).
1382 @findex gnus-group-prev-unread-group-same-level
1383 Go to the previous unread group on the same (or lower) level
1384 (@code{gnus-group-prev-unread-group-same-level}).
1387 Three commands for jumping to groups:
1393 @findex gnus-group-jump-to-group
1394 Jump to a group (and make it visible if it isn't already)
1395 (@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
1400 @findex gnus-group-best-unread-group
1401 Jump to the unread group with the lowest level
1402 (@code{gnus-group-best-unread-group}).
1406 @findex gnus-group-first-unread-group
1407 Jump to the first group with unread articles
1408 (@code{gnus-group-first-unread-group}).
1411 @vindex gnus-group-goto-unread
1412 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1413 commands will move to the next group, not the next unread group. Even
1414 the commands that say they move to the next unread group. The default
1418 @node Selecting a Group
1419 @section Selecting a Group
1420 @cindex group selection
1425 @kindex SPACE (Group)
1426 @findex gnus-group-read-group
1427 Select the current group, switch to the summary buffer and display the
1428 first unread article (@code{gnus-group-read-group}). If there are no
1429 unread articles in the group, or if you give a non-numerical prefix to
1430 this command, Gnus will offer to fetch all the old articles in this
1431 group from the server. If you give a numerical prefix @var{N}, @var{N}
1432 determines the number of articles Gnus will fetch. If @var{N} is
1433 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1434 negative, Gnus fetches the @var{abs(N)} oldest articles.
1438 @findex gnus-group-select-group
1439 Select the current group and switch to the summary buffer
1440 (@code{gnus-group-select-group}). Takes the same arguments as
1441 @code{gnus-group-read-group}---the only difference is that this command
1442 does not display the first unread article automatically upon group
1446 @kindex M-RET (Group)
1447 @findex gnus-group-quick-select-group
1448 This does the same as the command above, but tries to do it with the
1449 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
1450 scoring/killing will be performed, there will be no highlights and no
1451 expunging. This might be useful if you're in a real hurry and have to
1452 enter some humongous group. If you give a 0 prefix to this command
1453 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
1454 which is useful if you want to toggle threading before generating the
1455 summary buffer (@pxref{Summary Generation Commands}).
1458 @kindex M-SPACE (Group)
1459 @findex gnus-group-visible-select-group
1460 This is yet one more command that does the same as the @kbd{RET}
1461 command, but this one does it without expunging and hiding dormants
1462 (@code{gnus-group-visible-select-group}).
1465 @kindex M-C-RET (Group)
1466 @findex gnus-group-select-group-ephemerally
1467 Finally, this command selects the current group ephemerally without
1468 doing any processing of its contents
1469 (@code{gnus-group-select-group-ephemerally}). Even threading has been
1470 turned off. Everything you do in the group after selecting it in this
1471 manner will have no permanent effects.
1475 @vindex gnus-large-newsgroup
1476 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1477 to be a big group. This is 200 by default. If the group has more
1478 (unread and/or ticked) articles than this, Gnus will query the user
1479 before entering the group. The user can then specify how many articles
1480 should be fetched from the server. If the user specifies a negative
1481 number (@code{-n}), the @code{n} oldest articles will be fetched. If it
1482 is positive, the @code{n} articles that have arrived most recently will
1485 @vindex gnus-select-group-hook
1486 @vindex gnus-auto-select-first
1487 @code{gnus-auto-select-first} control whether any articles are selected
1488 automatically when entering a group with the @kbd{SPACE} command.
1493 Don't select any articles when entering the group. Just display the
1494 full summary buffer.
1497 Select the first unread article when entering the group.
1500 Select the highest scored article in the group when entering the
1505 This variable can also be a function. In that case, that function will
1506 be called to place point on a subject line, and/or select some article.
1507 Useful functions include:
1510 @item gnus-summary-first-unread-subject
1511 Place point on the subject line of the first unread article, but
1512 don't select the article.
1514 @item gnus-summary-first-unread-article
1515 Select the first unread article.
1517 @item gnus-summary-best-unread-article
1518 Select the highest-scored unread article.
1522 If you want to prevent automatic selection in some group (say, in a
1523 binary group with Huge articles) you can set this variable to @code{nil}
1524 in @code{gnus-select-group-hook}, which is called when a group is
1528 @node Subscription Commands
1529 @section Subscription Commands
1530 @cindex subscription
1538 @findex gnus-group-unsubscribe-current-group
1539 @c @icon{gnus-group-unsubscribe}
1540 Toggle subscription to the current group
1541 (@code{gnus-group-unsubscribe-current-group}).
1547 @findex gnus-group-unsubscribe-group
1548 Prompt for a group to subscribe, and then subscribe it. If it was
1549 subscribed already, unsubscribe it instead
1550 (@code{gnus-group-unsubscribe-group}).
1556 @findex gnus-group-kill-group
1557 @c @icon{gnus-group-kill-group}
1558 Kill the current group (@code{gnus-group-kill-group}).
1564 @findex gnus-group-yank-group
1565 Yank the last killed group (@code{gnus-group-yank-group}).
1568 @kindex C-x C-t (Group)
1569 @findex gnus-group-transpose-groups
1570 Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
1571 really a subscription command, but you can use it instead of a
1572 kill-and-yank sequence sometimes.
1578 @findex gnus-group-kill-region
1579 Kill all groups in the region (@code{gnus-group-kill-region}).
1583 @findex gnus-group-kill-all-zombies
1584 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1587 @kindex S C-k (Group)
1588 @findex gnus-group-kill-level
1589 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1590 These groups can't be yanked back after killing, so this command should
1591 be used with some caution. The only time where this command comes in
1592 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1593 groups that you want to get rid off. @kbd{S C-k} on level 7 will
1594 kill off all unsubscribed groups that do not have message numbers in the
1595 @file{.newsrc} file.
1599 Also @pxref{Group Levels}.
1609 @findex gnus-group-catchup-current
1610 @vindex gnus-group-catchup-group-hook
1611 @c @icon{gnus-group-catchup-current}
1612 Mark all unticked articles in this group as read
1613 (@code{gnus-group-catchup-current}).
1614 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1619 @findex gnus-group-catchup-current-all
1620 Mark all articles in this group, even the ticked ones, as read
1621 (@code{gnus-group-catchup-current-all}).
1625 @findex gnus-group-clear-data
1626 Clear the data from the current group---nix out marks and the list of
1627 read articles (@code{gnus-group-clear-data}).
1629 @item M-x gnus-group-clear-data-on-native-groups
1630 @kindex M-x gnus-group-clear-data-on-native-groups
1631 @findex gnus-group-clear-data-on-native-groups
1632 If you have switched from one @sc{nntp} server to another, all your marks
1633 and read ranges have become worthless. You can use this command to
1634 clear out all data that you have on your native groups. Use with
1641 @section Group Levels
1645 All groups have a level of @dfn{subscribedness}. For instance, if a
1646 group is on level 2, it is more subscribed than a group on level 5. You
1647 can ask Gnus to just list groups on a given level or lower
1648 (@pxref{Listing Groups}), or to just check for new articles in groups on
1649 a given level or lower (@pxref{Scanning New Messages}).
1651 Remember: The higher the level of the group, the less important it is.
1657 @findex gnus-group-set-current-level
1658 Set the level of the current group. If a numeric prefix is given, the
1659 next @var{n} groups will have their levels set. The user will be
1660 prompted for a level.
1663 @vindex gnus-level-killed
1664 @vindex gnus-level-zombie
1665 @vindex gnus-level-unsubscribed
1666 @vindex gnus-level-subscribed
1667 Gnus considers groups from levels 1 to
1668 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
1669 @code{gnus-level-subscribed} (exclusive) and
1670 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
1671 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
1672 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
1673 (default 9). Gnus treats subscribed and unsubscribed groups exactly the
1674 same, but zombie and killed groups have no information on what articles
1675 you have read, etc, stored. This distinction between dead and living
1676 groups isn't done because it is nice or clever, it is done purely for
1677 reasons of efficiency.
1679 It is recommended that you keep all your mail groups (if any) on quite
1680 low levels (e.g. 1 or 2).
1682 If you want to play with the level variables, you should show some care.
1683 Set them once, and don't touch them ever again. Better yet, don't touch
1684 them at all unless you know exactly what you're doing.
1686 @vindex gnus-level-default-unsubscribed
1687 @vindex gnus-level-default-subscribed
1688 Two closely related variables are @code{gnus-level-default-subscribed}
1689 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
1690 which are the levels that new groups will be put on if they are
1691 (un)subscribed. These two variables should, of course, be inside the
1692 relevant valid ranges.
1694 @vindex gnus-keep-same-level
1695 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1696 will only move to groups of the same level (or lower). In
1697 particular, going from the last article in one group to the next group
1698 will go to the next group of the same level (or lower). This might be
1699 handy if you want to read the most important groups before you read the
1702 @vindex gnus-group-default-list-level
1703 All groups with a level less than or equal to
1704 @code{gnus-group-default-list-level} will be listed in the group buffer
1707 @vindex gnus-group-list-inactive-groups
1708 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
1709 groups will be listed along with the unread groups. This variable is
1710 @code{t} by default. If it is @code{nil}, inactive groups won't be
1713 @vindex gnus-group-use-permanent-levels
1714 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1715 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1716 use this level as the ``work'' level.
1718 @vindex gnus-activate-level
1719 Gnus will normally just activate (i. e., query the server about) groups
1720 on level @code{gnus-activate-level} or less. If you don't want to
1721 activate unsubscribed groups, for instance, you might set this variable
1722 to 5. The default is 6.
1726 @section Group Score
1731 You would normally keep important groups on high levels, but that scheme
1732 is somewhat restrictive. Don't you wish you could have Gnus sort the
1733 group buffer according to how often you read groups, perhaps? Within
1736 This is what @dfn{group score} is for. You can assign a score to each
1737 group. You can then sort the group buffer based on this score.
1738 Alternatively, you can sort on score and then level. (Taken together,
1739 the level and the score is called the @dfn{rank} of the group. A group
1740 that is on level 4 and has a score of 1 has a higher rank than a group
1741 on level 5 that has a score of 300. (The level is the most significant
1742 part and the score is the least significant part.))
1744 @findex gnus-summary-bubble-group
1745 If you want groups you read often to get higher scores than groups you
1746 read seldom you can add the @code{gnus-summary-bubble-group} function to
1747 the @code{gnus-summary-exit-hook} hook. This will result (after
1748 sorting) in a bubbling sort of action. If you want to see that in
1749 action after each summary exit, you can add
1750 @code{gnus-group-sort-groups-by-rank} or
1751 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
1752 slow things down somewhat.
1755 @node Marking Groups
1756 @section Marking Groups
1757 @cindex marking groups
1759 If you want to perform some command on several groups, and they appear
1760 subsequently in the group buffer, you would normally just give a
1761 numerical prefix to the command. Most group commands will then do your
1762 bidding on those groups.
1764 However, if the groups are not in sequential order, you can still
1765 perform a command on several groups. You simply mark the groups first
1766 with the process mark and then execute the command.
1774 @findex gnus-group-mark-group
1775 Set the mark on the current group (@code{gnus-group-mark-group}).
1781 @findex gnus-group-unmark-group
1782 Remove the mark from the current group
1783 (@code{gnus-group-unmark-group}).
1787 @findex gnus-group-unmark-all-groups
1788 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
1792 @findex gnus-group-mark-region
1793 Mark all groups between point and mark (@code{gnus-group-mark-region}).
1797 @findex gnus-group-mark-buffer
1798 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
1802 @findex gnus-group-mark-regexp
1803 Mark all groups that match some regular expression
1804 (@code{gnus-group-mark-regexp}).
1807 Also @pxref{Process/Prefix}.
1809 @findex gnus-group-universal-argument
1810 If you want to execute some command on all groups that have been marked
1811 with the process mark, you can use the @kbd{M-&}
1812 (@code{gnus-group-universal-argument}) command. It will prompt you for
1813 the command to be executed.
1816 @node Foreign Groups
1817 @section Foreign Groups
1818 @cindex foreign groups
1820 Below are some group mode commands for making and editing general foreign
1821 groups, as well as commands to ease the creation of a few
1822 special-purpose groups. All these commands insert the newly created
1823 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1830 @findex gnus-group-make-group
1831 @cindex making groups
1832 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
1833 for a name, a method and possibly an @dfn{address}. For an easier way
1834 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1838 @findex gnus-group-rename-group
1839 @cindex renaming groups
1840 Rename the current group to something else
1841 (@code{gnus-group-rename-group}). This is valid only on some
1842 groups---mail groups mostly. This command might very well be quite slow
1848 @findex gnus-group-customize
1849 Customize the group parameters (@code{gnus-group-customize}).
1853 @findex gnus-group-edit-group-method
1854 @cindex renaming groups
1855 Enter a buffer where you can edit the select method of the current
1856 group (@code{gnus-group-edit-group-method}).
1860 @findex gnus-group-edit-group-parameters
1861 Enter a buffer where you can edit the group parameters
1862 (@code{gnus-group-edit-group-parameters}).
1866 @findex gnus-group-edit-group
1867 Enter a buffer where you can edit the group info
1868 (@code{gnus-group-edit-group}).
1872 @findex gnus-group-make-directory-group
1874 Make a directory group (@pxref{Directory Groups}). You will be prompted
1875 for a directory name (@code{gnus-group-make-directory-group}).
1880 @findex gnus-group-make-help-group
1881 Make the Gnus help group (@code{gnus-group-make-help-group}).
1885 @cindex (ding) archive
1886 @cindex archive group
1887 @findex gnus-group-make-archive-group
1888 @vindex gnus-group-archive-directory
1889 @vindex gnus-group-recent-archive-directory
1890 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
1891 default a group pointing to the most recent articles will be created
1892 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
1893 group will be created from @code{gnus-group-archive-directory}.
1897 @findex gnus-group-make-kiboze-group
1899 Make a kiboze group. You will be prompted for a name, for a regexp to
1900 match groups to be ``included'' in the kiboze group, and a series of
1901 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1902 @xref{Kibozed Groups}.
1906 @findex gnus-group-enter-directory
1908 Read an arbitrary directory as if it were a newsgroup with the
1909 @code{nneething} backend (@code{gnus-group-enter-directory}).
1910 @xref{Anything Groups}.
1914 @findex gnus-group-make-doc-group
1915 @cindex ClariNet Briefs
1917 Make a group based on some file or other
1918 (@code{gnus-group-make-doc-group}). If you give a prefix to this
1919 command, you will be prompted for a file name and a file type.
1920 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1921 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
1922 @code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run
1923 this command without a prefix, Gnus will guess at the file type.
1924 @xref{Document Groups}.
1928 @vindex gnus-useful-groups
1929 @findex gnus-group-make-useful-group
1930 Create one of the groups mentioned in @code{gnus-useful-groups}
1931 (@code{gnus-group-make-useful-group}).
1935 @findex gnus-group-make-web-group
1940 Make an ephemeral group based on a web search
1941 (@code{gnus-group-make-web-group}). If you give a prefix to this
1942 command, make a solid group instead. You will be prompted for the
1943 search engine type and the search string. Valid search engine types
1944 include @code{dejanews}, @code{altavista} and @code{reference}.
1945 @xref{Web Searches}.
1947 If you use the @code{dejanews} search engine, you can limit the search
1948 to a particular group by using a match string like
1949 @samp{~g alt.sysadmin.recovery shaving}.
1952 @kindex G DEL (Group)
1953 @findex gnus-group-delete-group
1954 This function will delete the current group
1955 (@code{gnus-group-delete-group}). If given a prefix, this function will
1956 actually delete all the articles in the group, and forcibly remove the
1957 group itself from the face of the Earth. Use a prefix only if you are
1958 absolutely sure of what you are doing. This command can't be used on
1959 read-only groups (like @code{nntp} group), though.
1963 @findex gnus-group-make-empty-virtual
1964 Make a new, fresh, empty @code{nnvirtual} group
1965 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
1969 @findex gnus-group-add-to-virtual
1970 Add the current group to an @code{nnvirtual} group
1971 (@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
1974 @xref{Select Methods} for more information on the various select
1977 @vindex gnus-activate-foreign-newsgroups
1978 If @code{gnus-activate-foreign-newsgroups} is a positive number,
1979 Gnus will check all foreign groups with this level or lower at startup.
1980 This might take quite a while, especially if you subscribe to lots of
1981 groups from different @sc{nntp} servers. Also @pxref{Group Levels};
1982 @code{gnus-activate-level} also affects activation of foreign
1986 @node Group Parameters
1987 @section Group Parameters
1988 @cindex group parameters
1990 The group parameters store information local to a particular group.
1991 Here's an example group parameter list:
1994 ((to-address . "ding@@gnus.org")
1998 We see that each element consists of a "dotted pair"---the thing before
1999 the dot is the key, while the thing after the dot is the value. All the
2000 parameters have this form @emph{except} local variable specs, which are
2001 not dotted pairs, but proper lists.
2003 The following group parameters can be used:
2008 Address used by when doing followups and new posts.
2011 (to-address . "some@@where.com")
2014 This is primarily useful in mail groups that represent closed mailing
2015 lists---mailing lists where it's expected that everybody that writes to
2016 the mailing list is subscribed to it. Since using this parameter
2017 ensures that the mail only goes to the mailing list itself, it means
2018 that members won't receive two copies of your followups.
2020 Using @code{to-address} will actually work whether the group is foreign
2021 or not. Let's say there's a group on the server that is called
2022 @samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2023 the articles from a mail-to-news gateway. Posting directly to this
2024 group is therefore impossible---you have to send mail to the mailing
2025 list address instead.
2029 Address used when doing a @kbd{a} in that group.
2032 (to-list . "some@@where.com")
2035 It is totally ignored
2036 when doing a followup---except that if it is present in a news group,
2037 you'll get mail group semantics when doing @kbd{f}.
2039 If you do an @kbd{a} command in a mail group and you have neither a
2040 @code{to-list} group parameter nor a @code{to-address} group parameter,
2041 then a @code{to-list} group parameter will be added automatically upon
2042 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2043 @vindex gnus-add-to-list
2045 If you do an @kbd{a} command in a mail group and you don't have a
2046 @code{to-list} group parameter, one will be added automatically upon
2047 sending the message.
2051 If the group parameter list has the element @code{(visible . t)},
2052 that group will always be visible in the Group buffer, regardless
2053 of whether it has any unread articles.
2055 @item broken-reply-to
2056 @cindex broken-reply-to
2057 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2058 headers in this group are to be ignored. This can be useful if you're
2059 reading a mailing list group where the listserv has inserted
2060 @code{Reply-To} headers that point back to the listserv itself. This is
2061 broken behavior. So there!
2065 Elements like @code{(to-group . "some.group.name")} means that all
2066 posts in that group will be sent to @code{some.group.name}.
2070 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2071 will treat all responses as if they were responses to news articles.
2072 This can be useful if you have a mail group that's really a mirror of a
2077 If @code{(gcc-self . t)} is present in the group parameter list, newly
2078 composed messages will be @code{Gcc}'d to the current group. If
2079 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2080 generated, if @code{(gcc-self . "string")} is present, this string will
2081 be inserted literally as a @code{gcc} header. This parameter takes
2082 precedence over any default @code{Gcc} rules as described later
2083 (@pxref{Archived Messages}).
2087 If the group parameter has an element that looks like @code{(auto-expire
2088 . t)}, all articles read will be marked as expirable. For an
2089 alternative approach, @pxref{Expiring Mail}.
2092 @cindex total-expire
2093 If the group parameter has an element that looks like
2094 @code{(total-expire . t)}, all read articles will be put through the
2095 expiry process, even if they are not marked as expirable. Use with
2096 caution. Unread, ticked and dormant articles are not eligible for
2101 @vindex nnmail-expiry-wait-function
2102 If the group parameter has an element that looks like @code{(expiry-wait
2103 . 10)}, this value will override any @code{nnmail-expiry-wait} and
2104 @code{nnmail-expiry-wait-function} when expiring expirable messages.
2105 The value can either be a number of days (not necessarily an integer) or
2106 the symbols @code{never} or @code{immediate}.
2109 @cindex score file group parameter
2110 Elements that look like @code{(score-file . "file")} will make
2111 @file{file} into the current score file for the group in question. All
2112 interactive score entries will be put into this file.
2115 @cindex adapt file group parameter
2116 Elements that look like @code{(adapt-file . "file")} will make
2117 @file{file} into the current adaptive file for the group in question.
2118 All adaptive score entries will be put into this file.
2121 When unsubscribing from a mailing list you should never send the
2122 unsubscription notice to the mailing list itself. Instead, you'd send
2123 messages to the administrative address. This parameter allows you to
2124 put the admin address somewhere convenient.
2127 Elements that look like @code{(display . MODE)} say which articles to
2128 display on entering the group. Valid values are:
2132 Display all articles, both read and unread.
2135 Display the default visible articles, which normally includes unread and
2140 Elements that look like @code{(comment . "This is a comment")}
2141 are arbitrary comments on the group. They are currently ignored by
2142 Gnus, but provide a place for you to store information on particular
2146 Elements that look like @code{(charset . iso-8859-1)} will make
2147 @code{iso-8859-1} the default charset; that is, the charset that will be
2148 used for all articles that do not specify a charset.
2150 @item @var{(variable form)}
2151 You can use the group parameters to set variables local to the group you
2152 are entering. If you want to turn threading off in @samp{news.answers},
2153 you could put @code{(gnus-show-threads nil)} in the group parameters of
2154 that group. @code{gnus-show-threads} will be made into a local variable
2155 in the summary buffer you enter, and the form @code{nil} will be
2156 @code{eval}ed there.
2158 This can also be used as a group-specific hook function, if you'd like.
2159 If you want to hear a beep when you enter a group, you could put
2160 something like @code{(dummy-variable (ding))} in the parameters of that
2161 group. @code{dummy-variable} will be set to the result of the
2162 @code{(ding)} form, but who cares?
2166 Use the @kbd{G p} command to edit group parameters of a group. You
2167 might also be interested in reading about topic parameters (@pxref{Topic
2171 @node Listing Groups
2172 @section Listing Groups
2173 @cindex group listing
2175 These commands all list various slices of the groups available.
2183 @findex gnus-group-list-groups
2184 List all groups that have unread articles
2185 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
2186 command will list only groups of level ARG and lower. By default, it
2187 only lists groups of level five (i. e.,
2188 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2195 @findex gnus-group-list-all-groups
2196 List all groups, whether they have unread articles or not
2197 (@code{gnus-group-list-all-groups}). If the numeric prefix is used,
2198 this command will list only groups of level ARG and lower. By default,
2199 it lists groups of level seven or lower (i.e., just subscribed and
2200 unsubscribed groups).
2204 @findex gnus-group-list-level
2205 List all unread groups on a specific level
2206 (@code{gnus-group-list-level}). If given a prefix, also list the groups
2207 with no unread articles.
2211 @findex gnus-group-list-killed
2212 List all killed groups (@code{gnus-group-list-killed}). If given a
2213 prefix argument, really list all groups that are available, but aren't
2214 currently (un)subscribed. This could entail reading the active file
2219 @findex gnus-group-list-zombies
2220 List all zombie groups (@code{gnus-group-list-zombies}).
2224 @findex gnus-group-list-matching
2225 List all unread, subscribed groups with names that match a regexp
2226 (@code{gnus-group-list-matching}).
2230 @findex gnus-group-list-all-matching
2231 List groups that match a regexp (@code{gnus-group-list-all-matching}).
2235 @findex gnus-group-list-active
2236 List absolutely all groups in the active file(s) of the
2237 server(s) you are connected to (@code{gnus-group-list-active}). This
2238 might very well take quite a while. It might actually be a better idea
2239 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2240 thing to match on. Also note that this command may list groups that
2241 don't exist (yet)---these will be listed as if they were killed groups.
2242 Take the output with some grains of salt.
2246 @findex gnus-group-apropos
2247 List all groups that have names that match a regexp
2248 (@code{gnus-group-apropos}).
2252 @findex gnus-group-description-apropos
2253 List all groups that have names or descriptions that match a regexp
2254 (@code{gnus-group-description-apropos}).
2258 @vindex gnus-permanently-visible-groups
2259 @cindex visible group parameter
2260 Groups that match the @code{gnus-permanently-visible-groups} regexp will
2261 always be shown, whether they have unread articles or not. You can also
2262 add the @code{visible} element to the group parameters in question to
2263 get the same effect.
2265 @vindex gnus-list-groups-with-ticked-articles
2266 Groups that have just ticked articles in it are normally listed in the
2267 group buffer. If @code{gnus-list-groups-with-ticked-articles} is
2268 @code{nil}, these groups will be treated just like totally empty
2269 groups. It is @code{t} by default.
2272 @node Sorting Groups
2273 @section Sorting Groups
2274 @cindex sorting groups
2276 @kindex C-c C-s (Group)
2277 @findex gnus-group-sort-groups
2278 @vindex gnus-group-sort-function
2279 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
2280 group buffer according to the function(s) given by the
2281 @code{gnus-group-sort-function} variable. Available sorting functions
2286 @item gnus-group-sort-by-alphabet
2287 @findex gnus-group-sort-by-alphabet
2288 Sort the group names alphabetically. This is the default.
2290 @item gnus-group-sort-by-real-name
2291 @findex gnus-group-sort-by-real-name
2292 Sort the group alphabetically on the real (unprefixed) group names.
2294 @item gnus-group-sort-by-level
2295 @findex gnus-group-sort-by-level
2296 Sort by group level.
2298 @item gnus-group-sort-by-score
2299 @findex gnus-group-sort-by-score
2300 Sort by group score. @xref{Group Score}.
2302 @item gnus-group-sort-by-rank
2303 @findex gnus-group-sort-by-rank
2304 Sort by group score and then the group level. The level and the score
2305 are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
2307 @item gnus-group-sort-by-unread
2308 @findex gnus-group-sort-by-unread
2309 Sort by number of unread articles.
2311 @item gnus-group-sort-by-method
2312 @findex gnus-group-sort-by-method
2313 Sort alphabetically on the select method.
2318 @code{gnus-group-sort-function} can also be a list of sorting
2319 functions. In that case, the most significant sort key function must be
2323 There are also a number of commands for sorting directly according to
2324 some sorting criteria:
2328 @kindex G S a (Group)
2329 @findex gnus-group-sort-groups-by-alphabet
2330 Sort the group buffer alphabetically by group name
2331 (@code{gnus-group-sort-groups-by-alphabet}).
2334 @kindex G S u (Group)
2335 @findex gnus-group-sort-groups-by-unread
2336 Sort the group buffer by the number of unread articles
2337 (@code{gnus-group-sort-groups-by-unread}).
2340 @kindex G S l (Group)
2341 @findex gnus-group-sort-groups-by-level
2342 Sort the group buffer by group level
2343 (@code{gnus-group-sort-groups-by-level}).
2346 @kindex G S v (Group)
2347 @findex gnus-group-sort-groups-by-score
2348 Sort the group buffer by group score
2349 (@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
2352 @kindex G S r (Group)
2353 @findex gnus-group-sort-groups-by-rank
2354 Sort the group buffer by group rank
2355 (@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
2358 @kindex G S m (Group)
2359 @findex gnus-group-sort-groups-by-method
2360 Sort the group buffer alphabetically by backend name
2361 (@code{gnus-group-sort-groups-by-method}).
2365 All the commands below obeys the process/prefix convention
2366 (@pxref{Process/Prefix}).
2368 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
2369 commands will sort in reverse order.
2371 You can also sort a subset of the groups:
2375 @kindex G P a (Group)
2376 @findex gnus-group-sort-selected-groups-by-alphabet
2377 Sort the groups alphabetically by group name
2378 (@code{gnus-group-sort-selected-groups-by-alphabet}).
2381 @kindex G P u (Group)
2382 @findex gnus-group-sort-selected-groups-by-unread
2383 Sort the groups by the number of unread articles
2384 (@code{gnus-group-sort-selected-groups-by-unread}).
2387 @kindex G P l (Group)
2388 @findex gnus-group-sort-selected-groups-by-level
2389 Sort the groups by group level
2390 (@code{gnus-group-sort-selected-groups-by-level}).
2393 @kindex G P v (Group)
2394 @findex gnus-group-sort-selected-groups-by-score
2395 Sort the groups by group score
2396 (@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
2399 @kindex G P r (Group)
2400 @findex gnus-group-sort-selected-groups-by-rank
2401 Sort the groups by group rank
2402 (@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
2405 @kindex G P m (Group)
2406 @findex gnus-group-sort-selected-groups-by-method
2407 Sort the groups alphabetically by backend name
2408 (@code{gnus-group-sort-selected-groups-by-method}).
2414 @node Group Maintenance
2415 @section Group Maintenance
2416 @cindex bogus groups
2421 @findex gnus-group-check-bogus-groups
2422 Find bogus groups and delete them
2423 (@code{gnus-group-check-bogus-groups}).
2427 @findex gnus-group-find-new-groups
2428 Find new groups and process them (@code{gnus-group-find-new-groups}).
2429 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
2430 for new groups. With 2 @kbd{C-u}'s, use most complete method possible
2431 to query the server for new groups, and subscribe the new groups as
2435 @kindex C-c C-x (Group)
2436 @findex gnus-group-expire-articles
2437 Run all expirable articles in the current group through the expiry
2438 process (if any) (@code{gnus-group-expire-articles}).
2441 @kindex C-c M-C-x (Group)
2442 @findex gnus-group-expire-all-groups
2443 Run all articles in all groups through the expiry process
2444 (@code{gnus-group-expire-all-groups}).
2449 @node Browse Foreign Server
2450 @section Browse Foreign Server
2451 @cindex foreign servers
2452 @cindex browsing servers
2457 @findex gnus-group-browse-foreign-server
2458 You will be queried for a select method and a server name. Gnus will
2459 then attempt to contact this server and let you browse the groups there
2460 (@code{gnus-group-browse-foreign-server}).
2463 @findex gnus-browse-mode
2464 A new buffer with a list of available groups will appear. This buffer
2465 will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
2466 a lot) like a normal group buffer.
2468 Here's a list of keystrokes available in the browse mode:
2473 @findex gnus-group-next-group
2474 Go to the next group (@code{gnus-group-next-group}).
2478 @findex gnus-group-prev-group
2479 Go to the previous group (@code{gnus-group-prev-group}).
2482 @kindex SPACE (Browse)
2483 @findex gnus-browse-read-group
2484 Enter the current group and display the first article
2485 (@code{gnus-browse-read-group}).
2488 @kindex RET (Browse)
2489 @findex gnus-browse-select-group
2490 Enter the current group (@code{gnus-browse-select-group}).
2494 @findex gnus-browse-unsubscribe-current-group
2495 Unsubscribe to the current group, or, as will be the case here,
2496 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
2502 @findex gnus-browse-exit
2503 Exit browse mode (@code{gnus-browse-exit}).
2507 @findex gnus-browse-describe-briefly
2508 Describe browse mode briefly (well, there's not much to describe, is
2509 there) (@code{gnus-browse-describe-briefly}).
2514 @section Exiting Gnus
2515 @cindex exiting Gnus
2517 Yes, Gnus is ex(c)iting.
2522 @findex gnus-group-suspend
2523 Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
2524 but it kills all buffers except the Group buffer. I'm not sure why this
2525 is a gain, but then who am I to judge?
2529 @findex gnus-group-exit
2530 @c @icon{gnus-group-exit}
2531 Quit Gnus (@code{gnus-group-exit}).
2535 @findex gnus-group-quit
2536 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
2537 The dribble file will be saved, though (@pxref{Auto Save}).
2540 @vindex gnus-exit-gnus-hook
2541 @vindex gnus-suspend-gnus-hook
2542 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
2543 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
2544 @code{gnus-after-exiting-gnus-hook} is called as the final item when
2549 If you wish to completely unload Gnus and all its adherents, you can use
2550 the @code{gnus-unload} command. This command is also very handy when
2551 trying to customize meta-variables.
2556 Miss Lisa Cannifax, while sitting in English class, felt her feet go
2557 numbly heavy and herself fall into a hazy trance as the boy sitting
2558 behind her drew repeated lines with his pencil across the back of her
2564 @section Group Topics
2567 If you read lots and lots of groups, it might be convenient to group
2568 them hierarchically according to topics. You put your Emacs groups over
2569 here, your sex groups over there, and the rest (what, two groups or so?)
2570 you put in some misc section that you never bother with anyway. You can
2571 even group the Emacs sex groups as a sub-topic to either the Emacs
2572 groups or the sex groups---or both! Go wild!
2576 \gnusfigure{Group Topics}{400}{
2577 \put(75,50){\epsfig{figure=tmp/group-topic.ps,height=9cm}}
2588 2: alt.religion.emacs
2591 0: comp.talk.emacs.recovery
2593 8: comp.binaries.fractals
2594 13: comp.sources.unix
2597 @findex gnus-topic-mode
2599 To get this @emph{fab} functionality you simply turn on (ooh!) the
2600 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
2601 is a toggling command.)
2603 Go ahead, just try it. I'll still be here when you get back. La de
2604 dum... Nice tune, that... la la la... What, you're back? Yes, and now
2605 press @kbd{l}. There. All your groups are now listed under
2606 @samp{misc}. Doesn't that make you feel all warm and fuzzy? Hot and
2609 If you want this permanently enabled, you should add that minor mode to
2610 the hook for the group mode:
2613 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
2617 * Topic Variables:: How to customize the topics the Lisp Way.
2618 * Topic Commands:: Interactive E-Z commands.
2619 * Topic Sorting:: Sorting each topic individually.
2620 * Topic Topology:: A map of the world.
2621 * Topic Parameters:: Parameters that apply to all groups in a topic.
2625 @node Topic Variables
2626 @subsection Topic Variables
2627 @cindex topic variables
2629 Now, if you select a topic, it will fold/unfold that topic, which is
2630 really neat, I think.
2632 @vindex gnus-topic-line-format
2633 The topic lines themselves are created according to the
2634 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
2647 Number of groups in the topic.
2649 Number of unread articles in the topic.
2651 Number of unread articles in the topic and all its subtopics.
2654 @vindex gnus-topic-indent-level
2655 Each sub-topic (and the groups in the sub-topics) will be indented with
2656 @code{gnus-topic-indent-level} times the topic level number of spaces.
2659 @vindex gnus-topic-mode-hook
2660 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
2662 @vindex gnus-topic-display-empty-topics
2663 The @code{gnus-topic-display-empty-topics} says whether to display even
2664 topics that have no unread articles in them. The default is @code{t}.
2667 @node Topic Commands
2668 @subsection Topic Commands
2669 @cindex topic commands
2671 When the topic minor mode is turned on, a new @kbd{T} submap will be
2672 available. In addition, a few of the standard keys change their
2673 definitions slightly.
2679 @findex gnus-topic-create-topic
2680 Prompt for a new topic name and create it
2681 (@code{gnus-topic-create-topic}).
2685 @findex gnus-topic-move-group
2686 Move the current group to some other topic
2687 (@code{gnus-topic-move-group}). This command uses the process/prefix
2688 convention (@pxref{Process/Prefix}).
2692 @findex gnus-topic-copy-group
2693 Copy the current group to some other topic
2694 (@code{gnus-topic-copy-group}). This command uses the process/prefix
2695 convention (@pxref{Process/Prefix}).
2699 @findex gnus-topic-remove-group
2700 Remove a group from the current topic (@code{gnus-topic-remove-group}).
2701 This command is mainly useful if you have the same group in several
2702 topics and wish to remove it from one of the topics. You may also
2703 remove a group from all topics, but in that case, Gnus will add it to
2704 the root topic the next time you start Gnus. In fact, all new groups
2705 (which, naturally, don't belong to any topic) will show up in the root
2708 This command uses the process/prefix convention
2709 (@pxref{Process/Prefix}).
2713 @findex gnus-topic-move-matching
2714 Move all groups that match some regular expression to a topic
2715 (@code{gnus-topic-move-matching}).
2719 @findex gnus-topic-copy-matching
2720 Copy all groups that match some regular expression to a topic
2721 (@code{gnus-topic-copy-matching}).
2725 @findex gnus-topic-toggle-display-empty-topics
2726 Toggle hiding empty topics
2727 (@code{gnus-topic-toggle-display-empty-topics}).
2731 @findex gnus-topic-mark-topic
2732 Mark all groups in the current topic with the process mark
2733 (@code{gnus-topic-mark-topic}).
2736 @kindex T M-# (Topic)
2737 @findex gnus-topic-unmark-topic
2738 Remove the process mark from all groups in the current topic
2739 (@code{gnus-topic-unmark-topic}).
2743 @findex gnus-topic-select-group
2745 Either select a group or fold a topic (@code{gnus-topic-select-group}).
2746 When you perform this command on a group, you'll enter the group, as
2747 usual. When done on a topic line, the topic will be folded (if it was
2748 visible) or unfolded (if it was folded already). So it's basically a
2749 toggling command on topics. In addition, if you give a numerical
2750 prefix, group on that level (and lower) will be displayed.
2754 @kindex T TAB (Topic)
2756 @findex gnus-topic-indent
2757 ``Indent'' the current topic so that it becomes a sub-topic of the
2758 previous topic (@code{gnus-topic-indent}). If given a prefix,
2759 ``un-indent'' the topic instead.
2762 @kindex M-TAB (Topic)
2763 @findex gnus-topic-unindent
2764 ``Un-indent'' the current topic so that it becomes a sub-topic of the
2765 parent of its current parent (@code{gnus-topic-unindent}).
2769 @findex gnus-topic-kill-group
2770 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
2771 topic will be removed along with the topic.
2775 @findex gnus-topic-yank-group
2776 Yank the previously killed group or topic
2777 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
2782 @findex gnus-topic-rename
2783 Rename a topic (@code{gnus-topic-rename}).
2786 @kindex T DEL (Topic)
2787 @findex gnus-topic-delete
2788 Delete an empty topic (@code{gnus-topic-delete}).
2792 @findex gnus-topic-list-active
2793 List all groups that Gnus knows about in a topics-ified way
2794 (@code{gnus-topic-list-active}).
2798 @findex gnus-topic-edit-parameters
2799 @cindex group parameters
2800 @cindex topic parameters
2802 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
2803 @xref{Topic Parameters}.
2809 @subsection Topic Sorting
2810 @cindex topic sorting
2812 You can sort the groups in each topic individually with the following
2818 @kindex T S a (Topic)
2819 @findex gnus-topic-sort-groups-by-alphabet
2820 Sort the current topic alphabetically by group name
2821 (@code{gnus-topic-sort-groups-by-alphabet}).
2824 @kindex T S u (Topic)
2825 @findex gnus-topic-sort-groups-by-unread
2826 Sort the current topic by the number of unread articles
2827 (@code{gnus-topic-sort-groups-by-unread}).
2830 @kindex T S l (Topic)
2831 @findex gnus-topic-sort-groups-by-level
2832 Sort the current topic by group level
2833 (@code{gnus-topic-sort-groups-by-level}).
2836 @kindex T S v (Topic)
2837 @findex gnus-topic-sort-groups-by-score
2838 Sort the current topic by group score
2839 (@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
2842 @kindex T S r (Topic)
2843 @findex gnus-topic-sort-groups-by-rank
2844 Sort the current topic by group rank
2845 (@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
2848 @kindex T S m (Topic)
2849 @findex gnus-topic-sort-groups-by-method
2850 Sort the current topic alphabetically by backend name
2851 (@code{gnus-topic-sort-groups-by-method}).
2855 @xref{Sorting Groups} for more information about group sorting.
2858 @node Topic Topology
2859 @subsection Topic Topology
2860 @cindex topic topology
2863 So, let's have a look at an example group buffer:
2869 2: alt.religion.emacs
2872 0: comp.talk.emacs.recovery
2874 8: comp.binaries.fractals
2875 13: comp.sources.unix
2878 So, here we have one top-level topic (@samp{Gnus}), two topics under
2879 that, and one sub-topic under one of the sub-topics. (There is always
2880 just one (1) top-level topic). This topology can be expressed as
2885 (("Emacs -- I wuw it!" visible)
2886 (("Naughty Emacs" visible)))
2890 @vindex gnus-topic-topology
2891 This is in fact how the variable @code{gnus-topic-topology} would look
2892 for the display above. That variable is saved in the @file{.newsrc.eld}
2893 file, and shouldn't be messed with manually---unless you really want
2894 to. Since this variable is read from the @file{.newsrc.eld} file,
2895 setting it in any other startup files will have no effect.
2897 This topology shows what topics are sub-topics of what topics (right),
2898 and which topics are visible. Two settings are currently
2899 allowed---@code{visible} and @code{invisible}.
2902 @node Topic Parameters
2903 @subsection Topic Parameters
2904 @cindex topic parameters
2906 All groups in a topic will inherit group parameters from the parent (and
2907 ancestor) topic parameters. All valid group parameters are valid topic
2908 parameters (@pxref{Group Parameters}).
2910 Group parameters (of course) override topic parameters, and topic
2911 parameters in sub-topics override topic parameters in super-topics. You
2912 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
2913 verb, although you may feel free to disagree with me here.)
2919 2: alt.religion.emacs
2923 0: comp.talk.emacs.recovery
2925 8: comp.binaries.fractals
2926 13: comp.sources.unix
2930 The @samp{Emacs} topic has the topic parameter @code{(score-file
2931 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
2932 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
2933 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
2934 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
2935 . "religion.SCORE")}.
2937 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
2938 will get the @file{relief.SCORE} home score file. If you enter the same
2939 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
2940 score file. If you enter the group @samp{alt.religion.emacs}, you'll
2941 get the @file{religion.SCORE} home score file.
2943 This seems rather simple and self-evident, doesn't it? Well, yes. But
2944 there are some problems, especially with the @code{total-expiry}
2945 parameter. Say you have a mail group in two topics; one with
2946 @code{total-expiry} and one without. What happens when you do @kbd{M-x
2947 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
2948 of these topics you mean to expire articles from, so anything may
2949 happen. In fact, I hereby declare that it is @dfn{undefined} what
2950 happens. You just have to be careful if you do stuff like that.
2953 @node Misc Group Stuff
2954 @section Misc Group Stuff
2957 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
2958 * Group Information:: Information and help on groups and Gnus.
2959 * Group Timestamp:: Making Gnus keep track of when you last read a group.
2960 * File Commands:: Reading and writing the Gnus files.
2967 @findex gnus-group-enter-server-mode
2968 Enter the server buffer (@code{gnus-group-enter-server-mode}).
2969 @xref{The Server Buffer}.
2973 @findex gnus-group-post-news
2974 Post an article to a group (@code{gnus-group-post-news}). If given a
2975 prefix, the current group name will be used as the default.
2979 @findex gnus-group-mail
2980 Mail a message somewhere (@code{gnus-group-mail}).
2984 Variables for the group buffer:
2988 @item gnus-group-mode-hook
2989 @vindex gnus-group-mode-hook
2990 is called after the group buffer has been
2993 @item gnus-group-prepare-hook
2994 @vindex gnus-group-prepare-hook
2995 is called after the group buffer is
2996 generated. It may be used to modify the buffer in some strange,
2999 @item gnus-group-prepared-hook
3000 @vindex gnus-group-prepare-hook
3001 is called as the very last thing after the group buffer has been
3002 generated. It may be used to move point around, for instance.
3004 @item gnus-permanently-visible-groups
3005 @vindex gnus-permanently-visible-groups
3006 Groups matching this regexp will always be listed in the group buffer,
3007 whether they are empty or not.
3012 @node Scanning New Messages
3013 @subsection Scanning New Messages
3014 @cindex new messages
3015 @cindex scanning new news
3021 @findex gnus-group-get-new-news
3022 @c @icon{gnus-group-get-new-news}
3023 Check the server(s) for new articles. If the numerical prefix is used,
3024 this command will check only groups of level @var{arg} and lower
3025 (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
3026 command will force a total re-reading of the active file(s) from the
3031 @findex gnus-group-get-new-news-this-group
3032 @vindex gnus-goto-next-group-when-activating
3033 @c @icon{gnus-group-get-new-news-this-group}
3034 Check whether new articles have arrived in the current group
3035 (@code{gnus-group-get-new-news-this-group}).
3036 @code{gnus-goto-next-group-when-activating} says whether this command is
3037 to move point to the next group or not. It is @code{t} by default.
3039 @findex gnus-activate-all-groups
3040 @cindex activating groups
3042 @kindex C-c M-g (Group)
3043 Activate absolutely all groups (@code{gnus-activate-all-groups}).
3048 @findex gnus-group-restart
3049 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
3050 file(s), closes the connection to all servers, clears up all run-time
3051 Gnus variables, and then starts Gnus all over again.
3055 @vindex gnus-get-new-news-hook
3056 @code{gnus-get-new-news-hook} is run just before checking for new news.
3058 @vindex gnus-after-getting-new-news-hook
3059 @code{gnus-after-getting-new-news-hook} is run after checking for new
3063 @node Group Information
3064 @subsection Group Information
3065 @cindex group information
3066 @cindex information on groups
3073 @findex gnus-group-fetch-faq
3074 @vindex gnus-group-faq-directory
3077 Try to fetch the FAQ for the current group
3078 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from
3079 @code{gnus-group-faq-directory}, which is usually a directory on a
3080 remote machine. This variable can also be a list of directories. In
3081 that case, giving a prefix to this command will allow you to choose
3082 between the various sites. @code{ange-ftp} (or @code{efs}) will be used
3083 for fetching the file.
3085 If fetching from the first site is unsuccessful, Gnus will attempt to go
3086 through @code{gnus-group-faq-directory} and try to open them one by one.
3090 @c @icon{gnus-group-describe-group}
3092 @kindex C-c C-d (Group)
3093 @cindex describing groups
3094 @cindex group description
3095 @findex gnus-group-describe-group
3096 Describe the current group (@code{gnus-group-describe-group}). If given
3097 a prefix, force Gnus to re-read the description from the server.
3101 @findex gnus-group-describe-all-groups
3102 Describe all groups (@code{gnus-group-describe-all-groups}). If given a
3103 prefix, force Gnus to re-read the description file from the server.
3110 @findex gnus-version
3111 Display current Gnus version numbers (@code{gnus-version}).
3115 @findex gnus-group-describe-briefly
3116 Give a very short help message (@code{gnus-group-describe-briefly}).
3119 @kindex C-c C-i (Group)
3122 @findex gnus-info-find-node
3123 Go to the Gnus info node (@code{gnus-info-find-node}).
3127 @node Group Timestamp
3128 @subsection Group Timestamp
3130 @cindex group timestamps
3132 It can be convenient to let Gnus keep track of when you last read a
3133 group. To set the ball rolling, you should add
3134 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
3137 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
3140 After doing this, each time you enter a group, it'll be recorded.
3142 This information can be displayed in various ways---the easiest is to
3143 use the @samp{%d} spec in the group line format:
3146 (setq gnus-group-line-format
3147 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
3150 This will result in lines looking like:
3153 * 0: mail.ding 19961002T012943
3154 0: custom 19961002T012713
3157 As you can see, the date is displayed in compact ISO 8601 format. This
3158 may be a bit too much, so to just display the date, you could say
3162 (setq gnus-group-line-format
3163 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
3168 @subsection File Commands
3169 @cindex file commands
3175 @findex gnus-group-read-init-file
3176 @vindex gnus-init-file
3177 @cindex reading init file
3178 Re-read the init file (@code{gnus-init-file}, which defaults to
3179 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
3183 @findex gnus-group-save-newsrc
3184 @cindex saving .newsrc
3185 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
3186 (@code{gnus-group-save-newsrc}). If given a prefix, force saving the
3187 file(s) whether Gnus thinks it is necessary or not.
3190 @c @kindex Z (Group)
3191 @c @findex gnus-group-clear-dribble
3192 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
3197 @node The Summary Buffer
3198 @chapter The Summary Buffer
3199 @cindex summary buffer
3201 A line for each article is displayed in the summary buffer. You can
3202 move around, read articles, post articles and reply to articles.
3204 The most common way to a summary buffer is to select a group from the
3205 group buffer (@pxref{Selecting a Group}).
3207 You can have as many summary buffers open as you wish.
3210 * Summary Buffer Format:: Deciding how the summary buffer is to look.
3211 * Summary Maneuvering:: Moving around the summary buffer.
3212 * Choosing Articles:: Reading articles.
3213 * Paging the Article:: Scrolling the current article.
3214 * Reply Followup and Post:: Posting articles.
3215 * Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
3216 * Marking Articles:: Marking articles as read, expirable, etc.
3217 * Limiting:: You can limit the summary buffer.
3218 * Threading:: How threads are made.
3219 * Sorting:: How articles and threads are sorted.
3220 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
3221 * Article Caching:: You may store articles in a cache.
3222 * Persistent Articles:: Making articles expiry-resistant.
3223 * Article Backlog:: Having already read articles hang around.
3224 * Saving Articles:: Ways of customizing article saving.
3225 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
3226 * Article Treatment:: The article buffer can be mangled at will.
3227 * MIME Commands:: Doing MIMEy things with the articles.
3228 * Article Commands:: Doing various things with the article buffer.
3229 * Summary Sorting:: Sorting the summary buffer in various ways.
3230 * Finding the Parent:: No child support? Get the parent.
3231 * Alternative Approaches:: Reading using non-default summaries.
3232 * Tree Display:: A more visual display of threads.
3233 * Mail Group Commands:: Some commands can only be used in mail groups.
3234 * Various Summary Stuff:: What didn't fit anywhere else.
3235 * Exiting the Summary Buffer:: Returning to the Group buffer.
3236 * Crosspost Handling:: How crossposted articles are dealt with.
3237 * Duplicate Suppression:: An alternative when crosspost handling fails.
3241 @node Summary Buffer Format
3242 @section Summary Buffer Format
3243 @cindex summary buffer format
3247 \gnusfigure{The Summary Buffer}{180}{
3248 \put(0,0){\epsfig{figure=tmp/summary.ps,width=7.5cm}}
3249 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-article.ps,width=7.5cm}}}
3255 * Summary Buffer Lines:: You can specify how summary lines should look.
3256 * Summary Buffer Mode Line:: You can say how the mode line should look.
3257 * Summary Highlighting:: Making the summary buffer all pretty and nice.
3260 @findex mail-extract-address-components
3261 @findex gnus-extract-address-components
3262 @vindex gnus-extract-address-components
3263 Gnus will use the value of the @code{gnus-extract-address-components}
3264 variable as a function for getting the name and address parts of a
3265 @code{From} header. Two pre-defined functions exist:
3266 @code{gnus-extract-address-components}, which is the default, quite
3267 fast, and too simplistic solution; and
3268 @code{mail-extract-address-components}, which works very nicely, but is
3269 slower. The default function will return the wrong answer in 5% of the
3270 cases. If this is unacceptable to you, use the other function instead:
3273 (setq gnus-extract-address-components
3274 'mail-extract-address-components)
3277 @vindex gnus-summary-same-subject
3278 @code{gnus-summary-same-subject} is a string indicating that the current
3279 article has the same subject as the previous. This string will be used
3280 with those specs that require it. The default is @code{""}.
3283 @node Summary Buffer Lines
3284 @subsection Summary Buffer Lines
3286 @vindex gnus-summary-line-format
3287 You can change the format of the lines in the summary buffer by changing
3288 the @code{gnus-summary-line-format} variable. It works along the same
3289 lines as a normal @code{format} string, with some extensions
3290 (@pxref{Formatting Variables}).
3292 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
3294 The following format specification characters are understood:
3302 Subject if the article is the root of the thread or the previous article
3303 had a different subject, @code{gnus-summary-same-subject} otherwise.
3304 (@code{gnus-summary-same-subject} defaults to @code{""}.)
3306 Full @code{From} header.
3308 The name (from the @code{From} header).
3310 The name (from the @code{From} header). This differs from the @code{n}
3311 spec in that it uses the function designated by the
3312 @code{gnus-extract-address-components} variable, which is slower, but
3313 may be more thorough.
3315 The address (from the @code{From} header). This works the same way as
3318 Number of lines in the article.
3320 Number of characters in the article.
3322 Indentation based on thread level (@pxref{Customizing Threading}).
3324 Nothing if the article is a root and lots of spaces if it isn't (it
3325 pushes everything after it off the screen).
3327 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
3328 for adopted articles (@pxref{Customizing Threading}).
3330 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
3331 for adopted articles.
3333 One space for each thread level.
3335 Twenty minus thread level spaces.
3340 This misleadingly named specifier is the @dfn{secondary mark}. This
3341 mark will say whether the article has been replied to, has been cached,
3345 Score as a number (@pxref{Scoring}).
3347 @vindex gnus-summary-zcore-fuzz
3348 Zcore, @samp{+} if above the default level and @samp{-} if below the
3349 default level. If the difference between
3350 @code{gnus-summary-default-score} and the score is less than
3351 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
3359 The @code{Date} in @code{DD-MMM} format.
3361 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
3367 Number of articles in the current sub-thread. Using this spec will slow
3368 down summary buffer generation somewhat.
3370 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3371 article has any children.
3377 User defined specifier. The next character in the format string should
3378 be a letter. Gnus will call the function
3379 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
3380 following @samp{%u}. The function will be passed the current header as
3381 argument. The function should return a string, which will be inserted
3382 into the summary just like information from any other summary specifier.
3385 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
3386 have to be handled with care. For reasons of efficiency, Gnus will
3387 compute what column these characters will end up in, and ``hard-code''
3388 that. This means that it is invalid to have these specs after a
3389 variable-length spec. Well, you might not be arrested, but your summary
3390 buffer will look strange, which is bad enough.
3392 The smart choice is to have these specs as far to the left as possible.
3393 (Isn't that the case with everything, though? But I digress.)
3395 This restriction may disappear in later versions of Gnus.
3398 @node Summary Buffer Mode Line
3399 @subsection Summary Buffer Mode Line
3401 @vindex gnus-summary-mode-line-format
3402 You can also change the format of the summary mode bar (@pxref{Mode Line
3403 Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
3404 like. The default is @samp{Gnus: %%b [%A] %Z}.
3406 Here are the elements you can play with:
3412 Unprefixed group name.
3414 Current article number.
3416 Current article score.
3420 Number of unread articles in this group.
3422 Number of unread articles in this group that aren't displayed in the
3425 A string with the number of unread and unselected articles represented
3426 either as @samp{<%U(+%e) more>} if there are both unread and unselected
3427 articles, and just as @samp{<%U more>} if there are just unread articles
3428 and no unselected ones.
3430 Shortish group name. For instance, @samp{rec.arts.anime} will be
3431 shortened to @samp{r.a.anime}.
3433 Subject of the current article.
3435 User-defined spec (@pxref{User-Defined Specs}).
3437 Name of the current score file (@pxref{Scoring}).
3439 Number of dormant articles (@pxref{Unread Articles}).
3441 Number of ticked articles (@pxref{Unread Articles}).
3443 Number of articles that have been marked as read in this session.
3445 Number of articles expunged by the score files.
3449 @node Summary Highlighting
3450 @subsection Summary Highlighting
3454 @item gnus-visual-mark-article-hook
3455 @vindex gnus-visual-mark-article-hook
3456 This hook is run after selecting an article. It is meant to be used for
3457 highlighting the article in some way. It is not run if
3458 @code{gnus-visual} is @code{nil}.
3460 @item gnus-summary-update-hook
3461 @vindex gnus-summary-update-hook
3462 This hook is called when a summary line is changed. It is not run if
3463 @code{gnus-visual} is @code{nil}.
3465 @item gnus-summary-selected-face
3466 @vindex gnus-summary-selected-face
3467 This is the face (or @dfn{font} as some people call it) used to
3468 highlight the current article in the summary buffer.
3470 @item gnus-summary-highlight
3471 @vindex gnus-summary-highlight
3472 Summary lines are highlighted according to this variable, which is a
3473 list where the elements are of the format @var{(FORM . FACE)}. If you
3474 would, for instance, like ticked articles to be italic and high-scored
3475 articles to be bold, you could set this variable to something like
3477 (((eq mark gnus-ticked-mark) . italic)
3478 ((> score default) . bold))
3480 As you may have guessed, if @var{FORM} returns a non-@code{nil} value,
3481 @var{FACE} will be applied to the line.
3485 @node Summary Maneuvering
3486 @section Summary Maneuvering
3487 @cindex summary movement
3489 All the straight movement commands understand the numeric prefix and
3490 behave pretty much as you'd expect.
3492 None of these commands select articles.
3497 @kindex M-n (Summary)
3498 @kindex G M-n (Summary)
3499 @findex gnus-summary-next-unread-subject
3500 Go to the next summary line of an unread article
3501 (@code{gnus-summary-next-unread-subject}).
3505 @kindex M-p (Summary)
3506 @kindex G M-p (Summary)
3507 @findex gnus-summary-prev-unread-subject
3508 Go to the previous summary line of an unread article
3509 (@code{gnus-summary-prev-unread-subject}).
3514 @kindex G j (Summary)
3515 @findex gnus-summary-goto-article
3516 Ask for an article number or @code{Message-ID}, and then go to that
3517 article (@code{gnus-summary-goto-article}).
3520 @kindex G g (Summary)
3521 @findex gnus-summary-goto-subject
3522 Ask for an article number and then go to the summary line of that article
3523 without displaying the article (@code{gnus-summary-goto-subject}).
3526 If Gnus asks you to press a key to confirm going to the next group, you
3527 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
3528 buffer, searching for the next group to read without actually returning
3529 to the group buffer.
3531 Variables related to summary movement:
3535 @vindex gnus-auto-select-next
3536 @item gnus-auto-select-next
3537 If you issue one of the movement commands (like @kbd{n}) and there are
3538 no more unread articles after the current one, Gnus will offer to go to
3539 the next group. If this variable is @code{t} and the next group is
3540 empty, Gnus will exit summary mode and return to the group buffer. If
3541 this variable is neither @code{t} nor @code{nil}, Gnus will select the
3542 next group, no matter whether it has any unread articles or not. As a
3543 special case, if this variable is @code{quietly}, Gnus will select the
3544 next group without asking for confirmation. If this variable is
3545 @code{almost-quietly}, the same will happen only if you are located on
3546 the last article in the group. Finally, if this variable is
3547 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
3548 without confirmation. Also @pxref{Group Levels}.
3550 @item gnus-auto-select-same
3551 @vindex gnus-auto-select-same
3552 If non-@code{nil}, all the movement commands will try to go to the next
3553 article with the same subject as the current. (@dfn{Same} here might
3554 mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
3555 for details (@pxref{Customizing Threading}).) If there are no more
3556 articles with the same subject, go to the first unread article.
3558 This variable is not particularly useful if you use a threaded display.
3560 @item gnus-summary-check-current
3561 @vindex gnus-summary-check-current
3562 If non-@code{nil}, all the ``unread'' movement commands will not proceed
3563 to the next (or previous) article if the current article is unread.
3564 Instead, they will choose the current article.
3566 @item gnus-auto-center-summary
3567 @vindex gnus-auto-center-summary
3568 If non-@code{nil}, Gnus will keep the point in the summary buffer
3569 centered at all times. This makes things quite tidy, but if you have a
3570 slow network connection, or simply do not like this un-Emacsism, you can
3571 set this variable to @code{nil} to get the normal Emacs scrolling
3572 action. This will also inhibit horizontal re-centering of the summary
3573 buffer, which might make it more inconvenient to read extremely long
3579 @node Choosing Articles
3580 @section Choosing Articles
3581 @cindex selecting articles
3584 * Choosing Commands:: Commands for choosing articles.
3585 * Choosing Variables:: Variables that influence these commands.
3589 @node Choosing Commands
3590 @subsection Choosing Commands
3592 None of the following movement commands understand the numeric prefix,
3593 and they all select and display an article.
3597 @kindex SPACE (Summary)
3598 @findex gnus-summary-next-page
3599 Select the current article, or, if that one's read already, the next
3600 unread article (@code{gnus-summary-next-page}).
3605 @kindex G n (Summary)
3606 @findex gnus-summary-next-unread-article
3607 @c @icon{gnus-summary-next-unread}
3608 Go to next unread article (@code{gnus-summary-next-unread-article}).
3613 @findex gnus-summary-prev-unread-article
3614 @c @icon{gnus-summary-prev-unread}
3615 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
3620 @kindex G N (Summary)
3621 @findex gnus-summary-next-article
3622 Go to the next article (@code{gnus-summary-next-article}).
3627 @kindex G P (Summary)
3628 @findex gnus-summary-prev-article
3629 Go to the previous article (@code{gnus-summary-prev-article}).
3632 @kindex G C-n (Summary)
3633 @findex gnus-summary-next-same-subject
3634 Go to the next article with the same subject
3635 (@code{gnus-summary-next-same-subject}).
3638 @kindex G C-p (Summary)
3639 @findex gnus-summary-prev-same-subject
3640 Go to the previous article with the same subject
3641 (@code{gnus-summary-prev-same-subject}).
3645 @kindex G f (Summary)
3647 @findex gnus-summary-first-unread-article
3648 Go to the first unread article
3649 (@code{gnus-summary-first-unread-article}).
3653 @kindex G b (Summary)
3655 @findex gnus-summary-best-unread-article
3656 Go to the article with the highest score
3657 (@code{gnus-summary-best-unread-article}).
3662 @kindex G l (Summary)
3663 @findex gnus-summary-goto-last-article
3664 Go to the previous article read (@code{gnus-summary-goto-last-article}).
3667 @kindex G o (Summary)
3668 @findex gnus-summary-pop-article
3670 @cindex article history
3671 Pop an article off the summary history and go to this article
3672 (@code{gnus-summary-pop-article}). This command differs from the
3673 command above in that you can pop as many previous articles off the
3674 history as you like, while @kbd{l} toggles the two last read articles.
3675 For a somewhat related issue (if you use these commands a lot),
3676 @pxref{Article Backlog}.
3680 @node Choosing Variables
3681 @subsection Choosing Variables
3683 Some variables relevant for moving and selecting articles:
3686 @item gnus-auto-extend-newsgroup
3687 @vindex gnus-auto-extend-newsgroup
3688 All the movement commands will try to go to the previous (or next)
3689 article, even if that article isn't displayed in the Summary buffer if
3690 this variable is non-@code{nil}. Gnus will then fetch the article from
3691 the server and display it in the article buffer.
3693 @item gnus-select-article-hook
3694 @vindex gnus-select-article-hook
3695 This hook is called whenever an article is selected. By default it
3696 exposes any threads hidden under the selected article.
3698 @item gnus-mark-article-hook
3699 @vindex gnus-mark-article-hook
3700 @findex gnus-summary-mark-unread-as-read
3701 @findex gnus-summary-mark-read-and-unread-as-read
3702 @findex gnus-unread-mark
3703 This hook is called whenever an article is selected. It is intended to
3704 be used for marking articles as read. The default value is
3705 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
3706 mark of almost any article you read to @code{gnus-unread-mark}. The
3707 only articles not affected by this function are ticked, dormant, and
3708 expirable articles. If you'd instead like to just have unread articles
3709 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
3710 instead. It will leave marks like @code{gnus-low-score-mark},
3711 @code{gnus-del-mark} (and so on) alone.
3716 @node Paging the Article
3717 @section Scrolling the Article
3718 @cindex article scrolling
3723 @kindex SPACE (Summary)
3724 @findex gnus-summary-next-page
3725 Pressing @kbd{SPACE} will scroll the current article forward one page,
3726 or, if you have come to the end of the current article, will choose the
3727 next article (@code{gnus-summary-next-page}).
3730 @kindex DEL (Summary)
3731 @findex gnus-summary-prev-page
3732 Scroll the current article back one page (@code{gnus-summary-prev-page}).
3735 @kindex RET (Summary)
3736 @findex gnus-summary-scroll-up
3737 Scroll the current article one line forward
3738 (@code{gnus-summary-scroll-up}).
3741 @kindex M-RET (Summary)
3742 @findex gnus-summary-scroll-down
3743 Scroll the current article one line backward
3744 (@code{gnus-summary-scroll-down}).
3748 @kindex A g (Summary)
3750 @findex gnus-summary-show-article
3751 (Re)fetch the current article (@code{gnus-summary-show-article}). If
3752 given a prefix, fetch the current article, but don't run any of the
3753 article treatment functions. This will give you a ``raw'' article, just
3754 the way it came from the server.
3759 @kindex A < (Summary)
3760 @findex gnus-summary-beginning-of-article
3761 Scroll to the beginning of the article
3762 (@code{gnus-summary-beginning-of-article}).
3767 @kindex A > (Summary)
3768 @findex gnus-summary-end-of-article
3769 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
3773 @kindex A s (Summary)
3775 @findex gnus-summary-isearch-article
3776 Perform an isearch in the article buffer
3777 (@code{gnus-summary-isearch-article}).
3781 @findex gnus-summary-select-article-buffer
3782 Select the article buffer (@code{gnus-summary-select-article-buffer}).
3787 @node Reply Followup and Post
3788 @section Reply, Followup and Post
3791 * Summary Mail Commands:: Sending mail.
3792 * Summary Post Commands:: Sending news.
3796 @node Summary Mail Commands
3797 @subsection Summary Mail Commands
3799 @cindex composing mail
3801 Commands for composing a mail message:
3807 @kindex S r (Summary)
3809 @findex gnus-summary-reply
3810 @c @icon{gnus-summary-mail-reply}
3811 @c @icon{gnus-summary-reply}
3812 Mail a reply to the author of the current article
3813 (@code{gnus-summary-reply}).
3818 @kindex S R (Summary)
3819 @findex gnus-summary-reply-with-original
3820 @c @icon{gnus-summary-reply-with-original}
3821 Mail a reply to the author of the current article and include the
3822 original message (@code{gnus-summary-reply-with-original}). This
3823 command uses the process/prefix convention.
3826 @kindex S w (Summary)
3827 @findex gnus-summary-wide-reply
3828 Mail a wide reply to the author of the current article
3829 (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
3830 goes out to all people listed in the @code{To}, @code{From} (or
3831 @code{Reply-to}) and @code{Cc} headers.
3834 @kindex S W (Summary)
3835 @findex gnus-summary-wide-reply-with-original
3836 Mail a wide reply to the current article and include the original
3837 message (@code{gnus-summary-reply-with-original}). This command uses
3838 the process/prefix convention.
3841 @kindex S o m (Summary)
3842 @findex gnus-summary-mail-forward
3843 @c @icon{gnus-summary-mail-forward}
3844 Forward the current article to some other person
3845 (@code{gnus-summary-mail-forward}). If given a prefix, include the full
3846 headers of the forwarded article.
3851 @kindex S m (Summary)
3852 @findex gnus-summary-mail-other-window
3853 @c @icon{gnus-summary-mail-originate}
3854 Send a mail to some other person
3855 (@code{gnus-summary-mail-other-window}).
3858 @kindex S D b (Summary)
3859 @findex gnus-summary-resend-bounced-mail
3860 @cindex bouncing mail
3861 If you have sent a mail, but the mail was bounced back to you for some
3862 reason (wrong address, transient failure), you can use this command to
3863 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
3864 will be popped into a mail buffer where you can edit the headers before
3865 sending the mail off again. If you give a prefix to this command, and
3866 the bounced mail is a reply to some other mail, Gnus will try to fetch
3867 that mail and display it for easy perusal of its headers. This might
3868 very well fail, though.
3871 @kindex S D r (Summary)
3872 @findex gnus-summary-resend-message
3873 Not to be confused with the previous command,
3874 @code{gnus-summary-resend-message} will prompt you for an address to
3875 send the current message off to, and then send it to that place. The
3876 headers of the message won't be altered---but lots of headers that say
3877 @code{Resent-To}, @code{Resent-From} and so on will be added. This
3878 means that you actually send a mail to someone that has a @code{To}
3879 header that (probably) points to yourself. This will confuse people.
3880 So, natcherly you'll only do that if you're really eVIl.
3882 This command is mainly used if you have several accounts and want to
3883 ship a mail to a different account of yours. (If you're both
3884 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
3885 to the @code{root} account, you may want to resend it to
3886 @code{postmaster}. Ordnung muß sein!
3888 This command understands the process/prefix convention
3889 (@pxref{Process/Prefix}).
3892 @kindex S O m (Summary)
3893 @findex gnus-uu-digest-mail-forward
3894 Digest the current series (@pxref{Decoding Articles}) and forward the
3895 result using mail (@code{gnus-uu-digest-mail-forward}). This command
3896 uses the process/prefix convention (@pxref{Process/Prefix}).
3899 @kindex S M-c (Summary)
3900 @findex gnus-summary-mail-crosspost-complaint
3901 @cindex crossposting
3902 @cindex excessive crossposting
3903 Send a complaint about excessive crossposting to the author of the
3904 current article (@code{gnus-summary-mail-crosspost-complaint}).
3906 @findex gnus-crosspost-complaint
3907 This command is provided as a way to fight back against the current
3908 crossposting pandemic that's sweeping Usenet. It will compose a reply
3909 using the @code{gnus-crosspost-complaint} variable as a preamble. This
3910 command understands the process/prefix convention
3911 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
3915 Also @pxref{(message)Header Commands} for more information.
3918 @node Summary Post Commands
3919 @subsection Summary Post Commands
3921 @cindex composing news
3923 Commands for posting a news article:
3929 @kindex S p (Summary)
3930 @findex gnus-summary-post-news
3931 @c @icon{gnus-summary-post-news}
3932 Post an article to the current group
3933 (@code{gnus-summary-post-news}).
3938 @kindex S f (Summary)
3939 @findex gnus-summary-followup
3940 @c @icon{gnus-summary-followup}
3941 Post a followup to the current article (@code{gnus-summary-followup}).
3945 @kindex S F (Summary)
3947 @c @icon{gnus-summary-followup-with-original}
3948 @findex gnus-summary-followup-with-original
3949 Post a followup to the current article and include the original message
3950 (@code{gnus-summary-followup-with-original}). This command uses the
3951 process/prefix convention.
3954 @kindex S n (Summary)
3955 @findex gnus-summary-followup-to-mail
3956 Post a followup to the current article via news, even if you got the
3957 message through mail (@code{gnus-summary-followup-to-mail}).
3960 @kindex S N (Summary)
3961 @findex gnus-summary-followup-to-mail-with-original
3962 Post a followup to the current article via news, even if you got the
3963 message through mail and include the original message
3964 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
3965 the process/prefix convention.
3968 @kindex S o p (Summary)
3969 @findex gnus-summary-post-forward
3970 Forward the current article to a newsgroup
3971 (@code{gnus-summary-post-forward}). If given a prefix, include the full
3972 headers of the forwarded article.
3975 @kindex S O p (Summary)
3976 @findex gnus-uu-digest-post-forward
3978 @cindex making digests
3979 Digest the current series and forward the result to a newsgroup
3980 (@code{gnus-uu-digest-mail-forward}). This command uses the
3981 process/prefix convention.
3984 @kindex S u (Summary)
3985 @findex gnus-uu-post-news
3986 @c @icon{gnus-uu-post-news}
3987 Uuencode a file, split it into parts, and post it as a series
3988 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
3991 Also @pxref{(message)Header Commands} for more information.
3994 @node Canceling and Superseding
3995 @section Canceling Articles
3996 @cindex canceling articles
3997 @cindex superseding articles
3999 Have you ever written something, and then decided that you really,
4000 really, really wish you hadn't posted that?
4002 Well, you can't cancel mail, but you can cancel posts.
4004 @findex gnus-summary-cancel-article
4006 @c @icon{gnus-summary-cancel-article}
4007 Find the article you wish to cancel (you can only cancel your own
4008 articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
4009 c} (@code{gnus-summary-cancel-article}). Your article will be
4010 canceled---machines all over the world will be deleting your article.
4011 This command uses the process/prefix convention (@pxref{Process/Prefix}).
4013 Be aware, however, that not all sites honor cancels, so your article may
4014 live on here and there, while most sites will delete the article in
4017 Gnus will use the ``current'' select method when canceling. If you
4018 want to use the standard posting method, use the @samp{a} symbolic
4019 prefix (@pxref{Symbolic Prefixes}).
4021 If you discover that you have made some mistakes and want to do some
4022 corrections, you can post a @dfn{superseding} article that will replace
4023 your original article.
4025 @findex gnus-summary-supersede-article
4027 Go to the original article and press @kbd{S s}
4028 (@code{gnus-summary-supersede-article}). You will be put in a buffer
4029 where you can edit the article all you want before sending it off the
4032 The same goes for superseding as for canceling, only more so: Some
4033 sites do not honor superseding. On those sites, it will appear that you
4034 have posted almost the same article twice.
4036 If you have just posted the article, and change your mind right away,
4037 there is a trick you can use to cancel/supersede the article without
4038 waiting for the article to appear on your site first. You simply return
4039 to the post buffer (which is called @code{*sent ...*}). There you will
4040 find the article you just posted, with all the headers intact. Change
4041 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
4042 header by substituting one of those words for the word
4043 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
4044 you would do normally. The previous article will be
4045 canceled/superseded.
4047 Just remember, kids: There is no 'c' in 'supersede'.
4050 @node Marking Articles
4051 @section Marking Articles
4052 @cindex article marking
4053 @cindex article ticking
4056 There are several marks you can set on an article.
4058 You have marks that decide the @dfn{readedness} (whoo, neato-keano
4059 neologism ohoy!) of the article. Alphabetic marks generally mean
4060 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
4062 In addition, you also have marks that do not affect readedness.
4065 * Unread Articles:: Marks for unread articles.
4066 * Read Articles:: Marks for read articles.
4067 * Other Marks:: Marks that do not affect readedness.
4071 There's a plethora of commands for manipulating these marks:
4075 * Setting Marks:: How to set and remove marks.
4076 * Setting Process Marks:: How to mark articles for later processing.
4080 @node Unread Articles
4081 @subsection Unread Articles
4083 The following marks mark articles as (kinda) unread, in one form or
4088 @vindex gnus-ticked-mark
4089 Marked as ticked (@code{gnus-ticked-mark}).
4091 @dfn{Ticked articles} are articles that will remain visible always. If
4092 you see an article that you find interesting, or you want to put off
4093 reading it, or replying to it, until sometime later, you'd typically
4094 tick it. However, articles can be expired, so if you want to keep an
4095 article forever, you'll have to make it persistent (@pxref{Persistent
4099 @vindex gnus-dormant-mark
4100 Marked as dormant (@code{gnus-dormant-mark}).
4102 @dfn{Dormant articles} will only appear in the summary buffer if there
4103 are followups to it. If you want to see them even if they don't have
4104 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
4107 @vindex gnus-unread-mark
4108 Marked as unread (@code{gnus-unread-mark}).
4110 @dfn{Unread articles} are articles that haven't been read at all yet.
4115 @subsection Read Articles
4116 @cindex expirable mark
4118 All the following marks mark articles as read.
4123 @vindex gnus-del-mark
4124 These are articles that the user has marked as read with the @kbd{d}
4125 command manually, more or less (@code{gnus-del-mark}).
4128 @vindex gnus-read-mark
4129 Articles that have actually been read (@code{gnus-read-mark}).
4132 @vindex gnus-ancient-mark
4133 Articles that were marked as read in previous sessions and are now
4134 @dfn{old} (@code{gnus-ancient-mark}).
4137 @vindex gnus-killed-mark
4138 Marked as killed (@code{gnus-killed-mark}).
4141 @vindex gnus-kill-file-mark
4142 Marked as killed by kill files (@code{gnus-kill-file-mark}).
4145 @vindex gnus-low-score-mark
4146 Marked as read by having too low a score (@code{gnus-low-score-mark}).
4149 @vindex gnus-catchup-mark
4150 Marked as read by a catchup (@code{gnus-catchup-mark}).
4153 @vindex gnus-canceled-mark
4154 Canceled article (@code{gnus-canceled-mark})
4157 @vindex gnus-souped-mark
4158 @sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
4161 @vindex gnus-sparse-mark
4162 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
4166 @vindex gnus-duplicate-mark
4167 Article marked as read by duplicate suppression
4168 (@code{gnus-duplicated-mark}). @xref{Duplicate Suppression}.
4172 All these marks just mean that the article is marked as read, really.
4173 They are interpreted differently when doing adaptive scoring, though.
4175 One more special mark, though:
4179 @vindex gnus-expirable-mark
4180 Marked as expirable (@code{gnus-expirable-mark}).
4182 Marking articles as @dfn{expirable} (or have them marked as such
4183 automatically) doesn't make much sense in normal groups---a user doesn't
4184 control expiring of news articles, but in mail groups, for instance,
4185 articles marked as @dfn{expirable} can be deleted by Gnus at
4191 @subsection Other Marks
4192 @cindex process mark
4195 There are some marks that have nothing to do with whether the article is
4201 You can set a bookmark in the current article. Say you are reading a
4202 long thesis on cats' urinary tracts, and have to go home for dinner
4203 before you've finished reading the thesis. You can then set a bookmark
4204 in the article, and Gnus will jump to this bookmark the next time it
4205 encounters the article. @xref{Setting Marks}.
4208 @vindex gnus-replied-mark
4209 All articles that you have replied to or made a followup to (i.e., have
4210 answered) will be marked with an @samp{A} in the second column
4211 (@code{gnus-replied-mark}).
4214 @vindex gnus-cached-mark
4215 Articles stored in the article cache will be marked with an @samp{*} in
4216 the second column (@code{gnus-cached-mark}). @xref{Article Caching}.
4219 @vindex gnus-saved-mark
4220 Articles ``saved'' (in some manner or other; not necessarily
4221 religiously) are marked with an @samp{S} in the second column
4222 (@code{gnus-saved-mark}).
4225 @vindex gnus-not-empty-thread-mark
4226 @vindex gnus-empty-thread-mark
4227 If the @samp{%e} spec is used, the presence of threads or not will be
4228 marked with @code{gnus-not-empty-thread-mark} and
4229 @code{gnus-empty-thread-mark} in the third column, respectively.
4232 @vindex gnus-process-mark
4233 Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
4234 variety of commands react to the presence of the process mark. For
4235 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
4236 all articles that have been marked with the process mark. Articles
4237 marked with the process mark have a @samp{#} in the second column.
4241 You might have noticed that most of these ``non-readedness'' marks
4242 appear in the second column by default. So if you have a cached, saved,
4243 replied article that you have process-marked, what will that look like?
4245 Nothing much. The precedence rules go as follows: process -> cache ->
4246 replied -> saved. So if the article is in the cache and is replied,
4247 you'll only see the cache mark and not the replied mark.
4251 @subsection Setting Marks
4252 @cindex setting marks
4254 All the marking commands understand the numeric prefix.
4259 @kindex M c (Summary)
4260 @kindex M-u (Summary)
4261 @findex gnus-summary-clear-mark-forward
4262 @cindex mark as unread
4263 Clear all readedness-marks from the current article
4264 (@code{gnus-summary-clear-mark-forward}). In other words, mark the
4270 @kindex M t (Summary)
4271 @findex gnus-summary-tick-article-forward
4272 Tick the current article (@code{gnus-summary-tick-article-forward}).
4273 @xref{Article Caching}.
4278 @kindex M ? (Summary)
4279 @findex gnus-summary-mark-as-dormant
4280 Mark the current article as dormant
4281 (@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
4285 @kindex M d (Summary)
4287 @findex gnus-summary-mark-as-read-forward
4288 Mark the current article as read
4289 (@code{gnus-summary-mark-as-read-forward}).
4293 @findex gnus-summary-mark-as-read-backward
4294 Mark the current article as read and move point to the previous line
4295 (@code{gnus-summary-mark-as-read-backward}).
4300 @kindex M k (Summary)
4301 @findex gnus-summary-kill-same-subject-and-select
4302 Mark all articles that have the same subject as the current one as read,
4303 and then select the next unread article
4304 (@code{gnus-summary-kill-same-subject-and-select}).
4308 @kindex M K (Summary)
4309 @kindex C-k (Summary)
4310 @findex gnus-summary-kill-same-subject
4311 Mark all articles that have the same subject as the current one as read
4312 (@code{gnus-summary-kill-same-subject}).
4315 @kindex M C (Summary)
4316 @findex gnus-summary-catchup
4317 @c @icon{gnus-summary-catchup}
4318 Mark all unread articles as read (@code{gnus-summary-catchup}).
4321 @kindex M C-c (Summary)
4322 @findex gnus-summary-catchup-all
4323 Mark all articles in the group as read---even the ticked and dormant
4324 articles (@code{gnus-summary-catchup-all}).
4327 @kindex M H (Summary)
4328 @findex gnus-summary-catchup-to-here
4329 Catchup the current group to point
4330 (@code{gnus-summary-catchup-to-here}).
4333 @kindex C-w (Summary)
4334 @findex gnus-summary-mark-region-as-read
4335 Mark all articles between point and mark as read
4336 (@code{gnus-summary-mark-region-as-read}).
4339 @kindex M V k (Summary)
4340 @findex gnus-summary-kill-below
4341 Kill all articles with scores below the default score (or below the
4342 numeric prefix) (@code{gnus-summary-kill-below}).
4346 @kindex M e (Summary)
4348 @findex gnus-summary-mark-as-expirable
4349 Mark the current article as expirable
4350 (@code{gnus-summary-mark-as-expirable}).
4353 @kindex M b (Summary)
4354 @findex gnus-summary-set-bookmark
4355 Set a bookmark in the current article
4356 (@code{gnus-summary-set-bookmark}).
4359 @kindex M B (Summary)
4360 @findex gnus-summary-remove-bookmark
4361 Remove the bookmark from the current article
4362 (@code{gnus-summary-remove-bookmark}).
4365 @kindex M V c (Summary)
4366 @findex gnus-summary-clear-above
4367 Clear all marks from articles with scores over the default score (or
4368 over the numeric prefix) (@code{gnus-summary-clear-above}).
4371 @kindex M V u (Summary)
4372 @findex gnus-summary-tick-above
4373 Tick all articles with scores over the default score (or over the
4374 numeric prefix) (@code{gnus-summary-tick-above}).
4377 @kindex M V m (Summary)
4378 @findex gnus-summary-mark-above
4379 Prompt for a mark, and mark all articles with scores over the default
4380 score (or over the numeric prefix) with this mark
4381 (@code{gnus-summary-clear-above}).
4384 @vindex gnus-summary-goto-unread
4385 The @code{gnus-summary-goto-unread} variable controls what action should
4386 be taken after setting a mark. If non-@code{nil}, point will move to
4387 the next/previous unread article. If @code{nil}, point will just move
4388 one line up or down. As a special case, if this variable is
4389 @code{never}, all the marking commands as well as other commands (like
4390 @kbd{SPACE}) will move to the next article, whether it is unread or not.
4391 The default is @code{t}.
4394 @node Setting Process Marks
4395 @subsection Setting Process Marks
4396 @cindex setting process marks
4403 @kindex M P p (Summary)
4404 @findex gnus-summary-mark-as-processable
4405 Mark the current article with the process mark
4406 (@code{gnus-summary-mark-as-processable}).
4407 @findex gnus-summary-unmark-as-processable
4411 @kindex M P u (Summary)
4412 @kindex M-# (Summary)
4413 Remove the process mark, if any, from the current article
4414 (@code{gnus-summary-unmark-as-processable}).
4417 @kindex M P U (Summary)
4418 @findex gnus-summary-unmark-all-processable
4419 Remove the process mark from all articles
4420 (@code{gnus-summary-unmark-all-processable}).
4423 @kindex M P i (Summary)
4424 @findex gnus-uu-invert-processable
4425 Invert the list of process marked articles
4426 (@code{gnus-uu-invert-processable}).
4429 @kindex M P R (Summary)
4430 @findex gnus-uu-mark-by-regexp
4431 Mark articles that have a @code{Subject} header that matches a regular
4432 expression (@code{gnus-uu-mark-by-regexp}).
4435 @kindex M P r (Summary)
4436 @findex gnus-uu-mark-region
4437 Mark articles in region (@code{gnus-uu-mark-region}).
4440 @kindex M P t (Summary)
4441 @findex gnus-uu-mark-thread
4442 Mark all articles in the current (sub)thread
4443 (@code{gnus-uu-mark-thread}).
4446 @kindex M P T (Summary)
4447 @findex gnus-uu-unmark-thread
4448 Unmark all articles in the current (sub)thread
4449 (@code{gnus-uu-unmark-thread}).
4452 @kindex M P v (Summary)
4453 @findex gnus-uu-mark-over
4454 Mark all articles that have a score above the prefix argument
4455 (@code{gnus-uu-mark-over}).
4458 @kindex M P s (Summary)
4459 @findex gnus-uu-mark-series
4460 Mark all articles in the current series (@code{gnus-uu-mark-series}).
4463 @kindex M P S (Summary)
4464 @findex gnus-uu-mark-sparse
4465 Mark all series that have already had some articles marked
4466 (@code{gnus-uu-mark-sparse}).
4469 @kindex M P a (Summary)
4470 @findex gnus-uu-mark-all
4471 Mark all articles in series order (@code{gnus-uu-mark-series}).
4474 @kindex M P b (Summary)
4475 @findex gnus-uu-mark-buffer
4476 Mark all articles in the buffer in the order they appear
4477 (@code{gnus-uu-mark-buffer}).
4480 @kindex M P k (Summary)
4481 @findex gnus-summary-kill-process-mark
4482 Push the current process mark set onto the stack and unmark all articles
4483 (@code{gnus-summary-kill-process-mark}).
4486 @kindex M P y (Summary)
4487 @findex gnus-summary-yank-process-mark
4488 Pop the previous process mark set from the stack and restore it
4489 (@code{gnus-summary-yank-process-mark}).
4492 @kindex M P w (Summary)
4493 @findex gnus-summary-save-process-mark
4494 Push the current process mark set onto the stack
4495 (@code{gnus-summary-save-process-mark}).
4504 It can be convenient to limit the summary buffer to just show some
4505 subset of the articles currently in the group. The effect most limit
4506 commands have is to remove a few (or many) articles from the summary
4509 All limiting commands work on subsets of the articles already fetched
4510 from the servers. None of these commands query the server for
4511 additional articles.
4517 @kindex / / (Summary)
4518 @findex gnus-summary-limit-to-subject
4519 Limit the summary buffer to articles that match some subject
4520 (@code{gnus-summary-limit-to-subject}).
4523 @kindex / a (Summary)
4524 @findex gnus-summary-limit-to-author
4525 Limit the summary buffer to articles that match some author
4526 (@code{gnus-summary-limit-to-author}).
4530 @kindex / u (Summary)
4532 @findex gnus-summary-limit-to-unread
4533 Limit the summary buffer to articles not marked as read
4534 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
4535 buffer to articles strictly unread. This means that ticked and
4536 dormant articles will also be excluded.
4539 @kindex / m (Summary)
4540 @findex gnus-summary-limit-to-marks
4541 Ask for a mark and then limit to all articles that have been marked
4542 with that mark (@code{gnus-summary-limit-to-marks}).
4545 @kindex / t (Summary)
4546 @findex gnus-summary-limit-to-age
4547 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
4548 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to
4549 articles younger than that number of days.
4552 @kindex / n (Summary)
4553 @findex gnus-summary-limit-to-articles
4554 Limit the summary buffer to the current article
4555 (@code{gnus-summary-limit-to-articles}). Uses the process/prefix
4556 convention (@pxref{Process/Prefix}).
4559 @kindex / w (Summary)
4560 @findex gnus-summary-pop-limit
4561 Pop the previous limit off the stack and restore it
4562 (@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
4566 @kindex / v (Summary)
4567 @findex gnus-summary-limit-to-score
4568 Limit the summary buffer to articles that have a score at or above some
4569 score (@code{gnus-summary-limit-to-score}).
4573 @kindex M S (Summary)
4574 @kindex / E (Summary)
4575 @findex gnus-summary-limit-include-expunged
4576 Include all expunged articles in the limit
4577 (@code{gnus-summary-limit-include-expunged}).
4580 @kindex / D (Summary)
4581 @findex gnus-summary-limit-include-dormant
4582 Include all dormant articles in the limit
4583 (@code{gnus-summary-limit-include-dormant}).
4586 @kindex / * (Summary)
4587 @findex gnus-summary-limit-include-cached
4588 Include all cached articles in the limit
4589 (@code{gnus-summary-limit-include-cached}).
4592 @kindex / d (Summary)
4593 @findex gnus-summary-limit-exclude-dormant
4594 Exclude all dormant articles from the limit
4595 (@code{gnus-summary-limit-exclude-dormant}).
4598 @kindex / T (Summary)
4599 @findex gnus-summary-limit-include-thread
4600 Include all the articles in the current thread in the limit.
4603 @kindex / c (Summary)
4604 @findex gnus-summary-limit-exclude-childless-dormant
4605 Exclude all dormant articles that have no children from the limit
4606 (@code{gnus-summary-limit-exclude-childless-dormant}).
4609 @kindex / C (Summary)
4610 @findex gnus-summary-limit-mark-excluded-as-read
4611 Mark all excluded unread articles as read
4612 (@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
4613 also mark excluded ticked and dormant articles as read.
4621 @cindex article threading
4623 Gnus threads articles by default. @dfn{To thread} is to put responses
4624 to articles directly after the articles they respond to---in a
4625 hierarchical fashion.
4627 Threading is done by looking at the @code{References} headers of the
4628 articles. In a perfect world, this would be enough to build pretty
4629 trees, but unfortunately, the @code{References} header is often broken
4630 or simply missing. Weird news propagation excarcerbates the problem,
4631 so one has to employ other heuristics to get pleasing results. A
4632 plethora of approaches exists, as detailed in horrible detail in
4633 @pxref{Customizing Threading}.
4635 First, a quick overview of the concepts:
4639 The top-most article in a thread; the first article in the thread.
4642 A tree-like article structure.
4645 A small(er) section of this tree-like structure.
4648 Threads often lose their roots due to article expiry, or due to the root
4649 already having been read in a previous session, and not displayed in the
4650 summary buffer. We then typically have many sub-threads that really
4651 belong to one thread, but are without connecting roots. These are
4652 called loose threads.
4654 @item thread gathering
4655 An attempt to gather loose threads into bigger threads.
4657 @item sparse threads
4658 A thread where the missing articles have been ``guessed'' at, and are
4659 displayed as empty lines in the summary buffer.
4665 * Customizing Threading:: Variables you can change to affect the threading.
4666 * Thread Commands:: Thread based commands in the summary buffer.
4670 @node Customizing Threading
4671 @subsection Customizing Threading
4672 @cindex customizing threading
4675 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
4676 * Filling In Threads:: Making the threads displayed look fuller.
4677 * More Threading:: Even more variables for fiddling with threads.
4678 * Low-Level Threading:: You thought it was over... but you were wrong!
4683 @subsubsection Loose Threads
4686 @cindex loose threads
4689 @item gnus-summary-make-false-root
4690 @vindex gnus-summary-make-false-root
4691 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
4692 and create a dummy root at the top. (Wait a minute. Root at the top?
4693 Yup.) Loose subtrees occur when the real root has expired, or you've
4694 read or killed the root in a previous session.
4696 When there is no real root of a thread, Gnus will have to fudge
4697 something. This variable says what fudging method Gnus should use.
4698 There are four possible values:
4702 \gnusfigure{The Summary Buffer}{390}{
4703 \put(0,0){\epsfig{figure=tmp/summary-adopt.ps,width=7.5cm}}
4704 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-empty.ps,width=7.5cm}}}
4705 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=tmp/summary-none.ps,width=7.5cm}}}
4706 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=tmp/summary-dummy.ps,width=7.5cm}}}
4711 @cindex adopting articles
4716 Gnus will make the first of the orphaned articles the parent. This
4717 parent will adopt all the other articles. The adopted articles will be
4718 marked as such by pointy brackets (@samp{<>}) instead of the standard
4719 square brackets (@samp{[]}). This is the default method.
4722 @vindex gnus-summary-dummy-line-format
4723 Gnus will create a dummy summary line that will pretend to be the
4724 parent. This dummy line does not correspond to any real article, so
4725 selecting it will just select the first real article after the dummy
4726 article. @code{gnus-summary-dummy-line-format} is used to specify the
4727 format of the dummy roots. It accepts only one format spec: @samp{S},
4728 which is the subject of the article. @xref{Formatting Variables}.
4731 Gnus won't actually make any article the parent, but simply leave the
4732 subject field of all orphans except the first empty. (Actually, it will
4733 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
4737 Don't make any article parent at all. Just gather the threads and
4738 display them after one another.
4741 Don't gather loose threads.
4744 @item gnus-summary-gather-subject-limit
4745 @vindex gnus-summary-gather-subject-limit
4746 Loose threads are gathered by comparing subjects of articles. If this
4747 variable is @code{nil}, Gnus requires an exact match between the
4748 subjects of the loose threads before gathering them into one big
4749 super-thread. This might be too strict a requirement, what with the
4750 presence of stupid newsreaders that chop off long subject lines. If
4751 you think so, set this variable to, say, 20 to require that only the
4752 first 20 characters of the subjects have to match. If you set this
4753 variable to a really low number, you'll find that Gnus will gather
4754 everything in sight into one thread, which isn't very helpful.
4756 @cindex fuzzy article gathering
4757 If you set this variable to the special value @code{fuzzy}, Gnus will
4758 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
4761 @item gnus-simplify-subject-fuzzy-regexp
4762 @vindex gnus-simplify-subject-fuzzy-regexp
4763 This can either be a regular expression or list of regular expressions
4764 that match strings that will be removed from subjects if fuzzy subject
4765 simplification is used.
4767 @item gnus-simplify-ignored-prefixes
4768 @vindex gnus-simplify-ignored-prefixes
4769 If you set @code{gnus-summary-gather-subject-limit} to something as low
4770 as 10, you might consider setting this variable to something sensible:
4772 @c Written by Michael Ernst <mernst@cs.rice.edu>
4774 (setq gnus-simplify-ignored-prefixes
4780 "wanted" "followup" "summary\\( of\\)?"
4781 "help" "query" "problem" "question"
4782 "answer" "reference" "announce"
4783 "How can I" "How to" "Comparison of"
4788 (mapconcat 'identity
4789 '("for" "for reference" "with" "about")
4791 "\\)?\\]?:?[ \t]*"))
4794 All words that match this regexp will be removed before comparing two
4797 @item gnus-simplify-subject-functions
4798 @vindex gnus-simplify-subject-functions
4799 If non-@code{nil}, this variable overrides
4800 @code{gnus-summary-gather-subject-limit}. This variable should be a
4801 list of functions to apply to the @code{Subject} string iteratively to
4802 arrive at the simplified version of the string.
4804 Useful functions to put in this list include:
4807 @item gnus-simplify-subject-re
4808 @findex gnus-simplify-subject-re
4809 Strip the leading @samp{Re:}.
4811 @item gnus-simplify-subject-fuzzy
4812 @findex gnus-simplify-subject-fuzzy
4815 @item gnus-simplify-whitespace
4816 @findex gnus-simplify-whitespace
4817 Remove excessive whitespace.
4820 You may also write your own functions, of course.
4823 @item gnus-summary-gather-exclude-subject
4824 @vindex gnus-summary-gather-exclude-subject
4825 Since loose thread gathering is done on subjects only, that might lead
4826 to many false hits, especially with certain common subjects like
4827 @samp{} and @samp{(none)}. To make the situation slightly better,
4828 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
4829 what subjects should be excluded from the gathering process.@*
4830 The default is @samp{^ *$\\|^(none)$}.
4832 @item gnus-summary-thread-gathering-function
4833 @vindex gnus-summary-thread-gathering-function
4834 Gnus gathers threads by looking at @code{Subject} headers. This means
4835 that totally unrelated articles may end up in the same ``thread'', which
4836 is confusing. An alternate approach is to look at all the
4837 @code{Message-ID}s in all the @code{References} headers to find matches.
4838 This will ensure that no gathered threads ever include unrelated
4839 articles, but it also means that people who have posted with broken
4840 newsreaders won't be gathered properly. The choice is yours---plague or
4844 @item gnus-gather-threads-by-subject
4845 @findex gnus-gather-threads-by-subject
4846 This function is the default gathering function and looks at
4847 @code{Subject}s exclusively.
4849 @item gnus-gather-threads-by-references
4850 @findex gnus-gather-threads-by-references
4851 This function looks at @code{References} headers exclusively.
4854 If you want to test gathering by @code{References}, you could say
4858 (setq gnus-summary-thread-gathering-function
4859 'gnus-gather-threads-by-references)
4865 @node Filling In Threads
4866 @subsubsection Filling In Threads
4869 @item gnus-fetch-old-headers
4870 @vindex gnus-fetch-old-headers
4871 If non-@code{nil}, Gnus will attempt to build old threads by fetching
4872 more old headers---headers to articles marked as read. If you
4873 would like to display as few summary lines as possible, but still
4874 connect as many loose threads as possible, you should set this variable
4875 to @code{some} or a number. If you set it to a number, no more than
4876 that number of extra old headers will be fetched. In either case,
4877 fetching old headers only works if the backend you are using carries
4878 overview files---this would normally be @code{nntp}, @code{nnspool} and
4879 @code{nnml}. Also remember that if the root of the thread has been
4880 expired by the server, there's not much Gnus can do about that.
4882 This variable can also be set to @code{invisible}. This won't have any
4883 visible effects, but is useful if you use the @kbd{A T} command a lot
4884 (@pxref{Finding the Parent}).
4886 @item gnus-build-sparse-threads
4887 @vindex gnus-build-sparse-threads
4888 Fetching old headers can be slow. A low-rent similar effect can be
4889 gotten by setting this variable to @code{some}. Gnus will then look at
4890 the complete @code{References} headers of all articles and try to string
4891 together articles that belong in the same thread. This will leave
4892 @dfn{gaps} in the threading display where Gnus guesses that an article
4893 is missing from the thread. (These gaps appear like normal summary
4894 lines. If you select a gap, Gnus will try to fetch the article in
4895 question.) If this variable is @code{t}, Gnus will display all these
4896 ``gaps'' without regard for whether they are useful for completing the
4897 thread or not. Finally, if this variable is @code{more}, Gnus won't cut
4898 off sparse leaf nodes that don't lead anywhere. This variable is
4899 @code{nil} by default.
4904 @node More Threading
4905 @subsubsection More Threading
4908 @item gnus-show-threads
4909 @vindex gnus-show-threads
4910 If this variable is @code{nil}, no threading will be done, and all of
4911 the rest of the variables here will have no effect. Turning threading
4912 off will speed group selection up a bit, but it is sure to make reading
4913 slower and more awkward.
4915 @item gnus-thread-hide-subtree
4916 @vindex gnus-thread-hide-subtree
4917 If non-@code{nil}, all threads will be hidden when the summary buffer is
4920 @item gnus-thread-expunge-below
4921 @vindex gnus-thread-expunge-below
4922 All threads that have a total score (as defined by
4923 @code{gnus-thread-score-function}) less than this number will be
4924 expunged. This variable is @code{nil} by default, which means that no
4925 threads are expunged.
4927 @item gnus-thread-hide-killed
4928 @vindex gnus-thread-hide-killed
4929 if you kill a thread and this variable is non-@code{nil}, the subtree
4932 @item gnus-thread-ignore-subject
4933 @vindex gnus-thread-ignore-subject
4934 Sometimes somebody changes the subject in the middle of a thread. If
4935 this variable is non-@code{nil}, the subject change is ignored. If it
4936 is @code{nil}, which is the default, a change in the subject will result
4939 @item gnus-thread-indent-level
4940 @vindex gnus-thread-indent-level
4941 This is a number that says how much each sub-thread should be indented.
4947 @node Low-Level Threading
4948 @subsubsection Low-Level Threading
4952 @item gnus-parse-headers-hook
4953 @vindex gnus-parse-headers-hook
4954 Hook run before parsing any headers.
4956 @item gnus-alter-header-function
4957 @vindex gnus-alter-header-function
4958 If non-@code{nil}, this function will be called to allow alteration of
4959 article header structures. The function is called with one parameter,
4960 the article header vector, which it may alter in any way. For instance,
4961 if you have a mail-to-news gateway which alters the @code{Message-ID}s
4962 in systematic ways (by adding prefixes and such), you can use this
4963 variable to un-scramble the @code{Message-ID}s so that they are more
4964 meaningful. Here's one example:
4967 (setq gnus-alter-header-function 'my-alter-message-id)
4969 (defun my-alter-message-id (header)
4970 (let ((id (mail-header-id header)))
4972 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
4974 (concat (match-string 1 id) "@@" (match-string 2 id))
4981 @node Thread Commands
4982 @subsection Thread Commands
4983 @cindex thread commands
4989 @kindex T k (Summary)
4990 @kindex M-C-k (Summary)
4991 @findex gnus-summary-kill-thread
4992 Mark all articles in the current (sub-)thread as read
4993 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
4994 remove all marks instead. If the prefix argument is negative, tick
4999 @kindex T l (Summary)
5000 @kindex M-C-l (Summary)
5001 @findex gnus-summary-lower-thread
5002 Lower the score of the current (sub-)thread
5003 (@code{gnus-summary-lower-thread}).
5006 @kindex T i (Summary)
5007 @findex gnus-summary-raise-thread
5008 Increase the score of the current (sub-)thread
5009 (@code{gnus-summary-raise-thread}).
5012 @kindex T # (Summary)
5013 @findex gnus-uu-mark-thread
5014 Set the process mark on the current (sub-)thread
5015 (@code{gnus-uu-mark-thread}).
5018 @kindex T M-# (Summary)
5019 @findex gnus-uu-unmark-thread
5020 Remove the process mark from the current (sub-)thread
5021 (@code{gnus-uu-unmark-thread}).
5024 @kindex T T (Summary)
5025 @findex gnus-summary-toggle-threads
5026 Toggle threading (@code{gnus-summary-toggle-threads}).
5029 @kindex T s (Summary)
5030 @findex gnus-summary-show-thread
5031 Expose the (sub-)thread hidden under the current article, if any
5032 (@code{gnus-summary-show-thread}).
5035 @kindex T h (Summary)
5036 @findex gnus-summary-hide-thread
5037 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
5040 @kindex T S (Summary)
5041 @findex gnus-summary-show-all-threads
5042 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
5045 @kindex T H (Summary)
5046 @findex gnus-summary-hide-all-threads
5047 Hide all threads (@code{gnus-summary-hide-all-threads}).
5050 @kindex T t (Summary)
5051 @findex gnus-summary-rethread-current
5052 Re-thread the current article's thread
5053 (@code{gnus-summary-rethread-current}). This works even when the
5054 summary buffer is otherwise unthreaded.
5057 @kindex T ^ (Summary)
5058 @findex gnus-summary-reparent-thread
5059 Make the current article the child of the marked (or previous) article
5060 (@code{gnus-summary-reparent-thread}).
5064 The following commands are thread movement commands. They all
5065 understand the numeric prefix.
5070 @kindex T n (Summary)
5071 @findex gnus-summary-next-thread
5072 Go to the next thread (@code{gnus-summary-next-thread}).
5075 @kindex T p (Summary)
5076 @findex gnus-summary-prev-thread
5077 Go to the previous thread (@code{gnus-summary-prev-thread}).
5080 @kindex T d (Summary)
5081 @findex gnus-summary-down-thread
5082 Descend the thread (@code{gnus-summary-down-thread}).
5085 @kindex T u (Summary)
5086 @findex gnus-summary-up-thread
5087 Ascend the thread (@code{gnus-summary-up-thread}).
5090 @kindex T o (Summary)
5091 @findex gnus-summary-top-thread
5092 Go to the top of the thread (@code{gnus-summary-top-thread}).
5095 @vindex gnus-thread-operation-ignore-subject
5096 If you ignore subject while threading, you'll naturally end up with
5097 threads that have several different subjects in them. If you then issue
5098 a command like `T k' (@code{gnus-summary-kill-thread}) you might not
5099 wish to kill the entire thread, but just those parts of the thread that
5100 have the same subject as the current article. If you like this idea,
5101 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
5102 is non-@code{nil} (which it is by default), subjects will be ignored
5103 when doing thread commands. If this variable is @code{nil}, articles in
5104 the same thread with different subjects will not be included in the
5105 operation in question. If this variable is @code{fuzzy}, only articles
5106 that have subjects fuzzily equal will be included (@pxref{Fuzzy
5113 @findex gnus-thread-sort-by-total-score
5114 @findex gnus-thread-sort-by-date
5115 @findex gnus-thread-sort-by-score
5116 @findex gnus-thread-sort-by-subject
5117 @findex gnus-thread-sort-by-author
5118 @findex gnus-thread-sort-by-number
5119 @vindex gnus-thread-sort-functions
5120 If you are using a threaded summary display, you can sort the threads by
5121 setting @code{gnus-thread-sort-functions}, which is a list of functions.
5122 By default, sorting is done on article numbers. Ready-made sorting
5123 predicate functions include @code{gnus-thread-sort-by-number},
5124 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
5125 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and
5126 @code{gnus-thread-sort-by-total-score}.
5128 Each function takes two threads and returns non-@code{nil} if the first
5129 thread should be sorted before the other. Note that sorting really is
5130 normally done by looking only at the roots of each thread. If you use
5131 more than one function, the primary sort key should be the last function
5132 in the list. You should probably always include
5133 @code{gnus-thread-sort-by-number} in the list of sorting
5134 functions---preferably first. This will ensure that threads that are
5135 equal with respect to the other sort criteria will be displayed in
5136 ascending article order.
5138 If you would like to sort by score, then by subject, and finally by
5139 number, you could do something like:
5142 (setq gnus-thread-sort-functions
5143 '(gnus-thread-sort-by-number
5144 gnus-thread-sort-by-subject
5145 gnus-thread-sort-by-total-score))
5148 The threads that have highest score will be displayed first in the
5149 summary buffer. When threads have the same score, they will be sorted
5150 alphabetically. The threads that have the same score and the same
5151 subject will be sorted by number, which is (normally) the sequence in
5152 which the articles arrived.
5154 If you want to sort by score and then reverse arrival order, you could
5158 (setq gnus-thread-sort-functions
5160 (not (gnus-thread-sort-by-number t1 t2)))
5161 gnus-thread-sort-by-score))
5164 @vindex gnus-thread-score-function
5165 The function in the @code{gnus-thread-score-function} variable (default
5166 @code{+}) is used for calculating the total score of a thread. Useful
5167 functions might be @code{max}, @code{min}, or squared means, or whatever
5170 @findex gnus-article-sort-functions
5171 @findex gnus-article-sort-by-date
5172 @findex gnus-article-sort-by-score
5173 @findex gnus-article-sort-by-subject
5174 @findex gnus-article-sort-by-author
5175 @findex gnus-article-sort-by-number
5176 If you are using an unthreaded display for some strange reason or other,
5177 you have to fiddle with the @code{gnus-article-sort-functions} variable.
5178 It is very similar to the @code{gnus-thread-sort-functions}, except that
5179 it uses slightly different functions for article comparison. Available
5180 sorting predicate functions are @code{gnus-article-sort-by-number},
5181 @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject},
5182 @code{gnus-article-sort-by-date}, and @code{gnus-article-sort-by-score}.
5184 If you want to sort an unthreaded summary display by subject, you could
5188 (setq gnus-article-sort-functions
5189 '(gnus-article-sort-by-number
5190 gnus-article-sort-by-subject))
5195 @node Asynchronous Fetching
5196 @section Asynchronous Article Fetching
5197 @cindex asynchronous article fetching
5198 @cindex article pre-fetch
5201 If you read your news from an @sc{nntp} server that's far away, the
5202 network latencies may make reading articles a chore. You have to wait
5203 for a while after pressing @kbd{n} to go to the next article before the
5204 article appears. Why can't Gnus just go ahead and fetch the article
5205 while you are reading the previous one? Why not, indeed.
5207 First, some caveats. There are some pitfalls to using asynchronous
5208 article fetching, especially the way Gnus does it.
5210 Let's say you are reading article 1, which is short, and article 2 is
5211 quite long, and you are not interested in reading that. Gnus does not
5212 know this, so it goes ahead and fetches article 2. You decide to read
5213 article 3, but since Gnus is in the process of fetching article 2, the
5214 connection is blocked.
5216 To avoid these situations, Gnus will open two (count 'em two)
5217 connections to the server. Some people may think this isn't a very nice
5218 thing to do, but I don't see any real alternatives. Setting up that
5219 extra connection takes some time, so Gnus startup will be slower.
5221 Gnus will fetch more articles than you will read. This will mean that
5222 the link between your machine and the @sc{nntp} server will become more
5223 loaded than if you didn't use article pre-fetch. The server itself will
5224 also become more loaded---both with the extra article requests, and the
5227 Ok, so now you know that you shouldn't really use this thing... unless
5230 @vindex gnus-asynchronous
5231 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
5232 happen automatically.
5234 @vindex gnus-use-article-prefetch
5235 You can control how many articles are to be pre-fetched by setting
5236 @code{gnus-use-article-prefetch}. This is 30 by default, which means
5237 that when you read an article in the group, the backend will pre-fetch
5238 the next 30 articles. If this variable is @code{t}, the backend will
5239 pre-fetch all the articles it can without bound. If it is
5240 @code{nil}, no pre-fetching will be done.
5242 @vindex gnus-async-prefetch-article-p
5243 @findex gnus-async-read-p
5244 There are probably some articles that you don't want to pre-fetch---read
5245 articles, for instance. The @code{gnus-async-prefetch-article-p} variable controls whether an article is to be pre-fetched. This function should
5246 return non-@code{nil} when the article in question is to be
5247 pre-fetched. The default is @code{gnus-async-read-p}, which returns
5248 @code{nil} on read articles. The function is called with an article
5249 data structure as the only parameter.
5251 If, for instance, you wish to pre-fetch only unread articles shorter than 100 lines, you could say something like:
5254 (defun my-async-short-unread-p (data)
5255 "Return non-nil for short, unread articles."
5256 (and (gnus-data-unread-p data)
5257 (< (mail-header-lines (gnus-data-header data))
5260 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
5263 These functions will be called many, many times, so they should
5264 preferably be short and sweet to avoid slowing down Gnus too much.
5265 It's probably a good idea to byte-compile things like this.
5267 @vindex gnus-prefetched-article-deletion-strategy
5268 Articles have to be removed from the asynch buffer sooner or later. The
5269 @code{gnus-prefetched-article-deletion-strategy} says when to remove
5270 articles. This is a list that may contain the following elements:
5274 Remove articles when they are read.
5277 Remove articles when exiting the group.
5280 The default value is @code{(read exit)}.
5282 @c @vindex gnus-use-header-prefetch
5283 @c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
5284 @c from the next group.
5287 @node Article Caching
5288 @section Article Caching
5289 @cindex article caching
5292 If you have an @emph{extremely} slow @sc{nntp} connection, you may
5293 consider turning article caching on. Each article will then be stored
5294 locally under your home directory. As you may surmise, this could
5295 potentially use @emph{huge} amounts of disk space, as well as eat up all
5296 your inodes so fast it will make your head swim. In vodka.
5298 Used carefully, though, it could be just an easier way to save articles.
5300 @vindex gnus-use-long-file-name
5301 @vindex gnus-cache-directory
5302 @vindex gnus-use-cache
5303 To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
5304 all articles ticked or marked as dormant will then be copied
5305 over to your local cache (@code{gnus-cache-directory}). Whether this
5306 cache is flat or hierarchal is controlled by the
5307 @code{gnus-use-long-file-name} variable, as usual.
5309 When re-selecting a ticked or dormant article, it will be fetched from the
5310 cache instead of from the server. As articles in your cache will never
5311 expire, this might serve as a method of saving articles while still
5312 keeping them where they belong. Just mark all articles you want to save
5313 as dormant, and don't worry.
5315 When an article is marked as read, is it removed from the cache.
5317 @vindex gnus-cache-remove-articles
5318 @vindex gnus-cache-enter-articles
5319 The entering/removal of articles from the cache is controlled by the
5320 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
5321 variables. Both are lists of symbols. The first is @code{(ticked
5322 dormant)} by default, meaning that ticked and dormant articles will be
5323 put in the cache. The latter is @code{(read)} by default, meaning that
5324 articles marked as read are removed from the cache. Possibly
5325 symbols in these two lists are @code{ticked}, @code{dormant},
5326 @code{unread} and @code{read}.
5328 @findex gnus-jog-cache
5329 So where does the massive article-fetching and storing come into the
5330 picture? The @code{gnus-jog-cache} command will go through all
5331 subscribed newsgroups, request all unread articles, score them, and
5332 store them in the cache. You should only ever, ever ever ever, use this
5333 command if 1) your connection to the @sc{nntp} server is really, really,
5334 really slow and 2) you have a really, really, really huge disk.
5335 Seriously. One way to cut down on the number of articles downloaded is
5336 to score unwanted articles down and have them marked as read. They will
5337 not then be downloaded by this command.
5339 @vindex gnus-uncacheable-groups
5340 @vindex gnus-cacheable-groups
5341 It is likely that you do not want caching on all groups. For instance,
5342 if your @code{nnml} mail is located under your home directory, it makes no
5343 sense to cache it somewhere else under your home directory. Unless you
5344 feel that it's neat to use twice as much space.
5346 To limit the caching, you could set @code{gnus-cacheable-groups} to a
5347 regexp of groups to cache, @samp{^nntp} for instance, or set the
5348 @code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
5349 Both variables are @code{nil} by default. If a group matches both
5350 variables, the group is not cached.
5352 @findex gnus-cache-generate-nov-databases
5353 @findex gnus-cache-generate-active
5354 @vindex gnus-cache-active-file
5355 The cache stores information on what articles it contains in its active
5356 file (@code{gnus-cache-active-file}). If this file (or any other parts
5357 of the cache) becomes all messed up for some reason or other, Gnus
5358 offers two functions that will try to set things right. @kbd{M-x
5359 gnus-cache-generate-nov-databases} will (re)build all the @sc{nov}
5360 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
5364 @node Persistent Articles
5365 @section Persistent Articles
5366 @cindex persistent articles
5368 Closely related to article caching, we have @dfn{persistent articles}.
5369 In fact, it's just a different way of looking at caching, and much more
5370 useful in my opinion.
5372 Say you're reading a newsgroup, and you happen on to some valuable gem
5373 that you want to keep and treasure forever. You'd normally just save it
5374 (using one of the many saving commands) in some file. The problem with
5375 that is that it's just, well, yucky. Ideally you'd prefer just having
5376 the article remain in the group where you found it forever; untouched by
5377 the expiry going on at the news server.
5379 This is what a @dfn{persistent article} is---an article that just won't
5380 be deleted. It's implemented using the normal cache functions, but
5381 you use two explicit commands for managing persistent articles:
5387 @findex gnus-cache-enter-article
5388 Make the current article persistent (@code{gnus-cache-enter-article}).
5391 @kindex M-* (Summary)
5392 @findex gnus-cache-remove-article
5393 Remove the current article from the persistent articles
5394 (@code{gnus-cache-remove-article}). This will normally delete the
5398 Both these commands understand the process/prefix convention.
5400 To avoid having all ticked articles (and stuff) entered into the cache,
5401 you should set @code{gnus-use-cache} to @code{passive} if you're just
5402 interested in persistent articles:
5405 (setq gnus-use-cache 'passive)
5409 @node Article Backlog
5410 @section Article Backlog
5412 @cindex article backlog
5414 If you have a slow connection, but the idea of using caching seems
5415 unappealing to you (and it is, really), you can help the situation some
5416 by switching on the @dfn{backlog}. This is where Gnus will buffer
5417 already read articles so that it doesn't have to re-fetch articles
5418 you've already read. This only helps if you are in the habit of
5419 re-selecting articles you've recently read, of course. If you never do
5420 that, turning the backlog on will slow Gnus down a little bit, and
5421 increase memory usage some.
5423 @vindex gnus-keep-backlog
5424 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
5425 at most @var{n} old articles in a buffer for later re-fetching. If this
5426 variable is non-@code{nil} and is not a number, Gnus will store
5427 @emph{all} read articles, which means that your Emacs will grow without
5428 bound before exploding and taking your machine down with you. I put
5429 that in there just to keep y'all on your toes.
5431 This variable is @code{nil} by default.
5434 @node Saving Articles
5435 @section Saving Articles
5436 @cindex saving articles
5438 Gnus can save articles in a number of ways. Below is the documentation
5439 for saving articles in a fairly straight-forward fashion (i.e., little
5440 processing of the article is done before it is saved). For a different
5441 approach (uudecoding, unsharing) you should use @code{gnus-uu}
5442 (@pxref{Decoding Articles}).
5444 @vindex gnus-save-all-headers
5445 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
5446 unwanted headers before saving the article.
5448 @vindex gnus-saved-headers
5449 If the preceding variable is @code{nil}, all headers that match the
5450 @code{gnus-saved-headers} regexp will be kept, while the rest will be
5451 deleted before saving.
5457 @kindex O o (Summary)
5459 @findex gnus-summary-save-article
5460 @c @icon{gnus-summary-save-article}
5461 Save the current article using the default article saver
5462 (@code{gnus-summary-save-article}).
5465 @kindex O m (Summary)
5466 @findex gnus-summary-save-article-mail
5467 Save the current article in mail format
5468 (@code{gnus-summary-save-article-mail}).
5471 @kindex O r (Summary)
5472 @findex gnus-summary-save-article-rmail
5473 Save the current article in rmail format
5474 (@code{gnus-summary-save-article-rmail}).
5477 @kindex O f (Summary)
5478 @findex gnus-summary-save-article-file
5479 @c @icon{gnus-summary-save-article-file}
5480 Save the current article in plain file format
5481 (@code{gnus-summary-save-article-file}).
5484 @kindex O F (Summary)
5485 @findex gnus-summary-write-article-file
5486 Write the current article in plain file format, overwriting any previous
5487 file contents (@code{gnus-summary-write-article-file}).
5490 @kindex O b (Summary)
5491 @findex gnus-summary-save-article-body-file
5492 Save the current article body in plain file format
5493 (@code{gnus-summary-save-article-body-file}).
5496 @kindex O h (Summary)
5497 @findex gnus-summary-save-article-folder
5498 Save the current article in mh folder format
5499 (@code{gnus-summary-save-article-folder}).
5502 @kindex O v (Summary)
5503 @findex gnus-summary-save-article-vm
5504 Save the current article in a VM folder
5505 (@code{gnus-summary-save-article-vm}).
5508 @kindex O p (Summary)
5509 @findex gnus-summary-pipe-output
5510 Save the current article in a pipe. Uhm, like, what I mean is---Pipe
5511 the current article to a process (@code{gnus-summary-pipe-output}).
5514 @vindex gnus-prompt-before-saving
5515 All these commands use the process/prefix convention
5516 (@pxref{Process/Prefix}). If you save bunches of articles using these
5517 functions, you might get tired of being prompted for files to save each
5518 and every article in. The prompting action is controlled by
5519 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
5520 default, giving you that excessive prompting action you know and
5521 loathe. If you set this variable to @code{t} instead, you'll be prompted
5522 just once for each series of articles you save. If you like to really
5523 have Gnus do all your thinking for you, you can even set this variable
5524 to @code{nil}, which means that you will never be prompted for files to
5525 save articles in. Gnus will simply save all the articles in the default
5529 @vindex gnus-default-article-saver
5530 You can customize the @code{gnus-default-article-saver} variable to make
5531 Gnus do what you want it to. You can use any of the six ready-made
5532 functions below, or you can create your own.
5536 @item gnus-summary-save-in-rmail
5537 @findex gnus-summary-save-in-rmail
5538 @vindex gnus-rmail-save-name
5539 @findex gnus-plain-save-name
5540 This is the default format, @dfn{babyl}. Uses the function in the
5541 @code{gnus-rmail-save-name} variable to get a file name to save the
5542 article in. The default is @code{gnus-plain-save-name}.
5544 @item gnus-summary-save-in-mail
5545 @findex gnus-summary-save-in-mail
5546 @vindex gnus-mail-save-name
5547 Save in a Unix mail (mbox) file. Uses the function in the
5548 @code{gnus-mail-save-name} variable to get a file name to save the
5549 article in. The default is @code{gnus-plain-save-name}.
5551 @item gnus-summary-save-in-file
5552 @findex gnus-summary-save-in-file
5553 @vindex gnus-file-save-name
5554 @findex gnus-numeric-save-name
5555 Append the article straight to an ordinary file. Uses the function in
5556 the @code{gnus-file-save-name} variable to get a file name to save the
5557 article in. The default is @code{gnus-numeric-save-name}.
5559 @item gnus-summary-save-body-in-file
5560 @findex gnus-summary-save-body-in-file
5561 Append the article body to an ordinary file. Uses the function in the
5562 @code{gnus-file-save-name} variable to get a file name to save the
5563 article in. The default is @code{gnus-numeric-save-name}.
5565 @item gnus-summary-save-in-folder
5566 @findex gnus-summary-save-in-folder
5567 @findex gnus-folder-save-name
5568 @findex gnus-Folder-save-name
5569 @vindex gnus-folder-save-name
5572 Save the article to an MH folder using @code{rcvstore} from the MH
5573 library. Uses the function in the @code{gnus-folder-save-name} variable
5574 to get a file name to save the article in. The default is
5575 @code{gnus-folder-save-name}, but you can also use
5576 @code{gnus-Folder-save-name}, which creates capitalized names.
5578 @item gnus-summary-save-in-vm
5579 @findex gnus-summary-save-in-vm
5580 Save the article in a VM folder. You have to have the VM mail
5581 reader to use this setting.
5584 @vindex gnus-article-save-directory
5585 All of these functions, except for the last one, will save the article
5586 in the @code{gnus-article-save-directory}, which is initialized from the
5587 @code{SAVEDIR} environment variable. This is @file{~/News/} by
5590 As you can see above, the functions use different functions to find a
5591 suitable name of a file to save the article in. Below is a list of
5592 available functions that generate names:
5596 @item gnus-Numeric-save-name
5597 @findex gnus-Numeric-save-name
5598 File names like @file{~/News/Alt.andrea-dworkin/45}.
5600 @item gnus-numeric-save-name
5601 @findex gnus-numeric-save-name
5602 File names like @file{~/News/alt.andrea-dworkin/45}.
5604 @item gnus-Plain-save-name
5605 @findex gnus-Plain-save-name
5606 File names like @file{~/News/Alt.andrea-dworkin}.
5608 @item gnus-plain-save-name
5609 @findex gnus-plain-save-name
5610 File names like @file{~/News/alt.andrea-dworkin}.
5613 @vindex gnus-split-methods
5614 You can have Gnus suggest where to save articles by plonking a regexp into
5615 the @code{gnus-split-methods} alist. For instance, if you would like to
5616 save articles related to Gnus in the file @file{gnus-stuff}, and articles
5617 related to VM in @code{vm-stuff}, you could set this variable to something
5621 (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
5622 ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
5623 (my-choosing-function "../other-dir/my-stuff")
5624 ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
5627 We see that this is a list where each element is a list that has two
5628 elements---the @dfn{match} and the @dfn{file}. The match can either be
5629 a string (in which case it is used as a regexp to match on the article
5630 head); it can be a symbol (which will be called as a function with the
5631 group name as a parameter); or it can be a list (which will be
5632 @code{eval}ed). If any of these actions have a non-@code{nil} result,
5633 the @dfn{file} will be used as a default prompt. In addition, the
5634 result of the operation itself will be used if the function or form
5635 called returns a string or a list of strings.
5637 You basically end up with a list of file names that might be used when
5638 saving the current article. (All ``matches'' will be used.) You will
5639 then be prompted for what you really want to use as a name, with file
5640 name completion over the results from applying this variable.
5642 This variable is @code{((gnus-article-archive-name))} by default, which
5643 means that Gnus will look at the articles it saves for an
5644 @code{Archive-name} line and use that as a suggestion for the file
5647 Here's an example function to clean up file names somewhat. If you have
5648 lots of mail groups called things like
5649 @samp{nnml:mail.whatever}, you may want to chop off the beginning of
5650 these group names before creating the file name to save to. The
5651 following will do just that:
5654 (defun my-save-name (group)
5655 (when (string-match "^nnml:mail." group)
5656 (substring group (match-end 0))))
5658 (setq gnus-split-methods
5659 '((gnus-article-archive-name)
5664 @vindex gnus-use-long-file-name
5665 Finally, you have the @code{gnus-use-long-file-name} variable. If it is
5666 @code{nil}, all the preceding functions will replace all periods
5667 (@samp{.}) in the group names with slashes (@samp{/})---which means that
5668 the functions will generate hierarchies of directories instead of having
5669 all the files in the top level directory
5670 (@file{~/News/alt/andrea-dworkin} instead of
5671 @file{~/News/alt.andrea-dworkin}.) This variable is @code{t} by default
5672 on most systems. However, for historical reasons, this is @code{nil} on
5673 Xenix and usg-unix-v machines by default.
5675 This function also affects kill and score file names. If this variable
5676 is a list, and the list contains the element @code{not-score}, long file
5677 names will not be used for score files, if it contains the element
5678 @code{not-save}, long file names will not be used for saving, and if it
5679 contains the element @code{not-kill}, long file names will not be used
5682 If you'd like to save articles in a hierarchy that looks something like
5686 (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy
5687 (setq gnus-default-article-saver 'gnus-summary-save-in-file) ; no encoding
5690 Then just save with @kbd{o}. You'd then read this hierarchy with
5691 ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
5692 the top level directory as the argument (@file{~/News/}). Then just walk
5693 around to the groups/directories with @code{nneething}.
5696 @node Decoding Articles
5697 @section Decoding Articles
5698 @cindex decoding articles
5700 Sometime users post articles (or series of articles) that have been
5701 encoded in some way or other. Gnus can decode them for you.
5704 * Uuencoded Articles:: Uudecode articles.
5705 * Shell Archives:: Unshar articles.
5706 * PostScript Files:: Split PostScript.
5707 * Other Files:: Plain save and binhex.
5708 * Decoding Variables:: Variables for a happy decoding.
5709 * Viewing Files:: You want to look at the result of the decoding?
5713 @cindex article series
5714 All these functions use the process/prefix convention
5715 (@pxref{Process/Prefix}) for finding out what articles to work on, with
5716 the extension that a ``single article'' means ``a single series''. Gnus
5717 can find out by itself what articles belong to a series, decode all the
5718 articles and unpack/view/save the resulting file(s).
5720 Gnus guesses what articles are in the series according to the following
5721 simplish rule: The subjects must be (nearly) identical, except for the
5722 last two numbers of the line. (Spaces are largely ignored, however.)
5724 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
5725 will find all the articles that match the regexp @samp{^cat.gif
5726 ([0-9]+/[0-9]+).*$}.
5728 Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a
5729 series}, will not be properly recognized by any of the automatic viewing
5730 commands, and you have to mark the articles manually with @kbd{#}.
5733 @node Uuencoded Articles
5734 @subsection Uuencoded Articles
5736 @cindex uuencoded articles
5741 @kindex X u (Summary)
5742 @findex gnus-uu-decode-uu
5743 @c @icon{gnus-uu-decode-uu}
5744 Uudecodes the current series (@code{gnus-uu-decode-uu}).
5747 @kindex X U (Summary)
5748 @findex gnus-uu-decode-uu-and-save
5749 Uudecodes and saves the current series
5750 (@code{gnus-uu-decode-uu-and-save}).
5753 @kindex X v u (Summary)
5754 @findex gnus-uu-decode-uu-view
5755 Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
5758 @kindex X v U (Summary)
5759 @findex gnus-uu-decode-uu-and-save-view
5760 Uudecodes, views and saves the current series
5761 (@code{gnus-uu-decode-uu-and-save-view}).
5765 Remember that these all react to the presence of articles marked with
5766 the process mark. If, for instance, you'd like to decode and save an
5767 entire newsgroup, you'd typically do @kbd{M P a}
5768 (@code{gnus-uu-mark-all}) and then @kbd{X U}
5769 (@code{gnus-uu-decode-uu-and-save}).
5771 All this is very much different from how @code{gnus-uu} worked with
5772 @sc{gnus 4.1}, where you had explicit keystrokes for everything under
5773 the sun. This version of @code{gnus-uu} generally assumes that you mark
5774 articles in some way (@pxref{Setting Process Marks}) and then press
5777 @vindex gnus-uu-notify-files
5778 Note: When trying to decode articles that have names matching
5779 @code{gnus-uu-notify-files}, which is hard-coded to
5780 @samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
5781 automatically post an article on @samp{comp.unix.wizards} saying that
5782 you have just viewed the file in question. This feature can't be turned
5786 @node Shell Archives
5787 @subsection Shell Archives
5789 @cindex shell archives
5790 @cindex shared articles
5792 Shell archives (``shar files'') used to be a popular way to distribute
5793 sources, but it isn't used all that much today. In any case, we have
5794 some commands to deal with these:
5799 @kindex X s (Summary)
5800 @findex gnus-uu-decode-unshar
5801 Unshars the current series (@code{gnus-uu-decode-unshar}).
5804 @kindex X S (Summary)
5805 @findex gnus-uu-decode-unshar-and-save
5806 Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
5809 @kindex X v s (Summary)
5810 @findex gnus-uu-decode-unshar-view
5811 Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
5814 @kindex X v S (Summary)
5815 @findex gnus-uu-decode-unshar-and-save-view
5816 Unshars, views and saves the current series
5817 (@code{gnus-uu-decode-unshar-and-save-view}).
5821 @node PostScript Files
5822 @subsection PostScript Files
5828 @kindex X p (Summary)
5829 @findex gnus-uu-decode-postscript
5830 Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
5833 @kindex X P (Summary)
5834 @findex gnus-uu-decode-postscript-and-save
5835 Unpack and save the current PostScript series
5836 (@code{gnus-uu-decode-postscript-and-save}).
5839 @kindex X v p (Summary)
5840 @findex gnus-uu-decode-postscript-view
5841 View the current PostScript series
5842 (@code{gnus-uu-decode-postscript-view}).
5845 @kindex X v P (Summary)
5846 @findex gnus-uu-decode-postscript-and-save-view
5847 View and save the current PostScript series
5848 (@code{gnus-uu-decode-postscript-and-save-view}).
5853 @subsection Other Files
5857 @kindex X o (Summary)
5858 @findex gnus-uu-decode-save
5859 Save the current series
5860 (@code{gnus-uu-decode-save}).
5863 @kindex X b (Summary)
5864 @findex gnus-uu-decode-binhex
5865 Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
5866 doesn't really work yet.
5870 @node Decoding Variables
5871 @subsection Decoding Variables
5873 Adjective, not verb.
5876 * Rule Variables:: Variables that say how a file is to be viewed.
5877 * Other Decode Variables:: Other decode variables.
5878 * Uuencoding and Posting:: Variables for customizing uuencoding.
5882 @node Rule Variables
5883 @subsubsection Rule Variables
5884 @cindex rule variables
5886 Gnus uses @dfn{rule variables} to decide how to view a file. All these
5887 variables are of the form
5890 (list '(regexp1 command2)
5897 @item gnus-uu-user-view-rules
5898 @vindex gnus-uu-user-view-rules
5900 This variable is consulted first when viewing files. If you wish to use,
5901 for instance, @code{sox} to convert an @samp{.au} sound file, you could
5904 (setq gnus-uu-user-view-rules
5905 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
5908 @item gnus-uu-user-view-rules-end
5909 @vindex gnus-uu-user-view-rules-end
5910 This variable is consulted if Gnus couldn't make any matches from the
5911 user and default view rules.
5913 @item gnus-uu-user-archive-rules
5914 @vindex gnus-uu-user-archive-rules
5915 This variable can be used to say what commands should be used to unpack
5920 @node Other Decode Variables
5921 @subsubsection Other Decode Variables
5924 @vindex gnus-uu-grabbed-file-functions
5926 @item gnus-uu-grabbed-file-functions
5927 All functions in this list will be called right after each file has been
5928 successfully decoded---so that you can move or view files right away,
5929 and don't have to wait for all files to be decoded before you can do
5930 anything. Ready-made functions you can put in this list are:
5934 @item gnus-uu-grab-view
5935 @findex gnus-uu-grab-view
5938 @item gnus-uu-grab-move
5939 @findex gnus-uu-grab-move
5940 Move the file (if you're using a saving function.)
5943 @item gnus-uu-be-dangerous
5944 @vindex gnus-uu-be-dangerous
5945 Specifies what to do if unusual situations arise during decoding. If
5946 @code{nil}, be as conservative as possible. If @code{t}, ignore things
5947 that didn't work, and overwrite existing files. Otherwise, ask each
5950 @item gnus-uu-ignore-files-by-name
5951 @vindex gnus-uu-ignore-files-by-name
5952 Files with name matching this regular expression won't be viewed.
5954 @item gnus-uu-ignore-files-by-type
5955 @vindex gnus-uu-ignore-files-by-type
5956 Files with a @sc{mime} type matching this variable won't be viewed.
5957 Note that Gnus tries to guess what type the file is based on the name.
5958 @code{gnus-uu} is not a @sc{mime} package (yet), so this is slightly
5961 @item gnus-uu-tmp-dir
5962 @vindex gnus-uu-tmp-dir
5963 Where @code{gnus-uu} does its work.
5965 @item gnus-uu-do-not-unpack-archives
5966 @vindex gnus-uu-do-not-unpack-archives
5967 Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
5968 looking for files to display.
5970 @item gnus-uu-view-and-save
5971 @vindex gnus-uu-view-and-save
5972 Non-@code{nil} means that the user will always be asked to save a file
5975 @item gnus-uu-ignore-default-view-rules
5976 @vindex gnus-uu-ignore-default-view-rules
5977 Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
5980 @item gnus-uu-ignore-default-archive-rules
5981 @vindex gnus-uu-ignore-default-archive-rules
5982 Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
5985 @item gnus-uu-kill-carriage-return
5986 @vindex gnus-uu-kill-carriage-return
5987 Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
5990 @item gnus-uu-unmark-articles-not-decoded
5991 @vindex gnus-uu-unmark-articles-not-decoded
5992 Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully
5993 decoded articles as unread.
5995 @item gnus-uu-correct-stripped-uucode
5996 @vindex gnus-uu-correct-stripped-uucode
5997 Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
5998 uuencoded files that have had trailing spaces deleted.
6000 @item gnus-uu-pre-uudecode-hook
6001 @vindex gnus-uu-pre-uudecode-hook
6002 Hook run before sending a message to @code{uudecode}.
6004 @item gnus-uu-view-with-metamail
6005 @vindex gnus-uu-view-with-metamail
6007 Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
6008 commands defined by the rule variables and just fudge a @sc{mime}
6009 content type based on the file name. The result will be fed to
6010 @code{metamail} for viewing.
6012 @item gnus-uu-save-in-digest
6013 @vindex gnus-uu-save-in-digest
6014 Non-@code{nil} means that @code{gnus-uu}, when asked to save without
6015 decoding, will save in digests. If this variable is @code{nil},
6016 @code{gnus-uu} will just save everything in a file without any
6017 embellishments. The digesting almost conforms to RFC1153---no easy way
6018 to specify any meaningful volume and issue numbers were found, so I
6019 simply dropped them.
6024 @node Uuencoding and Posting
6025 @subsubsection Uuencoding and Posting
6029 @item gnus-uu-post-include-before-composing
6030 @vindex gnus-uu-post-include-before-composing
6031 Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
6032 before you compose the article. If this variable is @code{t}, you can
6033 either include an encoded file with @kbd{C-c C-i} or have one included
6034 for you when you post the article.
6036 @item gnus-uu-post-length
6037 @vindex gnus-uu-post-length
6038 Maximum length of an article. The encoded file will be split into how
6039 many articles it takes to post the entire file.
6041 @item gnus-uu-post-threaded
6042 @vindex gnus-uu-post-threaded
6043 Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
6044 thread. This may not be smart, as no other decoder I have seen is able
6045 to follow threads when collecting uuencoded articles. (Well, I have
6046 seen one package that does that---@code{gnus-uu}, but somehow, I don't
6047 think that counts...) Default is @code{nil}.
6049 @item gnus-uu-post-separate-description
6050 @vindex gnus-uu-post-separate-description
6051 Non-@code{nil} means that the description will be posted in a separate
6052 article. The first article will typically be numbered (0/x). If this
6053 variable is @code{nil}, the description the user enters will be included
6054 at the beginning of the first article, which will be numbered (1/x).
6055 Default is @code{t}.
6061 @subsection Viewing Files
6062 @cindex viewing files
6063 @cindex pseudo-articles
6065 After decoding, if the file is some sort of archive, Gnus will attempt
6066 to unpack the archive and see if any of the files in the archive can be
6067 viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz}
6068 containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
6069 uncompress and de-tar the main file, and then view the two pictures.
6070 This unpacking process is recursive, so if the archive contains archives
6071 of archives, it'll all be unpacked.
6073 Finally, Gnus will normally insert a @dfn{pseudo-article} for each
6074 extracted file into the summary buffer. If you go to these
6075 ``articles'', you will be prompted for a command to run (usually Gnus
6076 will make a suggestion), and then the command will be run.
6078 @vindex gnus-view-pseudo-asynchronously
6079 If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
6080 until the viewing is done before proceeding.
6082 @vindex gnus-view-pseudos
6083 If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
6084 the pseudo-articles into the summary buffer, but view them
6085 immediately. If this variable is @code{not-confirm}, the user won't even
6086 be asked for a confirmation before viewing is done.
6088 @vindex gnus-view-pseudos-separately
6089 If @code{gnus-view-pseudos-separately} is non-@code{nil}, one
6090 pseudo-article will be created for each file to be viewed. If
6091 @code{nil}, all files that use the same viewing command will be given as
6092 a list of parameters to that command.
6094 @vindex gnus-insert-pseudo-articles
6095 If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert
6096 pseudo-articles when decoding. It is @code{t} by default.
6098 So; there you are, reading your @emph{pseudo-articles} in your
6099 @emph{virtual newsgroup} from the @emph{virtual server}; and you think:
6100 Why isn't anything real anymore? How did we get here?
6103 @node Article Treatment
6104 @section Article Treatment
6106 Reading through this huge manual, you may have quite forgotten that the
6107 object of newsreaders is to actually, like, read what people have
6108 written. Reading articles. Unfortunately, people are quite bad at
6109 writing, so there are tons of functions and variables to make reading
6110 these articles easier.
6113 * Article Highlighting:: You want to make the article look like fruit salad.
6114 * Article Fontisizing:: Making emphasized text look nice.
6115 * Article Hiding:: You also want to make certain info go away.
6116 * Article Washing:: Lots of way-neat functions to make life better.
6117 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
6118 * Article Date:: Grumble, UT!
6119 * Article Signature:: What is a signature?
6123 @node Article Highlighting
6124 @subsection Article Highlighting
6125 @cindex highlighting
6127 Not only do you want your article buffer to look like fruit salad, but
6128 you want it to look like technicolor fruit salad.
6133 @kindex W H a (Summary)
6134 @findex gnus-article-highlight
6135 @findex gnus-article-maybe-highlight
6136 Do much highlighting of the current article
6137 (@code{gnus-article-highlight}). This function highlights header, cited
6138 text, the signature, and adds buttons to the body and the head.
6140 Most users would prefer using @code{gnus-article-maybe-highlight} in
6141 @code{gnus-article-display-hook} (@pxref{Customizing Articles}) instead.
6142 This is a bit less agressive---it highlights only the headers, the
6143 signature and adds buttons.
6146 @kindex W H h (Summary)
6147 @findex gnus-article-highlight-headers
6148 @vindex gnus-header-face-alist
6149 Highlight the headers (@code{gnus-article-highlight-headers}). The
6150 highlighting will be done according to the @code{gnus-header-face-alist}
6151 variable, which is a list where each element has the form @var{(regexp
6152 name content)}. @var{regexp} is a regular expression for matching the
6153 header, @var{name} is the face used for highlighting the header name
6154 (@pxref{Faces and Fonts}) and @var{content} is the face for highlighting
6155 the header value. The first match made will be used. Note that
6156 @var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
6159 @kindex W H c (Summary)
6160 @findex gnus-article-highlight-citation
6161 Highlight cited text (@code{gnus-article-highlight-citation}).
6163 Some variables to customize the citation highlights:
6166 @vindex gnus-cite-parse-max-size
6168 @item gnus-cite-parse-max-size
6169 If the article size if bigger than this variable (which is 25000 by
6170 default), no citation highlighting will be performed.
6172 @item gnus-cite-prefix-regexp
6173 @vindex gnus-cite-prefix-regexp
6174 Regexp matching the longest possible citation prefix on a line.
6176 @item gnus-cite-max-prefix
6177 @vindex gnus-cite-max-prefix
6178 Maximum possible length for a citation prefix (default 20).
6180 @item gnus-cite-face-list
6181 @vindex gnus-cite-face-list
6182 List of faces used for highlighting citations (@pxref{Faces and Fonts}).
6183 When there are citations from multiple articles in the same message,
6184 Gnus will try to give each citation from each article its own face.
6185 This should make it easier to see who wrote what.
6187 @item gnus-supercite-regexp
6188 @vindex gnus-supercite-regexp
6189 Regexp matching normal Supercite attribution lines.
6191 @item gnus-supercite-secondary-regexp
6192 @vindex gnus-supercite-secondary-regexp
6193 Regexp matching mangled Supercite attribution lines.
6195 @item gnus-cite-minimum-match-count
6196 @vindex gnus-cite-minimum-match-count
6197 Minimum number of identical prefixes we have to see before we believe
6198 that it's a citation.
6200 @item gnus-cite-attribution-prefix
6201 @vindex gnus-cite-attribution-prefix
6202 Regexp matching the beginning of an attribution line.
6204 @item gnus-cite-attribution-suffix
6205 @vindex gnus-cite-attribution-suffix
6206 Regexp matching the end of an attribution line.
6208 @item gnus-cite-attribution-face
6209 @vindex gnus-cite-attribution-face
6210 Face used for attribution lines. It is merged with the face for the
6211 cited text belonging to the attribution.
6217 @kindex W H s (Summary)
6218 @vindex gnus-signature-separator
6219 @vindex gnus-signature-face
6220 @findex gnus-article-highlight-signature
6221 Highlight the signature (@code{gnus-article-highlight-signature}).
6222 Everything after @code{gnus-signature-separator} (@pxref{Article
6223 Signature}) in an article will be considered a signature and will be
6224 highlighted with @code{gnus-signature-face}, which is @code{italic} by
6229 @xref{Customizing Articles} for how to highlight articles automatically.
6232 @node Article Fontisizing
6233 @subsection Article Fontisizing
6235 @cindex article emphasis
6237 @findex gnus-article-emphasize
6238 @kindex W e (Summary)
6239 People commonly add emphasis to words in news articles by writing things
6240 like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by
6241 running the article through the @kbd{W e}
6242 (@code{gnus-article-emphasize}) command.
6244 @vindex gnus-emphasis-alist
6245 How the emphasis is computed is controlled by the
6246 @code{gnus-emphasis-alist} variable. This is an alist where the first
6247 element is a regular expression to be matched. The second is a number
6248 that says what regular expression grouping is used to find the entire
6249 emphasized word. The third is a number that says what regexp grouping
6250 should be displayed and highlighted. (The text between these two
6251 groupings will be hidden.) The fourth is the face used for
6255 (setq gnus-article-emphasis
6256 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
6257 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
6260 @vindex gnus-emphasis-underline
6261 @vindex gnus-emphasis-bold
6262 @vindex gnus-emphasis-italic
6263 @vindex gnus-emphasis-underline-bold
6264 @vindex gnus-emphasis-underline-italic
6265 @vindex gnus-emphasis-bold-italic
6266 @vindex gnus-emphasis-underline-bold-italic
6267 By default, there are seven rules, and they use the following faces:
6268 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
6269 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
6270 @code{gnus-emphasis-underline-italic},
6271 @code{gnus-emphasis-underline-bold}, and
6272 @code{gnus-emphasis-underline-bold-italic}.
6274 If you want to change these faces, you can either use @kbd{M-x
6275 customize}, or you can use @code{copy-face}. For instance, if you want
6276 to make @code{gnus-emphasis-italic} use a red face instead, you could
6280 (copy-face 'red 'gnus-emphasis-italic)
6283 @xref{Customizing Articles} for how to fontize articles automatically.
6286 @node Article Hiding
6287 @subsection Article Hiding
6288 @cindex article hiding
6290 Or rather, hiding certain things in each article. There usually is much
6291 too much cruft in most articles.
6296 @kindex W W a (Summary)
6297 @findex gnus-article-hide
6298 Do quite a lot of hiding on the article buffer
6299 (@kbd{gnus-article-hide}). In particular, this function will hide
6300 headers, PGP, cited text and the signature.
6303 @kindex W W h (Summary)
6304 @findex gnus-article-hide-headers
6305 Hide headers (@code{gnus-article-hide-headers}). @xref{Hiding
6309 @kindex W W b (Summary)
6310 @findex gnus-article-hide-boring-headers
6311 Hide headers that aren't particularly interesting
6312 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
6315 @kindex W W s (Summary)
6316 @findex gnus-article-hide-signature
6317 Hide signature (@code{gnus-article-hide-signature}). @xref{Article
6321 @kindex W W p (Summary)
6322 @findex gnus-article-hide-pgp
6323 @vindex gnus-article-hide-pgp-hook
6324 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). The
6325 @code{gnus-article-hide-pgp-hook} hook will be run after a @sc{pgp}
6326 signature has been hidden. For example, to automatically verify
6327 articles that have signatures in them do:
6329 ;;; Hide pgp cruft if any.
6331 (add-hook 'gnus-article-display-hook 'gnus-article-hide-pgp)
6333 ;;; After hiding pgp, verify the message;
6334 ;;; only happens if pgp signature is found.
6336 (add-hook 'gnus-article-hide-pgp-hook
6339 (set-buffer gnus-original-article-buffer)
6344 @kindex W W P (Summary)
6345 @findex gnus-article-hide-pem
6346 Hide @sc{pem} (privacy enhanced messages) cruft
6347 (@code{gnus-article-hide-pem}).
6350 @kindex W W c (Summary)
6351 @findex gnus-article-hide-citation
6352 Hide citation (@code{gnus-article-hide-citation}). Some variables for
6353 customizing the hiding:
6357 @item gnus-cited-opened-text-button-line-format
6358 @itemx gnus-cited-closed-text-button-line-format
6359 @vindex gnus-cited-closed-text-button-line-format
6360 @vindex gnus-cited-opened-text-button-line-format
6361 Gnus adds buttons to show where the cited text has been hidden, and to
6362 allow toggle hiding the text. The format of the variable is specified
6363 by these format-like variable (@pxref{Formatting Variables}). These
6368 Starting point of the hidden text.
6370 Ending point of the hidden text.
6372 Number of characters in the hidden region.
6374 Number of lines of hidden text.
6377 @item gnus-cited-lines-visible
6378 @vindex gnus-cited-lines-visible
6379 The number of lines at the beginning of the cited text to leave shown.
6384 @kindex W W C-c (Summary)
6385 @findex gnus-article-hide-citation-maybe
6387 Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the
6388 following two variables:
6391 @item gnus-cite-hide-percentage
6392 @vindex gnus-cite-hide-percentage
6393 If the cited text is of a bigger percentage than this variable (default
6394 50), hide the cited text.
6396 @item gnus-cite-hide-absolute
6397 @vindex gnus-cite-hide-absolute
6398 The cited text must have at least this length (default 10) before it
6403 @kindex W W C (Summary)
6404 @findex gnus-article-hide-citation-in-followups
6405 Hide cited text in articles that aren't roots
6406 (@code{gnus-article-hide-citation-in-followups}). This isn't very
6407 useful as an interactive command, but might be a handy function to stick
6408 in @code{gnus-article-display-hook} (@pxref{Customizing Articles}).
6412 All these ``hiding'' commands are toggles, but if you give a negative
6413 prefix to these commands, they will show what they have previously
6414 hidden. If you give a positive prefix, they will always hide.
6416 Also @pxref{Article Highlighting} for further variables for
6417 citation customization.
6419 @xref{Customizing Articles} for how to hide article elements
6423 @node Article Washing
6424 @subsection Article Washing
6426 @cindex article washing
6428 We call this ``article washing'' for a really good reason. Namely, the
6429 @kbd{A} key was taken, so we had to use the @kbd{W} key instead.
6431 @dfn{Washing} is defined by us as ``changing something from something to
6432 something else'', but normally results in something looking better.
6438 @kindex W l (Summary)
6439 @findex gnus-summary-stop-page-breaking
6440 Remove page breaks from the current article
6441 (@code{gnus-summary-stop-page-breaking}). @xref{Misc Article} for page
6445 @kindex W r (Summary)
6446 @findex gnus-summary-caesar-message
6447 @c @icon{gnus-summary-caesar-message}
6448 Do a Caesar rotate (rot13) on the article buffer
6449 (@code{gnus-summary-caesar-message}).
6450 Unreadable articles that tell you to read them with Caesar rotate or rot13.
6451 (Typically offensive jokes and such.)
6453 It's commonly called ``rot13'' because each letter is rotated 13
6454 positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter
6455 #15). It is sometimes referred to as ``Caesar rotate'' because Caesar
6456 is rumored to have employed this form of, uh, somewhat weak encryption.
6459 @kindex W t (Summary)
6460 @findex gnus-summary-toggle-header
6461 Toggle whether to display all headers in the article buffer
6462 (@code{gnus-summary-toggle-header}).
6465 @kindex W v (Summary)
6466 @findex gnus-summary-verbose-header
6467 Toggle whether to display all headers in the article buffer permanently
6468 (@code{gnus-summary-verbose-header}).
6471 @kindex W m (Summary)
6472 @findex gnus-summary-toggle-mime
6473 Toggle whether to run the article through @sc{mime} before displaying
6474 (@code{gnus-summary-toggle-mime}).
6477 @kindex W o (Summary)
6478 @findex gnus-article-treat-overstrike
6479 Treat overstrike (@code{gnus-article-treat-overstrike}).
6482 @kindex W d (Summary)
6483 @findex gnus-article-treat-dumbquotes
6484 @vindex gnus-article-dumbquotes-map
6486 @cindex M******** sm*rtq**t*s
6488 Treat M******** sm*rtq**t*s according to
6489 @code{gnus-article-dumbquotes-map}
6490 (@code{gnus-article-treat-dumbquotes}).
6493 @kindex W w (Summary)
6494 @findex gnus-article-fill-cited-article
6495 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this
6496 function in @code{gnus-article-display-hook}, it should be run fairly
6497 late and certainly after any highlighting.
6499 You can give the command a numerical prefix to specify the width to use
6503 @kindex W c (Summary)
6504 @findex gnus-article-remove-cr
6505 Remove CR (i. e., @samp{^M}s on the end of the lines)
6506 (@code{gnus-article-remove-cr}).
6509 @kindex W q (Summary)
6510 @findex gnus-article-de-quoted-unreadable
6511 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
6512 Quoted-Printable is one common @sc{mime} encoding employed when sending
6513 non-ASCII (i. e., 8-bit) articles. It typically makes strings like
6514 @samp{déjà vu} look like @samp{d=E9j=E0 vu}, which doesn't look very
6518 @kindex W f (Summary)
6520 @findex gnus-article-display-x-face
6521 @findex gnus-article-x-face-command
6522 @vindex gnus-article-x-face-command
6523 @vindex gnus-article-x-face-too-ugly
6529 Look for and display any X-Face headers
6530 (@code{gnus-article-display-x-face}). The command executed by this
6531 function is given by the @code{gnus-article-x-face-command} variable.
6532 If this variable is a string, this string will be executed in a
6533 sub-shell. If it is a function, this function will be called with the
6534 face as the argument. If the @code{gnus-article-x-face-too-ugly} (which
6535 is a regexp) matches the @code{From} header, the face will not be shown.
6536 The default action under Emacs is to fork off an @code{xv} to view the
6537 face; under XEmacs the default action is to display the face before the
6538 @code{From} header. (It's nicer if XEmacs has been compiled with X-Face
6539 support---that will make display somewhat faster. If there's no native
6540 X-Face support, Gnus will try to convert the @code{X-Face} header using
6541 external programs from the @code{pbmplus} package and friends.) If you
6542 want to have this function in the display hook, it should probably come
6546 @kindex W b (Summary)
6547 @findex gnus-article-add-buttons
6548 Add clickable buttons to the article (@code{gnus-article-add-buttons}).
6549 @xref{Article Buttons}.
6552 @kindex W B (Summary)
6553 @findex gnus-article-add-buttons-to-head
6554 Add clickable buttons to the article headers
6555 (@code{gnus-article-add-buttons-to-head}).
6558 @kindex W E l (Summary)
6559 @findex gnus-article-strip-leading-blank-lines
6560 Remove all blank lines from the beginning of the article
6561 (@code{gnus-article-strip-leading-blank-lines}).
6564 @kindex W E m (Summary)
6565 @findex gnus-article-strip-multiple-blank-lines
6566 Replace all blank lines with empty lines and then all multiple empty
6567 lines with a single empty line.
6568 (@code{gnus-article-strip-multiple-blank-lines}).
6571 @kindex W E t (Summary)
6572 @findex gnus-article-remove-trailing-blank-lines
6573 Remove all blank lines at the end of the article
6574 (@code{gnus-article-remove-trailing-blank-lines}).
6577 @kindex W E a (Summary)
6578 @findex gnus-article-strip-blank-lines
6579 Do all the three commands above
6580 (@code{gnus-article-strip-blank-lines}).
6583 @kindex W E A (Summary)
6584 @findex gnus-article-strip-all-blank-lines
6585 Remove all blank lines
6586 (@code{gnus-article-strip-all-blank-lines}).
6589 @kindex W E s (Summary)
6590 @findex gnus-article-strip-leading-space
6591 Remove all white space from the beginning of all lines of the article
6592 body (@code{gnus-article-strip-leading-space}).
6596 @xref{Customizing Articles} for how to wash articles automatically.
6599 @node Article Buttons
6600 @subsection Article Buttons
6603 People often include references to other stuff in articles, and it would
6604 be nice if Gnus could just fetch whatever it is that people talk about
6605 with the minimum of fuzz when you hit @kbd{RET} or use the middle mouse
6606 button on these references.
6608 Gnus adds @dfn{buttons} to certain standard references by default:
6609 Well-formed URLs, mail addresses and Message-IDs. This is controlled by
6610 two variables, one that handles article bodies and one that handles
6615 @item gnus-button-alist
6616 @vindex gnus-button-alist
6617 This is an alist where each entry has this form:
6620 (REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR)
6626 All text that match this regular expression will be considered an
6627 external reference. Here's a typical regexp that matches embedded URLs:
6628 @samp{<URL:\\([^\n\r>]*\\)>}.
6631 Gnus has to know which parts of the matches is to be highlighted. This
6632 is a number that says what sub-expression of the regexp is to be
6633 highlighted. If you want it all highlighted, you use 0 here.
6636 This form will be @code{eval}ed, and if the result is non-@code{nil},
6637 this is considered a match. This is useful if you want extra sifting to
6638 avoid false matches.
6641 This function will be called when you click on this button.
6644 As with @var{button-par}, this is a sub-expression number, but this one
6645 says which part of the match is to be sent as data to @var{function}.
6649 So the full entry for buttonizing URLs is then
6652 ("<URL:\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
6655 @item gnus-header-button-alist
6656 @vindex gnus-header-button-alist
6657 This is just like the other alist, except that it is applied to the
6658 article head only, and that each entry has an additional element that is
6659 used to say what headers to apply the buttonize coding to:
6662 (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR)
6665 @var{HEADER} is a regular expression.
6667 @item gnus-button-url-regexp
6668 @vindex gnus-button-url-regexp
6669 A regular expression that matches embedded URLs. It is used in the
6670 default values of the variables above.
6672 @item gnus-article-button-face
6673 @vindex gnus-article-button-face
6674 Face used on buttons.
6676 @item gnus-article-mouse-face
6677 @vindex gnus-article-mouse-face
6678 Face used when the mouse cursor is over a button.
6682 @xref{Customizing Articles} for how to buttonize articles automatically.
6686 @subsection Article Date
6688 The date is most likely generated in some obscure timezone you've never
6689 heard of, so it's quite nice to be able to find out what the time was
6690 when the article was sent.
6695 @kindex W T u (Summary)
6696 @findex gnus-article-date-ut
6697 Display the date in UT (aka. GMT, aka ZULU)
6698 (@code{gnus-article-date-ut}).
6701 @kindex W T i (Summary)
6702 @findex gnus-article-date-iso8601
6704 Display the date in international format, aka. ISO 8601
6705 (@code{gnus-article-date-iso8601}).
6708 @kindex W T l (Summary)
6709 @findex gnus-article-date-local
6710 Display the date in the local timezone (@code{gnus-article-date-local}).
6713 @kindex W T s (Summary)
6714 @vindex gnus-article-time-format
6715 @findex gnus-article-date-user
6716 @findex format-time-string
6717 Display the date using a user-defined format
6718 (@code{gnus-article-date-user}). The format is specified by the
6719 @code{gnus-article-time-format} variable, and is a string that's passed
6720 to @code{format-time-string}. See the documentation of that variable
6721 for a list of possible format specs.
6724 @kindex W T e (Summary)
6725 @findex gnus-article-date-lapsed
6726 @findex gnus-start-date-timer
6727 @findex gnus-stop-date-timer
6728 Say how much time has elapsed between the article was posted and now
6729 (@code{gnus-article-date-lapsed}). If you want to have this line
6730 updated continually, you can put
6733 (gnus-start-date-timer)
6736 in your @file{.gnus.el} file, or you can run it off of some hook. If
6737 you want to stop the timer, you can use the @code{gnus-stop-date-timer}
6741 @kindex W T o (Summary)
6742 @findex gnus-article-date-original
6743 Display the original date (@code{gnus-article-date-original}). This can
6744 be useful if you normally use some other conversion function and are
6745 worried that it might be doing something totally wrong. Say, claiming
6746 that the article was posted in 1854. Although something like that is
6747 @emph{totally} impossible. Don't you trust me? *titter*
6751 @xref{Customizing Articles} for how to display the date in your
6752 preferred format automatically.
6755 @node Article Signature
6756 @subsection Article Signature
6758 @cindex article signature
6760 @vindex gnus-signature-separator
6761 Each article is divided into two parts---the head and the body. The
6762 body can be divided into a signature part and a text part. The variable
6763 that says what is to be considered a signature is
6764 @code{gnus-signature-separator}. This is normally the standard
6765 @samp{^-- $} as mandated by son-of-RFC 1036. However, many people use
6766 non-standard signature separators, so this variable can also be a list
6767 of regular expressions to be tested, one by one. (Searches are done
6768 from the end of the body towards the beginning.) One likely value is:
6771 (setq gnus-signature-separator
6772 '("^-- $" ; The standard
6773 "^-- *$" ; A common mangling
6774 "^-------*$" ; Many people just use a looong
6775 ; line of dashes. Shame!
6776 "^ *--------*$" ; Double-shame!
6777 "^________*$" ; Underscores are also popular
6778 "^========*$")) ; Pervert!
6781 The more permissive you are, the more likely it is that you'll get false
6784 @vindex gnus-signature-limit
6785 @code{gnus-signature-limit} provides a limit to what is considered a
6790 If it is an integer, no signature may be longer (in characters) than
6793 If it is a floating point number, no signature may be longer (in lines)
6796 If it is a function, the function will be called without any parameters,
6797 and if it returns @code{nil}, there is no signature in the buffer.
6799 If it is a string, it will be used as a regexp. If it matches, the text
6800 in question is not a signature.
6803 This variable can also be a list where the elements may be of the types
6804 listed above. Here's an example:
6807 (setq gnus-signature-limit
6808 '(200.0 "^---*Forwarded article"))
6811 This means that if there are more than 200 lines after the signature
6812 separator, or the text after the signature separator is matched by
6813 the regular expression @samp{^---*Forwarded article}, then it isn't a
6814 signature after all.
6818 @section MIME Commands
6819 @cindex MIME decoding
6823 @kindex W M w (Summary)
6824 Decode RFC2047-encoded words in the article headers
6825 (@code{gnus-article-decode-mime-words}).
6828 @kindex W M c (Summary)
6829 Decode encoded article bodies as well as charsets
6830 (@code{gnus-article-decode-charset}).
6832 This command looks in the @code{Content-Type} header to determine the
6833 charset. If there is no such header in the article, you can give it a
6834 prefix, which will prompt for the charset to decode as. In regional
6835 groups where people post using some common encoding (but do not include
6836 MIME headers), you can set the @code{charset} group/topic parameter to
6837 the required charset (@pxref{Group Parameters}).
6840 @kindex W M v (Summary)
6841 View all the @sc{mime} parts in the current article
6842 (@code{gnus-mime-view-all-parts}).
6847 @node Article Commands
6848 @section Article Commands
6855 @kindex A P (Summary)
6856 @vindex gnus-ps-print-hook
6857 @findex gnus-summary-print-article
6858 Generate and print a PostScript image of the article buffer
6859 (@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will be
6860 run just before printing the buffer.
6865 @node Summary Sorting
6866 @section Summary Sorting
6867 @cindex summary sorting
6869 You can have the summary buffer sorted in various ways, even though I
6870 can't really see why you'd want that.
6875 @kindex C-c C-s C-n (Summary)
6876 @findex gnus-summary-sort-by-number
6877 Sort by article number (@code{gnus-summary-sort-by-number}).
6880 @kindex C-c C-s C-a (Summary)
6881 @findex gnus-summary-sort-by-author
6882 Sort by author (@code{gnus-summary-sort-by-author}).
6885 @kindex C-c C-s C-s (Summary)
6886 @findex gnus-summary-sort-by-subject
6887 Sort by subject (@code{gnus-summary-sort-by-subject}).
6890 @kindex C-c C-s C-d (Summary)
6891 @findex gnus-summary-sort-by-date
6892 Sort by date (@code{gnus-summary-sort-by-date}).
6895 @kindex C-c C-s C-l (Summary)
6896 @findex gnus-summary-sort-by-lines
6897 Sort by lines (@code{gnus-summary-sort-by-lines}).
6900 @kindex C-c C-s C-i (Summary)
6901 @findex gnus-summary-sort-by-score
6902 Sort by score (@code{gnus-summary-sort-by-score}).
6905 These functions will work both when you use threading and when you don't
6906 use threading. In the latter case, all summary lines will be sorted,
6907 line by line. In the former case, sorting will be done on a
6908 root-by-root basis, which might not be what you were looking for. To
6909 toggle whether to use threading, type @kbd{T T} (@pxref{Thread
6913 @node Finding the Parent
6914 @section Finding the Parent
6915 @cindex parent articles
6916 @cindex referring articles
6921 @findex gnus-summary-refer-parent-article
6922 If you'd like to read the parent of the current article, and it is not
6923 displayed in the summary buffer, you might still be able to. That is,
6924 if the current group is fetched by @sc{nntp}, the parent hasn't expired
6925 and the @code{References} in the current article are not mangled, you
6926 can just press @kbd{^} or @kbd{A r}
6927 (@code{gnus-summary-refer-parent-article}). If everything goes well,
6928 you'll get the parent. If the parent is already displayed in the
6929 summary buffer, point will just move to this article.
6931 If given a positive numerical prefix, fetch that many articles back into
6932 the ancestry. If given a negative numerical prefix, fetch just that
6933 ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the
6934 grandparent and the grandgrandparent of the current article. If you say
6935 @kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current
6939 @findex gnus-summary-refer-references
6940 @kindex A R (Summary)
6941 Fetch all articles mentioned in the @code{References} header of the
6942 article (@code{gnus-summary-refer-references}).
6945 @findex gnus-summary-refer-thread
6946 @kindex A T (Summary)
6947 Display the full thread where the current article appears
6948 (@code{gnus-summary-refer-thread}). This command has to fetch all the
6949 headers in the current group to work, so it usually takes a while. If
6950 you do it often, you may consider setting @code{gnus-fetch-old-headers}
6951 to @code{invisible} (@pxref{Filling In Threads}). This won't have any
6952 visible effects normally, but it'll make this command work a whole lot
6953 faster. Of course, it'll make group entry somewhat slow.
6955 @vindex gnus-refer-thread-limit
6956 The @code{gnus-refer-thread-limit} variable says how many old (i. e.,
6957 articles before the first displayed in the current group) headers to
6958 fetch when doing this command. The default is 200. If @code{t}, all
6959 the available headers will be fetched. This variable can be overridden
6960 by giving the @kbd{A T} command a numerical prefix.
6963 @findex gnus-summary-refer-article
6964 @kindex M-^ (Summary)
6966 @cindex fetching by Message-ID
6967 You can also ask the @sc{nntp} server for an arbitrary article, no
6968 matter what group it belongs to. @kbd{M-^}
6969 (@code{gnus-summary-refer-article}) will ask you for a
6970 @code{Message-ID}, which is one of those long, hard-to-read thingies
6971 that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You
6972 have to get it all exactly right. No fuzzy searches, I'm afraid.
6975 The current select method will be used when fetching by
6976 @code{Message-ID} from non-news select method, but you can override this
6977 by giving this command a prefix.
6979 @vindex gnus-refer-article-method
6980 If the group you are reading is located on a backend that does not
6981 support fetching by @code{Message-ID} very well (like @code{nnspool}),
6982 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It
6983 would, perhaps, be best if the @sc{nntp} server you consult is the one
6984 updating the spool you are reading from, but that's not really
6987 Most of the mail backends support fetching by @code{Message-ID}, but do
6988 not do a particularly excellent job at it. That is, @code{nnmbox} and
6989 @code{nnbabyl} are able to locate articles from any groups, while
6990 @code{nnml} and @code{nnfolder} are only able to locate articles that
6991 have been posted to the current group. (Anything else would be too time
6992 consuming.) @code{nnmh} does not support this at all.
6995 @node Alternative Approaches
6996 @section Alternative Approaches
6998 Different people like to read news using different methods. This being
6999 Gnus, we offer a small selection of minor modes for the summary buffers.
7002 * Pick and Read:: First mark articles and then read them.
7003 * Binary Groups:: Auto-decode all articles.
7008 @subsection Pick and Read
7009 @cindex pick and read
7011 Some newsreaders (like @code{nn} and, uhm, @code{Netnews} on VM/CMS) use
7012 a two-phased reading interface. The user first marks in a summary
7013 buffer the articles she wants to read. Then she starts reading the
7014 articles with just an article buffer displayed.
7016 @findex gnus-pick-mode
7017 @kindex M-x gnus-pick-mode
7018 Gnus provides a summary buffer minor mode that allows
7019 this---@code{gnus-pick-mode}. This basically means that a few process
7020 mark commands become one-keystroke commands to allow easy marking, and
7021 it provides one additional command for switching to the summary buffer.
7023 Here are the available keystrokes when using pick mode:
7028 @findex gnus-pick-article-or-thread
7029 Pick the article or thread on the current line
7030 (@code{gnus-pick-article-or-thread}). If the variable
7031 @code{gnus-thread-hide-subtree} is true, then this key selects the
7032 entire thread when used at the first article of the thread. Otherwise,
7033 it selects just the article. If given a numerical prefix, go to that
7034 thread or article and pick it. (The line number is normally displayed
7035 at the beginning of the summary pick lines.)
7038 @kindex SPACE (Pick)
7039 @findex gnus-pick-next-page
7040 Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If
7041 at the end of the buffer, start reading the picked articles.
7045 @findex gnus-pick-unmark-article-or-thread.
7046 Unpick the thread or article
7047 (@code{gnus-pick-unmark-article-or-thread}). If the variable
7048 @code{gnus-thread-hide-subtree} is true, then this key unpicks the
7049 thread if used at the first article of the thread. Otherwise it unpicks
7050 just the article. You can give this key a numerical prefix to unpick
7051 the thread or article at that line.
7055 @findex gnus-pick-start-reading
7056 @vindex gnus-pick-display-summary
7057 Start reading the picked articles (@code{gnus-pick-start-reading}). If
7058 given a prefix, mark all unpicked articles as read first. If
7059 @code{gnus-pick-display-summary} is non-@code{nil}, the summary buffer
7060 will still be visible when you are reading.
7064 All the normal summary mode commands are still available in the
7065 pick-mode, with the exception of @kbd{u}. However @kbd{!} is available
7066 which is mapped to the same function
7067 @code{gnus-summary-tick-article-forward}.
7069 If this sounds like a good idea to you, you could say:
7072 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
7075 @vindex gnus-pick-mode-hook
7076 @code{gnus-pick-mode-hook} is run in pick minor mode buffers.
7078 @vindex gnus-mark-unpicked-articles-as-read
7079 If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark
7080 all unpicked articles as read. The default is @code{nil}.
7082 @vindex gnus-summary-pick-line-format
7083 The summary line format in pick mode is slightly different from the
7084 standard format. At the beginning of each line the line number is
7085 displayed. The pick mode line format is controlled by the
7086 @code{gnus-summary-pick-line-format} variable (@pxref{Formatting
7087 Variables}). It accepts the same format specs that
7088 @code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}).
7092 @subsection Binary Groups
7093 @cindex binary groups
7095 @findex gnus-binary-mode
7096 @kindex M-x gnus-binary-mode
7097 If you spend much time in binary groups, you may grow tired of hitting
7098 @kbd{X u}, @kbd{n}, @kbd{RET} all the time. @kbd{M-x gnus-binary-mode}
7099 is a minor mode for summary buffers that makes all ordinary Gnus article
7100 selection functions uudecode series of articles and display the result
7101 instead of just displaying the articles the normal way.
7104 @findex gnus-binary-show-article
7105 The only way, in fact, to see the actual articles is the @kbd{g}
7106 command, when you have turned on this mode
7107 (@code{gnus-binary-show-article}).
7109 @vindex gnus-binary-mode-hook
7110 @code{gnus-binary-mode-hook} is called in binary minor mode buffers.
7114 @section Tree Display
7117 @vindex gnus-use-trees
7118 If you don't like the normal Gnus summary display, you might try setting
7119 @code{gnus-use-trees} to @code{t}. This will create (by default) an
7120 additional @dfn{tree buffer}. You can execute all summary mode commands
7123 There are a few variables to customize the tree display, of course:
7126 @item gnus-tree-mode-hook
7127 @vindex gnus-tree-mode-hook
7128 A hook called in all tree mode buffers.
7130 @item gnus-tree-mode-line-format
7131 @vindex gnus-tree-mode-line-format
7132 A format string for the mode bar in the tree mode buffers (@pxref{Mode
7133 Line Formatting}). The default is @samp{Gnus: %%b %S %Z}. For a list
7134 of valid specs, @pxref{Summary Buffer Mode Line}.
7136 @item gnus-selected-tree-face
7137 @vindex gnus-selected-tree-face
7138 Face used for highlighting the selected article in the tree buffer. The
7139 default is @code{modeline}.
7141 @item gnus-tree-line-format
7142 @vindex gnus-tree-line-format
7143 A format string for the tree nodes. The name is a bit of a misnomer,
7144 though---it doesn't define a line, but just the node. The default value
7145 is @samp{%(%[%3,3n%]%)}, which displays the first three characters of
7146 the name of the poster. It is vital that all nodes are of the same
7147 length, so you @emph{must} use @samp{%4,4n}-like specifiers.
7153 The name of the poster.
7155 The @code{From} header.
7157 The number of the article.
7159 The opening bracket.
7161 The closing bracket.
7166 @xref{Formatting Variables}.
7168 Variables related to the display are:
7171 @item gnus-tree-brackets
7172 @vindex gnus-tree-brackets
7173 This is used for differentiating between ``real'' articles and
7174 ``sparse'' articles. The format is @var{((real-open . real-close)
7175 (sparse-open . sparse-close) (dummy-open . dummy-close))}, and the
7176 default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}.
7178 @item gnus-tree-parent-child-edges
7179 @vindex gnus-tree-parent-child-edges
7180 This is a list that contains the characters used for connecting parent
7181 nodes to their children. The default is @code{(?- ?\\ ?|)}.
7185 @item gnus-tree-minimize-window
7186 @vindex gnus-tree-minimize-window
7187 If this variable is non-@code{nil}, Gnus will try to keep the tree
7188 buffer as small as possible to allow more room for the other Gnus
7189 windows. If this variable is a number, the tree buffer will never be
7190 higher than that number. The default is @code{t}. Note that if you
7191 have several windows displayed side-by-side in a frame and the tree
7192 buffer is one of these, minimizing the tree window will also resize all
7193 other windows displayed next to it.
7195 @item gnus-generate-tree-function
7196 @vindex gnus-generate-tree-function
7197 @findex gnus-generate-horizontal-tree
7198 @findex gnus-generate-vertical-tree
7199 The function that actually generates the thread tree. Two predefined
7200 functions are available: @code{gnus-generate-horizontal-tree} and
7201 @code{gnus-generate-vertical-tree} (which is the default).
7205 Here's an example from a horizontal tree buffer:
7208 @{***@}-(***)-[odd]-[Gun]
7218 Here's the same thread displayed in a vertical tree buffer:
7222 |--------------------------\-----\-----\
7223 (***) [Bjo] [Gun] [Gun]
7225 [odd] [Jan] [odd] (***) [Jor]
7227 [Gun] [Eri] [Eri] [odd]
7232 If you're using horizontal trees, it might be nice to display the trees
7233 side-by-side with the summary buffer. You could add something like the
7234 following to your @file{.gnus.el} file:
7237 (setq gnus-use-trees t
7238 gnus-generate-tree-function 'gnus-generate-horizontal-tree
7239 gnus-tree-minimize-window nil)
7240 (gnus-add-configuration
7244 (summary 0.75 point)
7249 @xref{Windows Configuration}.
7252 @node Mail Group Commands
7253 @section Mail Group Commands
7254 @cindex mail group commands
7256 Some commands only make sense in mail groups. If these commands are
7257 invalid in the current group, they will raise a hell and let you know.
7259 All these commands (except the expiry and edit commands) use the
7260 process/prefix convention (@pxref{Process/Prefix}).
7265 @kindex B e (Summary)
7266 @findex gnus-summary-expire-articles
7267 Expire all expirable articles in the group
7268 (@code{gnus-summary-expire-articles}).
7271 @kindex B M-C-e (Summary)
7272 @findex gnus-summary-expire-articles-now
7273 Delete all the expirable articles in the group
7274 (@code{gnus-summary-expire-articles-now}). This means that @strong{all}
7275 articles eligible for expiry in the current group will
7276 disappear forever into that big @file{/dev/null} in the sky.
7279 @kindex B DEL (Summary)
7280 @findex gnus-summary-delete-article
7281 @c @icon{gnus-summary-mail-delete}
7282 Delete the mail article. This is ``delete'' as in ``delete it from your
7283 disk forever and ever, never to return again.'' Use with caution.
7284 (@code{gnus-summary-delete-article}).
7287 @kindex B m (Summary)
7289 @findex gnus-summary-move-article
7290 Move the article from one mail group to another
7291 (@code{gnus-summary-move-article}).
7294 @kindex B c (Summary)
7296 @findex gnus-summary-copy-article
7297 @c @icon{gnus-summary-mail-copy}
7298 Copy the article from one group (mail group or not) to a mail group
7299 (@code{gnus-summary-copy-article}).
7302 @kindex B B (Summary)
7303 @cindex crosspost mail
7304 @findex gnus-summary-crosspost-article
7305 Crosspost the current article to some other group
7306 (@code{gnus-summary-crosspost-article}). This will create a new copy of
7307 the article in the other group, and the Xref headers of the article will
7308 be properly updated.
7311 @kindex B i (Summary)
7312 @findex gnus-summary-import-article
7313 Import an arbitrary file into the current mail newsgroup
7314 (@code{gnus-summary-import-article}). You will be prompted for a file
7315 name, a @code{From} header and a @code{Subject} header.
7318 @kindex B r (Summary)
7319 @findex gnus-summary-respool-article
7320 Respool the mail article (@code{gnus-summary-respool-article}).
7321 @code{gnus-summary-respool-default-method} will be used as the default
7322 select method when respooling. This variable is @code{nil} by default,
7323 which means that the current group select method will be used instead.
7327 @kindex B w (Summary)
7329 @findex gnus-summary-edit-article
7330 @kindex C-c C-c (Article)
7331 Edit the current article (@code{gnus-summary-edit-article}). To finish
7332 editing and make the changes permanent, type @kbd{C-c C-c}
7333 (@kbd{gnus-summary-edit-article-done}). If you give a prefix to the
7334 @kbd{C-c C-c} command, Gnus won't re-highlight the article.
7337 @kindex B q (Summary)
7338 @findex gnus-summary-respool-query
7339 If you want to re-spool an article, you might be curious as to what group
7340 the article will end up in before you do the re-spooling. This command
7341 will tell you (@code{gnus-summary-respool-query}).
7344 @kindex B t (Summary)
7345 @findex gnus-summary-respool-trace
7346 Similarly, this command will display all fancy splitting patterns used
7347 when repooling, if any (@code{gnus-summary-respool-trace}).
7350 @kindex B p (Summary)
7351 @findex gnus-summary-article-posted-p
7352 Some people have a tendency to send you "courtesy" copies when they
7353 follow up to articles you have posted. These usually have a
7354 @code{Newsgroups} header in them, but not always. This command
7355 (@code{gnus-summary-article-posted-p}) will try to fetch the current
7356 article from your news server (or rather, from
7357 @code{gnus-refer-article-method} or @code{gnus-select-method}) and will
7358 report back whether it found the article or not. Even if it says that
7359 it didn't find the article, it may have been posted anyway---mail
7360 propagation is much faster than news propagation, and the news copy may
7361 just not have arrived yet.
7365 @vindex gnus-move-split-methods
7366 @cindex moving articles
7367 If you move (or copy) articles regularly, you might wish to have Gnus
7368 suggest where to put the articles. @code{gnus-move-split-methods} is a
7369 variable that uses the same syntax as @code{gnus-split-methods}
7370 (@pxref{Saving Articles}). You may customize that variable to create
7371 suggestions you find reasonable.
7374 (setq gnus-move-split-methods
7375 '(("^From:.*Lars Magne" "nnml:junk")
7376 ("^Subject:.*gnus" "nnfolder:important")
7377 (".*" "nnml:misc")))
7381 @node Various Summary Stuff
7382 @section Various Summary Stuff
7385 * Summary Group Information:: Information oriented commands.
7386 * Searching for Articles:: Multiple article commands.
7387 * Summary Generation Commands:: (Re)generating the summary buffer.
7388 * Really Various Summary Commands:: Those pesky non-conformant commands.
7392 @vindex gnus-summary-mode-hook
7393 @item gnus-summary-mode-hook
7394 This hook is called when creating a summary mode buffer.
7396 @vindex gnus-summary-generate-hook
7397 @item gnus-summary-generate-hook
7398 This is called as the last thing before doing the threading and the
7399 generation of the summary buffer. It's quite convenient for customizing
7400 the threading variables based on what data the newsgroup has. This hook
7401 is called from the summary buffer after most summary buffer variables
7404 @vindex gnus-summary-prepare-hook
7405 @item gnus-summary-prepare-hook
7406 It is called after the summary buffer has been generated. You might use
7407 it to, for instance, highlight lines or modify the look of the buffer in
7408 some other ungodly manner. I don't care.
7410 @vindex gnus-summary-prepared-hook
7411 @item gnus-summary-prepared-hook
7412 A hook called as the very last thing after the summary buffer has been
7415 @vindex gnus-summary-ignore-duplicates
7416 @item gnus-summary-ignore-duplicates
7417 When Gnus discovers two articles that have the same @code{Message-ID},
7418 it has to do something drastic. No articles are allowed to have the
7419 same @code{Message-ID}, but this may happen when reading mail from some
7420 sources. Gnus allows you to customize what happens with this variable.
7421 If it is @code{nil} (which is the default), Gnus will rename the
7422 @code{Message-ID} (for display purposes only) and display the article as
7423 any other article. If this variable is @code{t}, it won't display the
7424 article---it'll be as if it never existed.
7429 @node Summary Group Information
7430 @subsection Summary Group Information
7435 @kindex H f (Summary)
7436 @findex gnus-summary-fetch-faq
7437 @vindex gnus-group-faq-directory
7438 Try to fetch the FAQ (list of frequently asked questions) for the
7439 current group (@code{gnus-summary-fetch-faq}). Gnus will try to get the
7440 FAQ from @code{gnus-group-faq-directory}, which is usually a directory
7441 on a remote machine. This variable can also be a list of directories.
7442 In that case, giving a prefix to this command will allow you to choose
7443 between the various sites. @code{ange-ftp} or @code{efs} will probably
7444 be used for fetching the file.
7447 @kindex H d (Summary)
7448 @findex gnus-summary-describe-group
7449 Give a brief description of the current group
7450 (@code{gnus-summary-describe-group}). If given a prefix, force
7451 rereading the description from the server.
7454 @kindex H h (Summary)
7455 @findex gnus-summary-describe-briefly