1 \input texinfo @c -*-texinfo-*-
4 @settitle Gnus 5.6.42 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 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 Gnus 5.6.42 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 Gnus 5.6.42.
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.
828 @section Startup Files
829 @cindex startup files
834 Now, you all know about the @file{.newsrc} file. All subscription
835 information is traditionally stored in this file.
837 Things got a bit more complicated with @sc{gnus}. In addition to
838 keeping the @file{.newsrc} file updated, it also used a file called
839 @file{.newsrc.el} for storing all the information that didn't fit into
840 the @file{.newsrc} file. (Actually, it also duplicated everything in
841 the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
842 files was the most recently saved, which enabled people to swap between
843 @sc{gnus} and other newsreaders.
845 That was kinda silly, so Gnus went one better: In addition to the
846 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
847 @file{.newsrc.eld}. It will read whichever of these files that are most
848 recent, but it will never write a @file{.newsrc.el} file. You should
849 never delete the @file{.newsrc.eld} file---it contains much information
850 not stored in the @file{.newsrc} file.
852 @vindex gnus-save-newsrc-file
853 You can turn off writing the @file{.newsrc} file by setting
854 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
855 the file and save some space, as well as exiting from Gnus faster.
856 However, this will make it impossible to use other newsreaders than
857 Gnus. But hey, who would want to, right?
859 @vindex gnus-save-killed-list
860 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
861 will not save the list of killed groups to the startup file. This will
862 save both time (when starting and quitting) and space (on disk). It
863 will also mean that Gnus has no record of what groups are new or old,
864 so the automatic new groups subscription methods become meaningless.
865 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
866 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
867 Groups}). This variable can also be a regular expression. If that's
868 the case, remove all groups that do not match this regexp before
869 saving. This can be useful in certain obscure situations that involve
870 several servers where not all servers support @code{ask-server}.
872 @vindex gnus-startup-file
873 The @code{gnus-startup-file} variable says where the startup files are.
874 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
875 file being whatever that one is, with a @samp{.eld} appended.
877 @vindex gnus-save-newsrc-hook
878 @vindex gnus-save-quick-newsrc-hook
879 @vindex gnus-save-standard-newsrc-hook
880 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
881 files, while @code{gnus-save-quick-newsrc-hook} is called just before
882 saving the @file{.newsrc.eld} file, and
883 @code{gnus-save-standard-newsrc-hook} is called just before saving the
884 @file{.newsrc} file. The latter two are commonly used to turn version
885 control on or off. Version control is on by default when saving the
886 startup files. If you want to turn backup creation off, say something like:
889 (defun turn-off-backup ()
890 (set (make-local-variable 'backup-inhibited) t))
892 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
893 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
896 @vindex gnus-init-file
897 When Gnus starts, it will read the @code{gnus-site-init-file}
898 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file}
899 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files
900 and can be used to avoid cluttering your @file{~/.emacs} and
901 @file{site-init} files with Gnus stuff. Gnus will also check for files
902 with the same names as these, but with @file{.elc} and @file{.el}
903 suffixes. In other words, if you have set @code{gnus-init-file} to
904 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
905 and finally @file{~/.gnus} (in this order).
914 Whenever you do something that changes the Gnus data (reading articles,
915 catching up, killing/subscribing groups), the change is added to a
916 special @dfn{dribble buffer}. This buffer is auto-saved the normal
917 Emacs way. If your Emacs should crash before you have saved the
918 @file{.newsrc} files, all changes you have made can be recovered from
921 If Gnus detects this file at startup, it will ask the user whether to
922 read it. The auto save file is deleted whenever the real startup file is
925 @vindex gnus-use-dribble-file
926 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
927 maintain a dribble buffer. The default is @code{t}.
929 @vindex gnus-dribble-directory
930 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
931 this variable is @code{nil}, which it is by default, Gnus will dribble
932 into the directory where the @file{.newsrc} file is located. (This is
933 normally the user's home directory.) The dribble file will get the same
934 file permissions as the @code{.newsrc} file.
936 @vindex gnus-always-read-dribble-file
937 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
938 read the dribble file on startup without querying the user.
941 @node The Active File
942 @section The Active File
944 @cindex ignored groups
946 When Gnus starts, or indeed whenever it tries to determine whether new
947 articles have arrived, it reads the active file. This is a very large
948 file that lists all the active groups and articles on the server.
950 @vindex gnus-ignored-newsgroups
951 Before examining the active file, Gnus deletes all lines that match the
952 regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
953 any groups with bogus names, but you can use this variable to make Gnus
954 ignore hierarchies you aren't ever interested in. However, this is not
955 recommended. In fact, it's highly discouraged. Instead, @pxref{New
956 Groups} for an overview of other variables that can be used instead.
959 @c @code{nil} by default, and will slow down active file handling somewhat
960 @c if you set it to anything else.
962 @vindex gnus-read-active-file
964 The active file can be rather Huge, so if you have a slow network, you
965 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
966 reading the active file. This variable is @code{some} by default.
968 Gnus will try to make do by getting information just on the groups that
969 you actually subscribe to.
971 Note that if you subscribe to lots and lots of groups, setting this
972 variable to @code{nil} will probably make Gnus slower, not faster. At
973 present, having this variable @code{nil} will slow Gnus down
974 considerably, unless you read news over a 2400 baud modem.
976 This variable can also have the value @code{some}. Gnus will then
977 attempt to read active info only on the subscribed groups. On some
978 servers this is quite fast (on sparkling, brand new INN servers that
979 support the @code{LIST ACTIVE group} command), on others this isn't fast
980 at all. In any case, @code{some} should be faster than @code{nil}, and
981 is certainly faster than @code{t} over slow lines.
983 If this variable is @code{nil}, Gnus will ask for group info in total
984 lock-step, which isn't very fast. If it is @code{some} and you use an
985 @sc{nntp} server, Gnus will pump out commands as fast as it can, and
986 read all the replies in one swoop. This will normally result in better
987 performance, but if the server does not support the aforementioned
988 @code{LIST ACTIVE group} command, this isn't very nice to the server.
990 In any case, if you use @code{some} or @code{nil}, you should definitely
991 kill all groups that you aren't interested in to speed things up.
993 Note that this variable also affects active file retrieval from
994 secondary select methods.
997 @node Startup Variables
998 @section Startup Variables
1002 @item gnus-load-hook
1003 @vindex gnus-load-hook
1004 A hook run while Gnus is being loaded. Note that this hook will
1005 normally be run just once in each Emacs session, no matter how many
1006 times you start Gnus.
1008 @item gnus-before-startup-hook
1009 @vindex gnus-before-startup-hook
1010 A hook run after starting up Gnus successfully.
1012 @item gnus-startup-hook
1013 @vindex gnus-startup-hook
1014 A hook run as the very last thing after starting up Gnus
1016 @item gnus-started-hook
1017 @vindex gnus-started-hook
1018 A hook that is run as the very last thing after starting up Gnus
1021 @item gnus-started-hook
1022 @vindex gnus-started-hook
1023 A hook that is run after reading the @file{.newsrc} file(s), but before
1024 generating the group buffer.
1026 @item gnus-check-bogus-newsgroups
1027 @vindex gnus-check-bogus-newsgroups
1028 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1029 startup. A @dfn{bogus group} is a group that you have in your
1030 @file{.newsrc} file, but doesn't exist on the news server. Checking for
1031 bogus groups can take quite a while, so to save time and resources it's
1032 best to leave this option off, and do the checking for bogus groups once
1033 in a while from the group buffer instead (@pxref{Group Maintenance}).
1035 @item gnus-inhibit-startup-message
1036 @vindex gnus-inhibit-startup-message
1037 If non-@code{nil}, the startup message won't be displayed. That way,
1038 your boss might not notice as easily that you are reading news instead
1039 of doing your job. Note that this variable is used before
1040 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
1042 @item gnus-no-groups-message
1043 @vindex gnus-no-groups-message
1044 Message displayed by Gnus when no groups are available.
1046 @item gnus-play-startup-jingle
1047 @vindex gnus-play-startup-jingle
1048 If non-@code{nil}, play the Gnus jingle at startup.
1050 @item gnus-startup-jingle
1051 @vindex gnus-startup-jingle
1052 Jingle to be played if the above variable is non-@code{nil}. The
1053 default is @samp{Tuxedomoon.Jingle4.au}.
1058 @node The Group Buffer
1059 @chapter The Group Buffer
1060 @cindex group buffer
1062 The @dfn{group buffer} lists all (or parts) of the available groups. It
1063 is the first buffer shown when Gnus starts, and will never be killed as
1064 long as Gnus is active.
1068 \gnusfigure{The Group Buffer}{320}{
1069 \put(75,50){\epsfig{figure=tmp/group.ps,height=9cm}}
1070 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1071 \put(120,38){\vector(1,2){10}}
1072 \put(40,60){\makebox(0,0)[r]{Mode line}}
1073 \put(40,58){\vector(1,0){30}}
1074 \put(200,28){\makebox(0,0)[t]{Native select method}}
1075 \put(200,26){\vector(-1,2){15}}
1081 * Group Buffer Format:: Information listed and how you can change it.
1082 * Group Maneuvering:: Commands for moving in the group buffer.
1083 * Selecting a Group:: Actually reading news.
1084 * Group Data:: Changing the info for a group.
1085 * Subscription Commands:: Unsubscribing, killing, subscribing.
1086 * Group Levels:: Levels? What are those, then?
1087 * Group Score:: A mechanism for finding out what groups you like.
1088 * Marking Groups:: You can mark groups for later processing.
1089 * Foreign Groups:: Creating and editing groups.
1090 * Group Parameters:: Each group may have different parameters set.
1091 * Listing Groups:: Gnus can list various subsets of the groups.
1092 * Sorting Groups:: Re-arrange the group order.
1093 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1094 * Browse Foreign Server:: You can browse a server. See what it has to offer.
1095 * Exiting Gnus:: Stop reading news and get some work done.
1096 * Group Topics:: A folding group mode divided into topics.
1097 * Misc Group Stuff:: Other stuff that you can to do.
1101 @node Group Buffer Format
1102 @section Group Buffer Format
1105 * Group Line Specification:: Deciding how the group buffer is to look.
1106 * Group Modeline Specification:: The group buffer modeline.
1107 * Group Highlighting:: Having nice colors in the group buffer.
1111 @node Group Line Specification
1112 @subsection Group Line Specification
1113 @cindex group buffer format
1115 The default format of the group buffer is nice and dull, but you can
1116 make it as exciting and ugly as you feel like.
1118 Here's a couple of example group lines:
1121 25: news.announce.newusers
1122 * 0: alt.fan.andrea-dworkin
1127 You can see that there are 25 unread articles in
1128 @samp{news.announce.newusers}. There are no unread articles, but some
1129 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1130 asterisk at the beginning of the line?).
1132 @vindex gnus-group-line-format
1133 You can change that format to whatever you want by fiddling with the
1134 @code{gnus-group-line-format} variable. This variable works along the
1135 lines of a @code{format} specification, which is pretty much the same as
1136 a @code{printf} specifications, for those of you who use (feh!) C.
1137 @xref{Formatting Variables}.
1139 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
1141 There should always be a colon on the line; the cursor always moves to
1142 the colon after performing an operation. Nothing else is required---not
1143 even the group name. All displayed text is just window dressing, and is
1144 never examined by Gnus. Gnus stores all real information it needs using
1147 (Note that if you make a really strange, wonderful, spreadsheet-like
1148 layout, everybody will believe you are hard at work with the accounting
1149 instead of wasting time reading news.)
1151 Here's a list of all available format characters:
1156 An asterisk if the group only has marked articles.
1159 Whether the group is subscribed.
1162 Level of subscribedness.
1165 Number of unread articles.
1168 Number of dormant articles.
1171 Number of ticked articles.
1174 Number of read articles.
1177 Estimated total number of articles. (This is really @var{max-number}
1178 minus @var{min-number} plus 1.)
1181 Number of unread, unticked, non-dormant articles.
1184 Number of ticked and dormant articles.
1193 Newsgroup description.
1196 @samp{m} if moderated.
1199 @samp{(m)} if moderated.
1208 A string that looks like @samp{<%s:%n>} if a foreign select method is
1212 Indentation based on the level of the topic (@pxref{Group Topics}).
1215 @vindex gnus-group-uncollapsed-levels
1216 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1217 variable says how many levels to leave at the end of the group name.
1218 The default is 1---this will mean that group names like
1219 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
1222 @vindex gnus-new-mail-mark
1224 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1228 A string that says when you last read the group (@pxref{Group
1232 User defined specifier. The next character in the format string should
1233 be a letter. Gnus will call the function
1234 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1235 following @samp{%u}. The function will be passed a single dummy
1236 parameter as argument. The function should return a string, which will
1237 be inserted into the buffer just like information from any other
1242 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1243 if no info is available---for instance, if it is a non-activated foreign
1244 group, or a bogus native group.
1247 @node Group Modeline Specification
1248 @subsection Group Modeline Specification
1249 @cindex group modeline
1251 @vindex gnus-group-mode-line-format
1252 The mode line can be changed by setting
1253 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It
1254 doesn't understand that many format specifiers:
1258 The native news server.
1260 The native select method.
1264 @node Group Highlighting
1265 @subsection Group Highlighting
1266 @cindex highlighting
1267 @cindex group highlighting
1269 @vindex gnus-group-highlight
1270 Highlighting in the group buffer is controlled by the
1271 @code{gnus-group-highlight} variable. This is an alist with elements
1272 that look like @var{(form . face)}. If @var{form} evaluates to
1273 something non-@code{nil}, the @var{face} will be used on the line.
1275 Here's an example value for this variable that might look nice if the
1279 (face-spec-set 'my-group-face-1
1280 '((t (:foreground "Red" :bold t))))
1281 (face-spec-set 'my-group-face-2
1282 '((t (:foreground "SeaGreen" :bold t))))
1283 (face-spec-set 'my-group-face-3
1284 '((t (:foreground "SpringGreen" :bold t))))
1285 (face-spec-set 'my-group-face-4
1286 '((t (:foreground "SteelBlue" :bold t))))
1287 (face-spec-set 'my-group-face-5
1288 '((t (:foreground "SkyBlue" :bold t))))
1290 (setq gnus-group-highlight
1291 '(((> unread 200) . my-group-face-1)
1292 ((and (< level 3) (zerop unread)) . my-group-face-2)
1293 ((< level 3) . my-group-face-3)
1294 ((zerop unread) . my-group-face-4)
1295 (t . my-group-face-5)))
1298 Also @pxref{Faces and Fonts}.
1300 Variables that are dynamically bound when the forms are evaluated
1307 The number of unread articles in the group.
1311 Whether the group is a mail group.
1313 The level of the group.
1315 The score of the group.
1317 The number of ticked articles in the group.
1319 The total number of articles in the group. Or rather, MAX-NUMBER minus
1320 MIN-NUMBER plus one.
1322 When using the topic minor mode, this variable is bound to the current
1323 topic being inserted.
1326 When the forms are @code{eval}ed, point is at the beginning of the line
1327 of the group in question, so you can use many of the normal Gnus
1328 functions for snarfing info on the group.
1330 @vindex gnus-group-update-hook
1331 @findex gnus-group-highlight-line
1332 @code{gnus-group-update-hook} is called when a group line is changed.
1333 It will not be called when @code{gnus-visual} is @code{nil}. This hook
1334 calls @code{gnus-group-highlight-line} by default.
1337 @node Group Maneuvering
1338 @section Group Maneuvering
1339 @cindex group movement
1341 All movement commands understand the numeric prefix and will behave as
1342 expected, hopefully.
1348 @findex gnus-group-next-unread-group
1349 Go to the next group that has unread articles
1350 (@code{gnus-group-next-unread-group}).
1356 @findex gnus-group-prev-unread-group
1357 Go to the previous group that has unread articles
1358 (@code{gnus-group-prev-unread-group}).
1362 @findex gnus-group-next-group
1363 Go to the next group (@code{gnus-group-next-group}).
1367 @findex gnus-group-prev-group
1368 Go to the previous group (@code{gnus-group-prev-group}).
1372 @findex gnus-group-next-unread-group-same-level
1373 Go to the next unread group on the same (or lower) level
1374 (@code{gnus-group-next-unread-group-same-level}).
1378 @findex gnus-group-prev-unread-group-same-level
1379 Go to the previous unread group on the same (or lower) level
1380 (@code{gnus-group-prev-unread-group-same-level}).
1383 Three commands for jumping to groups:
1389 @findex gnus-group-jump-to-group
1390 Jump to a group (and make it visible if it isn't already)
1391 (@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
1396 @findex gnus-group-best-unread-group
1397 Jump to the unread group with the lowest level
1398 (@code{gnus-group-best-unread-group}).
1402 @findex gnus-group-first-unread-group
1403 Jump to the first group with unread articles
1404 (@code{gnus-group-first-unread-group}).
1407 @vindex gnus-group-goto-unread
1408 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
1409 commands will move to the next group, not the next unread group. Even
1410 the commands that say they move to the next unread group. The default
1414 @node Selecting a Group
1415 @section Selecting a Group
1416 @cindex group selection
1421 @kindex SPACE (Group)
1422 @findex gnus-group-read-group
1423 Select the current group, switch to the summary buffer and display the
1424 first unread article (@code{gnus-group-read-group}). If there are no
1425 unread articles in the group, or if you give a non-numerical prefix to
1426 this command, Gnus will offer to fetch all the old articles in this
1427 group from the server. If you give a numerical prefix @var{N}, @var{N}
1428 determines the number of articles Gnus will fetch. If @var{N} is
1429 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1430 negative, Gnus fetches the @var{abs(N)} oldest articles.
1434 @findex gnus-group-select-group
1435 Select the current group and switch to the summary buffer
1436 (@code{gnus-group-select-group}). Takes the same arguments as
1437 @code{gnus-group-read-group}---the only difference is that this command
1438 does not display the first unread article automatically upon group
1442 @kindex M-RET (Group)
1443 @findex gnus-group-quick-select-group
1444 This does the same as the command above, but tries to do it with the
1445 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
1446 scoring/killing will be performed, there will be no highlights and no
1447 expunging. This might be useful if you're in a real hurry and have to
1448 enter some humongous group. If you give a 0 prefix to this command
1449 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
1450 which is useful if you want to toggle threading before generating the
1451 summary buffer (@pxref{Summary Generation Commands}).
1454 @kindex M-SPACE (Group)
1455 @findex gnus-group-visible-select-group
1456 This is yet one more command that does the same as the @kbd{RET}
1457 command, but this one does it without expunging and hiding dormants
1458 (@code{gnus-group-visible-select-group}).
1461 @kindex M-C-RET (Group)
1462 @findex gnus-group-select-group-ephemerally
1463 Finally, this command selects the current group ephemerally without
1464 doing any processing of its contents
1465 (@code{gnus-group-select-group-ephemerally}). Even threading has been
1466 turned off. Everything you do in the group after selecting it in this
1467 manner will have no permanent effects.
1471 @vindex gnus-large-newsgroup
1472 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1473 to be a big group. This is 200 by default. If the group has more
1474 (unread and/or ticked) articles than this, Gnus will query the user
1475 before entering the group. The user can then specify how many articles
1476 should be fetched from the server. If the user specifies a negative
1477 number (@code{-n}), the @code{n} oldest articles will be fetched. If it
1478 is positive, the @code{n} articles that have arrived most recently will
1481 @vindex gnus-select-group-hook
1482 @vindex gnus-auto-select-first
1483 @code{gnus-auto-select-first} control whether any articles are selected
1484 automatically when entering a group with the @kbd{SPACE} command.
1489 Don't select any articles when entering the group. Just display the
1490 full summary buffer.
1493 Select the first unread article when entering the group.
1496 Select the highest scored article in the group when entering the
1500 If you want to prevent automatic selection in some group (say, in a
1501 binary group with Huge articles) you can set this variable to @code{nil}
1502 in @code{gnus-select-group-hook}, which is called when a group is
1506 @node Subscription Commands
1507 @section Subscription Commands
1508 @cindex subscription
1516 @findex gnus-group-unsubscribe-current-group
1517 @c @icon{gnus-group-unsubscribe}
1518 Toggle subscription to the current group
1519 (@code{gnus-group-unsubscribe-current-group}).
1525 @findex gnus-group-unsubscribe-group
1526 Prompt for a group to subscribe, and then subscribe it. If it was
1527 subscribed already, unsubscribe it instead
1528 (@code{gnus-group-unsubscribe-group}).
1534 @findex gnus-group-kill-group
1535 @c @icon{gnus-group-kill-group}
1536 Kill the current group (@code{gnus-group-kill-group}).
1542 @findex gnus-group-yank-group
1543 Yank the last killed group (@code{gnus-group-yank-group}).
1546 @kindex C-x C-t (Group)
1547 @findex gnus-group-transpose-groups
1548 Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
1549 really a subscription command, but you can use it instead of a
1550 kill-and-yank sequence sometimes.
1556 @findex gnus-group-kill-region
1557 Kill all groups in the region (@code{gnus-group-kill-region}).
1561 @findex gnus-group-kill-all-zombies
1562 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
1565 @kindex S C-k (Group)
1566 @findex gnus-group-kill-level
1567 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1568 These groups can't be yanked back after killing, so this command should
1569 be used with some caution. The only time where this command comes in
1570 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1571 groups that you want to get rid off. @kbd{S C-k} on level 7 will
1572 kill off all unsubscribed groups that do not have message numbers in the
1573 @file{.newsrc} file.
1577 Also @pxref{Group Levels}.
1587 @findex gnus-group-catchup-current
1588 @vindex gnus-group-catchup-group-hook
1589 @c @icon{gnus-group-catchup-current}
1590 Mark all unticked articles in this group as read
1591 (@code{gnus-group-catchup-current}).
1592 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1597 @findex gnus-group-catchup-current-all
1598 Mark all articles in this group, even the ticked ones, as read
1599 (@code{gnus-group-catchup-current-all}).
1603 @findex gnus-group-clear-data
1604 Clear the data from the current group---nix out marks and the list of
1605 read articles (@code{gnus-group-clear-data}).
1607 @item M-x gnus-group-clear-data-on-native-groups
1608 @kindex M-x gnus-group-clear-data-on-native-groups
1609 @findex gnus-group-clear-data-on-native-groups
1610 If you have switched from one @sc{nntp} server to another, all your marks
1611 and read ranges have become worthless. You can use this command to
1612 clear out all data that you have on your native groups. Use with
1619 @section Group Levels
1623 All groups have a level of @dfn{subscribedness}. For instance, if a
1624 group is on level 2, it is more subscribed than a group on level 5. You
1625 can ask Gnus to just list groups on a given level or lower
1626 (@pxref{Listing Groups}), or to just check for new articles in groups on
1627 a given level or lower (@pxref{Scanning New Messages}).
1629 Remember: The higher the level of the group, the less important it is.
1635 @findex gnus-group-set-current-level
1636 Set the level of the current group. If a numeric prefix is given, the
1637 next @var{n} groups will have their levels set. The user will be
1638 prompted for a level.
1641 @vindex gnus-level-killed
1642 @vindex gnus-level-zombie
1643 @vindex gnus-level-unsubscribed
1644 @vindex gnus-level-subscribed
1645 Gnus considers groups from levels 1 to
1646 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
1647 @code{gnus-level-subscribed} (exclusive) and
1648 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
1649 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
1650 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
1651 (default 9). Gnus treats subscribed and unsubscribed groups exactly the
1652 same, but zombie and killed groups have no information on what articles
1653 you have read, etc, stored. This distinction between dead and living
1654 groups isn't done because it is nice or clever, it is done purely for
1655 reasons of efficiency.
1657 It is recommended that you keep all your mail groups (if any) on quite
1658 low levels (e.g. 1 or 2).
1660 If you want to play with the level variables, you should show some care.
1661 Set them once, and don't touch them ever again. Better yet, don't touch
1662 them at all unless you know exactly what you're doing.
1664 @vindex gnus-level-default-unsubscribed
1665 @vindex gnus-level-default-subscribed
1666 Two closely related variables are @code{gnus-level-default-subscribed}
1667 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
1668 which are the levels that new groups will be put on if they are
1669 (un)subscribed. These two variables should, of course, be inside the
1670 relevant valid ranges.
1672 @vindex gnus-keep-same-level
1673 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1674 will only move to groups of the same level (or lower). In
1675 particular, going from the last article in one group to the next group
1676 will go to the next group of the same level (or lower). This might be
1677 handy if you want to read the most important groups before you read the
1680 @vindex gnus-group-default-list-level
1681 All groups with a level less than or equal to
1682 @code{gnus-group-default-list-level} will be listed in the group buffer
1685 @vindex gnus-group-list-inactive-groups
1686 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
1687 groups will be listed along with the unread groups. This variable is
1688 @code{t} by default. If it is @code{nil}, inactive groups won't be
1691 @vindex gnus-group-use-permanent-levels
1692 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1693 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1694 use this level as the ``work'' level.
1696 @vindex gnus-activate-level
1697 Gnus will normally just activate (i. e., query the server about) groups
1698 on level @code{gnus-activate-level} or less. If you don't want to
1699 activate unsubscribed groups, for instance, you might set this variable
1700 to 5. The default is 6.
1704 @section Group Score
1709 You would normally keep important groups on high levels, but that scheme
1710 is somewhat restrictive. Don't you wish you could have Gnus sort the
1711 group buffer according to how often you read groups, perhaps? Within
1714 This is what @dfn{group score} is for. You can assign a score to each
1715 group. You can then sort the group buffer based on this score.
1716 Alternatively, you can sort on score and then level. (Taken together,
1717 the level and the score is called the @dfn{rank} of the group. A group
1718 that is on level 4 and has a score of 1 has a higher rank than a group
1719 on level 5 that has a score of 300. (The level is the most significant
1720 part and the score is the least significant part.))
1722 @findex gnus-summary-bubble-group
1723 If you want groups you read often to get higher scores than groups you
1724 read seldom you can add the @code{gnus-summary-bubble-group} function to
1725 the @code{gnus-summary-exit-hook} hook. This will result (after
1726 sorting) in a bubbling sort of action. If you want to see that in
1727 action after each summary exit, you can add
1728 @code{gnus-group-sort-groups-by-rank} or
1729 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
1730 slow things down somewhat.
1733 @node Marking Groups
1734 @section Marking Groups
1735 @cindex marking groups
1737 If you want to perform some command on several groups, and they appear
1738 subsequently in the group buffer, you would normally just give a
1739 numerical prefix to the command. Most group commands will then do your
1740 bidding on those groups.
1742 However, if the groups are not in sequential order, you can still
1743 perform a command on several groups. You simply mark the groups first
1744 with the process mark and then execute the command.
1752 @findex gnus-group-mark-group
1753 Set the mark on the current group (@code{gnus-group-mark-group}).
1759 @findex gnus-group-unmark-group
1760 Remove the mark from the current group
1761 (@code{gnus-group-unmark-group}).
1765 @findex gnus-group-unmark-all-groups
1766 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
1770 @findex gnus-group-mark-region
1771 Mark all groups between point and mark (@code{gnus-group-mark-region}).
1775 @findex gnus-group-mark-buffer
1776 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
1780 @findex gnus-group-mark-regexp
1781 Mark all groups that match some regular expression
1782 (@code{gnus-group-mark-regexp}).
1785 Also @pxref{Process/Prefix}.
1787 @findex gnus-group-universal-argument
1788 If you want to execute some command on all groups that have been marked
1789 with the process mark, you can use the @kbd{M-&}
1790 (@code{gnus-group-universal-argument}) command. It will prompt you for
1791 the command to be executed.
1794 @node Foreign Groups
1795 @section Foreign Groups
1796 @cindex foreign groups
1798 Below are some group mode commands for making and editing general foreign
1799 groups, as well as commands to ease the creation of a few
1800 special-purpose groups. All these commands insert the newly created
1801 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1808 @findex gnus-group-make-group
1809 @cindex making groups
1810 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
1811 for a name, a method and possibly an @dfn{address}. For an easier way
1812 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1816 @findex gnus-group-rename-group
1817 @cindex renaming groups
1818 Rename the current group to something else
1819 (@code{gnus-group-rename-group}). This is valid only on some
1820 groups---mail groups mostly. This command might very well be quite slow
1826 @findex gnus-group-customize
1827 Customize the group parameters (@code{gnus-group-customize}).
1831 @findex gnus-group-edit-group-method
1832 @cindex renaming groups
1833 Enter a buffer where you can edit the select method of the current
1834 group (@code{gnus-group-edit-group-method}).
1838 @findex gnus-group-edit-group-parameters
1839 Enter a buffer where you can edit the group parameters
1840 (@code{gnus-group-edit-group-parameters}).
1844 @findex gnus-group-edit-group
1845 Enter a buffer where you can edit the group info
1846 (@code{gnus-group-edit-group}).
1850 @findex gnus-group-make-directory-group
1852 Make a directory group (@pxref{Directory Groups}). You will be prompted
1853 for a directory name (@code{gnus-group-make-directory-group}).
1858 @findex gnus-group-make-help-group
1859 Make the Gnus help group (@code{gnus-group-make-help-group}).
1863 @cindex (ding) archive
1864 @cindex archive group
1865 @findex gnus-group-make-archive-group
1866 @vindex gnus-group-archive-directory
1867 @vindex gnus-group-recent-archive-directory
1868 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
1869 default a group pointing to the most recent articles will be created
1870 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
1871 group will be created from @code{gnus-group-archive-directory}.
1875 @findex gnus-group-make-kiboze-group
1877 Make a kiboze group. You will be prompted for a name, for a regexp to
1878 match groups to be ``included'' in the kiboze group, and a series of
1879 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1880 @xref{Kibozed Groups}.
1884 @findex gnus-group-enter-directory
1886 Read an arbitrary directory as if it were a newsgroup with the
1887 @code{nneething} backend (@code{gnus-group-enter-directory}).
1888 @xref{Anything Groups}.
1892 @findex gnus-group-make-doc-group
1893 @cindex ClariNet Briefs
1895 Make a group based on some file or other
1896 (@code{gnus-group-make-doc-group}). If you give a prefix to this
1897 command, you will be prompted for a file name and a file type.
1898 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1899 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs},
1900 @code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run
1901 this command without a prefix, Gnus will guess at the file type.
1902 @xref{Document Groups}.
1906 @vindex gnus-useful-groups
1907 @findex gnus-group-make-useful-group
1908 Create one of the groups mentioned in @code{gnus-useful-groups}
1909 (@code{gnus-group-make-useful-group}).
1913 @findex gnus-group-make-web-group
1918 Make an ephemeral group based on a web search
1919 (@code{gnus-group-make-web-group}). If you give a prefix to this
1920 command, make a solid group instead. You will be prompted for the
1921 search engine type and the search string. Valid search engine types
1922 include @code{dejanews}, @code{altavista} and @code{reference}.
1923 @xref{Web Searches}.
1925 If you use the @code{dejanews} search engine, you can limit the search
1926 to a particular group by using a match string like
1927 @samp{~g alt.sysadmin.recovery shaving}.
1930 @kindex G DEL (Group)
1931 @findex gnus-group-delete-group
1932 This function will delete the current group
1933 (@code{gnus-group-delete-group}). If given a prefix, this function will
1934 actually delete all the articles in the group, and forcibly remove the
1935 group itself from the face of the Earth. Use a prefix only if you are
1936 absolutely sure of what you are doing. This command can't be used on
1937 read-only groups (like @code{nntp} group), though.
1941 @findex gnus-group-make-empty-virtual
1942 Make a new, fresh, empty @code{nnvirtual} group
1943 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
1947 @findex gnus-group-add-to-virtual
1948 Add the current group to an @code{nnvirtual} group
1949 (@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
1952 @xref{Select Methods} for more information on the various select
1955 @vindex gnus-activate-foreign-newsgroups
1956 If @code{gnus-activate-foreign-newsgroups} is a positive number,
1957 Gnus will check all foreign groups with this level or lower at startup.
1958 This might take quite a while, especially if you subscribe to lots of
1959 groups from different @sc{nntp} servers. Also @pxref{Group Levels};
1960 @code{gnus-activate-level} also affects activation of foreign
1964 @node Group Parameters
1965 @section Group Parameters
1966 @cindex group parameters
1968 The group parameters store information local to a particular group.
1969 Here's an example group parameter list:
1972 ((to-address . "ding@@gnus.org")
1976 We see that each element consists of a "dotted pair"---the thing before
1977 the dot is the key, while the thing after the dot is the value. All the
1978 parameters have this form @emph{except} local variable specs, which are
1979 not dotted pairs, but proper lists.
1981 The following group parameters can be used:
1986 Address used by when doing followups and new posts.
1989 (to-address . "some@@where.com")
1992 This is primarily useful in mail groups that represent closed mailing
1993 lists---mailing lists where it's expected that everybody that writes to
1994 the mailing list is subscribed to it. Since using this parameter
1995 ensures that the mail only goes to the mailing list itself, it means
1996 that members won't receive two copies of your followups.
1998 Using @code{to-address} will actually work whether the group is foreign
1999 or not. Let's say there's a group on the server that is called
2000 @samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2001 the articles from a mail-to-news gateway. Posting directly to this
2002 group is therefore impossible---you have to send mail to the mailing
2003 list address instead.
2007 Address used when doing a @kbd{a} in that group.
2010 (to-list . "some@@where.com")
2013 It is totally ignored
2014 when doing a followup---except that if it is present in a news group,
2015 you'll get mail group semantics when doing @kbd{f}.
2017 If you do an @kbd{a} command in a mail group and you have neither a
2018 @code{to-list} group parameter nor a @code{to-address} group parameter,
2019 then a @code{to-list} group parameter will be added automatically upon
2020 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2021 @vindex gnus-add-to-list
2023 If you do an @kbd{a} command in a mail group and you don't have a
2024 @code{to-list} group parameter, one will be added automatically upon
2025 sending the message.
2029 If the group parameter list has the element @code{(visible . t)},
2030 that group will always be visible in the Group buffer, regardless
2031 of whether it has any unread articles.
2033 @item broken-reply-to
2034 @cindex broken-reply-to
2035 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2036 headers in this group are to be ignored. This can be useful if you're
2037 reading a mailing list group where the listserv has inserted
2038 @code{Reply-To} headers that point back to the listserv itself. This is
2039 broken behavior. So there!
2043 Elements like @code{(to-group . "some.group.name")} means that all
2044 posts in that group will be sent to @code{some.group.name}.
2048 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2049 will treat all responses as if they were responses to news articles.
2050 This can be useful if you have a mail group that's really a mirror of a
2055 If @code{(gcc-self . t)} is present in the group parameter list, newly
2056 composed messages will be @code{Gcc}'d to the current group. If
2057 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2058 generated, if @code{(gcc-self . "string")} is present, this string will
2059 be inserted literally as a @code{gcc} header. This parameter takes
2060 precedence over any default @code{Gcc} rules as described later
2061 (@pxref{Archived Messages}).
2065 If the group parameter has an element that looks like @code{(auto-expire
2066 . t)}, all articles read will be marked as expirable. For an
2067 alternative approach, @pxref{Expiring Mail}.
2070 @cindex total-expire
2071 If the group parameter has an element that looks like
2072 @code{(total-expire . t)}, all read articles will be put through the
2073 expiry process, even if they are not marked as expirable. Use with
2074 caution. Unread, ticked and dormant articles are not eligible for
2079 @vindex nnmail-expiry-wait-function
2080 If the group parameter has an element that looks like @code{(expiry-wait
2081 . 10)}, this value will override any @code{nnmail-expiry-wait} and
2082 @code{nnmail-expiry-wait-function} when expiring expirable messages.
2083 The value can either be a number of days (not necessarily an integer) or
2084 the symbols @code{never} or @code{immediate}.
2087 @cindex score file group parameter
2088 Elements that look like @code{(score-file . "file")} will make
2089 @file{file} into the current score file for the group in question. All
2090 interactive score entries will be put into this file.
2093 @cindex adapt file group parameter
2094 Elements that look like @code{(adapt-file . "file")} will make
2095 @file{file} into the current adaptive file for the group in question.
2096 All adaptive score entries will be put into this file.
2099 When unsubscribing from a mailing list you should never send the
2100 unsubscription notice to the mailing list itself. Instead, you'd send
2101 messages to the administrative address. This parameter allows you to
2102 put the admin address somewhere convenient.
2105 Elements that look like @code{(display . MODE)} say which articles to
2106 display on entering the group. Valid values are:
2110 Display all articles, both read and unread.
2113 Display the default visible articles, which normally includes unread and
2118 Elements that look like @code{(comment . "This is a comment")}
2119 are arbitrary comments on the group. They are currently ignored by
2120 Gnus, but provide a place for you to store information on particular
2123 @item @var{(variable form)}
2124 You can use the group parameters to set variables local to the group you
2125 are entering. If you want to turn threading off in @samp{news.answers},
2126 you could put @code{(gnus-show-threads nil)} in the group parameters of
2127 that group. @code{gnus-show-threads} will be made into a local variable
2128 in the summary buffer you enter, and the form @code{nil} will be
2129 @code{eval}ed there.
2131 This can also be used as a group-specific hook function, if you'd like.
2132 If you want to hear a beep when you enter a group, you could put
2133 something like @code{(dummy-variable (ding))} in the parameters of that
2134 group. @code{dummy-variable} will be set to the result of the
2135 @code{(ding)} form, but who cares?
2139 Use the @kbd{G p} command to edit group parameters of a group. You
2140 might also be interested in reading about topic parameters (@pxref{Topic
2144 @node Listing Groups
2145 @section Listing Groups
2146 @cindex group listing
2148 These commands all list various slices of the groups available.
2156 @findex gnus-group-list-groups
2157 List all groups that have unread articles
2158 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
2159 command will list only groups of level ARG and lower. By default, it
2160 only lists groups of level five (i. e.,
2161 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2168 @findex gnus-group-list-all-groups
2169 List all groups, whether they have unread articles or not
2170 (@code{gnus-group-list-all-groups}). If the numeric prefix is used,
2171 this command will list only groups of level ARG and lower. By default,
2172 it lists groups of level seven or lower (i.e., just subscribed and
2173 unsubscribed groups).
2177 @findex gnus-group-list-level
2178 List all unread groups on a specific level
2179 (@code{gnus-group-list-level}). If given a prefix, also list the groups
2180 with no unread articles.
2184 @findex gnus-group-list-killed
2185 List all killed groups (@code{gnus-group-list-killed}). If given a
2186 prefix argument, really list all groups that are available, but aren't
2187 currently (un)subscribed. This could entail reading the active file
2192 @findex gnus-group-list-zombies
2193 List all zombie groups (@code{gnus-group-list-zombies}).
2197 @findex gnus-group-list-matching
2198 List all unread, subscribed groups with names that match a regexp
2199 (@code{gnus-group-list-matching}).
2203 @findex gnus-group-list-all-matching
2204 List groups that match a regexp (@code{gnus-group-list-all-matching}).
2208 @findex gnus-group-list-active
2209 List absolutely all groups in the active file(s) of the
2210 server(s) you are connected to (@code{gnus-group-list-active}). This
2211 might very well take quite a while. It might actually be a better idea
2212 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2213 thing to match on. Also note that this command may list groups that
2214 don't exist (yet)---these will be listed as if they were killed groups.
2215 Take the output with some grains of salt.
2219 @findex gnus-group-apropos
2220 List all groups that have names that match a regexp
2221 (@code{gnus-group-apropos}).
2225 @findex gnus-group-description-apropos
2226 List all groups that have names or descriptions that match a regexp
2227 (@code{gnus-group-description-apropos}).
2231 @vindex gnus-permanently-visible-groups
2232 @cindex visible group parameter
2233 Groups that match the @code{gnus-permanently-visible-groups} regexp will
2234 always be shown, whether they have unread articles or not. You can also
2235 add the @code{visible} element to the group parameters in question to
2236 get the same effect.
2238 @vindex gnus-list-groups-with-ticked-articles
2239 Groups that have just ticked articles in it are normally listed in the
2240 group buffer. If @code{gnus-list-groups-with-ticked-articles} is
2241 @code{nil}, these groups will be treated just like totally empty
2242 groups. It is @code{t} by default.
2245 @node Sorting Groups
2246 @section Sorting Groups
2247 @cindex sorting groups
2249 @kindex C-c C-s (Group)
2250 @findex gnus-group-sort-groups
2251 @vindex gnus-group-sort-function
2252 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
2253 group buffer according to the function(s) given by the
2254 @code{gnus-group-sort-function} variable. Available sorting functions
2259 @item gnus-group-sort-by-alphabet
2260 @findex gnus-group-sort-by-alphabet
2261 Sort the group names alphabetically. This is the default.
2263 @item gnus-group-sort-by-real-name
2264 @findex gnus-group-sort-by-real-name
2265 Sort the group alphabetically on the real (unprefixed) group names.
2267 @item gnus-group-sort-by-level
2268 @findex gnus-group-sort-by-level
2269 Sort by group level.
2271 @item gnus-group-sort-by-score
2272 @findex gnus-group-sort-by-score
2273 Sort by group score. @xref{Group Score}.
2275 @item gnus-group-sort-by-rank
2276 @findex gnus-group-sort-by-rank
2277 Sort by group score and then the group level. The level and the score
2278 are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
2280 @item gnus-group-sort-by-unread
2281 @findex gnus-group-sort-by-unread
2282 Sort by number of unread articles.
2284 @item gnus-group-sort-by-method
2285 @findex gnus-group-sort-by-method
2286 Sort alphabetically on the select method.
2291 @code{gnus-group-sort-function} can also be a list of sorting
2292 functions. In that case, the most significant sort key function must be
2296 There are also a number of commands for sorting directly according to
2297 some sorting criteria:
2301 @kindex G S a (Group)
2302 @findex gnus-group-sort-groups-by-alphabet
2303 Sort the group buffer alphabetically by group name
2304 (@code{gnus-group-sort-groups-by-alphabet}).
2307 @kindex G S u (Group)
2308 @findex gnus-group-sort-groups-by-unread
2309 Sort the group buffer by the number of unread articles
2310 (@code{gnus-group-sort-groups-by-unread}).
2313 @kindex G S l (Group)
2314 @findex gnus-group-sort-groups-by-level
2315 Sort the group buffer by group level
2316 (@code{gnus-group-sort-groups-by-level}).
2319 @kindex G S v (Group)
2320 @findex gnus-group-sort-groups-by-score
2321 Sort the group buffer by group score
2322 (@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
2325 @kindex G S r (Group)
2326 @findex gnus-group-sort-groups-by-rank
2327 Sort the group buffer by group rank
2328 (@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
2331 @kindex G S m (Group)
2332 @findex gnus-group-sort-groups-by-method
2333 Sort the group buffer alphabetically by backend name
2334 (@code{gnus-group-sort-groups-by-method}).
2338 When given a prefix, all these commands will sort in reverse order.
2340 You can also sort a subset of the groups:
2344 @kindex G P a (Group)
2345 @findex gnus-group-sort-selected-groups-by-alphabet
2346 Sort the process/prefixed groups in the group buffer alphabetically by
2347 group name (@code{gnus-group-sort-selected-groups-by-alphabet}).
2350 @kindex G P u (Group)
2351 @findex gnus-group-sort-selected-groups-by-unread
2352 Sort the process/prefixed groups in the group buffer by the number of
2353 unread articles (@code{gnus-group-sort-selected-groups-by-unread}).
2356 @kindex G P l (Group)
2357 @findex gnus-group-sort-selected-groups-by-level
2358 Sort the process/prefixed groups in the group buffer by group level
2359 (@code{gnus-group-sort-selected-groups-by-level}).
2362 @kindex G P v (Group)
2363 @findex gnus-group-sort-selected-groups-by-score
2364 Sort the process/prefixed groups in the group buffer by group score
2365 (@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
2368 @kindex G P r (Group)
2369 @findex gnus-group-sort-selected-groups-by-rank
2370 Sort the process/prefixed groups in the group buffer by group rank
2371 (@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
2374 @kindex G P m (Group)
2375 @findex gnus-group-sort-selected-groups-by-method
2376 Sort the process/prefixed groups in the group buffer alphabetically by
2377 backend name (@code{gnus-group-sort-selected-groups-by-method}).
2383 @node Group Maintenance
2384 @section Group Maintenance
2385 @cindex bogus groups
2390 @findex gnus-group-check-bogus-groups
2391 Find bogus groups and delete them
2392 (@code{gnus-group-check-bogus-groups}).
2396 @findex gnus-group-find-new-groups
2397 Find new groups and process them (@code{gnus-group-find-new-groups}).
2398 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
2399 for new groups. With 2 @kbd{C-u}'s, use most complete method possible
2400 to query the server for new groups, and subscribe the new groups as
2404 @kindex C-c C-x (Group)
2405 @findex gnus-group-expire-articles
2406 Run all expirable articles in the current group through the expiry
2407 process (if any) (@code{gnus-group-expire-articles}).
2410 @kindex C-c M-C-x (Group)
2411 @findex gnus-group-expire-all-groups
2412 Run all articles in all groups through the expiry process
2413 (@code{gnus-group-expire-all-groups}).
2418 @node Browse Foreign Server
2419 @section Browse Foreign Server
2420 @cindex foreign servers
2421 @cindex browsing servers
2426 @findex gnus-group-browse-foreign-server
2427 You will be queried for a select method and a server name. Gnus will
2428 then attempt to contact this server and let you browse the groups there
2429 (@code{gnus-group-browse-foreign-server}).
2432 @findex gnus-browse-mode
2433 A new buffer with a list of available groups will appear. This buffer
2434 will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
2435 a lot) like a normal group buffer.
2437 Here's a list of keystrokes available in the browse mode:
2442 @findex gnus-group-next-group
2443 Go to the next group (@code{gnus-group-next-group}).
2447 @findex gnus-group-prev-group
2448 Go to the previous group (@code{gnus-group-prev-group}).
2451 @kindex SPACE (Browse)
2452 @findex gnus-browse-read-group
2453 Enter the current group and display the first article
2454 (@code{gnus-browse-read-group}).
2457 @kindex RET (Browse)
2458 @findex gnus-browse-select-group
2459 Enter the current group (@code{gnus-browse-select-group}).
2463 @findex gnus-browse-unsubscribe-current-group
2464 Unsubscribe to the current group, or, as will be the case here,
2465 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
2471 @findex gnus-browse-exit
2472 Exit browse mode (@code{gnus-browse-exit}).
2476 @findex gnus-browse-describe-briefly
2477 Describe browse mode briefly (well, there's not much to describe, is
2478 there) (@code{gnus-browse-describe-briefly}).
2483 @section Exiting Gnus
2484 @cindex exiting Gnus
2486 Yes, Gnus is ex(c)iting.
2491 @findex gnus-group-suspend
2492 Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
2493 but it kills all buffers except the Group buffer. I'm not sure why this
2494 is a gain, but then who am I to judge?
2498 @findex gnus-group-exit
2499 @c @icon{gnus-group-exit}
2500 Quit Gnus (@code{gnus-group-exit}).
2504 @findex gnus-group-quit
2505 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
2506 The dribble file will be saved, though (@pxref{Auto Save}).
2509 @vindex gnus-exit-gnus-hook
2510 @vindex gnus-suspend-gnus-hook
2511 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
2512 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
2513 @code{gnus-after-exiting-gnus-hook} is called as the final item when
2518 If you wish to completely unload Gnus and all its adherents, you can use
2519 the @code{gnus-unload} command. This command is also very handy when
2520 trying to customize meta-variables.
2525 Miss Lisa Cannifax, while sitting in English class, felt her feet go
2526 numbly heavy and herself fall into a hazy trance as the boy sitting
2527 behind her drew repeated lines with his pencil across the back of her
2533 @section Group Topics
2536 If you read lots and lots of groups, it might be convenient to group
2537 them hierarchically according to topics. You put your Emacs groups over
2538 here, your sex groups over there, and the rest (what, two groups or so?)
2539 you put in some misc section that you never bother with anyway. You can
2540 even group the Emacs sex groups as a sub-topic to either the Emacs
2541 groups or the sex groups---or both! Go wild!
2545 \gnusfigure{Group Topics}{400}{
2546 \put(75,50){\epsfig{figure=tmp/group-topic.ps,height=9cm}}
2557 2: alt.religion.emacs
2560 0: comp.talk.emacs.recovery
2562 8: comp.binaries.fractals
2563 13: comp.sources.unix
2566 @findex gnus-topic-mode
2568 To get this @emph{fab} functionality you simply turn on (ooh!) the
2569 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
2570 is a toggling command.)
2572 Go ahead, just try it. I'll still be here when you get back. La de
2573 dum... Nice tune, that... la la la... What, you're back? Yes, and now
2574 press @kbd{l}. There. All your groups are now listed under
2575 @samp{misc}. Doesn't that make you feel all warm and fuzzy? Hot and
2578 If you want this permanently enabled, you should add that minor mode to
2579 the hook for the group mode:
2582 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
2586 * Topic Variables:: How to customize the topics the Lisp Way.
2587 * Topic Commands:: Interactive E-Z commands.
2588 * Topic Sorting:: Sorting each topic individually.
2589 * Topic Topology:: A map of the world.
2590 * Topic Parameters:: Parameters that apply to all groups in a topic.
2594 @node Topic Variables
2595 @subsection Topic Variables
2596 @cindex topic variables
2598 Now, if you select a topic, it will fold/unfold that topic, which is
2599 really neat, I think.
2601 @vindex gnus-topic-line-format
2602 The topic lines themselves are created according to the
2603 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
2616 Number of groups in the topic.
2618 Number of unread articles in the topic.
2620 Number of unread articles in the topic and all its subtopics.
2623 @vindex gnus-topic-indent-level
2624 Each sub-topic (and the groups in the sub-topics) will be indented with
2625 @code{gnus-topic-indent-level} times the topic level number of spaces.
2628 @vindex gnus-topic-mode-hook
2629 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
2631 @vindex gnus-topic-display-empty-topics
2632 The @code{gnus-topic-display-empty-topics} says whether to display even
2633 topics that have no unread articles in them. The default is @code{t}.
2636 @node Topic Commands
2637 @subsection Topic Commands
2638 @cindex topic commands
2640 When the topic minor mode is turned on, a new @kbd{T} submap will be
2641 available. In addition, a few of the standard keys change their
2642 definitions slightly.
2648 @findex gnus-topic-create-topic
2649 Prompt for a new topic name and create it
2650 (@code{gnus-topic-create-topic}).
2654 @findex gnus-topic-move-group
2655 Move the current group to some other topic
2656 (@code{gnus-topic-move-group}). This command uses the process/prefix
2657 convention (@pxref{Process/Prefix}).
2661 @findex gnus-topic-copy-group
2662 Copy the current group to some other topic
2663 (@code{gnus-topic-copy-group}). This command uses the process/prefix
2664 convention (@pxref{Process/Prefix}).
2668 @findex gnus-topic-remove-group
2669 Remove a group from the current topic (@code{gnus-topic-remove-group}).
2670 This command is mainly useful if you have the same group in several
2671 topics and wish to remove it from one of the topics. You may also
2672 remove a group from all topics, but in that case, Gnus will add it to
2673 the root topic the next time you start Gnus. In fact, all new groups
2674 (which, naturally, don't belong to any topic) will show up in the root
2677 This command uses the process/prefix convention
2678 (@pxref{Process/Prefix}).
2682 @findex gnus-topic-move-matching
2683 Move all groups that match some regular expression to a topic
2684 (@code{gnus-topic-move-matching}).
2688 @findex gnus-topic-copy-matching
2689 Copy all groups that match some regular expression to a topic
2690 (@code{gnus-topic-copy-matching}).
2694 @findex gnus-topic-toggle-display-empty-topics
2695 Toggle hiding empty topics
2696 (@code{gnus-topic-toggle-display-empty-topics}).
2700 @findex gnus-topic-mark-topic
2701 Mark all groups in the current topic with the process mark
2702 (@code{gnus-topic-mark-topic}).
2705 @kindex T M-# (Topic)
2706 @findex gnus-topic-unmark-topic
2707 Remove the process mark from all groups in the current topic
2708 (@code{gnus-topic-unmark-topic}).
2712 @findex gnus-topic-select-group
2714 Either select a group or fold a topic (@code{gnus-topic-select-group}).
2715 When you perform this command on a group, you'll enter the group, as
2716 usual. When done on a topic line, the topic will be folded (if it was
2717 visible) or unfolded (if it was folded already). So it's basically a
2718 toggling command on topics. In addition, if you give a numerical
2719 prefix, group on that level (and lower) will be displayed.
2723 @kindex T TAB (Topic)
2725 @findex gnus-topic-indent
2726 ``Indent'' the current topic so that it becomes a sub-topic of the
2727 previous topic (@code{gnus-topic-indent}). If given a prefix,
2728 ``un-indent'' the topic instead.
2731 @kindex M-TAB (Topic)
2732 @findex gnus-topic-unindent
2733 ``Un-indent'' the current topic so that it becomes a sub-topic of the
2734 parent of its current parent (@code{gnus-topic-unindent}).
2738 @findex gnus-topic-kill-group
2739 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
2740 topic will be removed along with the topic.
2744 @findex gnus-topic-yank-group
2745 Yank the previously killed group or topic
2746 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
2751 @findex gnus-topic-rename
2752 Rename a topic (@code{gnus-topic-rename}).
2755 @kindex T DEL (Topic)
2756 @findex gnus-topic-delete
2757 Delete an empty topic (@code{gnus-topic-delete}).
2761 @findex gnus-topic-list-active
2762 List all groups that Gnus knows about in a topics-ified way
2763 (@code{gnus-topic-list-active}).
2767 @findex gnus-topic-edit-parameters
2768 @cindex group parameters
2769 @cindex topic parameters
2771 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
2772 @xref{Topic Parameters}.
2778 @subsection Topic Sorting
2779 @cindex topic sorting
2781 You can sort the groups in each topic individually with the following
2787 @kindex T S a (Topic)
2788 @findex gnus-topic-sort-groups-by-alphabet
2789 Sort the current topic alphabetically by group name
2790 (@code{gnus-topic-sort-groups-by-alphabet}).
2793 @kindex T S u (Topic)
2794 @findex gnus-topic-sort-groups-by-unread
2795 Sort the current topic by the number of unread articles
2796 (@code{gnus-topic-sort-groups-by-unread}).
2799 @kindex T S l (Topic)
2800 @findex gnus-topic-sort-groups-by-level
2801 Sort the current topic by group level
2802 (@code{gnus-topic-sort-groups-by-level}).
2805 @kindex T S v (Topic)
2806 @findex gnus-topic-sort-groups-by-score
2807 Sort the current topic by group score
2808 (@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
2811 @kindex T S r (Topic)
2812 @findex gnus-topic-sort-groups-by-rank
2813 Sort the current topic by group rank
2814 (@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
2817 @kindex T S m (Topic)
2818 @findex gnus-topic-sort-groups-by-method
2819 Sort the current topic alphabetically by backend name
2820 (@code{gnus-topic-sort-groups-by-method}).
2824 @xref{Sorting Groups} for more information about group sorting.
2827 @node Topic Topology
2828 @subsection Topic Topology
2829 @cindex topic topology
2832 So, let's have a look at an example group buffer:
2838 2: alt.religion.emacs
2841 0: comp.talk.emacs.recovery
2843 8: comp.binaries.fractals
2844 13: comp.sources.unix
2847 So, here we have one top-level topic (@samp{Gnus}), two topics under
2848 that, and one sub-topic under one of the sub-topics. (There is always
2849 just one (1) top-level topic). This topology can be expressed as
2854 (("Emacs -- I wuw it!" visible)
2855 (("Naughty Emacs" visible)))
2859 @vindex gnus-topic-topology
2860 This is in fact how the variable @code{gnus-topic-topology} would look
2861 for the display above. That variable is saved in the @file{.newsrc.eld}
2862 file, and shouldn't be messed with manually---unless you really want
2863 to. Since this variable is read from the @file{.newsrc.eld} file,
2864 setting it in any other startup files will have no effect.
2866 This topology shows what topics are sub-topics of what topics (right),
2867 and which topics are visible. Two settings are currently
2868 allowed---@code{visible} and @code{invisible}.
2871 @node Topic Parameters
2872 @subsection Topic Parameters
2873 @cindex topic parameters
2875 All groups in a topic will inherit group parameters from the parent (and
2876 ancestor) topic parameters. All valid group parameters are valid topic
2877 parameters (@pxref{Group Parameters}).
2879 Group parameters (of course) override topic parameters, and topic
2880 parameters in sub-topics override topic parameters in super-topics. You
2881 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
2882 verb, although you may feel free to disagree with me here.)
2888 2: alt.religion.emacs
2892 0: comp.talk.emacs.recovery
2894 8: comp.binaries.fractals
2895 13: comp.sources.unix
2899 The @samp{Emacs} topic has the topic parameter @code{(score-file
2900 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
2901 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
2902 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
2903 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
2904 . "religion.SCORE")}.
2906 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
2907 will get the @file{relief.SCORE} home score file. If you enter the same
2908 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
2909 score file. If you enter the group @samp{alt.religion.emacs}, you'll
2910 get the @file{religion.SCORE} home score file.
2912 This seems rather simple and self-evident, doesn't it? Well, yes. But
2913 there are some problems, especially with the @code{total-expiry}
2914 parameter. Say you have a mail group in two topics; one with
2915 @code{total-expiry} and one without. What happens when you do @kbd{M-x
2916 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
2917 of these topics you mean to expire articles from, so anything may
2918 happen. In fact, I hereby declare that it is @dfn{undefined} what
2919 happens. You just have to be careful if you do stuff like that.
2922 @node Misc Group Stuff
2923 @section Misc Group Stuff
2926 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
2927 * Group Information:: Information and help on groups and Gnus.
2928 * Group Timestamp:: Making Gnus keep track of when you last read a group.
2929 * File Commands:: Reading and writing the Gnus files.
2936 @findex gnus-group-enter-server-mode
2937 Enter the server buffer (@code{gnus-group-enter-server-mode}).
2938 @xref{The Server Buffer}.
2942 @findex gnus-group-post-news
2943 Post an article to a group (@code{gnus-group-post-news}). If given a
2944 prefix, the current group name will be used as the default.
2948 @findex gnus-group-mail
2949 Mail a message somewhere (@code{gnus-group-mail}).
2953 Variables for the group buffer:
2957 @item gnus-group-mode-hook
2958 @vindex gnus-group-mode-hook
2959 is called after the group buffer has been
2962 @item gnus-group-prepare-hook
2963 @vindex gnus-group-prepare-hook
2964 is called after the group buffer is
2965 generated. It may be used to modify the buffer in some strange,
2968 @item gnus-group-prepared-hook
2969 @vindex gnus-group-prepare-hook
2970 is called as the very last thing after the group buffer has been
2971 generated. It may be used to move point around, for instance.
2973 @item gnus-permanently-visible-groups
2974 @vindex gnus-permanently-visible-groups
2975 Groups matching this regexp will always be listed in the group buffer,
2976 whether they are empty or not.
2981 @node Scanning New Messages
2982 @subsection Scanning New Messages
2983 @cindex new messages
2984 @cindex scanning new news
2990 @findex gnus-group-get-new-news
2991 @c @icon{gnus-group-get-new-news}
2992 Check the server(s) for new articles. If the numerical prefix is used,
2993 this command will check only groups of level @var{arg} and lower
2994 (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
2995 command will force a total re-reading of the active file(s) from the
3000 @findex gnus-group-get-new-news-this-group
3001 @vindex gnus-goto-next-group-when-activating
3002 @c @icon{gnus-group-get-new-news-this-group}
3003 Check whether new articles have arrived in the current group
3004 (@code{gnus-group-get-new-news-this-group}).
3005 @code{gnus-goto-next-group-when-activating} says whether this command is
3006 to move point to the next group or not. It is @code{t} by default.
3008 @findex gnus-activate-all-groups
3009 @cindex activating groups
3011 @kindex C-c M-g (Group)
3012 Activate absolutely all groups (@code{gnus-activate-all-groups}).
3017 @findex gnus-group-restart
3018 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
3019 file(s), closes the connection to all servers, clears up all run-time
3020 Gnus variables, and then starts Gnus all over again.
3024 @vindex gnus-get-new-news-hook
3025 @code{gnus-get-new-news-hook} is run just before checking for new news.
3027 @vindex gnus-after-getting-new-news-hook
3028 @code{gnus-after-getting-new-news-hook} is run after checking for new
3032 @node Group Information
3033 @subsection Group Information
3034 @cindex group information
3035 @cindex information on groups
3042 @findex gnus-group-fetch-faq
3043 @vindex gnus-group-faq-directory
3046 Try to fetch the FAQ for the current group
3047 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from
3048 @code{gnus-group-faq-directory}, which is usually a directory on a
3049 remote machine. This variable can also be a list of directories. In
3050 that case, giving a prefix to this command will allow you to choose
3051 between the various sites. @code{ange-ftp} (or @code{efs}) will be used
3052 for fetching the file.
3054 If fetching from the first site is unsuccessful, Gnus will attempt to go
3055 through @code{gnus-group-faq-directory} and try to open them one by one.
3059 @c @icon{gnus-group-describe-group}
3061 @kindex C-c C-d (Group)
3062 @cindex describing groups
3063 @cindex group description
3064 @findex gnus-group-describe-group
3065 Describe the current group (@code{gnus-group-describe-group}). If given
3066 a prefix, force Gnus to re-read the description from the server.
3070 @findex gnus-group-describe-all-groups
3071 Describe all groups (@code{gnus-group-describe-all-groups}). If given a
3072 prefix, force Gnus to re-read the description file from the server.
3079 @findex gnus-version
3080 Display current Gnus version numbers (@code{gnus-version}).
3084 @findex gnus-group-describe-briefly
3085 Give a very short help message (@code{gnus-group-describe-briefly}).
3088 @kindex C-c C-i (Group)
3091 @findex gnus-info-find-node
3092 Go to the Gnus info node (@code{gnus-info-find-node}).
3096 @node Group Timestamp
3097 @subsection Group Timestamp
3099 @cindex group timestamps
3101 It can be convenient to let Gnus keep track of when you last read a
3102 group. To set the ball rolling, you should add
3103 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
3106 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
3109 After doing this, each time you enter a group, it'll be recorded.
3111 This information can be displayed in various ways---the easiest is to
3112 use the @samp{%d} spec in the group line format:
3115 (setq gnus-group-line-format
3116 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
3119 This will result in lines looking like:
3122 * 0: mail.ding 19961002T012943
3123 0: custom 19961002T012713
3126 As you can see, the date is displayed in compact ISO 8601 format. This
3127 may be a bit too much, so to just display the date, you could say
3131 (setq gnus-group-line-format
3132 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
3137 @subsection File Commands
3138 @cindex file commands
3144 @findex gnus-group-read-init-file
3145 @vindex gnus-init-file
3146 @cindex reading init file
3147 Re-read the init file (@code{gnus-init-file}, which defaults to
3148 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
3152 @findex gnus-group-save-newsrc
3153 @cindex saving .newsrc
3154 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
3155 (@code{gnus-group-save-newsrc}). If given a prefix, force saving the
3156 file(s) whether Gnus thinks it is necessary or not.
3159 @c @kindex Z (Group)
3160 @c @findex gnus-group-clear-dribble
3161 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
3166 @node The Summary Buffer
3167 @chapter The Summary Buffer
3168 @cindex summary buffer
3170 A line for each article is displayed in the summary buffer. You can
3171 move around, read articles, post articles and reply to articles.
3173 The most common way to a summary buffer is to select a group from the
3174 group buffer (@pxref{Selecting a Group}).
3176 You can have as many summary buffers open as you wish.
3179 * Summary Buffer Format:: Deciding how the summary buffer is to look.
3180 * Summary Maneuvering:: Moving around the summary buffer.
3181 * Choosing Articles:: Reading articles.
3182 * Paging the Article:: Scrolling the current article.
3183 * Reply Followup and Post:: Posting articles.
3184 * Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
3185 * Marking Articles:: Marking articles as read, expirable, etc.
3186 * Limiting:: You can limit the summary buffer.
3187 * Threading:: How threads are made.
3188 * Sorting:: How articles and threads are sorted.
3189 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
3190 * Article Caching:: You may store articles in a cache.
3191 * Persistent Articles:: Making articles expiry-resistant.
3192 * Article Backlog:: Having already read articles hang around.
3193 * Saving Articles:: Ways of customizing article saving.
3194 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
3195 * Article Treatment:: The article buffer can be mangled at will.
3196 * Article Commands:: Doing various things with the article buffer.
3197 * Summary Sorting:: Sorting the summary buffer in various ways.
3198 * Finding the Parent:: No child support? Get the parent.
3199 * Alternative Approaches:: Reading using non-default summaries.
3200 * Tree Display:: A more visual display of threads.
3201 * Mail Group Commands:: Some commands can only be used in mail groups.
3202 * Various Summary Stuff:: What didn't fit anywhere else.
3203 * Exiting the Summary Buffer:: Returning to the Group buffer.
3204 * Crosspost Handling:: How crossposted articles are dealt with.
3205 * Duplicate Suppression:: An alternative when crosspost handling fails.
3209 @node Summary Buffer Format
3210 @section Summary Buffer Format
3211 @cindex summary buffer format
3215 \gnusfigure{The Summary Buffer}{180}{
3216 \put(0,0){\epsfig{figure=tmp/summary.ps,width=7.5cm}}
3217 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-article.ps,width=7.5cm}}}
3223 * Summary Buffer Lines:: You can specify how summary lines should look.
3224 * Summary Buffer Mode Line:: You can say how the mode line should look.
3225 * Summary Highlighting:: Making the summary buffer all pretty and nice.
3228 @findex mail-extract-address-components
3229 @findex gnus-extract-address-components
3230 @vindex gnus-extract-address-components
3231 Gnus will use the value of the @code{gnus-extract-address-components}
3232 variable as a function for getting the name and address parts of a
3233 @code{From} header. Two pre-defined functions exist:
3234 @code{gnus-extract-address-components}, which is the default, quite
3235 fast, and too simplistic solution; and
3236 @code{mail-extract-address-components}, which works very nicely, but is
3237 slower. The default function will return the wrong answer in 5% of the
3238 cases. If this is unacceptable to you, use the other function instead.
3240 @vindex gnus-summary-same-subject
3241 @code{gnus-summary-same-subject} is a string indicating that the current
3242 article has the same subject as the previous. This string will be used
3243 with those specs that require it. The default is @code{""}.
3246 @node Summary Buffer Lines
3247 @subsection Summary Buffer Lines
3249 @vindex gnus-summary-line-format
3250 You can change the format of the lines in the summary buffer by changing
3251 the @code{gnus-summary-line-format} variable. It works along the same
3252 lines as a normal @code{format} string, with some extensions
3253 (@pxref{Formatting Variables}).
3255 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
3257 The following format specification characters are understood:
3265 Subject if the article is the root of the thread or the previous article
3266 had a different subject, @code{gnus-summary-same-subject} otherwise.
3267 (@code{gnus-summary-same-subject} defaults to @code{""}.)
3269 Full @code{From} header.
3271 The name (from the @code{From} header).
3273 The name (from the @code{From} header). This differs from the @code{n}
3274 spec in that it uses the function designated by the
3275 @code{gnus-extract-address-components} variable, which is slower, but
3276 may be more thorough.
3278 The address (from the @code{From} header). This works the same way as
3281 Number of lines in the article.
3283 Number of characters in the article.
3285 Indentation based on thread level (@pxref{Customizing Threading}).
3287 Nothing if the article is a root and lots of spaces if it isn't (it
3288 pushes everything after it off the screen).
3290 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
3291 for adopted articles (@pxref{Customizing Threading}).
3293 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
3294 for adopted articles.
3296 One space for each thread level.
3298 Twenty minus thread level spaces.
3303 This misleadingly named specifier is the @dfn{secondary mark}. This
3304 mark will say whether the article has been replied to, has been cached,
3308 Score as a number (@pxref{Scoring}).
3310 @vindex gnus-summary-zcore-fuzz
3311 Zcore, @samp{+} if above the default level and @samp{-} if below the
3312 default level. If the difference between
3313 @code{gnus-summary-default-score} and the score is less than
3314 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
3322 The @code{Date} in @code{DD-MMM} format.
3324 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
3330 Number of articles in the current sub-thread. Using this spec will slow
3331 down summary buffer generation somewhat.
3333 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3334 article has any children.
3340 User defined specifier. The next character in the format string should
3341 be a letter. Gnus will call the function
3342 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
3343 following @samp{%u}. The function will be passed the current header as
3344 argument. The function should return a string, which will be inserted
3345 into the summary just like information from any other summary specifier.
3348 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
3349 have to be handled with care. For reasons of efficiency, Gnus will
3350 compute what column these characters will end up in, and ``hard-code''
3351 that. This means that it is invalid to have these specs after a
3352 variable-length spec. Well, you might not be arrested, but your summary
3353 buffer will look strange, which is bad enough.
3355 The smart choice is to have these specs as far to the left as possible.
3356 (Isn't that the case with everything, though? But I digress.)
3358 This restriction may disappear in later versions of Gnus.
3361 @node Summary Buffer Mode Line
3362 @subsection Summary Buffer Mode Line
3364 @vindex gnus-summary-mode-line-format
3365 You can also change the format of the summary mode bar (@pxref{Mode Line
3366 Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
3367 like. The default is @samp{Gnus: %%b [%A] %Z}.
3369 Here are the elements you can play with:
3375 Unprefixed group name.
3377 Current article number.
3379 Current article score.
3383 Number of unread articles in this group.
3385 Number of unread articles in this group that aren't displayed in the
3388 A string with the number of unread and unselected articles represented
3389 either as @samp{<%U(+%e) more>} if there are both unread and unselected
3390 articles, and just as @samp{<%U more>} if there are just unread articles
3391 and no unselected ones.
3393 Shortish group name. For instance, @samp{rec.arts.anime} will be
3394 shortened to @samp{r.a.anime}.
3396 Subject of the current article.
3398 User-defined spec (@pxref{User-Defined Specs}).
3400 Name of the current score file (@pxref{Scoring}).
3402 Number of dormant articles (@pxref{Unread Articles}).
3404 Number of ticked articles (@pxref{Unread Articles}).
3406 Number of articles that have been marked as read in this session.
3408 Number of articles expunged by the score files.
3412 @node Summary Highlighting
3413 @subsection Summary Highlighting
3417 @item gnus-visual-mark-article-hook
3418 @vindex gnus-visual-mark-article-hook
3419 This hook is run after selecting an article. It is meant to be used for
3420 highlighting the article in some way. It is not run if
3421 @code{gnus-visual} is @code{nil}.
3423 @item gnus-summary-update-hook
3424 @vindex gnus-summary-update-hook
3425 This hook is called when a summary line is changed. It is not run if
3426 @code{gnus-visual} is @code{nil}.
3428 @item gnus-summary-selected-face
3429 @vindex gnus-summary-selected-face
3430 This is the face (or @dfn{font} as some people call it) used to
3431 highlight the current article in the summary buffer.
3433 @item gnus-summary-highlight
3434 @vindex gnus-summary-highlight
3435 Summary lines are highlighted according to this variable, which is a
3436 list where the elements are of the format @var{(FORM . FACE)}. If you
3437 would, for instance, like ticked articles to be italic and high-scored
3438 articles to be bold, you could set this variable to something like
3440 (((eq mark gnus-ticked-mark) . italic)
3441 ((> score default) . bold))
3443 As you may have guessed, if @var{FORM} returns a non-@code{nil} value,
3444 @var{FACE} will be applied to the line.
3448 @node Summary Maneuvering
3449 @section Summary Maneuvering
3450 @cindex summary movement
3452 All the straight movement commands understand the numeric prefix and
3453 behave pretty much as you'd expect.
3455 None of these commands select articles.
3460 @kindex M-n (Summary)
3461 @kindex G M-n (Summary)
3462 @findex gnus-summary-next-unread-subject
3463 Go to the next summary line of an unread article
3464 (@code{gnus-summary-next-unread-subject}).
3468 @kindex M-p (Summary)
3469 @kindex G M-p (Summary)
3470 @findex gnus-summary-prev-unread-subject
3471 Go to the previous summary line of an unread article
3472 (@code{gnus-summary-prev-unread-subject}).
3477 @kindex G j (Summary)
3478 @findex gnus-summary-goto-article
3479 Ask for an article number or @code{Message-ID}, and then go to that
3480 article (@code{gnus-summary-goto-article}).
3483 @kindex G g (Summary)
3484 @findex gnus-summary-goto-subject
3485 Ask for an article number and then go to the summary line of that article
3486 without displaying the article (@code{gnus-summary-goto-subject}).
3489 If Gnus asks you to press a key to confirm going to the next group, you
3490 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
3491 buffer, searching for the next group to read without actually returning
3492 to the group buffer.
3494 Variables related to summary movement:
3498 @vindex gnus-auto-select-next
3499 @item gnus-auto-select-next
3500 If you issue one of the movement commands (like @kbd{n}) and there are
3501 no more unread articles after the current one, Gnus will offer to go to
3502 the next group. If this variable is @code{t} and the next group is
3503 empty, Gnus will exit summary mode and return to the group buffer. If
3504 this variable is neither @code{t} nor @code{nil}, Gnus will select the
3505 next group, no matter whether it has any unread articles or not. As a
3506 special case, if this variable is @code{quietly}, Gnus will select the
3507 next group without asking for confirmation. If this variable is
3508 @code{almost-quietly}, the same will happen only if you are located on
3509 the last article in the group. Finally, if this variable is
3510 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
3511 without confirmation. Also @pxref{Group Levels}.
3513 @item gnus-auto-select-same
3514 @vindex gnus-auto-select-same
3515 If non-@code{nil}, all the movement commands will try to go to the next
3516 article with the same subject as the current. (@dfn{Same} here might
3517 mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
3518 for details (@pxref{Customizing Threading}).) If there are no more
3519 articles with the same subject, go to the first unread article.
3521 This variable is not particularly useful if you use a threaded display.
3523 @item gnus-summary-check-current
3524 @vindex gnus-summary-check-current
3525 If non-@code{nil}, all the ``unread'' movement commands will not proceed
3526 to the next (or previous) article if the current article is unread.
3527 Instead, they will choose the current article.
3529 @item gnus-auto-center-summary
3530 @vindex gnus-auto-center-summary
3531 If non-@code{nil}, Gnus will keep the point in the summary buffer
3532 centered at all times. This makes things quite tidy, but if you have a
3533 slow network connection, or simply do not like this un-Emacsism, you can
3534 set this variable to @code{nil} to get the normal Emacs scrolling
3535 action. This will also inhibit horizontal re-centering of the summary
3536 buffer, which might make it more inconvenient to read extremely long
3542 @node Choosing Articles
3543 @section Choosing Articles
3544 @cindex selecting articles
3547 * Choosing Commands:: Commands for choosing articles.
3548 * Choosing Variables:: Variables that influence these commands.
3552 @node Choosing Commands
3553 @subsection Choosing Commands
3555 None of the following movement commands understand the numeric prefix,
3556 and they all select and display an article.
3560 @kindex SPACE (Summary)
3561 @findex gnus-summary-next-page
3562 Select the current article, or, if that one's read already, the next
3563 unread article (@code{gnus-summary-next-page}).
3568 @kindex G n (Summary)
3569 @findex gnus-summary-next-unread-article
3570 @c @icon{gnus-summary-next-unread}
3571 Go to next unread article (@code{gnus-summary-next-unread-article}).
3576 @findex gnus-summary-prev-unread-article
3577 @c @icon{gnus-summary-prev-unread}
3578 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
3583 @kindex G N (Summary)
3584 @findex gnus-summary-next-article
3585 Go to the next article (@code{gnus-summary-next-article}).
3590 @kindex G P (Summary)
3591 @findex gnus-summary-prev-article
3592 Go to the previous article (@code{gnus-summary-prev-article}).
3595 @kindex G C-n (Summary)
3596 @findex gnus-summary-next-same-subject
3597 Go to the next article with the same subject
3598 (@code{gnus-summary-next-same-subject}).
3601 @kindex G C-p (Summary)
3602 @findex gnus-summary-prev-same-subject
3603 Go to the previous article with the same subject
3604 (@code{gnus-summary-prev-same-subject}).
3608 @kindex G f (Summary)
3610 @findex gnus-summary-first-unread-article
3611 Go to the first unread article
3612 (@code{gnus-summary-first-unread-article}).
3616 @kindex G b (Summary)
3618 @findex gnus-summary-best-unread-article
3619 Go to the article with the highest score
3620 (@code{gnus-summary-best-unread-article}).
3625 @kindex G l (Summary)
3626 @findex gnus-summary-goto-last-article
3627 Go to the previous article read (@code{gnus-summary-goto-last-article}).
3630 @kindex G o (Summary)
3631 @findex gnus-summary-pop-article
3633 @cindex article history
3634 Pop an article off the summary history and go to this article
3635 (@code{gnus-summary-pop-article}). This command differs from the
3636 command above in that you can pop as many previous articles off the
3637 history as you like, while @kbd{l} toggles the two last read articles.
3638 For a somewhat related issue (if you use these commands a lot),
3639 @pxref{Article Backlog}.
3643 @node Choosing Variables
3644 @subsection Choosing Variables
3646 Some variables relevant for moving and selecting articles:
3649 @item gnus-auto-extend-newsgroup
3650 @vindex gnus-auto-extend-newsgroup
3651 All the movement commands will try to go to the previous (or next)
3652 article, even if that article isn't displayed in the Summary buffer if
3653 this variable is non-@code{nil}. Gnus will then fetch the article from
3654 the server and display it in the article buffer.
3656 @item gnus-select-article-hook
3657 @vindex gnus-select-article-hook
3658 This hook is called whenever an article is selected. By default it
3659 exposes any threads hidden under the selected article.
3661 @item gnus-mark-article-hook
3662 @vindex gnus-mark-article-hook
3663 @findex gnus-summary-mark-unread-as-read
3664 @findex gnus-summary-mark-read-and-unread-as-read
3665 @findex gnus-unread-mark
3666 This hook is called whenever an article is selected. It is intended to
3667 be used for marking articles as read. The default value is
3668 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
3669 mark of almost any article you read to @code{gnus-unread-mark}. The
3670 only articles not affected by this function are ticked, dormant, and
3671 expirable articles. If you'd instead like to just have unread articles
3672 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
3673 instead. It will leave marks like @code{gnus-low-score-mark},
3674 @code{gnus-del-mark} (and so on) alone.
3679 @node Paging the Article
3680 @section Scrolling the Article
3681 @cindex article scrolling
3686 @kindex SPACE (Summary)
3687 @findex gnus-summary-next-page
3688 Pressing @kbd{SPACE} will scroll the current article forward one page,
3689 or, if you have come to the end of the current article, will choose the
3690 next article (@code{gnus-summary-next-page}).
3693 @kindex DEL (Summary)
3694 @findex gnus-summary-prev-page
3695 Scroll the current article back one page (@code{gnus-summary-prev-page}).
3698 @kindex RET (Summary)
3699 @findex gnus-summary-scroll-up
3700 Scroll the current article one line forward
3701 (@code{gnus-summary-scroll-up}).
3704 @kindex M-RET (Summary)
3705 @findex gnus-summary-scroll-down
3706 Scroll the current article one line backward
3707 (@code{gnus-summary-scroll-down}).
3711 @kindex A g (Summary)
3713 @findex gnus-summary-show-article
3714 (Re)fetch the current article (@code{gnus-summary-show-article}). If
3715 given a prefix, fetch the current article, but don't run any of the
3716 article treatment functions. This will give you a ``raw'' article, just
3717 the way it came from the server.
3722 @kindex A < (Summary)
3723 @findex gnus-summary-beginning-of-article
3724 Scroll to the beginning of the article
3725 (@code{gnus-summary-beginning-of-article}).
3730 @kindex A > (Summary)
3731 @findex gnus-summary-end-of-article
3732 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
3736 @kindex A s (Summary)
3738 @findex gnus-summary-isearch-article
3739 Perform an isearch in the article buffer
3740 (@code{gnus-summary-isearch-article}).
3744 @findex gnus-summary-select-article-buffer
3745 Select the article buffer (@code{gnus-summary-select-article-buffer}).
3750 @node Reply Followup and Post
3751 @section Reply, Followup and Post
3754 * Summary Mail Commands:: Sending mail.
3755 * Summary Post Commands:: Sending news.
3759 @node Summary Mail Commands
3760 @subsection Summary Mail Commands
3762 @cindex composing mail
3764 Commands for composing a mail message:
3770 @kindex S r (Summary)
3772 @findex gnus-summary-reply
3773 @c @icon{gnus-summary-mail-reply}
3774 @c @icon{gnus-summary-reply}
3775 Mail a reply to the author of the current article
3776 (@code{gnus-summary-reply}).
3781 @kindex S R (Summary)
3782 @findex gnus-summary-reply-with-original
3783 @c @icon{gnus-summary-reply-with-original}
3784 Mail a reply to the author of the current article and include the
3785 original message (@code{gnus-summary-reply-with-original}). This
3786 command uses the process/prefix convention.
3789 @kindex S w (Summary)
3790 @findex gnus-summary-wide-reply
3791 Mail a wide reply to the author of the current article
3792 (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
3793 goes out to all people listed in the @code{To}, @code{From} (or
3794 @code{Reply-to}) and @code{Cc} headers.
3797 @kindex S W (Summary)
3798 @findex gnus-summary-wide-reply-with-original
3799 Mail a wide reply to the current article and include the original
3800 message (@code{gnus-summary-reply-with-original}). This command uses
3801 the process/prefix convention.
3804 @kindex S o m (Summary)
3805 @findex gnus-summary-mail-forward
3806 @c @icon{gnus-summary-mail-forward}
3807 Forward the current article to some other person
3808 (@code{gnus-summary-mail-forward}). If given a prefix, include the full
3809 headers of the forwarded article.
3814 @kindex S m (Summary)
3815 @findex gnus-summary-mail-other-window
3816 @c @icon{gnus-summary-mail-originate}
3817 Send a mail to some other person
3818 (@code{gnus-summary-mail-other-window}).
3821 @kindex S D b (Summary)
3822 @findex gnus-summary-resend-bounced-mail
3823 @cindex bouncing mail
3824 If you have sent a mail, but the mail was bounced back to you for some
3825 reason (wrong address, transient failure), you can use this command to
3826 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
3827 will be popped into a mail buffer where you can edit the headers before
3828 sending the mail off again. If you give a prefix to this command, and
3829 the bounced mail is a reply to some other mail, Gnus will try to fetch
3830 that mail and display it for easy perusal of its headers. This might
3831 very well fail, though.
3834 @kindex S D r (Summary)
3835 @findex gnus-summary-resend-message
3836 Not to be confused with the previous command,
3837 @code{gnus-summary-resend-message} will prompt you for an address to
3838 send the current message off to, and then send it to that place. The
3839 headers of the message won't be altered---but lots of headers that say
3840 @code{Resent-To}, @code{Resent-From} and so on will be added. This
3841 means that you actually send a mail to someone that has a @code{To}
3842 header that (probably) points to yourself. This will confuse people.
3843 So, natcherly you'll only do that if you're really eVIl.
3845 This command is mainly used if you have several accounts and want to
3846 ship a mail to a different account of yours. (If you're both
3847 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
3848 to the @code{root} account, you may want to resend it to
3849 @code{postmaster}. Ordnung muß sein!
3851 This command understands the process/prefix convention
3852 (@pxref{Process/Prefix}).
3855 @kindex S O m (Summary)
3856 @findex gnus-uu-digest-mail-forward
3857 Digest the current series (@pxref{Decoding Articles}) and forward the
3858 result using mail (@code{gnus-uu-digest-mail-forward}). This command
3859 uses the process/prefix convention (@pxref{Process/Prefix}).
3862 @kindex S M-c (Summary)
3863 @findex gnus-summary-mail-crosspost-complaint
3864 @cindex crossposting
3865 @cindex excessive crossposting
3866 Send a complaint about excessive crossposting to the author of the
3867 current article (@code{gnus-summary-mail-crosspost-complaint}).
3869 @findex gnus-crosspost-complaint
3870 This command is provided as a way to fight back against the current
3871 crossposting pandemic that's sweeping Usenet. It will compose a reply
3872 using the @code{gnus-crosspost-complaint} variable as a preamble. This
3873 command understands the process/prefix convention
3874 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
3878 Also @pxref{(message)Header Commands} for more information.
3881 @node Summary Post Commands
3882 @subsection Summary Post Commands
3884 @cindex composing news
3886 Commands for posting a news article:
3892 @kindex S p (Summary)
3893 @findex gnus-summary-post-news
3894 @c @icon{gnus-summary-post-news}
3895 Post an article to the current group
3896 (@code{gnus-summary-post-news}).
3901 @kindex S f (Summary)
3902 @findex gnus-summary-followup
3903 @c @icon{gnus-summary-followup}
3904 Post a followup to the current article (@code{gnus-summary-followup}).
3908 @kindex S F (Summary)
3910 @c @icon{gnus-summary-followup-with-original}
3911 @findex gnus-summary-followup-with-original
3912 Post a followup to the current article and include the original message
3913 (@code{gnus-summary-followup-with-original}). This command uses the
3914 process/prefix convention.
3917 @kindex S n (Summary)
3918 @findex gnus-summary-followup-to-mail
3919 Post a followup to the current article via news, even if you got the
3920 message through mail (@code{gnus-summary-followup-to-mail}).
3923 @kindex S N (Summary)
3924 @findex gnus-summary-followup-to-mail-with-original
3925 Post a followup to the current article via news, even if you got the
3926 message through mail and include the original message
3927 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
3928 the process/prefix convention.
3931 @kindex S o p (Summary)
3932 @findex gnus-summary-post-forward
3933 Forward the current article to a newsgroup
3934 (@code{gnus-summary-post-forward}). If given a prefix, include the full
3935 headers of the forwarded article.
3938 @kindex S O p (Summary)
3939 @findex gnus-uu-digest-post-forward
3941 @cindex making digests
3942 Digest the current series and forward the result to a newsgroup
3943 (@code{gnus-uu-digest-mail-forward}). This command uses the
3944 process/prefix convention.
3947 @kindex S u (Summary)
3948 @findex gnus-uu-post-news
3949 @c @icon{gnus-uu-post-news}
3950 Uuencode a file, split it into parts, and post it as a series
3951 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
3954 Also @pxref{(message)Header Commands} for more information.
3957 @node Canceling and Superseding
3958 @section Canceling Articles
3959 @cindex canceling articles
3960 @cindex superseding articles
3962 Have you ever written something, and then decided that you really,
3963 really, really wish you hadn't posted that?
3965 Well, you can't cancel mail, but you can cancel posts.
3967 @findex gnus-summary-cancel-article
3969 @c @icon{gnus-summary-cancel-article}
3970 Find the article you wish to cancel (you can only cancel your own
3971 articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
3972 c} (@code{gnus-summary-cancel-article}). Your article will be
3973 canceled---machines all over the world will be deleting your article.
3974 This command uses the process/prefix convention (@pxref{Process/Prefix}).
3976 Be aware, however, that not all sites honor cancels, so your article may
3977 live on here and there, while most sites will delete the article in
3980 Gnus will use the ``current'' select method when canceling. If you
3981 want to use the standard posting method, use the @samp{a} symbolic
3982 prefix (@pxref{Symbolic Prefixes}).
3984 If you discover that you have made some mistakes and want to do some
3985 corrections, you can post a @dfn{superseding} article that will replace
3986 your original article.
3988 @findex gnus-summary-supersede-article
3990 Go to the original article and press @kbd{S s}
3991 (@code{gnus-summary-supersede-article}). You will be put in a buffer
3992 where you can edit the article all you want before sending it off the
3995 The same goes for superseding as for canceling, only more so: Some
3996 sites do not honor superseding. On those sites, it will appear that you
3997 have posted almost the same article twice.
3999 If you have just posted the article, and change your mind right away,
4000 there is a trick you can use to cancel/supersede the article without
4001 waiting for the article to appear on your site first. You simply return
4002 to the post buffer (which is called @code{*sent ...*}). There you will
4003 find the article you just posted, with all the headers intact. Change
4004 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
4005 header by substituting one of those words for the word
4006 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
4007 you would do normally. The previous article will be
4008 canceled/superseded.
4010 Just remember, kids: There is no 'c' in 'supersede'.
4013 @node Marking Articles
4014 @section Marking Articles
4015 @cindex article marking
4016 @cindex article ticking
4019 There are several marks you can set on an article.
4021 You have marks that decide the @dfn{readedness} (whoo, neato-keano
4022 neologism ohoy!) of the article. Alphabetic marks generally mean
4023 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
4025 In addition, you also have marks that do not affect readedness.
4028 * Unread Articles:: Marks for unread articles.
4029 * Read Articles:: Marks for read articles.
4030 * Other Marks:: Marks that do not affect readedness.
4034 There's a plethora of commands for manipulating these marks:
4038 * Setting Marks:: How to set and remove marks.
4039 * Setting Process Marks:: How to mark articles for later processing.
4043 @node Unread Articles
4044 @subsection Unread Articles
4046 The following marks mark articles as (kinda) unread, in one form or
4051 @vindex gnus-ticked-mark
4052 Marked as ticked (@code{gnus-ticked-mark}).
4054 @dfn{Ticked articles} are articles that will remain visible always. If
4055 you see an article that you find interesting, or you want to put off
4056 reading it, or replying to it, until sometime later, you'd typically
4057 tick it. However, articles can be expired, so if you want to keep an
4058 article forever, you'll have to make it persistent (@pxref{Persistent
4062 @vindex gnus-dormant-mark
4063 Marked as dormant (@code{gnus-dormant-mark}).
4065 @dfn{Dormant articles} will only appear in the summary buffer if there
4066 are followups to it. If you want to see them even if they don't have
4067 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
4070 @vindex gnus-unread-mark
4071 Marked as unread (@code{gnus-unread-mark}).
4073 @dfn{Unread articles} are articles that haven't been read at all yet.
4078 @subsection Read Articles
4079 @cindex expirable mark
4081 All the following marks mark articles as read.
4086 @vindex gnus-del-mark
4087 These are articles that the user has marked as read with the @kbd{d}
4088 command manually, more or less (@code{gnus-del-mark}).
4091 @vindex gnus-read-mark
4092 Articles that have actually been read (@code{gnus-read-mark}).
4095 @vindex gnus-ancient-mark
4096 Articles that were marked as read in previous sessions and are now
4097 @dfn{old} (@code{gnus-ancient-mark}).
4100 @vindex gnus-killed-mark
4101 Marked as killed (@code{gnus-killed-mark}).
4104 @vindex gnus-kill-file-mark
4105 Marked as killed by kill files (@code{gnus-kill-file-mark}).
4108 @vindex gnus-low-score-mark
4109 Marked as read by having too low a score (@code{gnus-low-score-mark}).
4112 @vindex gnus-catchup-mark
4113 Marked as read by a catchup (@code{gnus-catchup-mark}).
4116 @vindex gnus-canceled-mark
4117 Canceled article (@code{gnus-canceled-mark})
4120 @vindex gnus-souped-mark
4121 @sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
4124 @vindex gnus-sparse-mark
4125 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
4129 @vindex gnus-duplicate-mark
4130 Article marked as read by duplicate suppression
4131 (@code{gnus-duplicated-mark}). @xref{Duplicate Suppression}.
4135 All these marks just mean that the article is marked as read, really.
4136 They are interpreted differently when doing adaptive scoring, though.
4138 One more special mark, though:
4142 @vindex gnus-expirable-mark
4143 Marked as expirable (@code{gnus-expirable-mark}).
4145 Marking articles as @dfn{expirable} (or have them marked as such
4146 automatically) doesn't make much sense in normal groups---a user doesn't
4147 control expiring of news articles, but in mail groups, for instance,
4148 articles marked as @dfn{expirable} can be deleted by Gnus at
4154 @subsection Other Marks
4155 @cindex process mark
4158 There are some marks that have nothing to do with whether the article is
4164 You can set a bookmark in the current article. Say you are reading a
4165 long thesis on cats' urinary tracts, and have to go home for dinner
4166 before you've finished reading the thesis. You can then set a bookmark
4167 in the article, and Gnus will jump to this bookmark the next time it
4168 encounters the article. @xref{Setting Marks}
4171 @vindex gnus-replied-mark
4172 All articles that you have replied to or made a followup to (i.e., have
4173 answered) will be marked with an @samp{A} in the second column
4174 (@code{gnus-replied-mark}).
4177 @vindex gnus-cached-mark
4178 Articles stored in the article cache will be marked with an @samp{*} in
4179 the second column (@code{gnus-cached-mark}). @xref{Article Caching}
4182 @vindex gnus-saved-mark
4183 Articles ``saved'' (in some manner or other; not necessarily
4184 religiously) are marked with an @samp{S} in the second column
4185 (@code{gnus-saved-mark}).
4188 @vindex gnus-not-empty-thread-mark
4189 @vindex gnus-empty-thread-mark
4190 If the @samp{%e} spec is used, the presence of threads or not will be
4191 marked with @code{gnus-not-empty-thread-mark} and
4192 @code{gnus-empty-thread-mark} in the third column, respectively.
4195 @vindex gnus-process-mark
4196 Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
4197 variety of commands react to the presence of the process mark. For
4198 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
4199 all articles that have been marked with the process mark. Articles
4200 marked with the process mark have a @samp{#} in the second column.
4204 You might have noticed that most of these ``non-readedness'' marks
4205 appear in the second column by default. So if you have a cached, saved,
4206 replied article that you have process-marked, what will that look like?
4208 Nothing much. The precedence rules go as follows: process -> cache ->
4209 replied -> saved. So if the article is in the cache and is replied,
4210 you'll only see the cache mark and not the replied mark.
4214 @subsection Setting Marks
4215 @cindex setting marks
4217 All the marking commands understand the numeric prefix.
4222 @kindex M c (Summary)
4223 @kindex M-u (Summary)
4224 @findex gnus-summary-clear-mark-forward
4225 @cindex mark as unread
4226 Clear all readedness-marks from the current article
4227 (@code{gnus-summary-clear-mark-forward}). In other words, mark the
4233 @kindex M t (Summary)
4234 @findex gnus-summary-tick-article-forward
4235 Tick the current article (@code{gnus-summary-tick-article-forward}).
4236 @xref{Article Caching}
4241 @kindex M ? (Summary)
4242 @findex gnus-summary-mark-as-dormant
4243 Mark the current article as dormant
4244 (@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}
4248 @kindex M d (Summary)
4250 @findex gnus-summary-mark-as-read-forward
4251 Mark the current article as read
4252 (@code{gnus-summary-mark-as-read-forward}).
4256 @findex gnus-summary-mark-as-read-backward
4257 Mark the current article as read and move point to the previous line
4258 (@code{gnus-summary-mark-as-read-backward}).
4263 @kindex M k (Summary)
4264 @findex gnus-summary-kill-same-subject-and-select
4265 Mark all articles that have the same subject as the current one as read,
4266 and then select the next unread article
4267 (@code{gnus-summary-kill-same-subject-and-select}).
4271 @kindex M K (Summary)
4272 @kindex C-k (Summary)
4273 @findex gnus-summary-kill-same-subject
4274 Mark all articles that have the same subject as the current one as read
4275 (@code{gnus-summary-kill-same-subject}).
4278 @kindex M C (Summary)
4279 @findex gnus-summary-catchup
4280 @c @icon{gnus-summary-catchup}
4281 Mark all unread articles as read (@code{gnus-summary-catchup}).
4284 @kindex M C-c (Summary)
4285 @findex gnus-summary-catchup-all
4286 Mark all articles in the group as read---even the ticked and dormant
4287 articles (@code{gnus-summary-catchup-all}).
4290 @kindex M H (Summary)
4291 @findex gnus-summary-catchup-to-here
4292 Catchup the current group to point
4293 (@code{gnus-summary-catchup-to-here}).
4296 @kindex C-w (Summary)
4297 @findex gnus-summary-mark-region-as-read
4298 Mark all articles between point and mark as read
4299 (@code{gnus-summary-mark-region-as-read}).
4302 @kindex M V k (Summary)
4303 @findex gnus-summary-kill-below
4304 Kill all articles with scores below the default score (or below the
4305 numeric prefix) (@code{gnus-summary-kill-below}).
4309 @kindex M e (Summary)
4311 @findex gnus-summary-mark-as-expirable
4312 Mark the current article as expirable
4313 (@code{gnus-summary-mark-as-expirable}).
4316 @kindex M b (Summary)
4317 @findex gnus-summary-set-bookmark
4318 Set a bookmark in the current article
4319 (@code{gnus-summary-set-bookmark}).
4322 @kindex M B (Summary)
4323 @findex gnus-summary-remove-bookmark
4324 Remove the bookmark from the current article
4325 (@code{gnus-summary-remove-bookmark}).
4328 @kindex M V c (Summary)
4329 @findex gnus-summary-clear-above
4330 Clear all marks from articles with scores over the default score (or
4331 over the numeric prefix) (@code{gnus-summary-clear-above}).
4334 @kindex M V u (Summary)
4335 @findex gnus-summary-tick-above
4336 Tick all articles with scores over the default score (or over the
4337 numeric prefix) (@code{gnus-summary-tick-above}).
4340 @kindex M V m (Summary)
4341 @findex gnus-summary-mark-above
4342 Prompt for a mark, and mark all articles with scores over the default
4343 score (or over the numeric prefix) with this mark
4344 (@code{gnus-summary-clear-above}).
4347 @vindex gnus-summary-goto-unread
4348 The @code{gnus-summary-goto-unread} variable controls what action should
4349 be taken after setting a mark. If non-@code{nil}, point will move to
4350 the next/previous unread article. If @code{nil}, point will just move
4351 one line up or down. As a special case, if this variable is
4352 @code{never}, all the marking commands as well as other commands (like
4353 @kbd{SPACE}) will move to the next article, whether it is unread or not.
4354 The default is @code{t}.
4357 @node Setting Process Marks
4358 @subsection Setting Process Marks
4359 @cindex setting process marks
4366 @kindex M P p (Summary)
4367 @findex gnus-summary-mark-as-processable
4368 Mark the current article with the process mark
4369 (@code{gnus-summary-mark-as-processable}).
4370 @findex gnus-summary-unmark-as-processable
4374 @kindex M P u (Summary)
4375 @kindex M-# (Summary)
4376 Remove the process mark, if any, from the current article
4377 (@code{gnus-summary-unmark-as-processable}).
4380 @kindex M P U (Summary)
4381 @findex gnus-summary-unmark-all-processable
4382 Remove the process mark from all articles
4383 (@code{gnus-summary-unmark-all-processable}).
4386 @kindex M P i (Summary)
4387 @findex gnus-uu-invert-processable
4388 Invert the list of process marked articles
4389 (@code{gnus-uu-invert-processable}).
4392 @kindex M P R (Summary)
4393 @findex gnus-uu-mark-by-regexp
4394 Mark articles that have a @code{Subject} header that matches a regular
4395 expression (@code{gnus-uu-mark-by-regexp}).
4398 @kindex M P r (Summary)
4399 @findex gnus-uu-mark-region
4400 Mark articles in region (@code{gnus-uu-mark-region}).
4403 @kindex M P t (Summary)
4404 @findex gnus-uu-mark-thread
4405 Mark all articles in the current (sub)thread
4406 (@code{gnus-uu-mark-thread}).
4409 @kindex M P T (Summary)
4410 @findex gnus-uu-unmark-thread
4411 Unmark all articles in the current (sub)thread
4412 (@code{gnus-uu-unmark-thread}).
4415 @kindex M P v (Summary)
4416 @findex gnus-uu-mark-over
4417 Mark all articles that have a score above the prefix argument
4418 (@code{gnus-uu-mark-over}).
4421 @kindex M P s (Summary)
4422 @findex gnus-uu-mark-series
4423 Mark all articles in the current series (@code{gnus-uu-mark-series}).
4426 @kindex M P S (Summary)
4427 @findex gnus-uu-mark-sparse
4428 Mark all series that have already had some articles marked
4429 (@code{gnus-uu-mark-sparse}).
4432 @kindex M P a (Summary)
4433 @findex gnus-uu-mark-all
4434 Mark all articles in series order (@code{gnus-uu-mark-series}).
4437 @kindex M P b (Summary)
4438 @findex gnus-uu-mark-buffer
4439 Mark all articles in the buffer in the order they appear
4440 (@code{gnus-uu-mark-buffer}).
4443 @kindex M P k (Summary)
4444 @findex gnus-summary-kill-process-mark
4445 Push the current process mark set onto the stack and unmark all articles
4446 (@code{gnus-summary-kill-process-mark}).
4449 @kindex M P y (Summary)
4450 @findex gnus-summary-yank-process-mark
4451 Pop the previous process mark set from the stack and restore it
4452 (@code{gnus-summary-yank-process-mark}).
4455 @kindex M P w (Summary)
4456 @findex gnus-summary-save-process-mark
4457 Push the current process mark set onto the stack
4458 (@code{gnus-summary-save-process-mark}).
4467 It can be convenient to limit the summary buffer to just show some
4468 subset of the articles currently in the group. The effect most limit
4469 commands have is to remove a few (or many) articles from the summary
4472 All limiting commands work on subsets of the articles already fetched
4473 from the servers. None of these commands query the server for
4474 additional articles.
4480 @kindex / / (Summary)
4481 @findex gnus-summary-limit-to-subject
4482 Limit the summary buffer to articles that match some subject
4483 (@code{gnus-summary-limit-to-subject}).
4486 @kindex / a (Summary)
4487 @findex gnus-summary-limit-to-author
4488 Limit the summary buffer to articles that match some author
4489 (@code{gnus-summary-limit-to-author}).
4493 @kindex / u (Summary)
4495 @findex gnus-summary-limit-to-unread
4496 Limit the summary buffer to articles not marked as read
4497 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
4498 buffer to articles strictly unread. This means that ticked and
4499 dormant articles will also be excluded.
4502 @kindex / m (Summary)
4503 @findex gnus-summary-limit-to-marks
4504 Ask for a mark and then limit to all articles that have been marked
4505 with that mark (@code{gnus-summary-limit-to-marks}).
4508 @kindex / t (Summary)
4509 @findex gnus-summary-limit-to-age
4510 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
4511 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to
4512 articles younger than that number of days.
4515 @kindex / n (Summary)
4516 @findex gnus-summary-limit-to-articles
4517 Limit the summary buffer to the current article
4518 (@code{gnus-summary-limit-to-articles}). Uses the process/prefix
4519 convention (@pxref{Process/Prefix}).
4522 @kindex / w (Summary)
4523 @findex gnus-summary-pop-limit
4524 Pop the previous limit off the stack and restore it
4525 (@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
4529 @kindex / v (Summary)
4530 @findex gnus-summary-limit-to-score
4531 Limit the summary buffer to articles that have a score at or above some
4532 score (@code{gnus-summary-limit-to-score}).
4536 @kindex M S (Summary)
4537 @kindex / E (Summary)
4538 @findex gnus-summary-limit-include-expunged
4539 Include all expunged articles in the limit
4540 (@code{gnus-summary-limit-include-expunged}).
4543 @kindex / D (Summary)
4544 @findex gnus-summary-limit-include-dormant
4545 Include all dormant articles in the limit
4546 (@code{gnus-summary-limit-include-dormant}).
4549 @kindex / * (Summary)
4550 @findex gnus-summary-limit-include-cached
4551 Include all cached articles in the limit
4552 (@code{gnus-summary-limit-include-cached}).
4555 @kindex / d (Summary)
4556 @findex gnus-summary-limit-exclude-dormant
4557 Exclude all dormant articles from the limit
4558 (@code{gnus-summary-limit-exclude-dormant}).
4561 @kindex / T (Summary)
4562 @findex gnus-summary-limit-include-thread
4563 Include all the articles in the current thread in the limit.
4566 @kindex / c (Summary)
4567 @findex gnus-summary-limit-exclude-childless-dormant
4568 Exclude all dormant articles that have no children from the limit
4569 (@code{gnus-summary-limit-exclude-childless-dormant}).
4572 @kindex / C (Summary)
4573 @findex gnus-summary-limit-mark-excluded-as-read
4574 Mark all excluded unread articles as read
4575 (@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
4576 also mark excluded ticked and dormant articles as read.
4584 @cindex article threading
4586 Gnus threads articles by default. @dfn{To thread} is to put responses
4587 to articles directly after the articles they respond to---in a
4588 hierarchical fashion.
4590 Threading is done by looking at the @code{References} headers of the
4591 articles. In a perfect world, this would be enough to build pretty
4592 trees, but unfortunately, the @code{References} header is often broken
4593 or simply missing. Weird news propagation excarcerbates the problem,
4594 so one has to employ other heuristics to get pleasing results. A
4595 plethora of approaches exists, as detailed in horrible detail in
4596 @pxref{Customizing Threading}.
4598 First, a quick overview of the concepts:
4602 The top-most article in a thread; the first article in the thread.
4605 A tree-like article structure.
4608 A small(er) section of this tree-like structure.
4611 Threads often lose their roots due to article expiry, or due to the root
4612 already having been read in a previous session, and not displayed in the
4613 summary buffer. We then typically have many sub-threads that really
4614 belong to one thread, but are without connecting roots. These are
4615 called loose threads.
4617 @item thread gathering
4618 An attempt to gather loose threads into bigger threads.
4620 @item sparse threads
4621 A thread where the missing articles have been ``guessed'' at, and are
4622 displayed as empty lines in the summary buffer.
4628 * Customizing Threading:: Variables you can change to affect the threading.
4629 * Thread Commands:: Thread based commands in the summary buffer.
4633 @node Customizing Threading
4634 @subsection Customizing Threading
4635 @cindex customizing threading
4638 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
4639 * Filling In Threads:: Making the threads displayed look fuller.
4640 * More Threading:: Even more variables for fiddling with threads.
4641 * Low-Level Threading:: You thought it was over... but you were wrong!
4646 @subsubsection Loose Threads
4649 @cindex loose threads
4652 @item gnus-summary-make-false-root
4653 @vindex gnus-summary-make-false-root
4654 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
4655 and create a dummy root at the top. (Wait a minute. Root at the top?
4656 Yup.) Loose subtrees occur when the real root has expired, or you've
4657 read or killed the root in a previous session.
4659 When there is no real root of a thread, Gnus will have to fudge
4660 something. This variable says what fudging method Gnus should use.
4661 There are four possible values:
4665 \gnusfigure{The Summary Buffer}{390}{
4666 \put(0,0){\epsfig{figure=tmp/summary-adopt.ps,width=7.5cm}}
4667 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-empty.ps,width=7.5cm}}}
4668 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=tmp/summary-none.ps,width=7.5cm}}}
4669 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=tmp/summary-dummy.ps,width=7.5cm}}}
4674 @cindex adopting articles
4679 Gnus will make the first of the orphaned articles the parent. This
4680 parent will adopt all the other articles. The adopted articles will be
4681 marked as such by pointy brackets (@samp{<>}) instead of the standard
4682 square brackets (@samp{[]}). This is the default method.
4685 @vindex gnus-summary-dummy-line-format
4686 Gnus will create a dummy summary line that will pretend to be the
4687 parent. This dummy line does not correspond to any real article, so
4688 selecting it will just select the first real article after the dummy
4689 article. @code{gnus-summary-dummy-line-format} is used to specify the
4690 format of the dummy roots. It accepts only one format spec: @samp{S},
4691 which is the subject of the article. @xref{Formatting Variables}.
4694 Gnus won't actually make any article the parent, but simply leave the
4695 subject field of all orphans except the first empty. (Actually, it will
4696 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
4700 Don't make any article parent at all. Just gather the threads and
4701 display them after one another.
4704 Don't gather loose threads.
4707 @item gnus-summary-gather-subject-limit
4708 @vindex gnus-summary-gather-subject-limit
4709 Loose threads are gathered by comparing subjects of articles. If this
4710 variable is @code{nil}, Gnus requires an exact match between the
4711 subjects of the loose threads before gathering them into one big
4712 super-thread. This might be too strict a requirement, what with the
4713 presence of stupid newsreaders that chop off long subject lines. If
4714 you think so, set this variable to, say, 20 to require that only the
4715 first 20 characters of the subjects have to match. If you set this
4716 variable to a really low number, you'll find that Gnus will gather
4717 everything in sight into one thread, which isn't very helpful.
4719 @cindex fuzzy article gathering
4720 If you set this variable to the special value @code{fuzzy}, Gnus will
4721 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
4724 @item gnus-simplify-subject-fuzzy-regexp
4725 @vindex gnus-simplify-subject-fuzzy-regexp
4726 This can either be a regular expression or list of regular expressions
4727 that match strings that will be removed from subjects if fuzzy subject
4728 simplification is used.
4730 @item gnus-simplify-ignored-prefixes
4731 @vindex gnus-simplify-ignored-prefixes
4732 If you set @code{gnus-summary-gather-subject-limit} to something as low
4733 as 10, you might consider setting this variable to something sensible:
4735 @c Written by Michael Ernst <mernst@cs.rice.edu>
4737 (setq gnus-simplify-ignored-prefixes
4743 "wanted" "followup" "summary\\( of\\)?"
4744 "help" "query" "problem" "question"
4745 "answer" "reference" "announce"
4746 "How can I" "How to" "Comparison of"
4751 (mapconcat 'identity
4752 '("for" "for reference" "with" "about")
4754 "\\)?\\]?:?[ \t]*"))
4757 All words that match this regexp will be removed before comparing two
4760 @item gnus-simplify-subject-functions
4761 @vindex gnus-simplify-subject-functions
4762 If non-@code{nil}, this variable overrides
4763 @code{gnus-summary-gather-subject-limit}. This variable should be a
4764 list of functions to apply to the @code{Subject} string iteratively to
4765 arrive at the simplified version of the string.
4767 Useful functions to put in this list include:
4770 @item gnus-simplify-subject-re
4771 @findex gnus-simplify-subject-re
4772 Strip the leading @samp{Re:}.
4774 @item gnus-simplify-subject-fuzzy
4775 @findex gnus-simplify-subject-fuzzy
4778 @item gnus-simplify-whitespace
4779 @findex gnus-simplify-whitespace
4780 Remove excessive whitespace.
4783 You may also write your own functions, of course.
4786 @item gnus-summary-gather-exclude-subject
4787 @vindex gnus-summary-gather-exclude-subject
4788 Since loose thread gathering is done on subjects only, that might lead
4789 to many false hits, especially with certain common subjects like
4790 @samp{} and @samp{(none)}. To make the situation slightly better,
4791 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
4792 what subjects should be excluded from the gathering process.@*
4793 The default is @samp{^ *$\\|^(none)$}.
4795 @item gnus-summary-thread-gathering-function
4796 @vindex gnus-summary-thread-gathering-function
4797 Gnus gathers threads by looking at @code{Subject} headers. This means
4798 that totally unrelated articles may end up in the same ``thread'', which
4799 is confusing. An alternate approach is to look at all the
4800 @code{Message-ID}s in all the @code{References} headers to find matches.
4801 This will ensure that no gathered threads ever include unrelated
4802 articles, but it also means that people who have posted with broken
4803 newsreaders won't be gathered properly. The choice is yours---plague or
4807 @item gnus-gather-threads-by-subject
4808 @findex gnus-gather-threads-by-subject
4809 This function is the default gathering function and looks at
4810 @code{Subject}s exclusively.
4812 @item gnus-gather-threads-by-references
4813 @findex gnus-gather-threads-by-references
4814 This function looks at @code{References} headers exclusively.
4817 If you want to test gathering by @code{References}, you could say
4821 (setq gnus-summary-thread-gathering-function
4822 'gnus-gather-threads-by-references)
4828 @node Filling In Threads
4829 @subsubsection Filling In Threads
4832 @item gnus-fetch-old-headers
4833 @vindex gnus-fetch-old-headers
4834 If non-@code{nil}, Gnus will attempt to build old threads by fetching
4835 more old headers---headers to articles marked as read. If you
4836 would like to display as few summary lines as possible, but still
4837 connect as many loose threads as possible, you should set this variable
4838 to @code{some} or a number. If you set it to a number, no more than
4839 that number of extra old headers will be fetched. In either case,
4840 fetching old headers only works if the backend you are using carries
4841 overview files---this would normally be @code{nntp}, @code{nnspool} and
4842 @code{nnml}. Also remember that if the root of the thread has been
4843 expired by the server, there's not much Gnus can do about that.
4845 This variable can also be set to @code{invisible}. This won't have any
4846 visible effects, but is useful if you use the @kbd{A T} command a lot
4847 (@pxref{Finding the Parent}).
4849 @item gnus-build-sparse-threads
4850 @vindex gnus-build-sparse-threads
4851 Fetching old headers can be slow. A low-rent similar effect can be
4852 gotten by setting this variable to @code{some}. Gnus will then look at
4853 the complete @code{References} headers of all articles and try to string
4854 together articles that belong in the same thread. This will leave
4855 @dfn{gaps} in the threading display where Gnus guesses that an article
4856 is missing from the thread. (These gaps appear like normal summary
4857 lines. If you select a gap, Gnus will try to fetch the article in
4858 question.) If this variable is @code{t}, Gnus will display all these
4859 ``gaps'' without regard for whether they are useful for completing the
4860 thread or not. Finally, if this variable is @code{more}, Gnus won't cut
4861 off sparse leaf nodes that don't lead anywhere. This variable is
4862 @code{nil} by default.
4867 @node More Threading
4868 @subsubsection More Threading
4871 @item gnus-show-threads
4872 @vindex gnus-show-threads
4873 If this variable is @code{nil}, no threading will be done, and all of
4874 the rest of the variables here will have no effect. Turning threading
4875 off will speed group selection up a bit, but it is sure to make reading
4876 slower and more awkward.
4878 @item gnus-thread-hide-subtree
4879 @vindex gnus-thread-hide-subtree
4880 If non-@code{nil}, all threads will be hidden when the summary buffer is
4883 @item gnus-thread-expunge-below
4884 @vindex gnus-thread-expunge-below
4885 All threads that have a total score (as defined by
4886 @code{gnus-thread-score-function}) less than this number will be
4887 expunged. This variable is @code{nil} by default, which means that no
4888 threads are expunged.
4890 @item gnus-thread-hide-killed
4891 @vindex gnus-thread-hide-killed
4892 if you kill a thread and this variable is non-@code{nil}, the subtree
4895 @item gnus-thread-ignore-subject
4896 @vindex gnus-thread-ignore-subject
4897 Sometimes somebody changes the subject in the middle of a thread. If
4898 this variable is non-@code{nil}, the subject change is ignored. If it
4899 is @code{nil}, which is the default, a change in the subject will result
4902 @item gnus-thread-indent-level
4903 @vindex gnus-thread-indent-level
4904 This is a number that says how much each sub-thread should be indented.
4910 @node Low-Level Threading
4911 @subsubsection Low-Level Threading
4915 @item gnus-parse-headers-hook
4916 @vindex gnus-parse-headers-hook
4917 Hook run before parsing any headers. The default value is
4918 @code{(gnus-decode-rfc1522)}, which means that QPized headers will be
4919 slightly decoded in a hackish way. This is likely to change in the
4920 future when Gnus becomes @sc{MIME}ified.
4922 @item gnus-alter-header-function
4923 @vindex gnus-alter-header-function
4924 If non-@code{nil}, this function will be called to allow alteration of
4925 article header structures. The function is called with one parameter,
4926 the article header vector, which it may alter in any way. For instance,
4927 if you have a mail-to-news gateway which alters the @code{Message-ID}s
4928 in systematic ways (by adding prefixes and such), you can use this
4929 variable to un-scramble the @code{Message-ID}s so that they are more
4930 meaningful. Here's one example:
4933 (setq gnus-alter-header-function 'my-alter-message-id)
4935 (defun my-alter-message-id (header)
4936 (let ((id (mail-header-id header)))
4938 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
4940 (concat (match-string 1 id) "@@" (match-string 2 id))
4947 @node Thread Commands
4948 @subsection Thread Commands
4949 @cindex thread commands
4955 @kindex T k (Summary)
4956 @kindex M-C-k (Summary)
4957 @findex gnus-summary-kill-thread
4958 Mark all articles in the current (sub-)thread as read
4959 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
4960 remove all marks instead. If the prefix argument is negative, tick
4965 @kindex T l (Summary)
4966 @kindex M-C-l (Summary)
4967 @findex gnus-summary-lower-thread
4968 Lower the score of the current (sub-)thread
4969 (@code{gnus-summary-lower-thread}).
4972 @kindex T i (Summary)
4973 @findex gnus-summary-raise-thread
4974 Increase the score of the current (sub-)thread
4975 (@code{gnus-summary-raise-thread}).
4978 @kindex T # (Summary)
4979 @findex gnus-uu-mark-thread
4980 Set the process mark on the current (sub-)thread
4981 (@code{gnus-uu-mark-thread}).
4984 @kindex T M-# (Summary)
4985 @findex gnus-uu-unmark-thread
4986 Remove the process mark from the current (sub-)thread
4987 (@code{gnus-uu-unmark-thread}).
4990 @kindex T T (Summary)
4991 @findex gnus-summary-toggle-threads
4992 Toggle threading (@code{gnus-summary-toggle-threads}).
4995 @kindex T s (Summary)
4996 @findex gnus-summary-show-thread
4997 Expose the (sub-)thread hidden under the current article, if any
4998 (@code{gnus-summary-show-thread}).
5001 @kindex T h (Summary)
5002 @findex gnus-summary-hide-thread
5003 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
5006 @kindex T S (Summary)
5007 @findex gnus-summary-show-all-threads
5008 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
5011 @kindex T H (Summary)
5012 @findex gnus-summary-hide-all-threads
5013 Hide all threads (@code{gnus-summary-hide-all-threads}).
5016 @kindex T t (Summary)
5017 @findex gnus-summary-rethread-current
5018 Re-thread the current article's thread
5019 (@code{gnus-summary-rethread-current}). This works even when the
5020 summary buffer is otherwise unthreaded.
5023 @kindex T ^ (Summary)
5024 @findex gnus-summary-reparent-thread
5025 Make the current article the child of the marked (or previous) article
5026 (@code{gnus-summary-reparent-thread}).
5030 The following commands are thread movement commands. They all
5031 understand the numeric prefix.
5036 @kindex T n (Summary)
5037 @findex gnus-summary-next-thread
5038 Go to the next thread (@code{gnus-summary-next-thread}).
5041 @kindex T p (Summary)
5042 @findex gnus-summary-prev-thread
5043 Go to the previous thread (@code{gnus-summary-prev-thread}).
5046 @kindex T d (Summary)
5047 @findex gnus-summary-down-thread
5048 Descend the thread (@code{gnus-summary-down-thread}).
5051 @kindex T u (Summary)
5052 @findex gnus-summary-up-thread
5053 Ascend the thread (@code{gnus-summary-up-thread}).
5056 @kindex T o (Summary)
5057 @findex gnus-summary-top-thread
5058 Go to the top of the thread (@code{gnus-summary-top-thread}).
5061 @vindex gnus-thread-operation-ignore-subject
5062 If you ignore subject while threading, you'll naturally end up with
5063 threads that have several different subjects in them. If you then issue
5064 a command like `T k' (@code{gnus-summary-kill-thread}) you might not
5065 wish to kill the entire thread, but just those parts of the thread that
5066 have the same subject as the current article. If you like this idea,
5067 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
5068 is non-@code{nil} (which it is by default), subjects will be ignored
5069 when doing thread commands. If this variable is @code{nil}, articles in
5070 the same thread with different subjects will not be included in the
5071 operation in question. If this variable is @code{fuzzy}, only articles
5072 that have subjects fuzzily equal will be included (@pxref{Fuzzy
5079 @findex gnus-thread-sort-by-total-score
5080 @findex gnus-thread-sort-by-date
5081 @findex gnus-thread-sort-by-score
5082 @findex gnus-thread-sort-by-subject
5083 @findex gnus-thread-sort-by-author
5084 @findex gnus-thread-sort-by-number
5085 @vindex gnus-thread-sort-functions
5086 If you are using a threaded summary display, you can sort the threads by
5087 setting @code{gnus-thread-sort-functions}, which is a list of functions.
5088 By default, sorting is done on article numbers. Ready-made sorting
5089 predicate functions include @code{gnus-thread-sort-by-number},
5090 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject},
5091 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and
5092 @code{gnus-thread-sort-by-total-score}.
5094 Each function takes two threads and returns non-@code{nil} if the first
5095 thread should be sorted before the other. Note that sorting really is
5096 normally done by looking only at the roots of each thread. If you use
5097 more than one function, the primary sort key should be the last function
5098 in the list. You should probably always include
5099 @code{gnus-thread-sort-by-number} in the list of sorting
5100 functions---preferably first. This will ensure that threads that are
5101 equal with respect to the other sort criteria will be displayed in
5102 ascending article order.
5104 If you would like to sort by score, then by subject, and finally by
5105 number, you could do something like:
5108 (setq gnus-thread-sort-functions
5109 '(gnus-thread-sort-by-number
5110 gnus-thread-sort-by-subject
5111 gnus-thread-sort-by-total-score))
5114 The threads that have highest score will be displayed first in the
5115 summary buffer. When threads have the same score, they will be sorted
5116 alphabetically. The threads that have the same score and the same
5117 subject will be sorted by number, which is (normally) the sequence in
5118 which the articles arrived.
5120 If you want to sort by score and then reverse arrival order, you could
5124 (setq gnus-thread-sort-functions
5126 (not (gnus-thread-sort-by-number t1 t2)))
5127 gnus-thread-sort-by-score))
5130 @vindex gnus-thread-score-function
5131 The function in the @code{gnus-thread-score-function} variable (default
5132 @code{+}) is used for calculating the total score of a thread. Useful
5133 functions might be @code{max}, @code{min}, or squared means, or whatever
5136 @findex gnus-article-sort-functions
5137 @findex gnus-article-sort-by-date
5138 @findex gnus-article-sort-by-score
5139 @findex gnus-article-sort-by-subject
5140 @findex gnus-article-sort-by-author
5141 @findex gnus-article-sort-by-number
5142 If you are using an unthreaded display for some strange reason or other,
5143 you have to fiddle with the @code{gnus-article-sort-functions} variable.
5144 It is very similar to the @code{gnus-thread-sort-functions}, except that
5145 it uses slightly different functions for article comparison. Available
5146 sorting predicate functions are @code{gnus-article-sort-by-number},
5147 @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject},
5148 @code{gnus-article-sort-by-date}, and @code{gnus-article-sort-by-score}.
5150 If you want to sort an unthreaded summary display by subject, you could
5154 (setq gnus-article-sort-functions
5155 '(gnus-article-sort-by-number
5156 gnus-article-sort-by-subject))
5161 @node Asynchronous Fetching
5162 @section Asynchronous Article Fetching
5163 @cindex asynchronous article fetching
5164 @cindex article pre-fetch
5167 If you read your news from an @sc{nntp} server that's far away, the
5168 network latencies may make reading articles a chore. You have to wait
5169 for a while after pressing @kbd{n} to go to the next article before the
5170 article appears. Why can't Gnus just go ahead and fetch the article
5171 while you are reading the previous one? Why not, indeed.
5173 First, some caveats. There are some pitfalls to using asynchronous
5174 article fetching, especially the way Gnus does it.
5176 Let's say you are reading article 1, which is short, and article 2 is
5177 quite long, and you are not interested in reading that. Gnus does not
5178 know this, so it goes ahead and fetches article 2. You decide to read
5179 article 3, but since Gnus is in the process of fetching article 2, the
5180 connection is blocked.
5182 To avoid these situations, Gnus will open two (count 'em two)
5183 connections to the server. Some people may think this isn't a very nice
5184 thing to do, but I don't see any real alternatives. Setting up that
5185 extra connection takes some time, so Gnus startup will be slower.
5187 Gnus will fetch more articles than you will read. This will mean that
5188 the link between your machine and the @sc{nntp} server will become more
5189 loaded than if you didn't use article pre-fetch. The server itself will
5190 also become more loaded---both with the extra article requests, and the
5193 Ok, so now you know that you shouldn't really use this thing... unless
5196 @vindex gnus-asynchronous
5197 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
5198 happen automatically.
5200 @vindex gnus-use-article-prefetch
5201 You can control how many articles are to be pre-fetched by setting
5202 @code{gnus-use-article-prefetch}. This is 30 by default, which means
5203 that when you read an article in the group, the backend will pre-fetch
5204 the next 30 articles. If this variable is @code{t}, the backend will
5205 pre-fetch all the articles it can without bound. If it is
5206 @code{nil}, no pre-fetching will be done.
5208 @vindex gnus-async-prefetch-article-p
5209 @findex gnus-async-read-p
5210 There are probably some articles that you don't want to pre-fetch---read
5211 articles, for instance. The @code{gnus-async-prefetch-article-p} variable controls whether an article is to be pre-fetched. This function should
5212 return non-@code{nil} when the article in question is to be
5213 pre-fetched. The default is @code{gnus-async-read-p}, which returns
5214 @code{nil} on read articles. The function is called with an article
5215 data structure as the only parameter.
5217 If, for instance, you wish to pre-fetch only unread articles shorter than 100 lines, you could say something like:
5220 (defun my-async-short-unread-p (data)
5221 "Return non-nil for short, unread articles."
5222 (and (gnus-data-unread-p data)
5223 (< (mail-header-lines (gnus-data-header data))
5226 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
5229 These functions will be called many, many times, so they should
5230 preferably be short and sweet to avoid slowing down Gnus too much.
5231 It's probably a good idea to byte-compile things like this.
5233 @vindex gnus-prefetched-article-deletion-strategy
5234 Articles have to be removed from the asynch buffer sooner or later. The
5235 @code{gnus-prefetched-article-deletion-strategy} says when to remove
5236 articles. This is a list that may contain the following elements:
5240 Remove articles when they are read.
5243 Remove articles when exiting the group.
5246 The default value is @code{(read exit)}.
5248 @c @vindex gnus-use-header-prefetch
5249 @c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
5250 @c from the next group.
5253 @node Article Caching
5254 @section Article Caching
5255 @cindex article caching
5258 If you have an @emph{extremely} slow @sc{nntp} connection, you may
5259 consider turning article caching on. Each article will then be stored
5260 locally under your home directory. As you may surmise, this could
5261 potentially use @emph{huge} amounts of disk space, as well as eat up all
5262 your inodes so fast it will make your head swim. In vodka.
5264 Used carefully, though, it could be just an easier way to save articles.
5266 @vindex gnus-use-long-file-name
5267 @vindex gnus-cache-directory
5268 @vindex gnus-use-cache
5269 To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
5270 all articles ticked or marked as dormant will then be copied
5271 over to your local cache (@code{gnus-cache-directory}). Whether this
5272 cache is flat or hierarchal is controlled by the
5273 @code{gnus-use-long-file-name} variable, as usual.
5275 When re-selecting a ticked or dormant article, it will be fetched from the
5276 cache instead of from the server. As articles in your cache will never
5277 expire, this might serve as a method of saving articles while still
5278 keeping them where they belong. Just mark all articles you want to save
5279 as dormant, and don't worry.
5281 When an article is marked as read, is it removed from the cache.
5283 @vindex gnus-cache-remove-articles
5284 @vindex gnus-cache-enter-articles
5285 The entering/removal of articles from the cache is controlled by the
5286 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
5287 variables. Both are lists of symbols. The first is @code{(ticked
5288 dormant)} by default, meaning that ticked and dormant articles will be
5289 put in the cache. The latter is @code{(read)} by default, meaning that
5290 articles marked as read are removed from the cache. Possibly
5291 symbols in these two lists are @code{ticked}, @code{dormant},
5292 @code{unread} and @code{read}.
5294 @findex gnus-jog-cache
5295 So where does the massive article-fetching and storing come into the
5296 picture? The @code{gnus-jog-cache} command will go through all
5297 subscribed newsgroups, request all unread articles, score them, and
5298 store them in the cache. You should only ever, ever ever ever, use this
5299 command if 1) your connection to the @sc{nntp} server is really, really,
5300 really slow and 2) you have a really, really, really huge disk.
5301 Seriously. One way to cut down on the number of articles downloaded is
5302 to score unwanted articles down and have them marked as read. They will
5303 not then be downloaded by this command.
5305 @vindex gnus-uncacheable-groups
5306 @vindex gnus-cacheable-groups
5307 It is likely that you do not want caching on all groups. For instance,
5308 if your @code{nnml} mail is located under your home directory, it makes no
5309 sense to cache it somewhere else under your home directory. Unless you
5310 feel that it's neat to use twice as much space.
5312 To limit the caching, you could set @code{gnus-cacheable-groups} to a
5313 regexp of groups to cache, @samp{^nntp} for instance, or set the
5314 @code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
5315 Both variables are @code{nil} by default. If a group matches both
5316 variables, the group is not cached.
5318 @findex gnus-cache-generate-nov-databases
5319 @findex gnus-cache-generate-active
5320 @vindex gnus-cache-active-file
5321 The cache stores information on what articles it contains in its active
5322 file (@code{gnus-cache-active-file}). If this file (or any other parts
5323 of the cache) becomes all messed up for some reason or other, Gnus
5324 offers two functions that will try to set things right. @kbd{M-x
5325 gnus-cache-generate-nov-databases} will (re)build all the @sc{nov}
5326 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
5330 @node Persistent Articles
5331 @section Persistent Articles
5332 @cindex persistent articles
5334 Closely related to article caching, we have @dfn{persistent articles}.
5335 In fact, it's just a different way of looking at caching, and much more
5336 useful in my opinion.
5338 Say you're reading a newsgroup, and you happen on to some valuable gem
5339 that you want to keep and treasure forever. You'd normally just save it
5340 (using one of the many saving commands) in some file. The problem with
5341 that is that it's just, well, yucky. Ideally you'd prefer just having
5342 the article remain in the group where you found it forever; untouched by
5343 the expiry going on at the news server.
5345 This is what a @dfn{persistent article} is---an article that just won't
5346 be deleted. It's implemented using the normal cache functions, but
5347 you use two explicit commands for managing persistent articles:
5353 @findex gnus-cache-enter-article
5354 Make the current article persistent (@code{gnus-cache-enter-article}).
5357 @kindex M-* (Summary)
5358 @findex gnus-cache-remove-article
5359 Remove the current article from the persistent articles
5360 (@code{gnus-cache-remove-article}). This will normally delete the
5364 Both these commands understand the process/prefix convention.
5366 To avoid having all ticked articles (and stuff) entered into the cache,
5367 you should set @code{gnus-use-cache} to @code{passive} if you're just
5368 interested in persistent articles:
5371 (setq gnus-use-cache 'passive)
5375 @node Article Backlog
5376 @section Article Backlog
5378 @cindex article backlog
5380 If you have a slow connection, but the idea of using caching seems
5381 unappealing to you (and it is, really), you can help the situation some
5382 by switching on the @dfn{backlog}. This is where Gnus will buffer
5383 already read articles so that it doesn't have to re-fetch articles
5384 you've already read. This only helps if you are in the habit of
5385 re-selecting articles you've recently read, of course. If you never do
5386 that, turning the backlog on will slow Gnus down a little bit, and
5387 increase memory usage some.
5389 @vindex gnus-keep-backlog
5390 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
5391 at most @var{n} old articles in a buffer for later re-fetching. If this
5392 variable is non-@code{nil} and is not a number, Gnus will store
5393 @emph{all} read articles, which means that your Emacs will grow without
5394 bound before exploding and taking your machine down with you. I put
5395 that in there just to keep y'all on your toes.
5397 This variable is @code{nil} by default.
5400 @node Saving Articles
5401 @section Saving Articles
5402 @cindex saving articles
5404 Gnus can save articles in a number of ways. Below is the documentation
5405 for saving articles in a fairly straight-forward fashion (i.e., little
5406 processing of the article is done before it is saved). For a different
5407 approach (uudecoding, unsharing) you should use @code{gnus-uu}
5408 (@pxref{Decoding Articles}).
5410 @vindex gnus-save-all-headers
5411 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
5412 unwanted headers before saving the article.
5414 @vindex gnus-saved-headers
5415 If the preceding variable is @code{nil}, all headers that match the
5416 @code{gnus-saved-headers} regexp will be kept, while the rest will be
5417 deleted before saving.
5423 @kindex O o (Summary)
5425 @findex gnus-summary-save-article
5426 @c @icon{gnus-summary-save-article}
5427 Save the current article using the default article saver
5428 (@code{gnus-summary-save-article}).
5431 @kindex O m (Summary)
5432 @findex gnus-summary-save-article-mail
5433 Save the current article in mail format
5434 (@code{gnus-summary-save-article-mail}).
5437 @kindex O r (Summary)
5438 @findex gnus-summary-save-article-rmail
5439 Save the current article in rmail format
5440 (@code{gnus-summary-save-article-rmail}).
5443 @kindex O f (Summary)
5444 @findex gnus-summary-save-article-file
5445 @c @icon{gnus-summary-save-article-file}
5446 Save the current article in plain file format
5447 (@code{gnus-summary-save-article-file}).
5450 @kindex O F (Summary)
5451 @findex gnus-summary-write-article-file
5452 Write the current article in plain file format, overwriting any previous
5453 file contents (@code{gnus-summary-write-article-file}).
5456 @kindex O b (Summary)
5457 @findex gnus-summary-save-article-body-file
5458 Save the current article body in plain file format
5459 (@code{gnus-summary-save-article-body-file}).
5462 @kindex O h (Summary)
5463 @findex gnus-summary-save-article-folder
5464 Save the current article in mh folder format
5465 (@code{gnus-summary-save-article-folder}).
5468 @kindex O v (Summary)
5469 @findex gnus-summary-save-article-vm
5470 Save the current article in a VM folder
5471 (@code{gnus-summary-save-article-vm}).
5474 @kindex O p (Summary)
5475 @findex gnus-summary-pipe-output
5476 Save the current article in a pipe. Uhm, like, what I mean is---Pipe
5477 the current article to a process (@code{gnus-summary-pipe-output}).
5480 @vindex gnus-prompt-before-saving
5481 All these commands use the process/prefix convention
5482 (@pxref{Process/Prefix}). If you save bunches of articles using these
5483 functions, you might get tired of being prompted for files to save each
5484 and every article in. The prompting action is controlled by
5485 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
5486 default, giving you that excessive prompting action you know and
5487 loathe. If you set this variable to @code{t} instead, you'll be prompted
5488 just once for each series of articles you save. If you like to really
5489 have Gnus do all your thinking for you, you can even set this variable
5490 to @code{nil}, which means that you will never be prompted for files to
5491 save articles in. Gnus will simply save all the articles in the default
5495 @vindex gnus-default-article-saver
5496 You can customize the @code{gnus-default-article-saver} variable to make
5497 Gnus do what you want it to. You can use any of the four ready-made
5498 functions below, or you can create your own.
5502 @item gnus-summary-save-in-rmail
5503 @findex gnus-summary-save-in-rmail
5504 @vindex gnus-rmail-save-name
5505 @findex gnus-plain-save-name
5506 This is the default format, @dfn{babyl}. Uses the function in the
5507 @code{gnus-rmail-save-name} variable to get a file name to save the
5508 article in. The default is @code{gnus-plain-save-name}.
5510 @item gnus-summary-save-in-mail
5511 @findex gnus-summary-save-in-mail
5512 @vindex gnus-mail-save-name
5513 Save in a Unix mail (mbox) file. Uses the function in the
5514 @code{gnus-mail-save-name} variable to get a file name to save the
5515 article in. The default is @code{gnus-plain-save-name}.
5517 @item gnus-summary-save-in-file
5518 @findex gnus-summary-save-in-file
5519 @vindex gnus-file-save-name
5520 @findex gnus-numeric-save-name
5521 Append the article straight to an ordinary file. Uses the function in
5522 the @code{gnus-file-save-name} variable to get a file name to save the
5523 article in. The default is @code{gnus-numeric-save-name}.
5525 @item gnus-summary-save-body-in-file
5526 @findex gnus-summary-save-body-in-file
5527 Append the article body to an ordinary file. Uses the function in the
5528 @code{gnus-file-save-name} variable to get a file name to save the
5529 article in. The default is @code{gnus-numeric-save-name}.
5531 @item gnus-summary-save-in-folder
5532 @findex gnus-summary-save-in-folder
5533 @findex gnus-folder-save-name
5534 @findex gnus-Folder-save-name
5535 @vindex gnus-folder-save-name
5538 Save the article to an MH folder using @code{rcvstore} from the MH
5539 library. Uses the function in the @code{gnus-folder-save-name} variable
5540 to get a file name to save the article in. The default is
5541 @code{gnus-folder-save-name}, but you can also use
5542 @code{gnus-Folder-save-name}, which creates capitalized names.
5544 @item gnus-summary-save-in-vm
5545 @findex gnus-summary-save-in-vm
5546 Save the article in a VM folder. You have to have the VM mail
5547 reader to use this setting.
5550 @vindex gnus-article-save-directory
5551 All of these functions, except for the last one, will save the article
5552 in the @code{gnus-article-save-directory}, which is initialized from the
5553 @code{SAVEDIR} environment variable. This is @file{~/News/} by
5556 As you can see above, the functions use different functions to find a
5557 suitable name of a file to save the article in. Below is a list of
5558 available functions that generate names:
5562 @item gnus-Numeric-save-name
5563 @findex gnus-Numeric-save-name
5564 File names like @file{~/News/Alt.andrea-dworkin/45}.
5566 @item gnus-numeric-save-name
5567 @findex gnus-numeric-save-name
5568 File names like @file{~/News/alt.andrea-dworkin/45}.
5570 @item gnus-Plain-save-name
5571 @findex gnus-Plain-save-name
5572 File names like @file{~/News/Alt.andrea-dworkin}.
5574 @item gnus-plain-save-name
5575 @findex gnus-plain-save-name
5576 File names like @file{~/News/alt.andrea-dworkin}.
5579 @vindex gnus-split-methods
5580 You can have Gnus suggest where to save articles by plonking a regexp into
5581 the @code{gnus-split-methods} alist. For instance, if you would like to
5582 save articles related to Gnus in the file @file{gnus-stuff}, and articles
5583 related to VM in @code{vm-stuff}, you could set this variable to something
5587 (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
5588 ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
5589 (my-choosing-function "../other-dir/my-stuff")
5590 ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
5593 We see that this is a list where each element is a list that has two
5594 elements---the @dfn{match} and the @dfn{file}. The match can either be
5595 a string (in which case it is used as a regexp to match on the article
5596 head); it can be a symbol (which will be called as a function with the
5597 group name as a parameter); or it can be a list (which will be
5598 @code{eval}ed). If any of these actions have a non-@code{nil} result,
5599 the @dfn{file} will be used as a default prompt. In addition, the
5600 result of the operation itself will be used if the function or form
5601 called returns a string or a list of strings.
5603 You basically end up with a list of file names that might be used when
5604 saving the current article. (All ``matches'' will be used.) You will
5605 then be prompted for what you really want to use as a name, with file
5606 name completion over the results from applying this variable.
5608 This variable is @code{((gnus-article-archive-name))} by default, which
5609 means that Gnus will look at the articles it saves for an
5610 @code{Archive-name} line and use that as a suggestion for the file
5613 Here's an example function to clean up file names somewhat. If you have
5614 lots of mail groups called things like
5615 @samp{nnml:mail.whatever}, you may want to chop off the beginning of
5616 these group names before creating the file name to save to. The
5617 following will do just that:
5620 (defun my-save-name (group)
5621 (when (string-match "^nnml:mail." group)
5622 (substring group (match-end 0))))
5624 (setq gnus-split-methods
5625 '((gnus-article-archive-name)
5630 @vindex gnus-use-long-file-name
5631 Finally, you have the @code{gnus-use-long-file-name} variable. If it is
5632 @code{nil}, all the preceding functions will replace all periods
5633 (@samp{.}) in the group names with slashes (@samp{/})---which means that
5634 the functions will generate hierarchies of directories instead of having
5635 all the files in the top level directory
5636 (@file{~/News/alt/andrea-dworkin} instead of
5637 @file{~/News/alt.andrea-dworkin}.) This variable is @code{t} by default
5638 on most systems. However, for historical reasons, this is @code{nil} on
5639 Xenix and usg-unix-v machines by default.
5641 This function also affects kill and score file names. If this variable
5642 is a list, and the list contains the element @code{not-score}, long file
5643 names will not be used for score files, if it contains the element
5644 @code{not-save}, long file names will not be used for saving, and if it
5645 contains the element @code{not-kill}, long file names will not be used
5648 If you'd like to save articles in a hierarchy that looks something like
5652 (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy
5653 (setq gnus-default-article-saver 'gnus-summary-save-in-file) ; no encoding
5656 Then just save with @kbd{o}. You'd then read this hierarchy with
5657 ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
5658 the top level directory as the argument (@file{~/News/}). Then just walk
5659 around to the groups/directories with @code{nneething}.
5662 @node Decoding Articles
5663 @section Decoding Articles
5664 @cindex decoding articles
5666 Sometime users post articles (or series of articles) that have been
5667 encoded in some way or other. Gnus can decode them for you.
5670 * Uuencoded Articles:: Uudecode articles.
5671 * Shell Archives:: Unshar articles.
5672 * PostScript Files:: Split PostScript.
5673 * Other Files:: Plain save and binhex.
5674 * Decoding Variables:: Variables for a happy decoding.
5675 * Viewing Files:: You want to look at the result of the decoding?
5679 @cindex article series
5680 All these functions use the process/prefix convention
5681 (@pxref{Process/Prefix}) for finding out what articles to work on, with
5682 the extension that a ``single article'' means ``a single series''. Gnus
5683 can find out by itself what articles belong to a series, decode all the
5684 articles and unpack/view/save the resulting file(s).
5686 Gnus guesses what articles are in the series according to the following
5687 simplish rule: The subjects must be (nearly) identical, except for the
5688 last two numbers of the line. (Spaces are largely ignored, however.)
5690 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
5691 will find all the articles that match the regexp @samp{^cat.gif
5692 ([0-9]+/[0-9]+).*$}.
5694 Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a
5695 series}, will not be properly recognized by any of the automatic viewing
5696 commands, and you have to mark the articles manually with @kbd{#}.
5699 @node Uuencoded Articles
5700 @subsection Uuencoded Articles
5702 @cindex uuencoded articles
5707 @kindex X u (Summary)
5708 @findex gnus-uu-decode-uu
5709 @c @icon{gnus-uu-decode-uu}
5710 Uudecodes the current series (@code{gnus-uu-decode-uu}).
5713 @kindex X U (Summary)
5714 @findex gnus-uu-decode-uu-and-save
5715 Uudecodes and saves the current series
5716 (@code{gnus-uu-decode-uu-and-save}).
5719 @kindex X v u (Summary)
5720 @findex gnus-uu-decode-uu-view
5721 Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
5724 @kindex X v U (Summary)
5725 @findex gnus-uu-decode-uu-and-save-view
5726 Uudecodes, views and saves the current series
5727 (@code{gnus-uu-decode-uu-and-save-view}).
5731 Remember that these all react to the presence of articles marked with
5732 the process mark. If, for instance, you'd like to decode and save an
5733 entire newsgroup, you'd typically do @kbd{M P a}
5734 (@code{gnus-uu-mark-all}) and then @kbd{X U}
5735 (@code{gnus-uu-decode-uu-and-save}).
5737 All this is very much different from how @code{gnus-uu} worked with
5738 @sc{gnus 4.1}, where you had explicit keystrokes for everything under
5739 the sun. This version of @code{gnus-uu} generally assumes that you mark
5740 articles in some way (@pxref{Setting Process Marks}) and then press
5743 @vindex gnus-uu-notify-files
5744 Note: When trying to decode articles that have names matching
5745 @code{gnus-uu-notify-files}, which is hard-coded to
5746 @samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
5747 automatically post an article on @samp{comp.unix.wizards} saying that
5748 you have just viewed the file in question. This feature can't be turned
5752 @node Shell Archives
5753 @subsection Shell Archives
5755 @cindex shell archives
5756 @cindex shared articles
5758 Shell archives (``shar files'') used to be a popular way to distribute
5759 sources, but it isn't used all that much today. In any case, we have
5760 some commands to deal with these:
5765 @kindex X s (Summary)
5766 @findex gnus-uu-decode-unshar
5767 Unshars the current series (@code{gnus-uu-decode-unshar}).
5770 @kindex X S (Summary)
5771 @findex gnus-uu-decode-unshar-and-save
5772 Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
5775 @kindex X v s (Summary)
5776 @findex gnus-uu-decode-unshar-view
5777 Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
5780 @kindex X v S (Summary)
5781 @findex gnus-uu-decode-unshar-and-save-view
5782 Unshars, views and saves the current series
5783 (@code{gnus-uu-decode-unshar-and-save-view}).
5787 @node PostScript Files
5788 @subsection PostScript Files
5794 @kindex X p (Summary)
5795 @findex gnus-uu-decode-postscript
5796 Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
5799 @kindex X P (Summary)
5800 @findex gnus-uu-decode-postscript-and-save
5801 Unpack and save the current PostScript series
5802 (@code{gnus-uu-decode-postscript-and-save}).
5805 @kindex X v p (Summary)
5806 @findex gnus-uu-decode-postscript-view
5807 View the current PostScript series
5808 (@code{gnus-uu-decode-postscript-view}).
5811 @kindex X v P (Summary)
5812 @findex gnus-uu-decode-postscript-and-save-view
5813 View and save the current PostScript series
5814 (@code{gnus-uu-decode-postscript-and-save-view}).
5819 @subsection Other Files
5823 @kindex X o (Summary)
5824 @findex gnus-uu-decode-save
5825 Save the current series
5826 (@code{gnus-uu-decode-save}).
5829 @kindex X b (Summary)
5830 @findex gnus-uu-decode-binhex
5831 Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
5832 doesn't really work yet.
5836 @node Decoding Variables
5837 @subsection Decoding Variables
5839 Adjective, not verb.
5842 * Rule Variables:: Variables that say how a file is to be viewed.
5843 * Other Decode Variables:: Other decode variables.
5844 * Uuencoding and Posting:: Variables for customizing uuencoding.
5848 @node Rule Variables
5849 @subsubsection Rule Variables
5850 @cindex rule variables
5852 Gnus uses @dfn{rule variables} to decide how to view a file. All these
5853 variables are of the form
5856 (list '(regexp1 command2)
5863 @item gnus-uu-user-view-rules
5864 @vindex gnus-uu-user-view-rules
5866 This variable is consulted first when viewing files. If you wish to use,
5867 for instance, @code{sox} to convert an @samp{.au} sound file, you could
5870 (setq gnus-uu-user-view-rules
5871 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
5874 @item gnus-uu-user-view-rules-end
5875 @vindex gnus-uu-user-view-rules-end
5876 This variable is consulted if Gnus couldn't make any matches from the
5877 user and default view rules.
5879 @item gnus-uu-user-archive-rules
5880 @vindex gnus-uu-user-archive-rules
5881 This variable can be used to say what commands should be used to unpack
5886 @node Other Decode Variables
5887 @subsubsection Other Decode Variables
5890 @vindex gnus-uu-grabbed-file-functions
5892 @item gnus-uu-grabbed-file-functions
5893 All functions in this list will be called right after each file has been
5894 successfully decoded---so that you can move or view files right away,
5895 and don't have to wait for all files to be decoded before you can do
5896 anything. Ready-made functions you can put in this list are:
5900 @item gnus-uu-grab-view
5901 @findex gnus-uu-grab-view
5904 @item gnus-uu-grab-move
5905 @findex gnus-uu-grab-move
5906 Move the file (if you're using a saving function.)
5909 @item gnus-uu-be-dangerous
5910 @vindex gnus-uu-be-dangerous
5911 Specifies what to do if unusual situations arise during decoding. If
5912 @code{nil}, be as conservative as possible. If @code{t}, ignore things
5913 that didn't work, and overwrite existing files. Otherwise, ask each
5916 @item gnus-uu-ignore-files-by-name
5917 @vindex gnus-uu-ignore-files-by-name
5918 Files with name matching this regular expression won't be viewed.
5920 @item gnus-uu-ignore-files-by-type
5921 @vindex gnus-uu-ignore-files-by-type
5922 Files with a @sc{mime} type matching this variable won't be viewed.
5923 Note that Gnus tries to guess what type the file is based on the name.
5924 @code{gnus-uu} is not a @sc{mime} package (yet), so this is slightly
5927 @item gnus-uu-tmp-dir
5928 @vindex gnus-uu-tmp-dir
5929 Where @code{gnus-uu} does its work.
5931 @item gnus-uu-do-not-unpack-archives
5932 @vindex gnus-uu-do-not-unpack-archives
5933 Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
5934 looking for files to display.
5936 @item gnus-uu-view-and-save
5937 @vindex gnus-uu-view-and-save
5938 Non-@code{nil} means that the user will always be asked to save a file
5941 @item gnus-uu-ignore-default-view-rules
5942 @vindex gnus-uu-ignore-default-view-rules
5943 Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
5946 @item gnus-uu-ignore-default-archive-rules
5947 @vindex gnus-uu-ignore-default-archive-rules
5948 Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
5951 @item gnus-uu-kill-carriage-return
5952 @vindex gnus-uu-kill-carriage-return
5953 Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
5956 @item gnus-uu-unmark-articles-not-decoded
5957 @vindex gnus-uu-unmark-articles-not-decoded
5958 Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully
5959 decoded articles as unread.
5961 @item gnus-uu-correct-stripped-uucode
5962 @vindex gnus-uu-correct-stripped-uucode
5963 Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
5964 uuencoded files that have had trailing spaces deleted.
5966 @item gnus-uu-pre-uudecode-hook
5967 @vindex gnus-uu-pre-uudecode-hook
5968 Hook run before sending a message to @code{uudecode}.
5970 @item gnus-uu-view-with-metamail
5971 @vindex gnus-uu-view-with-metamail
5973 Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
5974 commands defined by the rule variables and just fudge a @sc{mime}
5975 content type based on the file name. The result will be fed to
5976 @code{metamail} for viewing.
5978 @item gnus-uu-save-in-digest
5979 @vindex gnus-uu-save-in-digest
5980 Non-@code{nil} means that @code{gnus-uu}, when asked to save without
5981 decoding, will save in digests. If this variable is @code{nil},
5982 @code{gnus-uu} will just save everything in a file without any
5983 embellishments. The digesting almost conforms to RFC1153---no easy way
5984 to specify any meaningful volume and issue numbers were found, so I
5985 simply dropped them.
5990 @node Uuencoding and Posting
5991 @subsubsection Uuencoding and Posting
5995 @item gnus-uu-post-include-before-composing
5996 @vindex gnus-uu-post-include-before-composing
5997 Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
5998 before you compose the article. If this variable is @code{t}, you can
5999 either include an encoded file with @kbd{C-c C-i} or have one included
6000 for you when you post the article.
6002 @item gnus-uu-post-length
6003 @vindex gnus-uu-post-length
6004 Maximum length of an article. The encoded file will be split into how
6005 many articles it takes to post the entire file.
6007 @item gnus-uu-post-threaded
6008 @vindex gnus-uu-post-threaded
6009 Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
6010 thread. This may not be smart, as no other decoder I have seen is able
6011 to follow threads when collecting uuencoded articles. (Well, I have
6012 seen one package that does that---@code{gnus-uu}, but somehow, I don't
6013 think that counts...) Default is @code{nil}.
6015 @item gnus-uu-post-separate-description
6016 @vindex gnus-uu-post-separate-description
6017 Non-@code{nil} means that the description will be posted in a separate
6018 article. The first article will typically be numbered (0/x). If this
6019 variable is @code{nil}, the description the user enters will be included
6020 at the beginning of the first article, which will be numbered (1/x).
6021 Default is @code{t}.
6027 @subsection Viewing Files
6028 @cindex viewing files
6029 @cindex pseudo-articles
6031 After decoding, if the file is some sort of archive, Gnus will attempt
6032 to unpack the archive and see if any of the files in the archive can be
6033 viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz}
6034 containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
6035 uncompress and de-tar the main file, and then view the two pictures.
6036 This unpacking process is recursive, so if the archive contains archives
6037 of archives, it'll all be unpacked.
6039 Finally, Gnus will normally insert a @dfn{pseudo-article} for each
6040 extracted file into the summary buffer. If you go to these
6041 ``articles'', you will be prompted for a command to run (usually Gnus
6042 will make a suggestion), and then the command will be run.
6044 @vindex gnus-view-pseudo-asynchronously
6045 If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
6046 until the viewing is done before proceeding.
6048 @vindex gnus-view-pseudos
6049 If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
6050 the pseudo-articles into the summary buffer, but view them
6051 immediately. If this variable is @code{not-confirm}, the user won't even
6052 be asked for a confirmation before viewing is done.
6054 @vindex gnus-view-pseudos-separately
6055 If @code{gnus-view-pseudos-separately} is non-@code{nil}, one
6056 pseudo-article will be created for each file to be viewed. If
6057 @code{nil}, all files that use the same viewing command will be given as
6058 a list of parameters to that command.
6060 @vindex gnus-insert-pseudo-articles
6061 If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert
6062 pseudo-articles when decoding. It is @code{t} by default.
6064 So; there you are, reading your @emph{pseudo-articles} in your
6065 @emph{virtual newsgroup} from the @emph{virtual server}; and you think:
6066 Why isn't anything real anymore? How did we get here?
6069 @node Article Treatment
6070 @section Article Treatment
6072 Reading through this huge manual, you may have quite forgotten that the
6073 object of newsreaders is to actually, like, read what people have
6074 written. Reading articles. Unfortunately, people are quite bad at
6075 writing, so there are tons of functions and variables to make reading
6076 these articles easier.
6079 * Article Highlighting:: You want to make the article look like fruit salad.
6080 * Article Fontisizing:: Making emphasized text look nice.
6081 * Article Hiding:: You also want to make certain info go away.
6082 * Article Washing:: Lots of way-neat functions to make life better.
6083 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
6084 * Article Date:: Grumble, UT!
6085 * Article Signature:: What is a signature?
6089 @node Article Highlighting
6090 @subsection Article Highlighting
6091 @cindex highlighting
6093 Not only do you want your article buffer to look like fruit salad, but
6094 you want it to look like technicolor fruit salad.
6099 @kindex W H a (Summary)
6100 @findex gnus-article-highlight
6101 @findex gnus-article-maybe-highlight
6102 Do much highlighting of the current article
6103 (@code{gnus-article-highlight}). This function highlights header, cited
6104 text, the signature, and adds buttons to the body and the head.
6106 Most users would prefer using @code{gnus-article-maybe-highlight} in
6107 @code{gnus-article-display-hook} (@pxref{Customizing Articles}) instead.
6108 This is a bit less agressive---it highlights only the headers, the
6109 signature and adds buttons.
6112 @kindex W H h (Summary)
6113 @findex gnus-article-highlight-headers
6114 @vindex gnus-header-face-alist
6115 Highlight the headers (@code{gnus-article-highlight-headers}). The
6116 highlighting will be done according to the @code{gnus-header-face-alist}
6117 variable, which is a list where each element has the form @var{(regexp
6118 name content)}. @var{regexp} is a regular expression for matching the
6119 header, @var{name} is the face used for highlighting the header name
6120 (@pxref{Faces and Fonts}) and @var{content} is the face for highlighting
6121 the header value. The first match made will be used. Note that
6122 @var{regexp} shouldn't have @samp{^} prepended---Gnus will add one.
6125 @kindex W H c (Summary)
6126 @findex gnus-article-highlight-citation
6127 Highlight cited text (@code{gnus-article-highlight-citation}).
6129 Some variables to customize the citation highlights:
6132 @vindex gnus-cite-parse-max-size
6134 @item gnus-cite-parse-max-size
6135 If the article size if bigger than this variable (which is 25000 by
6136 default), no citation highlighting will be performed.
6138 @item gnus-cite-prefix-regexp
6139 @vindex gnus-cite-prefix-regexp
6140 Regexp matching the longest possible citation prefix on a line.
6142 @item gnus-cite-max-prefix
6143 @vindex gnus-cite-max-prefix
6144 Maximum possible length for a citation prefix (default 20).
6146 @item gnus-cite-face-list
6147 @vindex gnus-cite-face-list
6148 List of faces used for highlighting citations (@pxref{Faces and Fonts}).
6149 When there are citations from multiple articles in the same message,
6150 Gnus will try to give each citation from each article its own face.
6151 This should make it easier to see who wrote what.
6153 @item gnus-supercite-regexp
6154 @vindex gnus-supercite-regexp
6155 Regexp matching normal Supercite attribution lines.
6157 @item gnus-supercite-secondary-regexp
6158 @vindex gnus-supercite-secondary-regexp
6159 Regexp matching mangled Supercite attribution lines.
6161 @item gnus-cite-minimum-match-count
6162 @vindex gnus-cite-minimum-match-count
6163 Minimum number of identical prefixes we have to see before we believe
6164 that it's a citation.
6166 @item gnus-cite-attribution-prefix
6167 @vindex gnus-cite-attribution-prefix
6168 Regexp matching the beginning of an attribution line.
6170 @item gnus-cite-attribution-suffix
6171 @vindex gnus-cite-attribution-suffix
6172 Regexp matching the end of an attribution line.
6174 @item gnus-cite-attribution-face
6175 @vindex gnus-cite-attribution-face
6176 Face used for attribution lines. It is merged with the face for the
6177 cited text belonging to the attribution.
6183 @kindex W H s (Summary)
6184 @vindex gnus-signature-separator
6185 @vindex gnus-signature-face
6186 @findex gnus-article-highlight-signature
6187 Highlight the signature (@code{gnus-article-highlight-signature}).
6188 Everything after @code{gnus-signature-separator} (@pxref{Article
6189 Signature}) in an article will be considered a signature and will be
6190 highlighted with @code{gnus-signature-face}, which is @code{italic} by
6195 @xref{Customizing Articles} for how to highlight articles automatically.
6198 @node Article Fontisizing
6199 @subsection Article Fontisizing
6201 @cindex article emphasis
6203 @findex gnus-article-emphasize
6204 @kindex W e (Summary)
6205 People commonly add emphasis to words in news articles by writing things
6206 like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by
6207 running the article through the @kbd{W e}
6208 (@code{gnus-article-emphasize}) command.
6210 @vindex gnus-emphasis-alist
6211 How the emphasis is computed is controlled by the
6212 @code{gnus-emphasis-alist} variable. This is an alist where the first
6213 element is a regular expression to be matched. The second is a number
6214 that says what regular expression grouping is used to find the entire
6215 emphasized word. The third is a number that says what regexp grouping
6216 should be displayed and highlighted. (The text between these two
6217 groupings will be hidden.) The fourth is the face used for
6221 (setq gnus-article-emphasis
6222 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
6223 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
6226 @vindex gnus-emphasis-underline
6227 @vindex gnus-emphasis-bold
6228 @vindex gnus-emphasis-italic
6229 @vindex gnus-emphasis-underline-bold
6230 @vindex gnus-emphasis-underline-italic
6231 @vindex gnus-emphasis-bold-italic
6232 @vindex gnus-emphasis-underline-bold-italic
6233 By default, there are seven rules, and they use the following faces:
6234 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
6235 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
6236 @code{gnus-emphasis-underline-italic},
6237 @code{gnus-emphasis-underline-bold}, and
6238 @code{gnus-emphasis-underline-bold-italic}.
6240 If you want to change these faces, you can either use @kbd{M-x
6241 customize}, or you can use @code{copy-face}. For instance, if you want
6242 to make @code{gnus-emphasis-italic} use a red face instead, you could
6246 (copy-face 'red 'gnus-emphasis-italic)
6249 @xref{Customizing Articles} for how to fontize articles automatically.
6252 @node Article Hiding
6253 @subsection Article Hiding
6254 @cindex article hiding
6256 Or rather, hiding certain things in each article. There usually is much
6257 too much cruft in most articles.
6262 @kindex W W a (Summary)
6263 @findex gnus-article-hide
6264 Do quite a lot of hiding on the article buffer
6265 (@kbd{gnus-article-hide}). In particular, this function will hide
6266 headers, PGP, cited text and the signature.
6269 @kindex W W h (Summary)
6270 @findex gnus-article-hide-headers
6271 Hide headers (@code{gnus-article-hide-headers}). @xref{Hiding
6275 @kindex W W b (Summary)
6276 @findex gnus-article-hide-boring-headers
6277 Hide headers that aren't particularly interesting
6278 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
6281 @kindex W W s (Summary)
6282 @findex gnus-article-hide-signature
6283 Hide signature (@code{gnus-article-hide-signature}). @xref{Article
6287 @kindex W W p (Summary)
6288 @findex gnus-article-hide-pgp
6289 @vindex gnus-article-hide-pgp-hook
6290 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). The
6291 @code{gnus-article-hide-pgp-hook} hook will be run after a @sc{pgp}
6292 signature has been hidden.
6295 @kindex W W P (Summary)
6296 @findex gnus-article-hide-pem
6297 Hide @sc{pem} (privacy enhanced messages) cruft
6298 (@code{gnus-article-hide-pem}).
6301 @kindex W W c (Summary)
6302 @findex gnus-article-hide-citation
6303 Hide citation (@code{gnus-article-hide-citation}). Some variables for
6304 customizing the hiding:
6308 @item gnus-cited-opened-text-button-line-format
6309 @itemx gnus-cited-closed-text-button-line-format
6310 @vindex gnus-cited-closed-text-button-line-format
6311 @vindex gnus-cited-opened-text-button-line-format
6312 Gnus adds buttons to show where the cited text has been hidden, and to
6313 allow toggle hiding the text. The format of the variable is specified
6314 by these format-like variable (@pxref{Formatting Variables}). These
6319 Starting point of the hidden text.
6321 Ending point of the hidden text.
6323 Number of characters in the hidden region.
6325 Number of lines of hidden text.
6328 @item gnus-cited-lines-visible
6329 @vindex gnus-cited-lines-visible
6330 The number of lines at the beginning of the cited text to leave shown.
6335 @kindex W W C-c (Summary)
6336 @findex gnus-article-hide-citation-maybe
6338 Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the
6339 following two variables: