9 @documentencoding ISO-8859-1
12 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
13 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
16 Permission is granted to copy, distribute and/or modify this document
17 under the terms of the GNU Free Documentation License, Version 1.2 or
18 any later version published by the Free Software Foundation; with no
19 Invariant Sections, with the Front-Cover texts being ``A GNU
20 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
21 license is included in the section entitled ``GNU Free Documentation
22 License'' in the Emacs manual.
24 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
25 this GNU Manual, like GNU software. Copies published by the Free
26 Software Foundation raise funds for GNU development.''
28 This document is part of a collection distributed under the GNU Free
29 Documentation License. If you want to distribute this document
30 separately from the collection, you can do so by adding a copy of the
31 license to the document, as described in section 6 of the license.
37 \documentclass[twoside,a4paper,openright,11pt]{book}
38 \usepackage[latin1]{inputenc}
39 \usepackage{pagestyle}
42 \input{gnusconfig.tex}
44 \ifx\pdfoutput\undefined
46 \usepackage[pdftex,bookmarks,colorlinks=true]{hyperref}
54 % Adjust ../Makefile.in if you change the following line:
55 \newcommand{\gnusversionname}{No Gnus v0.6}
56 \newcommand{\gnuschaptername}{}
57 \newcommand{\gnussectionname}{}
59 \newcommand{\gnusbackslash}{/}
61 \newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}}
62 \ifx\pdfoutput\undefined
63 \newcommand{\gnusuref}[1]{\gnustt{#1}}
65 \newcommand{\gnusuref}[1]{\href{#1}{\gnustt{#1}}}
67 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
68 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
70 \newcommand{\gnuskindex}[1]{\index{#1}}
71 \newcommand{\gnusindex}[1]{\index{#1}}
73 \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}}
74 \newcommand{\gnuscode}[1]{\gnustt{#1}}
75 \newcommand{\gnusasis}[1]{\gnustt{#1}}
76 \newcommand{\gnusurl}[1]{\gnustt{#1}}
77 \newcommand{\gnuscommand}[1]{\gnustt{#1}}
78 \newcommand{\gnusenv}[1]{\gnustt{#1}}
79 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''}
80 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
81 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
82 \newcommand{\gnuskey}[1]{`\gnustt{#1}'}
83 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
84 \newcommand{\gnusdfn}[1]{\textit{#1}}
85 \newcommand{\gnusi}[1]{\textit{#1}}
86 \newcommand{\gnusr}[1]{\textrm{#1}}
87 \newcommand{\gnusstrong}[1]{\textbf{#1}}
88 \newcommand{\gnusemph}[1]{\textit{#1}}
89 \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
90 \newcommand{\gnussc}[1]{\textsc{#1}}
91 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
92 \newcommand{\gnusversion}[1]{{\small\textit{#1}}}
93 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
94 \newcommand{\gnusresult}[1]{\gnustt{=> #1}}
95 \newcommand{\gnusacronym}[1]{\textsc{#1}}
96 \newcommand{\gnusemail}[1]{\textit{#1}}
98 \newcommand{\gnusbullet}{{${\bullet}$}}
99 \newcommand{\gnusdollar}{\$}
100 \newcommand{\gnusampersand}{\&}
101 \newcommand{\gnuspercent}{\%}
102 \newcommand{\gnushash}{\#}
103 \newcommand{\gnushat}{\symbol{"5E}}
104 \newcommand{\gnusunderline}{\symbol{"5F}}
105 \newcommand{\gnusnot}{$\neg$}
106 \newcommand{\gnustilde}{\symbol{"7E}}
107 \newcommand{\gnusless}{{$<$}}
108 \newcommand{\gnusgreater}{{$>$}}
109 \newcommand{\gnusbraceleft}{{$>$}}
110 \newcommand{\gnusbraceright}{{$>$}}
112 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head,height=1cm}}}
113 \newcommand{\gnusinteresting}{
114 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
117 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
119 \newcommand{\gnuspagechapter}[1]{
123 \newdimen{\gnusdimen}
126 \newcommand{\gnuschapter}[2]{
128 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
130 \renewcommand{\gnussectionname}{}
131 \renewcommand{\gnuschaptername}{#2}
132 \thispagestyle{empty}
134 \begin{picture}(500,500)(0,0)
135 \put(480,350){\makebox(0,0)[tr]{#1}}
136 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
141 \newcommand{\gnusfigure}[3]{
143 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
150 \newcommand{\gnusicon}[1]{
151 \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=ps/#1-up,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=ps/#1-up,height=1cm}}}
154 \newcommand{\gnuspicon}[1]{
155 \margindex{\epsfig{figure=#1,width=2cm}}
158 \newcommand{\gnusxface}[2]{
159 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
162 \newcommand{\gnussmiley}[2]{
163 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
166 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
168 \newcommand{\gnussection}[1]{
169 \renewcommand{\gnussectionname}{#1}
173 \newenvironment{codelist}%
178 \newenvironment{asislist}%
183 \newenvironment{kbdlist}%
189 \newenvironment{dfnlist}%
194 \newenvironment{stronglist}%
199 \newenvironment{samplist}%
204 \newenvironment{varlist}%
209 \newenvironment{emphlist}%
214 \newlength\gnusheadtextwidth
215 \setlength{\gnusheadtextwidth}{\headtextwidth}
216 \addtolength{\gnusheadtextwidth}{1cm}
218 \newpagestyle{gnuspreamble}%
223 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
227 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
236 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
238 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
243 \newpagestyle{gnusindex}%
248 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
252 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
260 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
262 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
272 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
276 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
284 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
286 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
291 \pagenumbering{roman}
292 \pagestyle{gnuspreamble}
303 %\addtolength{\oddsidemargin}{-5cm}
304 %\addtolength{\evensidemargin}{-5cm}
306 \addtolength{\textheight}{2cm}
308 \gnustitle{\gnustitlename}\hfill\gnusversion{\gnusversionname}\\
311 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo,height=15cm}
314 \gnusauthor{by Lars Magne Ingebrigtsen}
321 \thispagestyle{empty}
335 * Gnus: (gnus). The newsreader Gnus.
340 @setchapternewpage odd
347 @author by Lars Magne Ingebrigtsen
349 @vskip 0pt plus 1filll
355 @top The Gnus Newsreader
359 You can read news (and mail) from within Emacs by using Gnus. The news
360 can be gotten by any nefarious means you can think of---@acronym{NNTP}, local
361 spool or your mbox file. All at the same time, if you want to push your
364 @c Adjust ../Makefile.in if you change the following line:
365 This manual corresponds to No Gnus v0.6.
376 Gnus is the advanced, self-documenting, customizable, extensible
377 unreal-time newsreader for GNU Emacs.
379 Oops. That sounds oddly familiar, so let's start over again to avoid
380 being accused of plagiarism:
382 Gnus is a message-reading laboratory. It will let you look at just
383 about anything as if it were a newsgroup. You can read mail with it,
384 you can browse directories with it, you can @code{ftp} with it---you
385 can even read news with it!
387 Gnus tries to empower people who read news the same way Emacs empowers
388 people who edit text. Gnus sets no limits to what the user should be
389 allowed to do. Users are encouraged to extend Gnus to make it behave
390 like they want it to behave. A program should not control people;
391 people should be empowered to do what they want by using (or abusing)
397 * Starting Up:: Finding news can be a pain.
398 * Group Buffer:: Selecting, subscribing and killing groups.
399 * Summary Buffer:: Reading, saving and posting articles.
400 * Article Buffer:: Displaying and handling articles.
401 * Composing Messages:: Information on sending mail and news.
402 * Select Methods:: Gnus reads all messages from various select methods.
403 * Scoring:: Assigning values to articles.
404 * Various:: General purpose settings.
405 * The End:: Farewell and goodbye.
406 * Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
407 * Index:: Variable, function and concept index.
408 * Key Index:: Key Index.
410 Other related manuals
412 * Message:(message). Composing messages.
413 * Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts.
414 * Sieve:(sieve). Managing Sieve scripts in Emacs.
415 * PGG:(pgg). @acronym{PGP/MIME} with Gnus.
416 * SASL:(sasl). @acronym{SASL} authentication in Emacs.
419 --- The Detailed Node Listing ---
423 * Finding the News:: Choosing a method for getting news.
424 * The First Time:: What does Gnus do the first time you start it?
425 * The Server is Down:: How can I read my mail then?
426 * Slave Gnusae:: You can have more than one Gnus active at a time.
427 * Fetching a Group:: Starting Gnus just to read a group.
428 * New Groups:: What is Gnus supposed to do with new groups?
429 * Changing Servers:: You may want to move from one server to another.
430 * Startup Files:: Those pesky startup files---@file{.newsrc}.
431 * Auto Save:: Recovering from a crash.
432 * The Active File:: Reading the active file over a slow line Takes Time.
433 * Startup Variables:: Other variables you might change.
437 * Checking New Groups:: Determining what groups are new.
438 * Subscription Methods:: What Gnus should do with new groups.
439 * Filtering New Groups:: Making Gnus ignore certain new groups.
443 * Group Buffer Format:: Information listed and how you can change it.
444 * Group Maneuvering:: Commands for moving in the group buffer.
445 * Selecting a Group:: Actually reading news.
446 * Subscription Commands:: Unsubscribing, killing, subscribing.
447 * Group Data:: Changing the info for a group.
448 * Group Levels:: Levels? What are those, then?
449 * Group Score:: A mechanism for finding out what groups you like.
450 * Marking Groups:: You can mark groups for later processing.
451 * Foreign Groups:: Creating and editing groups.
452 * Group Parameters:: Each group may have different parameters set.
453 * Listing Groups:: Gnus can list various subsets of the groups.
454 * Sorting Groups:: Re-arrange the group order.
455 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
456 * Browse Foreign Server:: You can browse a server. See what it has to offer.
457 * Exiting Gnus:: Stop reading news and get some work done.
458 * Group Topics:: A folding group mode divided into topics.
459 * Misc Group Stuff:: Other stuff that you can to do.
463 * Group Line Specification:: Deciding how the group buffer is to look.
464 * Group Mode Line Specification:: The group buffer mode line.
465 * Group Highlighting:: Having nice colors in the group buffer.
469 * Topic Commands:: Interactive E-Z commands.
470 * Topic Variables:: How to customize the topics the Lisp Way.
471 * Topic Sorting:: Sorting each topic individually.
472 * Topic Topology:: A map of the world.
473 * Topic Parameters:: Parameters that apply to all groups in a topic.
477 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
478 * Group Information:: Information and help on groups and Gnus.
479 * Group Timestamp:: Making Gnus keep track of when you last read a group.
480 * File Commands:: Reading and writing the Gnus files.
481 * Sieve Commands:: Managing Sieve scripts.
485 * Summary Buffer Format:: Deciding how the summary buffer is to look.
486 * Summary Maneuvering:: Moving around the summary buffer.
487 * Choosing Articles:: Reading articles.
488 * Paging the Article:: Scrolling the current article.
489 * Reply Followup and Post:: Posting articles.
490 * Delayed Articles:: Send articles at a later time.
491 * Marking Articles:: Marking articles as read, expirable, etc.
492 * Limiting:: You can limit the summary buffer.
493 * Threading:: How threads are made.
494 * Sorting the Summary Buffer:: How articles and threads are sorted.
495 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
496 * Article Caching:: You may store articles in a cache.
497 * Persistent Articles:: Making articles expiry-resistant.
498 * Article Backlog:: Having already read articles hang around.
499 * Saving Articles:: Ways of customizing article saving.
500 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
501 * Article Treatment:: The article buffer can be mangled at will.
502 * MIME Commands:: Doing MIMEy things with the articles.
503 * Charsets:: Character set issues.
504 * Article Commands:: Doing various things with the article buffer.
505 * Summary Sorting:: Sorting the summary buffer in various ways.
506 * Finding the Parent:: No child support? Get the parent.
507 * Alternative Approaches:: Reading using non-default summaries.
508 * Tree Display:: A more visual display of threads.
509 * Mail Group Commands:: Some commands can only be used in mail groups.
510 * Various Summary Stuff:: What didn't fit anywhere else.
511 * Exiting the Summary Buffer:: Returning to the Group buffer,
512 or reselecting the current group.
513 * Crosspost Handling:: How crossposted articles are dealt with.
514 * Duplicate Suppression:: An alternative when crosspost handling fails.
515 * Security:: Decrypt and Verify.
516 * Mailing List:: Mailing list minor mode.
518 Summary Buffer Format
520 * Summary Buffer Lines:: You can specify how summary lines should look.
521 * To From Newsgroups:: How to not display your own name.
522 * Summary Buffer Mode Line:: You can say how the mode line should look.
523 * Summary Highlighting:: Making the summary buffer all pretty and nice.
527 * Choosing Commands:: Commands for choosing articles.
528 * Choosing Variables:: Variables that influence these commands.
530 Reply, Followup and Post
532 * Summary Mail Commands:: Sending mail.
533 * Summary Post Commands:: Sending news.
534 * Summary Message Commands:: Other Message-related commands.
535 * Canceling and Superseding::
539 * Unread Articles:: Marks for unread articles.
540 * Read Articles:: Marks for read articles.
541 * Other Marks:: Marks that do not affect readedness.
542 * Setting Marks:: How to set and remove marks.
543 * Generic Marking Commands:: How to customize the marking.
544 * Setting Process Marks:: How to mark articles for later processing.
548 * Customizing Threading:: Variables you can change to affect the threading.
549 * Thread Commands:: Thread based commands in the summary buffer.
551 Customizing Threading
553 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
554 * Filling In Threads:: Making the threads displayed look fuller.
555 * More Threading:: Even more variables for fiddling with threads.
556 * Low-Level Threading:: You thought it was over@dots{} but you were wrong!
560 * Uuencoded Articles:: Uudecode articles.
561 * Shell Archives:: Unshar articles.
562 * PostScript Files:: Split PostScript.
563 * Other Files:: Plain save and binhex.
564 * Decoding Variables:: Variables for a happy decoding.
565 * Viewing Files:: You want to look at the result of the decoding?
569 * Rule Variables:: Variables that say how a file is to be viewed.
570 * Other Decode Variables:: Other decode variables.
571 * Uuencoding and Posting:: Variables for customizing uuencoding.
575 * Article Highlighting:: You want to make the article look like fruit salad.
576 * Article Fontisizing:: Making emphasized text look nice.
577 * Article Hiding:: You also want to make certain info go away.
578 * Article Washing:: Lots of way-neat functions to make life better.
579 * Article Header:: Doing various header transformations.
580 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
581 * Article Button Levels:: Controlling appearance of buttons.
582 * Article Date:: Grumble, UT!
583 * Article Display:: Display various stuff---X-Face, Picons, Smileys
584 * Article Signature:: What is a signature?
585 * Article Miscellanea:: Various other stuff.
587 Alternative Approaches
589 * Pick and Read:: First mark articles and then read them.
590 * Binary Groups:: Auto-decode all articles.
592 Various Summary Stuff
594 * Summary Group Information:: Information oriented commands.
595 * Searching for Articles:: Multiple article commands.
596 * Summary Generation Commands::
597 * Really Various Summary Commands:: Those pesky non-conformant commands.
601 * Hiding Headers:: Deciding what headers should be displayed.
602 * Using MIME:: Pushing articles through @acronym{MIME} before reading them.
603 * Customizing Articles:: Tailoring the look of the articles.
604 * Article Keymap:: Keystrokes available in the article buffer.
605 * Misc Article:: Other stuff.
609 * Mail:: Mailing and replying.
610 * Posting Server:: What server should you post and mail via?
611 * POP before SMTP:: You cannot send a mail unless you read a mail.
612 * Mail and Post:: Mailing and posting at the same time.
613 * Archived Messages:: Where Gnus stores the messages you've sent.
614 * Posting Styles:: An easier way to specify who you are.
615 * Drafts:: Postponing messages and rejected messages.
616 * Rejected Articles:: What happens if the server doesn't like your article?
617 * Signing and encrypting:: How to compose secure messages.
621 * Server Buffer:: Making and editing virtual servers.
622 * Getting News:: Reading USENET news with Gnus.
623 * Getting Mail:: Reading your personal mail with Gnus.
624 * Browsing the Web:: Getting messages from a plethora of Web sources.
625 * IMAP:: Using Gnus as a @acronym{IMAP} client.
626 * Other Sources:: Reading directories, files, SOUP packets.
627 * Combined Groups:: Combining groups into one group.
628 * Email Based Diary:: Using mails to manage diary events in Gnus.
629 * Gnus Unplugged:: Reading news and mail offline.
633 * Server Buffer Format:: You can customize the look of this buffer.
634 * Server Commands:: Commands to manipulate servers.
635 * Example Methods:: Examples server specifications.
636 * Creating a Virtual Server:: An example session.
637 * Server Variables:: Which variables to set.
638 * Servers and Methods:: You can use server names as select methods.
639 * Unavailable Servers:: Some servers you try to contact may be down.
643 * NNTP:: Reading news from an @acronym{NNTP} server.
644 * News Spool:: Reading news from the local spool.
648 * Direct Functions:: Connecting directly to the server.
649 * Indirect Functions:: Connecting indirectly to the server.
650 * Common Variables:: Understood by several connection functions.
651 * NNTP marks:: Storing marks for @acronym{NNTP} servers.
655 * Mail in a Newsreader:: Important introductory notes.
656 * Getting Started Reading Mail:: A simple cookbook example.
657 * Splitting Mail:: How to create mail groups.
658 * Mail Sources:: How to tell Gnus where to get mail from.
659 * Mail Back End Variables:: Variables for customizing mail handling.
660 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
661 * Group Mail Splitting:: Use group customize to drive mail splitting.
662 * Incorporating Old Mail:: What about the old mail you have?
663 * Expiring Mail:: Getting rid of unwanted mail.
664 * Washing Mail:: Removing cruft from the mail you get.
665 * Duplicates:: Dealing with duplicated mail.
666 * Not Reading Mail:: Using mail back ends for reading other files.
667 * Choosing a Mail Back End:: Gnus can read a variety of mail formats.
671 * Mail Source Specifiers:: How to specify what a mail source is.
672 * Mail Source Customization:: Some variables that influence things.
673 * Fetching Mail:: Using the mail source specifiers.
675 Choosing a Mail Back End
677 * Unix Mail Box:: Using the (quite) standard Un*x mbox.
678 * Rmail Babyl:: Emacs programs use the Rmail Babyl format.
679 * Mail Spool:: Store your mail in a private spool?
680 * MH Spool:: An mhspool-like back end.
681 * Maildir:: Another one-file-per-message format.
682 * Mail Folders:: Having one file for each group.
683 * Comparing Mail Back Ends:: An in-depth looks at pros and cons.
688 * Web Searches:: Creating groups from articles that match a string.
689 * Slashdot:: Reading the Slashdot comments.
690 * Ultimate:: The Ultimate Bulletin Board systems.
691 * Web Archive:: Reading mailing list archived on web.
692 * RSS:: Reading RDF site summary.
693 * Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
697 * Splitting in IMAP:: Splitting mail with nnimap.
698 * Expiring in IMAP:: Expiring mail with nnimap.
699 * Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox.
700 * Expunging mailboxes:: Equivalent of a ``compress mailbox'' button.
701 * A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus.
702 * Debugging IMAP:: What to do when things don't work.
706 * Directory Groups:: You can read a directory as if it was a newsgroup.
707 * Anything Groups:: Dired? Who needs dired?
708 * Document Groups:: Single files can be the basis of a group.
709 * SOUP:: Reading @sc{soup} packets ``offline''.
710 * Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
714 * Document Server Internals:: How to add your own document types.
718 * SOUP Commands:: Commands for creating and sending @sc{soup} packets
719 * SOUP Groups:: A back end for reading @sc{soup} packets.
720 * SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
724 * Virtual Groups:: Combining articles from many groups.
725 * Kibozed Groups:: Looking through parts of the newsfeed for articles.
729 * The NNDiary Back End:: Basic setup and usage.
730 * The Gnus Diary Library:: Utility toolkit on top of nndiary.
731 * Sending or Not Sending:: A final note on sending diary messages.
735 * Diary Messages:: What makes a message valid for nndiary.
736 * Running NNDiary:: NNDiary has two modes of operation.
737 * Customizing NNDiary:: Bells and whistles.
739 The Gnus Diary Library
741 * Diary Summary Line Format:: A nicer summary buffer line format.
742 * Diary Articles Sorting:: A nicer way to sort messages.
743 * Diary Headers Generation:: Not doing it manually.
744 * Diary Group Parameters:: Not handling them manually.
748 * Agent Basics:: How it all is supposed to work.
749 * Agent Categories:: How to tell the Gnus Agent what to download.
750 * Agent Commands:: New commands for all the buffers.
751 * Agent Visuals:: Ways that the agent may effect your summary buffer.
752 * Agent as Cache:: The Agent is a big cache too.
753 * Agent Expiry:: How to make old articles go away.
754 * Agent Regeneration:: How to recover from lost connections and other accidents.
755 * Agent and flags:: How the Agent maintains flags.
756 * Agent and IMAP:: How to use the Agent with @acronym{IMAP}.
757 * Outgoing Messages:: What happens when you post/mail something?
758 * Agent Variables:: Customizing is fun.
759 * Example Setup:: An example @file{~/.gnus.el} file for offline people.
760 * Batching Agents:: How to fetch news from a @code{cron} job.
761 * Agent Caveats:: What you think it'll do and what it does.
765 * Category Syntax:: What a category looks like.
766 * Category Buffer:: A buffer for maintaining categories.
767 * Category Variables:: Customize'r'Us.
771 * Group Agent Commands:: Configure groups and fetch their contents.
772 * Summary Agent Commands:: Manually select then fetch specific articles.
773 * Server Agent Commands:: Select the servers that are supported by the agent.
777 * Summary Score Commands:: Adding score entries for the current group.
778 * Group Score Commands:: General score commands.
779 * Score Variables:: Customize your scoring. (My, what terminology).
780 * Score File Format:: What a score file may contain.
781 * Score File Editing:: You can edit score files by hand as well.
782 * Adaptive Scoring:: Big Sister Gnus knows what you read.
783 * Home Score File:: How to say where new score entries are to go.
784 * Followups To Yourself:: Having Gnus notice when people answer you.
785 * Scoring On Other Headers:: Scoring on non-standard headers.
786 * Scoring Tips:: How to score effectively.
787 * Reverse Scoring:: That problem child of old is not problem.
788 * Global Score Files:: Earth-spanning, ear-splitting score files.
789 * Kill Files:: They are still here, but they can be ignored.
790 * Converting Kill Files:: Translating kill files to score files.
791 * Advanced Scoring:: Using logical expressions to build score rules.
792 * Score Decays:: It can be useful to let scores wither away.
796 * Advanced Scoring Syntax:: A definition.
797 * Advanced Scoring Examples:: What they look like.
798 * Advanced Scoring Tips:: Getting the most out of it.
802 * Process/Prefix:: A convention used by many treatment commands.
803 * Interactive:: Making Gnus ask you many questions.
804 * Symbolic Prefixes:: How to supply some Gnus functions with options.
805 * Formatting Variables:: You can specify what buffers should look like.
806 * Window Layout:: Configuring the Gnus buffer windows.
807 * Faces and Fonts:: How to change how faces look.
808 * Compilation:: How to speed Gnus up.
809 * Mode Lines:: Displaying information in the mode lines.
810 * Highlighting and Menus:: Making buffers look all nice and cozy.
811 * Buttons:: Get tendinitis in ten easy steps!
812 * Daemons:: Gnus can do things behind your back.
813 * NoCeM:: How to avoid spam and other fatty foods.
814 * Undo:: Some actions can be undone.
815 * Predicate Specifiers:: Specifying predicates.
816 * Moderation:: What to do if you're a moderator.
817 * Image Enhancements:: Modern versions of Emacs/XEmacs can display images.
818 * Fuzzy Matching:: What's the big fuzz?
819 * Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
820 * Spam Package:: A package for filtering and processing spam.
821 * Other modes:: Interaction with other modes.
822 * Various Various:: Things that are really various.
826 * Formatting Basics:: A formatting variable is basically a format string.
827 * Mode Line Formatting:: Some rules about mode line formatting variables.
828 * Advanced Formatting:: Modifying output in various ways.
829 * User-Defined Specs:: Having Gnus call your own functions.
830 * Formatting Fonts:: Making the formatting look colorful and nice.
831 * Positioning Point:: Moving point to a position after an operation.
832 * Tabulation:: Tabulating your output.
833 * Wide Characters:: Dealing with wide characters.
837 * X-Face:: Display a funky, teensy black-and-white image.
838 * Face:: Display a funkier, teensier colored image.
839 * Smileys:: Show all those happy faces the way they were
841 * Picons:: How to display pictures of what you're reading.
842 * XVarious:: Other XEmacsy Gnusey variables.
846 * The problem of spam:: Some background, and some solutions
847 * Anti-Spam Basics:: Simple steps to reduce the amount of spam.
848 * SpamAssassin:: How to use external anti-spam tools.
849 * Hashcash:: Reduce spam by burning CPU time.
853 * Spam Package Introduction::
854 * Filtering Incoming Mail::
855 * Detecting Spam in Groups::
856 * Spam and Ham Processors::
857 * Spam Package Configuration Examples::
859 * Extending the Spam package::
860 * Spam Statistics Package::
862 Spam Statistics Package
864 * Creating a spam-stat dictionary::
865 * Splitting mail using spam-stat::
866 * Low-level interface to the spam-stat dictionary::
870 * XEmacs:: Requirements for installing under XEmacs.
871 * History:: How Gnus got where it is today.
872 * On Writing Manuals:: Why this is not a beginner's guide.
873 * Terminology:: We use really difficult, like, words here.
874 * Customization:: Tailoring Gnus to your needs.
875 * Troubleshooting:: What you might try if things do not work.
876 * Gnus Reference Guide:: Rilly, rilly technical stuff.
877 * Emacs for Heathens:: A short introduction to Emacsian terms.
878 * Frequently Asked Questions:: The Gnus FAQ
882 * Gnus Versions:: What Gnus versions have been released.
883 * Other Gnus Versions:: Other Gnus versions that also have been released.
884 * Why?:: What's the point of Gnus?
885 * Compatibility:: Just how compatible is Gnus with @sc{gnus}?
886 * Conformity:: Gnus tries to conform to all standards.
887 * Emacsen:: Gnus can be run on a few modern Emacsen.
888 * Gnus Development:: How Gnus is developed.
889 * Contributors:: Oodles of people.
890 * New Features:: Pointers to some of the new stuff in Gnus.
894 * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
895 * September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
896 * Red Gnus:: Third time best---Gnus 5.4/5.5.
897 * Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
898 * Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
899 * Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11.
900 * No Gnus:: Very punny.
904 * Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
905 * Slow Terminal Connection:: You run a remote Emacs.
906 * Little Disk Space:: You feel that having large setup files is icky.
907 * Slow Machine:: You feel like buying a faster machine.
911 * Gnus Utility Functions:: Common functions and variable to use.
912 * Back End Interface:: How Gnus communicates with the servers.
913 * Score File Syntax:: A BNF definition of the score file standard.
914 * Headers:: How Gnus stores headers internally.
915 * Ranges:: A handy format for storing mucho numbers.
916 * Group Info:: The group info format.
917 * Extended Interactive:: Symbolic prefixes and stuff.
918 * Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
919 * Various File Formats:: Formats of files that Gnus use.
923 * Required Back End Functions:: Functions that must be implemented.
924 * Optional Back End Functions:: Functions that need not be implemented.
925 * Error Messaging:: How to get messages and report errors.
926 * Writing New Back Ends:: Extending old back ends.
927 * Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
928 * Mail-like Back Ends:: Some tips on mail back ends.
932 * Active File Format:: Information on articles and groups available.
933 * Newsgroups File Format:: Group descriptions.
937 * Keystrokes:: Entering text and executing commands.
938 * Emacs Lisp:: The built-in Emacs programming language.
944 @chapter Starting Gnus
947 If you are haven't used Emacs much before using Gnus, read @ref{Emacs
952 If your system administrator has set things up properly, starting Gnus
953 and reading news is extremely easy---you just type @kbd{M-x gnus} in
954 your Emacs. If not, you should customize the variable
955 @code{gnus-select-method} as described in @ref{Finding the News}. For a
956 minimal setup for posting should also customize the variables
957 @code{user-full-name} and @code{user-mail-address}.
959 @findex gnus-other-frame
960 @kindex M-x gnus-other-frame
961 If you want to start Gnus in a different frame, you can use the command
962 @kbd{M-x gnus-other-frame} instead.
964 If things do not go smoothly at startup, you have to twiddle some
965 variables in your @file{~/.gnus.el} file. This file is similar to
966 @file{~/.emacs}, but is read when Gnus starts.
968 If you puzzle at any terms used in this manual, please refer to the
969 terminology section (@pxref{Terminology}).
972 * Finding the News:: Choosing a method for getting news.
973 * The First Time:: What does Gnus do the first time you start it?
974 * The Server is Down:: How can I read my mail then?
975 * Slave Gnusae:: You can have more than one Gnus active at a time.
976 * New Groups:: What is Gnus supposed to do with new groups?
977 * Changing Servers:: You may want to move from one server to another.
978 * Startup Files:: Those pesky startup files---@file{.newsrc}.
979 * Auto Save:: Recovering from a crash.
980 * The Active File:: Reading the active file over a slow line Takes Time.
981 * Startup Variables:: Other variables you might change.
985 @node Finding the News
986 @section Finding the News
989 @vindex gnus-select-method
991 The @code{gnus-select-method} variable says where Gnus should look for
992 news. This variable should be a list where the first element says
993 @dfn{how} and the second element says @dfn{where}. This method is your
994 native method. All groups not fetched with this method are
997 For instance, if the @samp{news.somewhere.edu} @acronym{NNTP} server is where
998 you want to get your daily dosage of news from, you'd say:
1001 (setq gnus-select-method '(nntp "news.somewhere.edu"))
1004 If you want to read directly from the local spool, say:
1007 (setq gnus-select-method '(nnspool ""))
1010 If you can use a local spool, you probably should, as it will almost
1011 certainly be much faster. But do not use the local spool if your
1012 server is running Leafnode (which is a simple, standalone private news
1013 server); in this case, use @code{(nntp "localhost")}.
1015 @vindex gnus-nntpserver-file
1017 @cindex @acronym{NNTP} server
1018 If this variable is not set, Gnus will take a look at the
1019 @env{NNTPSERVER} environment variable. If that variable isn't set,
1020 Gnus will see whether @code{gnus-nntpserver-file}
1021 (@file{/etc/nntpserver} by default) has any opinions on the matter.
1022 If that fails as well, Gnus will try to use the machine running Emacs
1023 as an @acronym{NNTP} server. That's a long shot, though.
1025 @vindex gnus-nntp-server
1026 If @code{gnus-nntp-server} is set, this variable will override
1027 @code{gnus-select-method}. You should therefore set
1028 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
1030 @vindex gnus-secondary-servers
1031 @vindex gnus-nntp-server
1032 You can also make Gnus prompt you interactively for the name of an
1033 @acronym{NNTP} server. If you give a non-numerical prefix to @code{gnus}
1034 (i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
1035 in the @code{gnus-secondary-servers} list (if any). You can also just
1036 type in the name of any server you feel like visiting. (Note that this
1037 will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
1038 gnus} later in the same Emacs session, Gnus will contact the same
1041 @findex gnus-group-browse-foreign-server
1043 However, if you use one @acronym{NNTP} server regularly and are just
1044 interested in a couple of groups from a different server, you would be
1045 better served by using the @kbd{B} command in the group buffer. It will
1046 let you have a look at what groups are available, and you can subscribe
1047 to any of the groups you want to. This also makes @file{.newsrc}
1048 maintenance much tidier. @xref{Foreign Groups}.
1050 @vindex gnus-secondary-select-methods
1052 A slightly different approach to foreign groups is to set the
1053 @code{gnus-secondary-select-methods} variable. The select methods
1054 listed in this variable are in many ways just as native as the
1055 @code{gnus-select-method} server. They will also be queried for active
1056 files during startup (if that's required), and new newsgroups that
1057 appear on these servers will be subscribed (or not) just as native
1060 For instance, if you use the @code{nnmbox} back end to read your mail,
1061 you would typically set this variable to
1064 (setq gnus-secondary-select-methods '((nnmbox "")))
1067 Note: the @acronym{NNTP} back end stores marks in marks files
1068 (@pxref{NNTP marks}). This feature makes it easy to share marks between
1069 several Gnus installations, but may slow down things a bit when fetching
1070 new articles. @xref{NNTP marks}, for more information.
1073 @node The First Time
1074 @section The First Time
1075 @cindex first time usage
1077 If no startup files exist (@pxref{Startup Files}), Gnus will try to
1078 determine what groups should be subscribed by default.
1080 @vindex gnus-default-subscribed-newsgroups
1081 If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus
1082 will subscribe you to just those groups in that list, leaving the rest
1083 killed. Your system administrator should have set this variable to
1086 Since she hasn't, Gnus will just subscribe you to a few arbitrarily
1087 picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined
1088 here as @dfn{whatever Lars thinks you should read}.)
1090 You'll also be subscribed to the Gnus documentation group, which should
1091 help you with most common problems.
1093 If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just
1094 use the normal functions for handling new groups, and not do anything
1098 @node The Server is Down
1099 @section The Server is Down
1100 @cindex server errors
1102 If the default server is down, Gnus will understandably have some
1103 problems starting. However, if you have some mail groups in addition to
1104 the news groups, you may want to start Gnus anyway.
1106 Gnus, being the trusting sort of program, will ask whether to proceed
1107 without a native select method if that server can't be contacted. This
1108 will happen whether the server doesn't actually exist (i.e., you have
1109 given the wrong address) or the server has just momentarily taken ill
1110 for some reason or other. If you decide to continue and have no foreign
1111 groups, you'll find it difficult to actually do anything in the group
1112 buffer. But, hey, that's your problem. Blllrph!
1114 @findex gnus-no-server
1115 @kindex M-x gnus-no-server
1117 If you know that the server is definitely down, or you just want to read
1118 your mail without bothering with the server at all, you can use the
1119 @code{gnus-no-server} command to start Gnus. That might come in handy
1120 if you're in a hurry as well. This command will not attempt to contact
1121 your primary server---instead, it will just activate all groups on level
1122 1 and 2. (You should preferably keep no native groups on those two
1123 levels.) Also @pxref{Group Levels}.
1127 @section Slave Gnusae
1130 You might want to run more than one Emacs with more than one Gnus at the
1131 same time. If you are using different @file{.newsrc} files (e.g., if you
1132 are using the two different Gnusae to read from two different servers),
1133 that is no problem whatsoever. You just do it.
1135 The problem appears when you want to run two Gnusae that use the same
1136 @file{.newsrc} file.
1138 To work around that problem some, we here at the Think-Tank at the Gnus
1139 Towers have come up with a new concept: @dfn{Masters} and
1140 @dfn{slaves}. (We have applied for a patent on this concept, and have
1141 taken out a copyright on those words. If you wish to use those words in
1142 conjunction with each other, you have to send $1 per usage instance to
1143 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
1144 Applications}) will be much more expensive, of course.)
1147 Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or
1148 however you do it). Each subsequent slave Gnusae should be started with
1149 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
1150 files, but instead save @dfn{slave files} that contain information only
1151 on what groups have been read in the slave session. When a master Gnus
1152 starts, it will read (and delete) these slave files, incorporating all
1153 information from them. (The slave files will be read in the sequence
1154 they were created, so the latest changes will have precedence.)
1156 Information from the slave files has, of course, precedence over the
1157 information in the normal (i.e., master) @file{.newsrc} file.
1159 If the @file{.newsrc*} files have not been saved in the master when the
1160 slave starts, you may be prompted as to whether to read an auto-save
1161 file. If you answer ``yes'', the unsaved changes to the master will be
1162 incorporated into the slave. If you answer ``no'', the slave may see some
1163 messages as unread that have been read in the master.
1170 @cindex subscription
1172 @vindex gnus-check-new-newsgroups
1173 If you are satisfied that you really never want to see any new groups,
1174 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
1175 also save you some time at startup. Even if this variable is
1176 @code{nil}, you can always subscribe to the new groups just by pressing
1177 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
1178 is @code{ask-server} by default. If you set this variable to
1179 @code{always}, then Gnus will query the back ends for new groups even
1180 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
1183 * Checking New Groups:: Determining what groups are new.
1184 * Subscription Methods:: What Gnus should do with new groups.
1185 * Filtering New Groups:: Making Gnus ignore certain new groups.
1189 @node Checking New Groups
1190 @subsection Checking New Groups
1192 Gnus normally determines whether a group is new or not by comparing the
1193 list of groups from the active file(s) with the lists of subscribed and
1194 dead groups. This isn't a particularly fast method. If
1195 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
1196 server for new groups since the last time. This is both faster and
1197 cheaper. This also means that you can get rid of the list of killed
1198 groups altogether, so you may set @code{gnus-save-killed-list} to
1199 @code{nil}, which will save time both at startup, at exit, and all over.
1200 Saves disk space, too. Why isn't this the default, then?
1201 Unfortunately, not all servers support this command.
1203 I bet I know what you're thinking now: How do I find out whether my
1204 server supports @code{ask-server}? No? Good, because I don't have a
1205 fail-safe answer. I would suggest just setting this variable to
1206 @code{ask-server} and see whether any new groups appear within the next
1207 few days. If any do, then it works. If none do, then it doesn't
1208 work. I could write a function to make Gnus guess whether the server
1209 supports @code{ask-server}, but it would just be a guess. So I won't.
1210 You could @code{telnet} to the server and say @code{HELP} and see
1211 whether it lists @samp{NEWGROUPS} among the commands it understands. If
1212 it does, then it might work. (But there are servers that lists
1213 @samp{NEWGROUPS} without supporting the function properly.)
1215 This variable can also be a list of select methods. If so, Gnus will
1216 issue an @code{ask-server} command to each of the select methods, and
1217 subscribe them (or not) using the normal methods. This might be handy
1218 if you are monitoring a few servers for new groups. A side effect is
1219 that startup will take much longer, so you can meditate while waiting.
1220 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
1223 @node Subscription Methods
1224 @subsection Subscription Methods
1226 @vindex gnus-subscribe-newsgroup-method
1227 What Gnus does when it encounters a new group is determined by the
1228 @code{gnus-subscribe-newsgroup-method} variable.
1230 This variable should contain a function. This function will be called
1231 with the name of the new group as the only parameter.
1233 Some handy pre-fab functions are:
1237 @item gnus-subscribe-zombies
1238 @vindex gnus-subscribe-zombies
1239 Make all new groups zombies. This is the default. You can browse the
1240 zombies later (with @kbd{A z}) and either kill them all off properly
1241 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
1243 @item gnus-subscribe-randomly
1244 @vindex gnus-subscribe-randomly
1245 Subscribe all new groups in arbitrary order. This really means that all
1246 new groups will be added at ``the top'' of the group buffer.
1248 @item gnus-subscribe-alphabetically
1249 @vindex gnus-subscribe-alphabetically
1250 Subscribe all new groups in alphabetical order.
1252 @item gnus-subscribe-hierarchically
1253 @vindex gnus-subscribe-hierarchically
1254 Subscribe all new groups hierarchically. The difference between this
1255 function and @code{gnus-subscribe-alphabetically} is slight.
1256 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
1257 alphabetical fashion, while this function will enter groups into its
1258 hierarchy. So if you want to have the @samp{rec} hierarchy before the
1259 @samp{comp} hierarchy, this function will not mess that configuration
1260 up. Or something like that.
1262 @item gnus-subscribe-interactively
1263 @vindex gnus-subscribe-interactively
1264 Subscribe new groups interactively. This means that Gnus will ask
1265 you about @strong{all} new groups. The groups you choose to subscribe
1266 to will be subscribed hierarchically.
1268 @item gnus-subscribe-killed
1269 @vindex gnus-subscribe-killed
1270 Kill all new groups.
1272 @item gnus-subscribe-topics
1273 @vindex gnus-subscribe-topics
1274 Put the groups into the topic that has a matching @code{subscribe} topic
1275 parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe}
1276 topic parameter that looks like
1282 will mean that all groups that match that regex will be subscribed under
1285 If no topics match the groups, the groups will be subscribed in the
1290 @vindex gnus-subscribe-hierarchical-interactive
1291 A closely related variable is
1292 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
1293 mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
1294 hierarchical fashion whether to subscribe to new groups or not. Gnus
1295 will ask you for each sub-hierarchy whether you want to descend the
1298 One common mistake is to set the variable a few paragraphs above
1299 (@code{gnus-subscribe-newsgroup-method}) to
1300 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This
1301 will not work. This is ga-ga. So don't do it.
1304 @node Filtering New Groups
1305 @subsection Filtering New Groups
1307 A nice and portable way to control which new newsgroups should be
1308 subscribed (or ignored) is to put an @dfn{options} line at the start of
1309 the @file{.newsrc} file. Here's an example:
1312 options -n !alt.all !rec.all sci.all
1315 @vindex gnus-subscribe-options-newsgroup-method
1316 This line obviously belongs to a serious-minded intellectual scientific
1317 person (or she may just be plain old boring), because it says that all
1318 groups that have names beginning with @samp{alt} and @samp{rec} should
1319 be ignored, and all groups with names beginning with @samp{sci} should
1320 be subscribed. Gnus will not use the normal subscription method for
1321 subscribing these groups.
1322 @code{gnus-subscribe-options-newsgroup-method} is used instead. This
1323 variable defaults to @code{gnus-subscribe-alphabetically}.
1325 @vindex gnus-options-not-subscribe
1326 @vindex gnus-options-subscribe
1327 If you don't want to mess with your @file{.newsrc} file, you can just
1328 set the two variables @code{gnus-options-subscribe} and
1329 @code{gnus-options-not-subscribe}. These two variables do exactly the
1330 same as the @file{.newsrc} @samp{options -n} trick. Both are regexps,
1331 and if the new group matches the former, it will be unconditionally
1332 subscribed, and if it matches the latter, it will be ignored.
1334 @vindex gnus-auto-subscribed-groups
1335 Yet another variable that meddles here is
1336 @code{gnus-auto-subscribed-groups}. It works exactly like
1337 @code{gnus-options-subscribe}, and is therefore really superfluous,
1338 but I thought it would be nice to have two of these. This variable is
1339 more meant for setting some ground rules, while the other variable is
1340 used more for user fiddling. By default this variable makes all new
1341 groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
1342 @code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir})
1343 subscribed. If you don't like that, just set this variable to
1346 New groups that match this regexp are subscribed using
1347 @code{gnus-subscribe-options-newsgroup-method}.
1350 @node Changing Servers
1351 @section Changing Servers
1352 @cindex changing servers
1354 Sometimes it is necessary to move from one @acronym{NNTP} server to another.
1355 This happens very rarely, but perhaps you change jobs, or one server is
1356 very flaky and you want to use another.
1358 Changing the server is pretty easy, right? You just change
1359 @code{gnus-select-method} to point to the new server?
1363 Article numbers are not (in any way) kept synchronized between different
1364 @acronym{NNTP} servers, and the only way Gnus keeps track of what articles
1365 you have read is by keeping track of article numbers. So when you
1366 change @code{gnus-select-method}, your @file{.newsrc} file becomes
1369 Gnus provides a few functions to attempt to translate a @file{.newsrc}
1370 file from one server to another. They all have one thing in
1371 common---they take a looong time to run. You don't want to use these
1372 functions more than absolutely necessary.
1374 @kindex M-x gnus-change-server
1375 @findex gnus-change-server
1376 If you have access to both servers, Gnus can request the headers for all
1377 the articles you have read and compare @code{Message-ID}s and map the
1378 article numbers of the read articles and article marks. The @kbd{M-x
1379 gnus-change-server} command will do this for all your native groups. It
1380 will prompt for the method you want to move to.
1382 @kindex M-x gnus-group-move-group-to-server
1383 @findex gnus-group-move-group-to-server
1384 You can also move individual groups with the @kbd{M-x
1385 gnus-group-move-group-to-server} command. This is useful if you want to
1386 move a (foreign) group from one server to another.
1388 @kindex M-x gnus-group-clear-data-on-native-groups
1389 @findex gnus-group-clear-data-on-native-groups
1390 If you don't have access to both the old and new server, all your marks
1391 and read ranges have become worthless. You can use the @kbd{M-x
1392 gnus-group-clear-data-on-native-groups} command to clear out all data
1393 that you have on your native groups. Use with caution.
1395 @kindex M-x gnus-group-clear-data
1396 @findex gnus-group-clear-data
1397 Clear the data from the current group only---nix out marks and the
1398 list of read articles (@code{gnus-group-clear-data}).
1400 After changing servers, you @strong{must} move the cache hierarchy away,
1401 since the cached articles will have wrong article numbers, which will
1402 affect which articles Gnus thinks are read.
1403 @code{gnus-group-clear-data-on-native-groups} will ask you if you want
1404 to have it done automatically; for @code{gnus-group-clear-data}, you
1405 can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the
1406 cache for all groups).
1410 @section Startup Files
1411 @cindex startup files
1416 Most common Unix news readers use a shared startup file called
1417 @file{.newsrc}. This file contains all the information about what
1418 groups are subscribed, and which articles in these groups have been
1421 Things got a bit more complicated with @sc{gnus}. In addition to
1422 keeping the @file{.newsrc} file updated, it also used a file called
1423 @file{.newsrc.el} for storing all the information that didn't fit into
1424 the @file{.newsrc} file. (Actually, it also duplicated everything in
1425 the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
1426 files was the most recently saved, which enabled people to swap between
1427 @sc{gnus} and other newsreaders.
1429 That was kinda silly, so Gnus went one better: In addition to the
1430 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
1431 @file{.newsrc.eld}. It will read whichever of these files that are most
1432 recent, but it will never write a @file{.newsrc.el} file. You should
1433 never delete the @file{.newsrc.eld} file---it contains much information
1434 not stored in the @file{.newsrc} file.
1436 @vindex gnus-save-newsrc-file
1437 @vindex gnus-read-newsrc-file
1438 You can turn off writing the @file{.newsrc} file by setting
1439 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
1440 the file and save some space, as well as exiting from Gnus faster.
1441 However, this will make it impossible to use other newsreaders than
1442 Gnus. But hey, who would want to, right? Similarly, setting
1443 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
1444 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which can be
1445 convenient if you use a different news reader occasionally, and you
1446 want to read a different subset of the available groups with that
1449 @vindex gnus-save-killed-list
1450 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
1451 will not save the list of killed groups to the startup file. This will
1452 save both time (when starting and quitting) and space (on disk). It
1453 will also mean that Gnus has no record of what groups are new or old,
1454 so the automatic new groups subscription methods become meaningless.
1455 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
1456 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
1457 Groups}). This variable can also be a regular expression. If that's
1458 the case, remove all groups that do not match this regexp before
1459 saving. This can be useful in certain obscure situations that involve
1460 several servers where not all servers support @code{ask-server}.
1462 @vindex gnus-startup-file
1463 @vindex gnus-backup-startup-file
1464 @vindex version-control
1465 The @code{gnus-startup-file} variable says where the startup files are.
1466 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
1467 file being whatever that one is, with a @samp{.eld} appended.
1468 If you want version control for this file, set
1469 @code{gnus-backup-startup-file}. It respects the same values as the
1470 @code{version-control} variable.
1472 @vindex gnus-save-newsrc-hook
1473 @vindex gnus-save-quick-newsrc-hook
1474 @vindex gnus-save-standard-newsrc-hook
1475 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
1476 files, while @code{gnus-save-quick-newsrc-hook} is called just before
1477 saving the @file{.newsrc.eld} file, and
1478 @code{gnus-save-standard-newsrc-hook} is called just before saving the
1479 @file{.newsrc} file. The latter two are commonly used to turn version
1480 control on or off. Version control is on by default when saving the
1481 startup files. If you want to turn backup creation off, say something like:
1484 (defun turn-off-backup ()
1485 (set (make-local-variable 'backup-inhibited) t))
1487 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
1488 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
1491 @vindex gnus-init-file
1492 @vindex gnus-site-init-file
1493 When Gnus starts, it will read the @code{gnus-site-init-file}
1494 (@file{.../site-lisp/gnus-init} by default) and @code{gnus-init-file}
1495 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files
1496 and can be used to avoid cluttering your @file{~/.emacs} and
1497 @file{site-init} files with Gnus stuff. Gnus will also check for files
1498 with the same names as these, but with @file{.elc} and @file{.el}
1499 suffixes. In other words, if you have set @code{gnus-init-file} to
1500 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
1501 and finally @file{~/.gnus} (in this order). If Emacs was invoked with
1502 the @option{-q} or @option{--no-init-file} options (@pxref{Initial
1503 Options, ,Initial Options, emacs, The Emacs Manual}), Gnus doesn't read
1504 @code{gnus-init-file}.
1509 @cindex dribble file
1512 Whenever you do something that changes the Gnus data (reading articles,
1513 catching up, killing/subscribing groups), the change is added to a
1514 special @dfn{dribble buffer}. This buffer is auto-saved the normal
1515 Emacs way. If your Emacs should crash before you have saved the
1516 @file{.newsrc} files, all changes you have made can be recovered from
1519 If Gnus detects this file at startup, it will ask the user whether to
1520 read it. The auto save file is deleted whenever the real startup file is
1523 @vindex gnus-use-dribble-file
1524 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
1525 maintain a dribble buffer. The default is @code{t}.
1527 @vindex gnus-dribble-directory
1528 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
1529 this variable is @code{nil}, which it is by default, Gnus will dribble
1530 into the directory where the @file{.newsrc} file is located. (This is
1531 normally the user's home directory.) The dribble file will get the same
1532 file permissions as the @file{.newsrc} file.
1534 @vindex gnus-always-read-dribble-file
1535 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
1536 read the dribble file on startup without querying the user.
1539 @node The Active File
1540 @section The Active File
1542 @cindex ignored groups
1544 When Gnus starts, or indeed whenever it tries to determine whether new
1545 articles have arrived, it reads the active file. This is a very large
1546 file that lists all the active groups and articles on the server.
1548 @vindex gnus-ignored-newsgroups
1549 Before examining the active file, Gnus deletes all lines that match the
1550 regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
1551 any groups with bogus names, but you can use this variable to make Gnus
1552 ignore hierarchies you aren't ever interested in. However, this is not
1553 recommended. In fact, it's highly discouraged. Instead, @pxref{New
1554 Groups} for an overview of other variables that can be used instead.
1557 @c @code{nil} by default, and will slow down active file handling somewhat
1558 @c if you set it to anything else.
1560 @vindex gnus-read-active-file
1562 The active file can be rather Huge, so if you have a slow network, you
1563 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
1564 reading the active file. This variable is @code{some} by default.
1566 Gnus will try to make do by getting information just on the groups that
1567 you actually subscribe to.
1569 Note that if you subscribe to lots and lots of groups, setting this
1570 variable to @code{nil} will probably make Gnus slower, not faster. At
1571 present, having this variable @code{nil} will slow Gnus down
1572 considerably, unless you read news over a 2400 baud modem.
1574 This variable can also have the value @code{some}. Gnus will then
1575 attempt to read active info only on the subscribed groups. On some
1576 servers this is quite fast (on sparkling, brand new INN servers that
1577 support the @code{LIST ACTIVE group} command), on others this isn't fast
1578 at all. In any case, @code{some} should be faster than @code{nil}, and
1579 is certainly faster than @code{t} over slow lines.
1581 Some news servers (old versions of Leafnode and old versions of INN, for
1582 instance) do not support the @code{LIST ACTIVE group}. For these
1583 servers, @code{nil} is probably the most efficient value for this
1586 If this variable is @code{nil}, Gnus will ask for group info in total
1587 lock-step, which isn't very fast. If it is @code{some} and you use an
1588 @acronym{NNTP} server, Gnus will pump out commands as fast as it can, and
1589 read all the replies in one swoop. This will normally result in better
1590 performance, but if the server does not support the aforementioned
1591 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1593 If you think that starting up Gnus takes too long, try all the three
1594 different values for this variable and see what works best for you.
1596 In any case, if you use @code{some} or @code{nil}, you should definitely
1597 kill all groups that you aren't interested in to speed things up.
1599 Note that this variable also affects active file retrieval from
1600 secondary select methods.
1603 @node Startup Variables
1604 @section Startup Variables
1608 @item gnus-load-hook
1609 @vindex gnus-load-hook
1610 A hook run while Gnus is being loaded. Note that this hook will
1611 normally be run just once in each Emacs session, no matter how many
1612 times you start Gnus.
1614 @item gnus-before-startup-hook
1615 @vindex gnus-before-startup-hook
1616 A hook run after starting up Gnus successfully.
1618 @item gnus-startup-hook
1619 @vindex gnus-startup-hook
1620 A hook run as the very last thing after starting up Gnus
1622 @item gnus-started-hook
1623 @vindex gnus-started-hook
1624 A hook that is run as the very last thing after starting up Gnus
1627 @item gnus-setup-news-hook
1628 @vindex gnus-setup-news-hook
1629 A hook that is run after reading the @file{.newsrc} file(s), but before
1630 generating the group buffer.
1632 @item gnus-check-bogus-newsgroups
1633 @vindex gnus-check-bogus-newsgroups
1634 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1635 startup. A @dfn{bogus group} is a group that you have in your
1636 @file{.newsrc} file, but doesn't exist on the news server. Checking for
1637 bogus groups can take quite a while, so to save time and resources it's
1638 best to leave this option off, and do the checking for bogus groups once
1639 in a while from the group buffer instead (@pxref{Group Maintenance}).
1641 @item gnus-inhibit-startup-message
1642 @vindex gnus-inhibit-startup-message
1643 If non-@code{nil}, the startup message won't be displayed. That way,
1644 your boss might not notice as easily that you are reading news instead
1645 of doing your job. Note that this variable is used before
1646 @file{~/.gnus.el} is loaded, so it should be set in @file{.emacs} instead.
1648 @item gnus-no-groups-message
1649 @vindex gnus-no-groups-message
1650 Message displayed by Gnus when no groups are available.
1652 @item gnus-play-startup-jingle
1653 @vindex gnus-play-startup-jingle
1654 If non-@code{nil}, play the Gnus jingle at startup.
1656 @item gnus-startup-jingle
1657 @vindex gnus-startup-jingle
1658 Jingle to be played if the above variable is non-@code{nil}. The
1659 default is @samp{Tuxedomoon.Jingle4.au}.
1665 @chapter Group Buffer
1666 @cindex group buffer
1668 @c Alex Schroeder suggests to rearrange this as follows:
1670 @c <kensanata> ok, just save it for reference. I'll go to bed in a minute.
1671 @c 1. Selecting a Group, 2. (new) Finding a Group, 3. Group Levels,
1672 @c 4. Subscription Commands, 5. Group Maneuvering, 6. Group Data,
1673 @c 7. Group Score, 8. Group Buffer Format
1674 @c <kensanata> Group Levels should have more information on levels 5 to 9. I
1675 @c suggest to split the 4th paragraph ("Gnus considers groups...") as follows:
1676 @c <kensanata> First, "Gnus considers groups... (default 9)."
1677 @c <kensanata> New, a table summarizing what levels 1 to 9 mean.
1678 @c <kensanata> Third, "Gnus treats subscribed ... reasons of efficiency"
1679 @c <kensanata> Then expand the next paragraph or add some more to it.
1680 @c This short one sentence explains levels 1 and 2, therefore I understand
1681 @c that I should keep important news at 3 and boring news at 4.
1682 @c Say so! Then go on to explain why I should bother with levels 6 to 9.
1683 @c Maybe keep those that you don't want to read temporarily at 6,
1684 @c those that you never want to read at 8, those that offend your
1685 @c human rights at 9...
1688 The @dfn{group buffer} lists all (or parts) of the available groups. It
1689 is the first buffer shown when Gnus starts, and will never be killed as
1690 long as Gnus is active.
1694 \gnusfigure{The Group Buffer}{320}{
1695 \put(75,50){\epsfig{figure=ps/group,height=9cm}}
1696 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1697 \put(120,38){\vector(1,2){10}}
1698 \put(40,60){\makebox(0,0)[r]{Mode line}}
1699 \put(40,58){\vector(1,0){30}}
1700 \put(200,28){\makebox(0,0)[t]{Native select method}}
1701 \put(200,26){\vector(-1,2){15}}
1707 * Group Buffer Format:: Information listed and how you can change it.
1708 * Group Maneuvering:: Commands for moving in the group buffer.
1709 * Selecting a Group:: Actually reading news.
1710 * Subscription Commands:: Unsubscribing, killing, subscribing.
1711 * Group Data:: Changing the info for a group.
1712 * Group Levels:: Levels? What are those, then?
1713 * Group Score:: A mechanism for finding out what groups you like.
1714 * Marking Groups:: You can mark groups for later processing.
1715 * Foreign Groups:: Creating and editing groups.
1716 * Group Parameters:: Each group may have different parameters set.
1717 * Listing Groups:: Gnus can list various subsets of the groups.
1718 * Sorting Groups:: Re-arrange the group order.
1719 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1720 * Browse Foreign Server:: You can browse a server. See what it has to offer.
1721 * Exiting Gnus:: Stop reading news and get some work done.
1722 * Group Topics:: A folding group mode divided into topics.
1723 * Misc Group Stuff:: Other stuff that you can to do.
1727 @node Group Buffer Format
1728 @section Group Buffer Format
1731 * Group Line Specification:: Deciding how the group buffer is to look.
1732 * Group Mode Line Specification:: The group buffer mode line.
1733 * Group Highlighting:: Having nice colors in the group buffer.
1736 You can customize the Group Mode tool bar, see @kbd{M-x
1737 customize-apropos RET gnus-group-tool-bar}. This feature is only
1740 The tool bar icons are now (de)activated correctly depending on the
1741 cursor position. Therefore, moving around in the Group Buffer is
1742 slower. You can disable this via the variable
1743 @code{gnus-group-update-tool-bar}. Its default value depends on your
1746 @node Group Line Specification
1747 @subsection Group Line Specification
1748 @cindex group buffer format
1750 The default format of the group buffer is nice and dull, but you can
1751 make it as exciting and ugly as you feel like.
1753 Here's a couple of example group lines:
1756 25: news.announce.newusers
1757 * 0: alt.fan.andrea-dworkin
1762 You can see that there are 25 unread articles in
1763 @samp{news.announce.newusers}. There are no unread articles, but some
1764 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1765 asterisk at the beginning of the line?).
1767 @vindex gnus-group-line-format
1768 You can change that format to whatever you want by fiddling with the
1769 @code{gnus-group-line-format} variable. This variable works along the
1770 lines of a @code{format} specification, which is pretty much the same as
1771 a @code{printf} specifications, for those of you who use (feh!) C.
1772 @xref{Formatting Variables}.
1774 @samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above.
1776 There should always be a colon on the line; the cursor always moves to
1777 the colon after performing an operation. @xref{Positioning
1778 Point}. Nothing else is required---not even the group name. All
1779 displayed text is just window dressing, and is never examined by Gnus.
1780 Gnus stores all real information it needs using text properties.
1782 (Note that if you make a really strange, wonderful, spreadsheet-like
1783 layout, everybody will believe you are hard at work with the accounting
1784 instead of wasting time reading news.)
1786 Here's a list of all available format characters:
1791 An asterisk if the group only has marked articles.
1794 Whether the group is subscribed.
1797 Level of subscribedness.
1800 Number of unread articles.
1803 Number of dormant articles.
1806 Number of ticked articles.
1809 Number of read articles.
1812 Number of unseen articles.
1815 Estimated total number of articles. (This is really @var{max-number}
1816 minus @var{min-number} plus 1.)
1818 Gnus uses this estimation because the @acronym{NNTP} protocol provides
1819 efficient access to @var{max-number} and @var{min-number} but getting
1820 the true unread message count is not possible efficiently. For
1821 hysterical raisins, even the mail back ends, where the true number of
1822 unread messages might be available efficiently, use the same limited
1823 interface. To remove this restriction from Gnus means that the back
1824 end interface has to be changed, which is not an easy job.
1826 The nnml backend @pxref{Mail Spool} has a feature called ``group
1827 compaction'' which circumvents this deficiency: the idea is to
1828 renumber all articles from 1, removing all gaps between numbers, hence
1829 getting a correct total count. Other backends may support this in the
1830 future. In order to keep your total article count relatively up to
1831 date, you might want to compact your groups (or even directly your
1832 server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
1835 Number of unread, unticked, non-dormant articles.
1838 Number of ticked and dormant articles.
1847 Group comment (@pxref{Group Parameters}) or group name if there is no
1848 comment element in the group parameters.
1851 Newsgroup description. You need to read the group descriptions
1852 before these will appear, and to do that, you either have to set
1853 @code{gnus-read-active-file} or use the group buffer @kbd{M-d}
1857 @samp{m} if moderated.
1860 @samp{(m)} if moderated.
1866 If the summary buffer for the group is open or not.
1872 A string that looks like @samp{<%s:%n>} if a foreign select method is
1876 Indentation based on the level of the topic (@pxref{Group Topics}).
1879 @vindex gnus-group-uncollapsed-levels
1880 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1881 variable says how many levels to leave at the end of the group name.
1882 The default is 1---this will mean that group names like
1883 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1886 @vindex gnus-new-mail-mark
1888 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1892 @samp{#} (@code{gnus-process-mark}) if the group is process marked.
1895 A string that says when you last read the group (@pxref{Group
1899 The disk space used by the articles fetched by both the cache and
1900 agent. The value is automatically scaled to bytes(B), kilobytes(K),
1901 megabytes(M), or gigabytes(G) to minimize the column width. A format
1902 of %7F is sufficient for a fixed-width column.
1905 User defined specifier. The next character in the format string should
1906 be a letter. Gnus will call the function
1907 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1908 following @samp{%u}. The function will be passed a single dummy
1909 parameter as argument. The function should return a string, which will
1910 be inserted into the buffer just like information from any other
1915 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1916 if no info is available---for instance, if it is a non-activated foreign
1917 group, or a bogus native group.
1920 @node Group Mode Line Specification
1921 @subsection Group Mode Line Specification
1922 @cindex group mode line
1924 @vindex gnus-group-mode-line-format
1925 The mode line can be changed by setting
1926 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It
1927 doesn't understand that many format specifiers:
1931 The native news server.
1933 The native select method.
1937 @node Group Highlighting
1938 @subsection Group Highlighting
1939 @cindex highlighting
1940 @cindex group highlighting
1942 @vindex gnus-group-highlight
1943 Highlighting in the group buffer is controlled by the
1944 @code{gnus-group-highlight} variable. This is an alist with elements
1945 that look like @code{(@var{form} . @var{face})}. If @var{form} evaluates to
1946 something non-@code{nil}, the @var{face} will be used on the line.
1948 Here's an example value for this variable that might look nice if the
1952 (cond (window-system
1953 (setq custom-background-mode 'light)
1954 (defface my-group-face-1
1955 '((t (:foreground "Red" :bold t))) "First group face")
1956 (defface my-group-face-2
1957 '((t (:foreground "DarkSeaGreen4" :bold t)))
1958 "Second group face")
1959 (defface my-group-face-3
1960 '((t (:foreground "Green4" :bold t))) "Third group face")
1961 (defface my-group-face-4
1962 '((t (:foreground "SteelBlue" :bold t))) "Fourth group face")
1963 (defface my-group-face-5
1964 '((t (:foreground "Blue" :bold t))) "Fifth group face")))
1966 (setq gnus-group-highlight
1967 '(((> unread 200) . my-group-face-1)
1968 ((and (< level 3) (zerop unread)) . my-group-face-2)
1969 ((< level 3) . my-group-face-3)
1970 ((zerop unread) . my-group-face-4)
1971 (t . my-group-face-5)))
1974 Also @pxref{Faces and Fonts}.
1976 Variables that are dynamically bound when the forms are evaluated
1983 The number of unread articles in the group.
1987 Whether the group is a mail group.
1989 The level of the group.
1991 The score of the group.
1993 The number of ticked articles in the group.
1995 The total number of articles in the group. Or rather,
1996 @var{max-number} minus @var{min-number} plus one.
1998 When using the topic minor mode, this variable is bound to the current
1999 topic being inserted.
2002 When the forms are @code{eval}ed, point is at the beginning of the line
2003 of the group in question, so you can use many of the normal Gnus
2004 functions for snarfing info on the group.
2006 @vindex gnus-group-update-hook
2007 @findex gnus-group-highlight-line
2008 @code{gnus-group-update-hook} is called when a group line is changed.
2009 It will not be called when @code{gnus-visual} is @code{nil}. This hook
2010 calls @code{gnus-group-highlight-line} by default.
2013 @node Group Maneuvering
2014 @section Group Maneuvering
2015 @cindex group movement
2017 All movement commands understand the numeric prefix and will behave as
2018 expected, hopefully.
2024 @findex gnus-group-next-unread-group
2025 Go to the next group that has unread articles
2026 (@code{gnus-group-next-unread-group}).
2032 @findex gnus-group-prev-unread-group
2033 Go to the previous group that has unread articles
2034 (@code{gnus-group-prev-unread-group}).
2038 @findex gnus-group-next-group
2039 Go to the next group (@code{gnus-group-next-group}).
2043 @findex gnus-group-prev-group
2044 Go to the previous group (@code{gnus-group-prev-group}).
2048 @findex gnus-group-next-unread-group-same-level
2049 Go to the next unread group on the same (or lower) level
2050 (@code{gnus-group-next-unread-group-same-level}).
2054 @findex gnus-group-prev-unread-group-same-level
2055 Go to the previous unread group on the same (or lower) level
2056 (@code{gnus-group-prev-unread-group-same-level}).
2059 Three commands for jumping to groups:
2065 @findex gnus-group-jump-to-group
2066 Jump to a group (and make it visible if it isn't already)
2067 (@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
2072 @findex gnus-group-best-unread-group
2073 Jump to the unread group with the lowest level
2074 (@code{gnus-group-best-unread-group}).
2078 @findex gnus-group-first-unread-group
2079 Jump to the first group with unread articles
2080 (@code{gnus-group-first-unread-group}).
2083 @vindex gnus-group-goto-unread
2084 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
2085 commands will move to the next group, not the next unread group. Even
2086 the commands that say they move to the next unread group. The default
2090 @node Selecting a Group
2091 @section Selecting a Group
2092 @cindex group selection
2097 @kindex SPACE (Group)
2098 @findex gnus-group-read-group
2099 Select the current group, switch to the summary buffer and display the
2100 first unread article (@code{gnus-group-read-group}). If there are no
2101 unread articles in the group, or if you give a non-numerical prefix to
2102 this command, Gnus will offer to fetch all the old articles in this
2103 group from the server. If you give a numerical prefix @var{n}, @var{n}
2104 determines the number of articles Gnus will fetch. If @var{n} is
2105 positive, Gnus fetches the @var{n} newest articles, if @var{n} is
2106 negative, Gnus fetches the @code{abs(@var{n})} oldest articles.
2108 Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
2109 articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
2110 - 4 2 SPC} fetches the 42 oldest ones.
2112 When you are in the group (in the Summary buffer), you can type
2113 @kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
2118 @findex gnus-group-select-group
2119 Select the current group and switch to the summary buffer
2120 (@code{gnus-group-select-group}). Takes the same arguments as
2121 @code{gnus-group-read-group}---the only difference is that this command
2122 does not display the first unread article automatically upon group
2126 @kindex M-RET (Group)
2127 @findex gnus-group-quick-select-group
2128 This does the same as the command above, but tries to do it with the
2129 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
2130 scoring/killing will be performed, there will be no highlights and no
2131 expunging. This might be useful if you're in a real hurry and have to
2132 enter some humongous group. If you give a 0 prefix to this command
2133 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
2134 which is useful if you want to toggle threading before generating the
2135 summary buffer (@pxref{Summary Generation Commands}).
2138 @kindex M-SPACE (Group)
2139 @findex gnus-group-visible-select-group
2140 This is yet one more command that does the same as the @kbd{RET}
2141 command, but this one does it without expunging and hiding dormants
2142 (@code{gnus-group-visible-select-group}).
2145 @kindex C-M-RET (Group)
2146 @findex gnus-group-select-group-ephemerally
2147 Finally, this command selects the current group ephemerally without
2148 doing any processing of its contents
2149 (@code{gnus-group-select-group-ephemerally}). Even threading has been
2150 turned off. Everything you do in the group after selecting it in this
2151 manner will have no permanent effects.
2155 @vindex gnus-large-newsgroup
2156 The @code{gnus-large-newsgroup} variable says what Gnus should
2157 consider to be a big group. If it is @code{nil}, no groups are
2158 considered big. The default value is 200. If the group has more
2159 (unread and/or ticked) articles than this, Gnus will query the user
2160 before entering the group. The user can then specify how many
2161 articles should be fetched from the server. If the user specifies a
2162 negative number (@var{-n}), the @var{n} oldest articles will be
2163 fetched. If it is positive, the @var{n} articles that have arrived
2164 most recently will be fetched.
2166 @vindex gnus-large-ephemeral-newsgroup
2167 @code{gnus-large-ephemeral-newsgroup} is the same as
2168 @code{gnus-large-newsgroup}, but is only used for ephemeral
2171 @vindex gnus-select-group-hook
2172 @vindex gnus-auto-select-first
2173 @vindex gnus-auto-select-subject
2174 If @code{gnus-auto-select-first} is non-@code{nil}, select an article
2175 automatically when entering a group with the @kbd{SPACE} command.
2176 Which article this is is controlled by the
2177 @code{gnus-auto-select-subject} variable. Valid values for this
2183 Place point on the subject line of the first unread article.
2186 Place point on the subject line of the first article.
2189 Place point on the subject line of the first unseen article.
2191 @item unseen-or-unread
2192 Place point on the subject line of the first unseen article, and if
2193 there is no such article, place point on the subject line of the first
2197 Place point on the subject line of the highest-scored unread article.
2201 This variable can also be a function. In that case, that function
2202 will be called to place point on a subject line.
2204 If you want to prevent automatic selection in some group (say, in a
2205 binary group with Huge articles) you can set the
2206 @code{gnus-auto-select-first} variable to @code{nil} in
2207 @code{gnus-select-group-hook}, which is called when a group is
2211 @node Subscription Commands
2212 @section Subscription Commands
2213 @cindex subscription
2221 @findex gnus-group-unsubscribe-current-group
2222 @c @icon{gnus-group-unsubscribe}
2223 Toggle subscription to the current group
2224 (@code{gnus-group-unsubscribe-current-group}).
2230 @findex gnus-group-unsubscribe-group
2231 Prompt for a group to subscribe, and then subscribe it. If it was
2232 subscribed already, unsubscribe it instead
2233 (@code{gnus-group-unsubscribe-group}).
2239 @findex gnus-group-kill-group
2240 @c @icon{gnus-group-kill-group}
2241 Kill the current group (@code{gnus-group-kill-group}).
2247 @findex gnus-group-yank-group
2248 Yank the last killed group (@code{gnus-group-yank-group}).
2251 @kindex C-x C-t (Group)
2252 @findex gnus-group-transpose-groups
2253 Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
2254 really a subscription command, but you can use it instead of a
2255 kill-and-yank sequence sometimes.
2261 @findex gnus-group-kill-region
2262 Kill all groups in the region (@code{gnus-group-kill-region}).
2266 @findex gnus-group-kill-all-zombies
2267 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
2270 @kindex S C-k (Group)
2271 @findex gnus-group-kill-level
2272 Kill all groups on a certain level (@code{gnus-group-kill-level}).
2273 These groups can't be yanked back after killing, so this command should
2274 be used with some caution. The only time where this command comes in
2275 really handy is when you have a @file{.newsrc} with lots of unsubscribed
2276 groups that you want to get rid off. @kbd{S C-k} on level 7 will
2277 kill off all unsubscribed groups that do not have message numbers in the
2278 @file{.newsrc} file.
2282 Also @pxref{Group Levels}.
2292 @findex gnus-group-catchup-current
2293 @vindex gnus-group-catchup-group-hook
2294 @c @icon{gnus-group-catchup-current}
2295 Mark all unticked articles in this group as read
2296 (@code{gnus-group-catchup-current}).
2297 @code{gnus-group-catchup-group-hook} is called when catching up a group from
2302 @findex gnus-group-catchup-current-all
2303 Mark all articles in this group, even the ticked ones, as read
2304 (@code{gnus-group-catchup-current-all}).
2308 @findex gnus-group-clear-data
2309 Clear the data from the current group---nix out marks and the list of
2310 read articles (@code{gnus-group-clear-data}).
2312 @item M-x gnus-group-clear-data-on-native-groups
2313 @kindex M-x gnus-group-clear-data-on-native-groups
2314 @findex gnus-group-clear-data-on-native-groups
2315 If you have switched from one @acronym{NNTP} server to another, all your marks
2316 and read ranges have become worthless. You can use this command to
2317 clear out all data that you have on your native groups. Use with
2324 @section Group Levels
2328 All groups have a level of @dfn{subscribedness}. For instance, if a
2329 group is on level 2, it is more subscribed than a group on level 5. You
2330 can ask Gnus to just list groups on a given level or lower
2331 (@pxref{Listing Groups}), or to just check for new articles in groups on
2332 a given level or lower (@pxref{Scanning New Messages}).
2334 Remember: The higher the level of the group, the less important it is.
2340 @findex gnus-group-set-current-level
2341 Set the level of the current group. If a numeric prefix is given, the
2342 next @var{n} groups will have their levels set. The user will be
2343 prompted for a level.
2346 @vindex gnus-level-killed
2347 @vindex gnus-level-zombie
2348 @vindex gnus-level-unsubscribed
2349 @vindex gnus-level-subscribed
2350 Gnus considers groups from levels 1 to
2351 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
2352 @code{gnus-level-subscribed} (exclusive) and
2353 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
2354 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2355 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
2356 (default 9). Gnus treats subscribed and unsubscribed groups exactly the
2357 same, but zombie and killed groups have no information on what articles
2358 you have read, etc, stored. This distinction between dead and living
2359 groups isn't done because it is nice or clever, it is done purely for
2360 reasons of efficiency.
2362 It is recommended that you keep all your mail groups (if any) on quite
2363 low levels (e.g. 1 or 2).
2365 Maybe the following description of the default behavior of Gnus helps to
2366 understand what these levels are all about. By default, Gnus shows you
2367 subscribed nonempty groups, but by hitting @kbd{L} you can have it show
2368 empty subscribed groups and unsubscribed groups, too. Type @kbd{l} to
2369 go back to showing nonempty subscribed groups again. Thus, unsubscribed
2370 groups are hidden, in a way.
2372 Zombie and killed groups are similar to unsubscribed groups in that they
2373 are hidden by default. But they are different from subscribed and
2374 unsubscribed groups in that Gnus doesn't ask the news server for
2375 information (number of messages, number of unread messages) on zombie
2376 and killed groups. Normally, you use @kbd{C-k} to kill the groups you
2377 aren't interested in. If most groups are killed, Gnus is faster.
2379 Why does Gnus distinguish between zombie and killed groups? Well, when
2380 a new group arrives on the server, Gnus by default makes it a zombie
2381 group. This means that you are normally not bothered with new groups,
2382 but you can type @kbd{A z} to get a list of all new groups. Subscribe
2383 the ones you like and kill the ones you don't want. (@kbd{A k} shows a
2384 list of killed groups.)
2386 If you want to play with the level variables, you should show some care.
2387 Set them once, and don't touch them ever again. Better yet, don't touch
2388 them at all unless you know exactly what you're doing.
2390 @vindex gnus-level-default-unsubscribed
2391 @vindex gnus-level-default-subscribed
2392 Two closely related variables are @code{gnus-level-default-subscribed}
2393 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
2394 which are the levels that new groups will be put on if they are
2395 (un)subscribed. These two variables should, of course, be inside the
2396 relevant valid ranges.
2398 @vindex gnus-keep-same-level
2399 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
2400 will only move to groups of the same level (or lower). In
2401 particular, going from the last article in one group to the next group
2402 will go to the next group of the same level (or lower). This might be
2403 handy if you want to read the most important groups before you read the
2406 If this variable is @code{best}, Gnus will make the next newsgroup the
2407 one with the best level.
2409 @vindex gnus-group-default-list-level
2410 All groups with a level less than or equal to
2411 @code{gnus-group-default-list-level} will be listed in the group buffer
2414 @vindex gnus-group-list-inactive-groups
2415 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
2416 groups will be listed along with the unread groups. This variable is
2417 @code{t} by default. If it is @code{nil}, inactive groups won't be
2420 @vindex gnus-group-use-permanent-levels
2421 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
2422 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
2423 use this level as the ``work'' level.
2425 @vindex gnus-activate-level
2426 Gnus will normally just activate (i. e., query the server about) groups
2427 on level @code{gnus-activate-level} or less. If you don't want to
2428 activate unsubscribed groups, for instance, you might set this variable
2429 to 5. The default is 6.
2433 @section Group Score
2438 You would normally keep important groups on high levels, but that scheme
2439 is somewhat restrictive. Don't you wish you could have Gnus sort the
2440 group buffer according to how often you read groups, perhaps? Within
2443 This is what @dfn{group score} is for. You can have Gnus assign a score
2444 to each group through the mechanism described below. You can then sort
2445 the group buffer based on this score. Alternatively, you can sort on
2446 score and then level. (Taken together, the level and the score is
2447 called the @dfn{rank} of the group. A group that is on level 4 and has
2448 a score of 1 has a higher rank than a group on level 5 that has a score
2449 of 300. (The level is the most significant part and the score is the
2450 least significant part.))
2452 @findex gnus-summary-bubble-group
2453 If you want groups you read often to get higher scores than groups you
2454 read seldom you can add the @code{gnus-summary-bubble-group} function to
2455 the @code{gnus-summary-exit-hook} hook. This will result (after
2456 sorting) in a bubbling sort of action. If you want to see that in
2457 action after each summary exit, you can add
2458 @code{gnus-group-sort-groups-by-rank} or
2459 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
2460 slow things down somewhat.
2463 @node Marking Groups
2464 @section Marking Groups
2465 @cindex marking groups
2467 If you want to perform some command on several groups, and they appear
2468 subsequently in the group buffer, you would normally just give a
2469 numerical prefix to the command. Most group commands will then do your
2470 bidding on those groups.
2472 However, if the groups are not in sequential order, you can still
2473 perform a command on several groups. You simply mark the groups first
2474 with the process mark and then execute the command.
2482 @findex gnus-group-mark-group
2483 Set the mark on the current group (@code{gnus-group-mark-group}).
2489 @findex gnus-group-unmark-group
2490 Remove the mark from the current group
2491 (@code{gnus-group-unmark-group}).
2495 @findex gnus-group-unmark-all-groups
2496 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
2500 @findex gnus-group-mark-region
2501 Mark all groups between point and mark (@code{gnus-group-mark-region}).
2505 @findex gnus-group-mark-buffer
2506 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
2510 @findex gnus-group-mark-regexp
2511 Mark all groups that match some regular expression
2512 (@code{gnus-group-mark-regexp}).
2515 Also @pxref{Process/Prefix}.
2517 @findex gnus-group-universal-argument
2518 If you want to execute some command on all groups that have been marked
2519 with the process mark, you can use the @kbd{M-&}
2520 (@code{gnus-group-universal-argument}) command. It will prompt you for
2521 the command to be executed.
2524 @node Foreign Groups
2525 @section Foreign Groups
2526 @cindex foreign groups
2528 Below are some group mode commands for making and editing general foreign
2529 groups, as well as commands to ease the creation of a few
2530 special-purpose groups. All these commands insert the newly created
2531 groups under point---@code{gnus-subscribe-newsgroup-method} is not
2534 Changes from the group editing commands are stored in
2535 @file{~/.newsrc.eld} (@code{gnus-startup-file}). An alternative is the
2536 variable @code{gnus-parameters}, @xref{Group Parameters}.
2542 @findex gnus-group-make-group
2543 @cindex making groups
2544 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
2545 for a name, a method and possibly an @dfn{address}. For an easier way
2546 to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}).
2550 @findex gnus-group-read-ephemeral-group
2551 Make an ephemeral group (@code{gnus-group-read-ephemeral-group}). Gnus
2552 will prompt you for a name, a method and an @dfn{address}.
2556 @findex gnus-group-rename-group
2557 @cindex renaming groups
2558 Rename the current group to something else
2559 (@code{gnus-group-rename-group}). This is valid only on some
2560 groups---mail groups mostly. This command might very well be quite slow
2566 @findex gnus-group-customize
2567 Customize the group parameters (@code{gnus-group-customize}).
2571 @findex gnus-group-edit-group-method
2572 @cindex renaming groups
2573 Enter a buffer where you can edit the select method of the current
2574 group (@code{gnus-group-edit-group-method}).
2578 @findex gnus-group-edit-group-parameters
2579 Enter a buffer where you can edit the group parameters
2580 (@code{gnus-group-edit-group-parameters}).
2584 @findex gnus-group-edit-group
2585 Enter a buffer where you can edit the group info
2586 (@code{gnus-group-edit-group}).
2590 @findex gnus-group-make-directory-group
2592 Make a directory group (@pxref{Directory Groups}). You will be prompted
2593 for a directory name (@code{gnus-group-make-directory-group}).
2598 @findex gnus-group-make-help-group
2599 Make the Gnus help group (@code{gnus-group-make-help-group}).
2603 @cindex (ding) archive
2604 @cindex archive group
2605 @findex gnus-group-make-archive-group
2606 @vindex gnus-group-archive-directory
2607 @vindex gnus-group-recent-archive-directory
2608 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
2609 default a group pointing to the most recent articles will be created
2610 (@code{gnus-group-recent-archive-directory}), but given a prefix, a full
2611 group will be created from @code{gnus-group-archive-directory}.
2615 @findex gnus-group-make-kiboze-group
2617 Make a kiboze group. You will be prompted for a name, for a regexp to
2618 match groups to be ``included'' in the kiboze group, and a series of
2619 strings to match on headers (@code{gnus-group-make-kiboze-group}).
2620 @xref{Kibozed Groups}.
2624 @findex gnus-group-enter-directory
2626 Read an arbitrary directory as if it were a newsgroup with the
2627 @code{nneething} back end (@code{gnus-group-enter-directory}).
2628 @xref{Anything Groups}.
2632 @findex gnus-group-make-doc-group
2633 @cindex ClariNet Briefs
2635 Make a group based on some file or other
2636 (@code{gnus-group-make-doc-group}). If you give a prefix to this
2637 command, you will be prompted for a file name and a file type.
2638 Currently supported types are @code{mbox}, @code{babyl},
2639 @code{digest}, @code{news}, @code{rnews}, @code{mmdf}, @code{forward},
2640 @code{rfc934}, @code{rfc822-forward}, @code{mime-parts},
2641 @code{standard-digest}, @code{slack-digest}, @code{clari-briefs},
2642 @code{nsmail}, @code{outlook}, @code{oe-dbx}, and @code{mailman}. If
2643 you run this command without a prefix, Gnus will guess at the file
2644 type. @xref{Document Groups}.
2648 @vindex gnus-useful-groups
2649 @findex gnus-group-make-useful-group
2650 Create one of the groups mentioned in @code{gnus-useful-groups}
2651 (@code{gnus-group-make-useful-group}).
2655 @findex gnus-group-make-web-group
2659 Make an ephemeral group based on a web search
2660 (@code{gnus-group-make-web-group}). If you give a prefix to this
2661 command, make a solid group instead. You will be prompted for the
2662 search engine type and the search string. Valid search engine types
2663 include @code{google}, @code{dejanews}, and @code{gmane}.
2664 @xref{Web Searches}.
2666 If you use the @code{google} search engine, you can limit the search
2667 to a particular group by using a match string like
2668 @samp{shaving group:alt.sysadmin.recovery}.
2672 @findex gnus-group-make-rss-group
2673 Make a group based on an @acronym{RSS} feed
2674 (@code{gnus-group-make-rss-group}). You will be prompted for an URL.
2678 @kindex G DEL (Group)
2679 @findex gnus-group-delete-group
2680 This function will delete the current group
2681 (@code{gnus-group-delete-group}). If given a prefix, this function will
2682 actually delete all the articles in the group, and forcibly remove the
2683 group itself from the face of the Earth. Use a prefix only if you are
2684 absolutely sure of what you are doing. This command can't be used on
2685 read-only groups (like @code{nntp} groups), though.
2689 @findex gnus-group-make-empty-virtual
2690 Make a new, fresh, empty @code{nnvirtual} group
2691 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
2695 @findex gnus-group-add-to-virtual
2696 Add the current group to an @code{nnvirtual} group
2697 (@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
2700 @xref{Select Methods}, for more information on the various select
2703 @vindex gnus-activate-foreign-newsgroups
2704 If @code{gnus-activate-foreign-newsgroups} is a positive number,
2705 Gnus will check all foreign groups with this level or lower at startup.
2706 This might take quite a while, especially if you subscribe to lots of
2707 groups from different @acronym{NNTP} servers. Also @pxref{Group Levels};
2708 @code{gnus-activate-level} also affects activation of foreign
2712 @node Group Parameters
2713 @section Group Parameters
2714 @cindex group parameters
2716 The group parameters store information local to a particular group.
2717 Here's an example group parameter list:
2720 ((to-address . "ding@@gnus.org")
2724 We see that each element consists of a ``dotted pair''---the thing before
2725 the dot is the key, while the thing after the dot is the value. All the
2726 parameters have this form @emph{except} local variable specs, which are
2727 not dotted pairs, but proper lists.
2729 Some parameters have correspondent customizable variables, each of which
2730 is an alist of regexps and values.
2732 The following group parameters can be used:
2737 Address used by when doing followups and new posts.
2740 (to-address . "some@@where.com")
2743 This is primarily useful in mail groups that represent closed mailing
2744 lists---mailing lists where it's expected that everybody that writes to
2745 the mailing list is subscribed to it. Since using this parameter
2746 ensures that the mail only goes to the mailing list itself, it means
2747 that members won't receive two copies of your followups.
2749 Using @code{to-address} will actually work whether the group is foreign
2750 or not. Let's say there's a group on the server that is called
2751 @samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2752 the articles from a mail-to-news gateway. Posting directly to this
2753 group is therefore impossible---you have to send mail to the mailing
2754 list address instead.
2756 See also @code{gnus-parameter-to-address-alist}.
2760 Address used when doing @kbd{a} in that group.
2763 (to-list . "some@@where.com")
2766 It is totally ignored
2767 when doing a followup---except that if it is present in a news group,
2768 you'll get mail group semantics when doing @kbd{f}.
2770 If you do an @kbd{a} command in a mail group and you have neither a
2771 @code{to-list} group parameter nor a @code{to-address} group parameter,
2772 then a @code{to-list} group parameter will be added automatically upon
2773 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2774 @vindex gnus-add-to-list
2776 @findex gnus-mailing-list-mode
2777 @cindex mail list groups
2778 If this variable is set, @code{gnus-mailing-list-mode} is turned on when
2779 entering summary buffer.
2781 See also @code{gnus-parameter-to-list-alist}.
2786 @cindex Mail-Followup-To
2787 @findex gnus-find-subscribed-addresses
2788 If this parameter is set to @code{t}, Gnus will consider the
2789 to-address and to-list parameters for this group as addresses of
2790 mailing lists you are subscribed to. Giving Gnus this information is
2791 (only) a first step in getting it to generate correct Mail-Followup-To
2792 headers for your posts to these lists. The second step is to put the
2793 following in your @file{.gnus.el}
2796 (setq message-subscribed-address-functions
2797 '(gnus-find-subscribed-addresses))
2800 @xref{Mailing Lists, ,Mailing Lists, message, The Message Manual}, for
2801 a complete treatment of available MFT support.
2805 If the group parameter list has the element @code{(visible . t)},
2806 that group will always be visible in the Group buffer, regardless
2807 of whether it has any unread articles.
2809 This parameter cannot be set via @code{gnus-parameters}. See
2810 @code{gnus-permanently-visible-groups} as an alternative.
2812 @item broken-reply-to
2813 @cindex broken-reply-to
2814 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2815 headers in this group are to be ignored, and for the header to be hidden
2816 if @code{reply-to} is part of @code{gnus-boring-article-headers}. This
2817 can be useful if you're reading a mailing list group where the listserv
2818 has inserted @code{Reply-To} headers that point back to the listserv
2819 itself. That is broken behavior. So there!
2823 Elements like @code{(to-group . "some.group.name")} means that all
2824 posts in that group will be sent to @code{some.group.name}.
2828 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2829 will treat all responses as if they were responses to news articles.
2830 This can be useful if you have a mail group that's really a mirror of a
2835 If @code{(gcc-self . t)} is present in the group parameter list, newly
2836 composed messages will be @code{Gcc}'d to the current group. If
2837 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2838 generated, if @code{(gcc-self . "string")} is present, this string will
2839 be inserted literally as a @code{gcc} header. This parameter takes
2840 precedence over any default @code{Gcc} rules as described later
2841 (@pxref{Archived Messages}).
2843 @strong{Caveat}: Adding @code{(gcc-self . t)} to the parameter list of
2844 @code{nntp} groups (or the like) isn't valid. An @code{nntp} server
2845 doesn't accept articles.
2849 @cindex expiring mail
2850 If the group parameter has an element that looks like @code{(auto-expire
2851 . t)}, all articles read will be marked as expirable. For an
2852 alternative approach, @pxref{Expiring Mail}.
2854 See also @code{gnus-auto-expirable-newsgroups}.
2857 @cindex total-expire
2858 @cindex expiring mail
2859 If the group parameter has an element that looks like
2860 @code{(total-expire . t)}, all read articles will be put through the
2861 expiry process, even if they are not marked as expirable. Use with
2862 caution. Unread, ticked and dormant articles are not eligible for
2865 See also @code{gnus-total-expirable-newsgroups}.
2869 @vindex nnmail-expiry-wait-function
2870 If the group parameter has an element that looks like
2871 @code{(expiry-wait . 10)}, this value will override any
2872 @code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function}
2873 (@pxref{Expiring Mail}) when expiring expirable messages. The value
2874 can either be a number of days (not necessarily an integer) or the
2875 symbols @code{never} or @code{immediate}.
2878 @cindex expiry-target
2879 Where expired messages end up. This parameter overrides
2880 @code{nnmail-expiry-target}.
2883 @cindex score file group parameter
2884 Elements that look like @code{(score-file . "file")} will make
2885 @file{file} into the current score file for the group in question. All
2886 interactive score entries will be put into this file.
2889 @cindex adapt file group parameter
2890 Elements that look like @code{(adapt-file . "file")} will make
2891 @file{file} into the current adaptive file for the group in question.
2892 All adaptive score entries will be put into this file.
2895 @cindex admin-address
2896 When unsubscribing from a mailing list you should never send the
2897 unsubscription notice to the mailing list itself. Instead, you'd send
2898 messages to the administrative address. This parameter allows you to
2899 put the admin address somewhere convenient.
2903 Elements that look like @code{(display . MODE)} say which articles to
2904 display on entering the group. Valid values are:
2908 Display all articles, both read and unread.
2911 Display the last @var{integer} articles in the group. This is the same as
2912 entering the group with @kbd{C-u @var{integer}}.
2915 Display the default visible articles, which normally includes unread and
2919 Display articles that satisfy a predicate.
2921 Here are some examples:
2925 Display only unread articles.
2928 Display everything except expirable articles.
2930 @item [and (not reply) (not expire)]
2931 Display everything except expirable and articles you've already
2935 The available operators are @code{not}, @code{and} and @code{or}.
2936 Predicates include @code{tick}, @code{unsend}, @code{undownload},
2937 @code{unread}, @code{dormant}, @code{expire}, @code{reply},
2938 @code{killed}, @code{bookmark}, @code{score}, @code{save},
2939 @code{cache}, @code{forward}, @code{unseen} and @code{recent}.
2943 The @code{display} parameter works by limiting the summary buffer to
2944 the subset specified. You can pop the limit by using the @kbd{/ w}
2945 command (@pxref{Limiting}).
2949 Elements that look like @code{(comment . "This is a comment")} are
2950 arbitrary comments on the group. You can display comments in the
2951 group line (@pxref{Group Line Specification}).
2955 Elements that look like @code{(charset . iso-8859-1)} will make
2956 @code{iso-8859-1} the default charset; that is, the charset that will be
2957 used for all articles that do not specify a charset.
2959 See also @code{gnus-group-charset-alist}.
2961 @item ignored-charsets
2962 @cindex ignored-charset
2963 Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)}
2964 will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
2965 default charset will be used for decoding articles.
2967 See also @code{gnus-group-ignored-charsets-alist}.
2970 @cindex posting-style
2971 You can store additional posting style information for this group
2972 here (@pxref{Posting Styles}). The format is that of an entry in the
2973 @code{gnus-posting-styles} alist, except that there's no regexp matching
2974 the group name (of course). Style elements in this group parameter will
2975 take precedence over the ones found in @code{gnus-posting-styles}.
2977 For instance, if you want a funky name and signature in this group only,
2978 instead of hacking @code{gnus-posting-styles}, you could put something
2979 like this in the group parameters:
2984 ("X-My-Header" "Funky Value")
2985 (signature "Funky Signature"))
2988 If you're using topics to organize your group buffer
2989 (@pxref{Group Topics}), note that posting styles can also be set in
2990 the topics parameters. Posting styles in topic parameters apply to all
2991 groups in this topic. More precisely, the posting-style settings for a
2992 group result from the hierarchical merging of all posting-style
2993 entries in the parameters of this group and all the topics it belongs
2999 If it is set, the value is used as the method for posting message
3000 instead of @code{gnus-post-method}.
3004 An item like @code{(banner . @var{regexp})} causes any part of an article
3005 that matches the regular expression @var{regexp} to be stripped. Instead of
3006 @var{regexp}, you can also use the symbol @code{signature} which strips the
3007 last signature or any of the elements of the alist
3008 @code{gnus-article-banner-alist}.
3012 This parameter contains a Sieve test that should match incoming mail
3013 that should be placed in this group. From this group parameter, a
3014 Sieve @samp{IF} control structure is generated, having the test as the
3015 condition and @samp{fileinto "group.name";} as the body.
3017 For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve
3018 address "sender" "sieve-admin@@extundo.com")} group parameter, when
3019 translating the group parameter into a Sieve script (@pxref{Sieve
3020 Commands}) the following Sieve code is generated:
3023 if address "sender" "sieve-admin@@extundo.com" @{
3024 fileinto "INBOX.list.sieve";
3028 To generate tests for multiple email-addresses use a group parameter
3029 like @code{(sieve address "sender" ("name@@one.org" else@@two.org"))}.
3030 When generating a sieve script (@pxref{Sieve Commands}) Sieve code
3031 like the following is generated:
3034 if address "sender" ["name@@one.org", "else@@two.org"] @{
3035 fileinto "INBOX.list.sieve";
3039 See @pxref{Sieve Commands} for commands and variables that might be of
3040 interest in relation to the sieve parameter.
3042 The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve,
3043 Top, sieve, Emacs Sieve}.
3045 @item (agent parameters)
3046 If the agent has been enabled, you can set any of the its parameters
3047 to control the behavior of the agent in individual groups. See Agent
3048 Parameters in @ref{Category Syntax}. Most users will choose to set
3049 agent parameters in either an agent category or group topic to
3050 minimize the configuration effort.
3052 @item (@var{variable} @var{form})
3053 You can use the group parameters to set variables local to the group you
3054 are entering. If you want to turn threading off in @samp{news.answers},
3055 you could put @code{(gnus-show-threads nil)} in the group parameters of
3056 that group. @code{gnus-show-threads} will be made into a local variable
3057 in the summary buffer you enter, and the form @code{nil} will be
3058 @code{eval}ed there.
3060 Note that this feature sets the variable locally to the summary buffer.
3061 But some variables are evaluated in the article buffer, or in the
3062 message buffer (of a reply or followup or otherwise newly created
3063 message). As a workaround, it might help to add the variable in
3064 question to @code{gnus-newsgroup-variables}. @xref{Various Summary
3065 Stuff}. So if you want to set @code{message-from-style} via the group
3066 parameters, then you may need the following statement elsewhere in your
3067 @file{~/.gnus} file:
3070 (add-to-list 'gnus-newsgroup-variables 'message-from-style)
3073 @vindex gnus-list-identifiers
3074 A use for this feature is to remove a mailing list identifier tag in
3075 the subject fields of articles. E.g. if the news group
3078 nntp+news.gnus.org:gmane.text.docbook.apps
3081 has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this
3082 tag can be removed from the article subjects in the summary buffer for
3083 the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
3084 into the group parameters for the group.
3086 This can also be used as a group-specific hook function. If you want to
3087 hear a beep when you enter a group, you could put something like
3088 @code{(dummy-variable (ding))} in the parameters of that group.
3089 @code{dummy-variable} will be set to the (meaningless) result of the
3092 Alternatively, since the VARIABLE becomes local to the group, this
3093 pattern can be used to temporarily change a hook. For example, if the
3094 following is added to a group parameter
3097 (gnus-summary-prepared-hook
3098 '(lambda nil (local-set-key "d" (local-key-binding "n"))))
3101 when the group is entered, the 'd' key will not mark the article as
3106 Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
3107 group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
3108 presents you with a Customize-like interface. The latter helps avoid
3109 silly Lisp errors.) You might also be interested in reading about topic
3110 parameters (@pxref{Topic Parameters}).
3112 @vindex gnus-parameters
3113 Group parameters can be set via the @code{gnus-parameters} variable too.
3114 But some variables, such as @code{visible}, have no effect (For this
3115 case see @code{gnus-permanently-visible-groups} as an alternative.).
3119 (setq gnus-parameters
3121 (gnus-show-threads nil)
3122 (gnus-use-scoring nil)
3123 (gnus-summary-line-format
3124 "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
3128 ("^nnimap:\\(foo.bar\\)$"
3132 (gnus-use-scoring t))
3136 (broken-reply-to . t))))
3139 String value of parameters will be subjected to regexp substitution, as
3140 the @code{to-group} example shows.
3142 @vindex gnus-parameters-case-fold-search
3143 By default, whether comparing the group name and one of those regexps
3144 specified in @code{gnus-parameters} is done in a case-sensitive manner
3145 or a case-insensitive manner depends on the value of
3146 @code{case-fold-search} at the time when the comparison is done. The
3147 value of @code{case-fold-search} is typically @code{t}; it means, for
3148 example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
3149 applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
3150 group. If you want to make those regexps always case-sensitive, set the
3151 value of the @code{gnus-parameters-case-fold-search} variable to
3152 @code{nil}. Otherwise, set it to @code{t} if you want to compare them
3153 always in a case-insensitive manner.
3155 You can define different sorting to different groups via
3156 @code{gnus-parameters}. Here is an example to sort an @acronym{NNTP}
3157 group by reverse date to see the latest news at the top and an
3158 @acronym{RSS} group by subject. In this example, the first group is the
3159 Debian daily news group @code{gmane.linux.debian.user.news} from
3160 news.gmane.org. The @acronym{RSS} group corresponds to the Debian
3161 weekly news RSS feed
3162 @url{http://packages.debian.org/unstable/newpkg_main.en.rdf},
3168 '(("nntp.*gmane\\.debian\\.user\\.news"
3169 (gnus-show-threads nil)
3170 (gnus-article-sort-functions '((not gnus-article-sort-by-date)))
3171 (gnus-use-adaptive-scoring nil)
3172 (gnus-use-scoring nil))
3174 (gnus-show-threads nil)
3175 (gnus-article-sort-functions 'gnus-article-sort-by-subject)
3176 (gnus-use-adaptive-scoring nil)
3177 (gnus-use-scoring t)
3178 (gnus-score-find-score-files-function 'gnus-score-find-single)
3179 (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
3183 @node Listing Groups
3184 @section Listing Groups
3185 @cindex group listing
3187 These commands all list various slices of the groups available.
3195 @findex gnus-group-list-groups
3196 List all groups that have unread articles
3197 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
3198 command will list only groups of level ARG and lower. By default, it
3199 only lists groups of level five (i.e.,
3200 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
3207 @findex gnus-group-list-all-groups
3208 List all groups, whether they have unread articles or not
3209 (@code{gnus-group-list-all-groups}). If the numeric prefix is used,
3210 this command will list only groups of level ARG and lower. By default,
3211 it lists groups of level seven or lower (i.e., just subscribed and
3212 unsubscribed groups).
3216 @findex gnus-group-list-level
3217 List all unread groups on a specific level
3218 (@code{gnus-group-list-level}). If given a prefix, also list the groups
3219 with no unread articles.
3223 @findex gnus-group-list-killed
3224 List all killed groups (@code{gnus-group-list-killed}). If given a
3225 prefix argument, really list all groups that are available, but aren't
3226 currently (un)subscribed. This could entail reading the active file
3231 @findex gnus-group-list-zombies
3232 List all zombie groups (@code{gnus-group-list-zombies}).
3236 @findex gnus-group-list-matching
3237 List all unread, subscribed groups with names that match a regexp
3238 (@code{gnus-group-list-matching}).
3242 @findex gnus-group-list-all-matching
3243 List groups that match a regexp (@code{gnus-group-list-all-matching}).
3247 @findex gnus-group-list-active
3248 List absolutely all groups in the active file(s) of the
3249 server(s) you are connected to (@code{gnus-group-list-active}). This
3250 might very well take quite a while. It might actually be a better idea
3251 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
3252 thing to match on. Also note that this command may list groups that
3253 don't exist (yet)---these will be listed as if they were killed groups.
3254 Take the output with some grains of salt.
3258 @findex gnus-group-apropos
3259 List all groups that have names that match a regexp
3260 (@code{gnus-group-apropos}).
3264 @findex gnus-group-description-apropos
3265 List all groups that have names or descriptions that match a regexp
3266 (@code{gnus-group-description-apropos}).
3270 @findex gnus-group-list-cached
3271 List all groups with cached articles (@code{gnus-group-list-cached}).
3275 @findex gnus-group-list-dormant
3276 List all groups with dormant articles (@code{gnus-group-list-dormant}).
3280 @findex gnus-group-list-limit
3281 List groups limited within the current selection
3282 (@code{gnus-group-list-limit}).
3286 @findex gnus-group-list-flush
3287 Flush groups from the current selection (@code{gnus-group-list-flush}).
3291 @findex gnus-group-list-plus
3292 List groups plus the current selection (@code{gnus-group-list-plus}).
3296 @vindex gnus-permanently-visible-groups
3297 @cindex visible group parameter
3298 Groups that match the @code{gnus-permanently-visible-groups} regexp will
3299 always be shown, whether they have unread articles or not. You can also
3300 add the @code{visible} element to the group parameters in question to
3301 get the same effect.
3303 @vindex gnus-list-groups-with-ticked-articles
3304 Groups that have just ticked articles in it are normally listed in the
3305 group buffer. If @code{gnus-list-groups-with-ticked-articles} is
3306 @code{nil}, these groups will be treated just like totally empty
3307 groups. It is @code{t} by default.
3310 @node Sorting Groups
3311 @section Sorting Groups
3312 @cindex sorting groups
3314 @kindex C-c C-s (Group)
3315 @findex gnus-group-sort-groups
3316 @vindex gnus-group-sort-function
3317 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3318 group buffer according to the function(s) given by the
3319 @code{gnus-group-sort-function} variable. Available sorting functions
3324 @item gnus-group-sort-by-alphabet
3325 @findex gnus-group-sort-by-alphabet
3326 Sort the group names alphabetically. This is the default.
3328 @item gnus-group-sort-by-real-name
3329 @findex gnus-group-sort-by-real-name
3330 Sort the group alphabetically on the real (unprefixed) group names.
3332 @item gnus-group-sort-by-level
3333 @findex gnus-group-sort-by-level
3334 Sort by group level.
3336 @item gnus-group-sort-by-score
3337 @findex gnus-group-sort-by-score
3338 Sort by group score. @xref{Group Score}.
3340 @item gnus-group-sort-by-rank
3341 @findex gnus-group-sort-by-rank
3342 Sort by group score and then the group level. The level and the score
3343 are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
3345 @item gnus-group-sort-by-unread
3346 @findex gnus-group-sort-by-unread
3347 Sort by number of unread articles.
3349 @item gnus-group-sort-by-method
3350 @findex gnus-group-sort-by-method
3351 Sort alphabetically on the select method.
3353 @item gnus-group-sort-by-server
3354 @findex gnus-group-sort-by-server
3355 Sort alphabetically on the Gnus server name.
3360 @code{gnus-group-sort-function} can also be a list of sorting
3361 functions. In that case, the most significant sort key function must be
3365 There are also a number of commands for sorting directly according to
3366 some sorting criteria:
3370 @kindex G S a (Group)
3371 @findex gnus-group-sort-groups-by-alphabet
3372 Sort the group buffer alphabetically by group name
3373 (@code{gnus-group-sort-groups-by-alphabet}).
3376 @kindex G S u (Group)
3377 @findex gnus-group-sort-groups-by-unread
3378 Sort the group buffer by the number of unread articles
3379 (@code{gnus-group-sort-groups-by-unread}).
3382 @kindex G S l (Group)
3383 @findex gnus-group-sort-groups-by-level
3384 Sort the group buffer by group level
3385 (@code{gnus-group-sort-groups-by-level}).
3388 @kindex G S v (Group)
3389 @findex gnus-group-sort-groups-by-score
3390 Sort the group buffer by group score
3391 (@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
3394 @kindex G S r (Group)
3395 @findex gnus-group-sort-groups-by-rank
3396 Sort the group buffer by group rank
3397 (@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
3400 @kindex G S m (Group)
3401 @findex gnus-group-sort-groups-by-method
3402 Sort the group buffer alphabetically by back end name@*
3403 (@code{gnus-group-sort-groups-by-method}).
3406 @kindex G S n (Group)
3407 @findex gnus-group-sort-groups-by-real-name
3408 Sort the group buffer alphabetically by real (unprefixed) group name
3409 (@code{gnus-group-sort-groups-by-real-name}).
3413 All the commands below obey the process/prefix convention
3414 (@pxref{Process/Prefix}).
3416 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3417 commands will sort in reverse order.
3419 You can also sort a subset of the groups:
3423 @kindex G P a (Group)
3424 @findex gnus-group-sort-selected-groups-by-alphabet
3425 Sort the groups alphabetically by group name
3426 (@code{gnus-group-sort-selected-groups-by-alphabet}).
3429 @kindex G P u (Group)
3430 @findex gnus-group-sort-selected-groups-by-unread
3431 Sort the groups by the number of unread articles
3432 (@code{gnus-group-sort-selected-groups-by-unread}).
3435 @kindex G P l (Group)
3436 @findex gnus-group-sort-selected-groups-by-level
3437 Sort the groups by group level
3438 (@code{gnus-group-sort-selected-groups-by-level}).
3441 @kindex G P v (Group)
3442 @findex gnus-group-sort-selected-groups-by-score
3443 Sort the groups by group score
3444 (@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
3447 @kindex G P r (Group)
3448 @findex gnus-group-sort-selected-groups-by-rank
3449 Sort the groups by group rank
3450 (@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
3453 @kindex G P m (Group)
3454 @findex gnus-group-sort-selected-groups-by-method
3455 Sort the groups alphabetically by back end name@*
3456 (@code{gnus-group-sort-selected-groups-by-method}).
3459 @kindex G P n (Group)
3460 @findex gnus-group-sort-selected-groups-by-real-name
3461 Sort the groups alphabetically by real (unprefixed) group name
3462 (@code{gnus-group-sort-selected-groups-by-real-name}).
3465 @kindex G P s (Group)
3466 @findex gnus-group-sort-selected-groups
3467 Sort the groups according to @code{gnus-group-sort-function}.
3471 And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3475 @node Group Maintenance
3476 @section Group Maintenance
3477 @cindex bogus groups
3482 @findex gnus-group-check-bogus-groups
3483 Find bogus groups and delete them
3484 (@code{gnus-group-check-bogus-groups}).
3488 @findex gnus-group-find-new-groups
3489 Find new groups and process them (@code{gnus-group-find-new-groups}).
3490 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3491 for new groups. With 2 @kbd{C-u}'s, use most complete method possible
3492 to query the server for new groups, and subscribe the new groups as
3496 @kindex C-c C-x (Group)
3497 @findex gnus-group-expire-articles
3498 @cindex expiring mail
3499 Run all expirable articles in the current group through the expiry
3500 process (if any) (@code{gnus-group-expire-articles}). That is, delete
3501 all expirable articles in the group that have been around for a while.
3502 (@pxref{Expiring Mail}).
3505 @kindex C-c C-M-x (Group)
3506 @findex gnus-group-expire-all-groups
3507 @cindex expiring mail
3508 Run all expirable articles in all groups through the expiry process
3509 (@code{gnus-group-expire-all-groups}).
3514 @node Browse Foreign Server
3515 @section Browse Foreign Server
3516 @cindex foreign servers
3517 @cindex browsing servers
3522 @findex gnus-group-browse-foreign-server
3523 You will be queried for a select method and a server name. Gnus will
3524 then attempt to contact this server and let you browse the groups there
3525 (@code{gnus-group-browse-foreign-server}).
3528 @findex gnus-browse-mode
3529 A new buffer with a list of available groups will appear. This buffer
3530 will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
3531 a lot) like a normal group buffer.
3533 Here's a list of keystrokes available in the browse mode:
3538 @findex gnus-group-next-group
3539 Go to the next group (@code{gnus-group-next-group}).
3543 @findex gnus-group-prev-group
3544 Go to the previous group (@code{gnus-group-prev-group}).
3547 @kindex SPACE (Browse)
3548 @findex gnus-browse-read-group
3549 Enter the current group and display the first article
3550 (@code{gnus-browse-read-group}).
3553 @kindex RET (Browse)
3554 @findex gnus-browse-select-group
3555 Enter the current group (@code{gnus-browse-select-group}).
3559 @findex gnus-browse-unsubscribe-current-group
3560 Unsubscribe to the current group, or, as will be the case here,
3561 subscribe to it (@code{gnus-browse-unsubscribe-current-group}).
3567 @findex gnus-browse-exit
3568 Exit browse mode (@code{gnus-browse-exit}).
3572 @findex gnus-browse-describe-group
3573 Describe the current group (@code{gnus-browse-describe-group}).
3577 @findex gnus-browse-describe-briefly
3578 Describe browse mode briefly (well, there's not much to describe, is
3579 there) (@code{gnus-browse-describe-briefly}).
3584 @section Exiting Gnus
3585 @cindex exiting Gnus
3587 Yes, Gnus is ex(c)iting.
3592 @findex gnus-group-suspend
3593 Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
3594 but it kills all buffers except the Group buffer. I'm not sure why this
3595 is a gain, but then who am I to judge?
3599 @findex gnus-group-exit
3600 @c @icon{gnus-group-exit}
3601 Quit Gnus (@code{gnus-group-exit}).
3605 @findex gnus-group-quit
3606 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3607 The dribble file will be saved, though (@pxref{Auto Save}).
3610 @vindex gnus-exit-gnus-hook
3611 @vindex gnus-suspend-gnus-hook
3612 @vindex gnus-after-exiting-gnus-hook
3613 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3614 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3615 @code{gnus-after-exiting-gnus-hook} is called as the final item when
3621 Miss Lisa Cannifax, while sitting in English class, felt her feet go
3622 numbly heavy and herself fall into a hazy trance as the boy sitting
3623 behind her drew repeated lines with his pencil across the back of her
3629 @section Group Topics
3632 If you read lots and lots of groups, it might be convenient to group
3633 them hierarchically according to topics. You put your Emacs groups over
3634 here, your sex groups over there, and the rest (what, two groups or so?)
3635 you put in some misc section that you never bother with anyway. You can
3636 even group the Emacs sex groups as a sub-topic to either the Emacs
3637 groups or the sex groups---or both! Go wild!
3641 \gnusfigure{Group Topics}{400}{
3642 \put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
3653 2: alt.religion.emacs
3656 0: comp.talk.emacs.recovery
3658 8: comp.binaries.fractals
3659 13: comp.sources.unix
3662 @findex gnus-topic-mode
3664 To get this @emph{fab} functionality you simply turn on (ooh!) the
3665 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
3666 is a toggling command.)
3668 Go ahead, just try it. I'll still be here when you get back. La de
3669 dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3670 Yes, and now press @kbd{l}. There. All your groups are now listed
3671 under @samp{misc}. Doesn't that make you feel all warm and fuzzy?
3674 If you want this permanently enabled, you should add that minor mode to
3675 the hook for the group mode. Put the following line in your
3676 @file{~/.gnus.el} file:
3679 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3683 * Topic Commands:: Interactive E-Z commands.
3684 * Topic Variables:: How to customize the topics the Lisp Way.
3685 * Topic Sorting:: Sorting each topic individually.
3686 * Topic Topology:: A map of the world.
3687 * Topic Parameters:: Parameters that apply to all groups in a topic.
3691 @node Topic Commands
3692 @subsection Topic Commands
3693 @cindex topic commands
3695 When the topic minor mode is turned on, a new @kbd{T} submap will be
3696 available. In addition, a few of the standard keys change their
3697 definitions slightly.
3699 In general, the following kinds of operations are possible on topics.
3700 First of all, you want to create topics. Secondly, you want to put
3701 groups in topics and to move them around until you have an order you
3702 like. The third kind of operation is to show/hide parts of the whole
3703 shebang. You might want to hide a topic including its subtopics and
3704 groups, to get a better overview of the other groups.
3706 Here is a list of the basic keys that you might need to set up topics
3713 @findex gnus-topic-create-topic
3714 Prompt for a new topic name and create it
3715 (@code{gnus-topic-create-topic}).
3719 @kindex T TAB (Topic)
3721 @findex gnus-topic-indent
3722 ``Indent'' the current topic so that it becomes a sub-topic of the
3723 previous topic (@code{gnus-topic-indent}). If given a prefix,
3724 ``un-indent'' the topic instead.
3727 @kindex M-TAB (Topic)
3728 @findex gnus-topic-unindent
3729 ``Un-indent'' the current topic so that it becomes a sub-topic of the
3730 parent of its current parent (@code{gnus-topic-unindent}).
3734 The following two keys can be used to move groups and topics around.
3735 They work like the well-known cut and paste. @kbd{C-k} is like cut and
3736 @kbd{C-y} is like paste. Of course, this being Emacs, we use the terms
3737 kill and yank rather than cut and paste.
3743 @findex gnus-topic-kill-group
3744 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
3745 topic will be removed along with the topic.
3749 @findex gnus-topic-yank-group
3750 Yank the previously killed group or topic
3751 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
3754 So, to move a topic to the beginning of the list of topics, just hit
3755 @kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then,
3756 move the cursor to the beginning of the buffer (just below the ``Gnus''
3757 topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and
3758 paste. Like I said -- E-Z.
3760 You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So
3761 you can move topics around as well as groups.
3765 After setting up the topics the way you like them, you might wish to
3766 hide a topic, or to show it again. That's why we have the following
3773 @findex gnus-topic-select-group
3775 Either select a group or fold a topic (@code{gnus-topic-select-group}).
3776 When you perform this command on a group, you'll enter the group, as
3777 usual. When done on a topic line, the topic will be folded (if it was
3778 visible) or unfolded (if it was folded already). So it's basically a
3779 toggling command on topics. In addition, if you give a numerical
3780 prefix, group on that level (and lower) will be displayed.
3784 Now for a list of other commands, in no particular order.
3790 @findex gnus-topic-move-group
3791 Move the current group to some other topic
3792 (@code{gnus-topic-move-group}). This command uses the process/prefix
3793 convention (@pxref{Process/Prefix}).
3797 @findex gnus-topic-jump-to-topic
3798 Go to a topic (@code{gnus-topic-jump-to-topic}).
3802 @findex gnus-topic-copy-group
3803 Copy the current group to some other topic
3804 (@code{gnus-topic-copy-group}). This command uses the process/prefix
3805 convention (@pxref{Process/Prefix}).
3809 @findex gnus-topic-hide-topic
3810 Hide the current topic (@code{gnus-topic-hide-topic}). If given
3811 a prefix, hide the topic permanently.
3815 @findex gnus-topic-show-topic
3816 Show the current topic (@code{gnus-topic-show-topic}). If given
3817 a prefix, show the topic permanently.
3821 @findex gnus-topic-remove-group
3822 Remove a group from the current topic (@code{gnus-topic-remove-group}).
3823 This command is mainly useful if you have the same group in several
3824 topics and wish to remove it from one of the topics. You may also
3825 remove a group from all topics, but in that case, Gnus will add it to
3826 the root topic the next time you start Gnus. In fact, all new groups
3827 (which, naturally, don't belong to any topic) will show up in the root
3830 This command uses the process/prefix convention
3831 (@pxref{Process/Prefix}).
3835 @findex gnus-topic-move-matching
3836 Move all groups that match some regular expression to a topic
3837 (@code{gnus-topic-move-matching}).
3841 @findex gnus-topic-copy-matching
3842 Copy all groups that match some regular expression to a topic
3843 (@code{gnus-topic-copy-matching}).
3847 @findex gnus-topic-toggle-display-empty-topics
3848 Toggle hiding empty topics
3849 (@code{gnus-topic-toggle-display-empty-topics}).
3853 @findex gnus-topic-mark-topic
3854 Mark all groups in the current topic with the process mark
3855 (@code{gnus-topic-mark-topic}). This command works recursively on
3856 sub-topics unless given a prefix.
3859 @kindex T M-# (Topic)
3860 @findex gnus-topic-unmark-topic
3861 Remove the process mark from all groups in the current topic
3862 (@code{gnus-topic-unmark-topic}). This command works recursively on
3863 sub-topics unless given a prefix.
3866 @kindex C-c C-x (Topic)
3867 @findex gnus-topic-expire-articles
3868 @cindex expiring mail
3869 Run all expirable articles in the current group or topic through the
3870 expiry process (if any)
3871 (@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
3875 @findex gnus-topic-rename
3876 Rename a topic (@code{gnus-topic-rename}).
3879 @kindex T DEL (Topic)
3880 @findex gnus-topic-delete
3881 Delete an empty topic (@code{gnus-topic-delete}).
3885 @findex gnus-topic-list-active
3886 List all groups that Gnus knows about in a topics-ified way
3887 (@code{gnus-topic-list-active}).
3890 @kindex T M-n (Topic)
3891 @findex gnus-topic-goto-next-topic
3892 Go to the next topic (@code{gnus-topic-goto-next-topic}).
3895 @kindex T M-p (Topic)
3896 @findex gnus-topic-goto-previous-topic
3897 Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
3901 @findex gnus-topic-edit-parameters
3902 @cindex group parameters
3903 @cindex topic parameters
3905 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3906 @xref{Topic Parameters}.
3911 @node Topic Variables
3912 @subsection Topic Variables
3913 @cindex topic variables
3915 The previous section told you how to tell Gnus which topics to display.
3916 This section explains how to tell Gnus what to display about each topic.
3918 @vindex gnus-topic-line-format
3919 The topic lines themselves are created according to the
3920 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3933 Number of groups in the topic.
3935 Number of unread articles in the topic.
3937 Number of unread articles in the topic and all its subtopics.
3940 @vindex gnus-topic-indent-level
3941 Each sub-topic (and the groups in the sub-topics) will be indented with
3942 @code{gnus-topic-indent-level} times the topic level number of spaces.
3945 @vindex gnus-topic-mode-hook
3946 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
3948 @vindex gnus-topic-display-empty-topics
3949 The @code{gnus-topic-display-empty-topics} says whether to display even
3950 topics that have no unread articles in them. The default is @code{t}.
3954 @subsection Topic Sorting
3955 @cindex topic sorting
3957 You can sort the groups in each topic individually with the following
3963 @kindex T S a (Topic)
3964 @findex gnus-topic-sort-groups-by-alphabet
3965 Sort the current topic alphabetically by group name
3966 (@code{gnus-topic-sort-groups-by-alphabet}).
3969 @kindex T S u (Topic)
3970 @findex gnus-topic-sort-groups-by-unread
3971 Sort the current topic by the number of unread articles
3972 (@code{gnus-topic-sort-groups-by-unread}).
3975 @kindex T S l (Topic)
3976 @findex gnus-topic-sort-groups-by-level
3977 Sort the current topic by group level
3978 (@code{gnus-topic-sort-groups-by-level}).
3981 @kindex T S v (Topic)
3982 @findex gnus-topic-sort-groups-by-score
3983 Sort the current topic by group score
3984 (@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
3987 @kindex T S r (Topic)
3988 @findex gnus-topic-sort-groups-by-rank
3989 Sort the current topic by group rank
3990 (@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
3993 @kindex T S m (Topic)
3994 @findex gnus-topic-sort-groups-by-method
3995 Sort the current topic alphabetically by back end name
3996 (@code{gnus-topic-sort-groups-by-method}).
3999 @kindex T S e (Topic)
4000 @findex gnus-topic-sort-groups-by-server
4001 Sort the current topic alphabetically by server name
4002 (@code{gnus-topic-sort-groups-by-server}).
4005 @kindex T S s (Topic)
4006 @findex gnus-topic-sort-groups
4007 Sort the current topic according to the function(s) given by the
4008 @code{gnus-group-sort-function} variable
4009 (@code{gnus-topic-sort-groups}).
4013 When given a prefix argument, all these commands will sort in reverse
4014 order. @xref{Sorting Groups}, for more information about group
4018 @node Topic Topology
4019 @subsection Topic Topology
4020 @cindex topic topology
4023 So, let's have a look at an example group buffer:
4030 2: alt.religion.emacs
4033 0: comp.talk.emacs.recovery
4035 8: comp.binaries.fractals
4036 13: comp.sources.unix
4040 So, here we have one top-level topic (@samp{Gnus}), two topics under
4041 that, and one sub-topic under one of the sub-topics. (There is always
4042 just one (1) top-level topic). This topology can be expressed as
4047 (("Emacs -- I wuw it!" visible)
4048 (("Naughty Emacs" visible)))
4052 @vindex gnus-topic-topology
4053 This is in fact how the variable @code{gnus-topic-topology} would look
4054 for the display above. That variable is saved in the @file{.newsrc.eld}
4055 file, and shouldn't be messed with manually---unless you really want
4056 to. Since this variable is read from the @file{.newsrc.eld} file,
4057 setting it in any other startup files will have no effect.
4059 This topology shows what topics are sub-topics of what topics (right),
4060 and which topics are visible. Two settings are currently
4061 allowed---@code{visible} and @code{invisible}.
4064 @node Topic Parameters
4065 @subsection Topic Parameters
4066 @cindex topic parameters
4068 All groups in a topic will inherit group parameters from the parent
4069 (and ancestor) topic parameters. All valid group parameters are valid
4070 topic parameters (@pxref{Group Parameters}). When the agent is
4071 enabled, all agent parameters (See Agent Parameters in @ref{Category
4072 Syntax}) are also valid topic parameters.
4074 In addition, the following parameters are only valid as topic
4079 When subscribing new groups by topic (@pxref{Subscription Methods}), the
4080 @code{subscribe} topic parameter says what groups go in what topic. Its
4081 value should be a regexp to match the groups that should go in that
4084 @item subscribe-level
4085 When subscribing new groups by topic (see the @code{subscribe} parameter),
4086 the group will be subscribed with the level specified in the
4087 @code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
4091 Group parameters (of course) override topic parameters, and topic
4092 parameters in sub-topics override topic parameters in super-topics. You
4093 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
4094 verb, although you may feel free to disagree with me here.)
4101 2: alt.religion.emacs
4105 0: comp.talk.emacs.recovery
4107 8: comp.binaries.fractals
4108 13: comp.sources.unix
4113 The @samp{Emacs} topic has the topic parameter @code{(score-file
4114 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4115 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4116 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
4117 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4118 . "religion.SCORE")}.
4120 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4121 will get the @file{relief.SCORE} home score file. If you enter the same
4122 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4123 score file. If you enter the group @samp{alt.religion.emacs}, you'll
4124 get the @file{religion.SCORE} home score file.
4126 This seems rather simple and self-evident, doesn't it? Well, yes. But
4127 there are some problems, especially with the @code{total-expiry}
4128 parameter. Say you have a mail group in two topics; one with
4129 @code{total-expiry} and one without. What happens when you do @kbd{M-x
4130 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
4131 of these topics you mean to expire articles from, so anything may
4132 happen. In fact, I hereby declare that it is @dfn{undefined} what
4133 happens. You just have to be careful if you do stuff like that.
4136 @node Misc Group Stuff
4137 @section Misc Group Stuff
4140 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
4141 * Group Information:: Information and help on groups and Gnus.
4142 * Group Timestamp:: Making Gnus keep track of when you last read a group.
4143 * File Commands:: Reading and writing the Gnus files.
4144 * Sieve Commands:: Managing Sieve scripts.
4151 @cindex keys, reserved for users (Group)
4152 The key @kbd{v} is reserved for users. You can bind it key to some
4153 function or better use it as a prefix key. For example:
4156 (define-key gnus-group-mode-map (kbd "v j d")
4159 (gnus-group-jump-to-group "nndraft:drafts")))
4162 On keys reserved for users in Emacs and on keybindings in general
4163 @xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
4167 @findex gnus-group-enter-server-mode
4168 Enter the server buffer (@code{gnus-group-enter-server-mode}).
4169 @xref{Server Buffer}.
4173 @findex gnus-group-post-news
4174 Start composing a message (a news by default)
4175 (@code{gnus-group-post-news}). If given a prefix, post to the group
4176 under the point. If the prefix is 1, prompt for a group to post to.
4177 Contrary to what the name of this function suggests, the prepared
4178 article might be a mail instead of a news, if a mail group is specified
4179 with the prefix argument. @xref{Composing Messages}.
4183 @findex gnus-group-mail
4184 Mail a message somewhere (@code{gnus-group-mail}). If given a prefix,
4185 use the posting style of the group under the point. If the prefix is 1,
4186 prompt for a group name to find the posting style.
4187 @xref{Composing Messages}.
4191 @findex gnus-group-news
4192 Start composing a news (@code{gnus-group-news}). If given a prefix,
4193 post to the group under the point. If the prefix is 1, prompt
4194 for group to post to. @xref{Composing Messages}.
4196 This function actually prepares a news even when using mail groups.
4197 This is useful for ``posting'' messages to mail groups without actually
4198 sending them over the network: they're just saved directly to the group
4199 in question. The corresponding back end must have a request-post method
4200 for this to work though.
4204 @findex gnus-group-compact-group
4206 Compact the group under point (@code{gnus-group-compact-group}).
4207 Currently implemented only in nnml @pxref{Mail Spool}. This removes
4208 gaps between article numbers, hence getting a correct total article
4213 Variables for the group buffer:
4217 @item gnus-group-mode-hook
4218 @vindex gnus-group-mode-hook
4219 is called after the group buffer has been
4222 @item gnus-group-prepare-hook
4223 @vindex gnus-group-prepare-hook
4224 is called after the group buffer is
4225 generated. It may be used to modify the buffer in some strange,
4228 @item gnus-group-prepared-hook
4229 @vindex gnus-group-prepare-hook
4230 is called as the very last thing after the group buffer has been
4231 generated. It may be used to move point around, for instance.
4233 @item gnus-permanently-visible-groups
4234 @vindex gnus-permanently-visible-groups
4235 Groups matching this regexp will always be listed in the group buffer,
4236 whether they are empty or not.
4238 @item gnus-group-name-charset-method-alist
4239 @vindex gnus-group-name-charset-method-alist
4240 An alist of method and the charset for group names. It is used to show
4241 non-@acronym{ASCII} group names.
4245 (setq gnus-group-name-charset-method-alist
4246 '(((nntp "news.com.cn") . cn-gb-2312)))
4249 @item gnus-group-name-charset-group-alist
4250 @cindex UTF-8 group names
4251 @vindex gnus-group-name-charset-group-alist
4252 An alist of regexp of group name and the charset for group names. It
4253 is used to show non-@acronym{ASCII} group names. @code{((".*"
4254 utf-8))} is the default value if UTF-8 is supported, otherwise the
4255 default is @code{nil}.
4259 (setq gnus-group-name-charset-group-alist
4260 '(("\\.com\\.cn:" . cn-gb-2312)))
4265 @node Scanning New Messages
4266 @subsection Scanning New Messages
4267 @cindex new messages
4268 @cindex scanning new news
4274 @findex gnus-group-get-new-news
4275 @c @icon{gnus-group-get-new-news}
4276 Check the server(s) for new articles. If the numerical prefix is used,
4277 this command will check only groups of level @var{arg} and lower
4278 (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
4279 command will force a total re-reading of the active file(s) from the
4284 @findex gnus-group-get-new-news-this-group
4285 @vindex gnus-goto-next-group-when-activating
4286 @c @icon{gnus-group-get-new-news-this-group}
4287 Check whether new articles have arrived in the current group
4288 (@code{gnus-group-get-new-news-this-group}).
4289 @code{gnus-goto-next-group-when-activating} says whether this command is
4290 to move point to the next group or not. It is @code{t} by default.
4292 @findex gnus-activate-all-groups
4293 @cindex activating groups
4295 @kindex C-c M-g (Group)
4296 Activate absolutely all groups (@code{gnus-activate-all-groups}).
4301 @findex gnus-group-restart
4302 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
4303 file(s), closes the connection to all servers, clears up all run-time
4304 Gnus variables, and then starts Gnus all over again.
4308 @vindex gnus-get-new-news-hook
4309 @code{gnus-get-new-news-hook} is run just before checking for new news.
4311 @vindex gnus-after-getting-new-news-hook
4312 @code{gnus-after-getting-new-news-hook} is run after checking for new
4316 @node Group Information
4317 @subsection Group Information
4318 @cindex group information
4319 @cindex information on groups
4326 @findex gnus-group-fetch-faq
4327 @vindex gnus-group-faq-directory
4330 Try to fetch the @acronym{FAQ} for the current group
4331 (@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ}
4332 from @code{gnus-group-faq-directory}, which is usually a directory on
4333 a remote machine. This variable can also be a list of directories.
4334 In that case, giving a prefix to this command will allow you to choose
4335 between the various sites. @code{ange-ftp} (or @code{efs}) will be
4336 used for fetching the file.
4338 If fetching from the first site is unsuccessful, Gnus will attempt to go
4339 through @code{gnus-group-faq-directory} and try to open them one by one.
4343 @findex gnus-group-fetch-charter
4344 @vindex gnus-group-charter-alist
4346 Try to open the charter for the current group in a web browser
4347 (@code{gnus-group-fetch-charter}). Query for a group if given a
4350 Gnus will use @code{gnus-group-charter-alist} to find the location of
4351 the charter. If no location is known, Gnus will fetch the control
4352 messages for the group, which in some cases includes the charter.
4356 @findex gnus-group-fetch-control
4357 @vindex gnus-group-fetch-control-use-browse-url
4358 @cindex control message
4359 Fetch the control messages for the group from the archive at
4360 @code{ftp.isc.org} (@code{gnus-group-fetch-control}). Query for a
4361 group if given a prefix argument.
4363 If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
4364 Gnus will open the control messages in a browser using
4365 @code{browse-url}. Otherwise they are fetched using @code{ange-ftp}
4366 and displayed in an ephemeral group.
4368 Note that the control messages are compressed. To use this command
4369 you need to turn on @code{auto-compression-mode} (@pxref{Compressed
4370 Files, ,Compressed Files, emacs, The Emacs Manual}).
4374 @c @icon{gnus-group-describe-group}
4376 @kindex C-c C-d (Group)
4377 @cindex describing groups
4378 @cindex group description
4379 @findex gnus-group-describe-group
4380 Describe the current group (@code{gnus-group-describe-group}). If given
4381 a prefix, force Gnus to re-read the description from the server.
4385 @findex gnus-group-describe-all-groups
4386 Describe all groups (@code{gnus-group-describe-all-groups}). If given a
4387 prefix, force Gnus to re-read the description file from the server.
4394 @findex gnus-version
4395 Display current Gnus version numbers (@code{gnus-version}).
4399 @findex gnus-group-describe-briefly
4400 Give a very short help message (@code{gnus-group-describe-briefly}).
4403 @kindex C-c C-i (Group)
4406 @findex gnus-info-find-node
4407 Go to the Gnus info node (@code{gnus-info-find-node}).
4411 @node Group Timestamp
4412 @subsection Group Timestamp
4414 @cindex group timestamps
4416 It can be convenient to let Gnus keep track of when you last read a
4417 group. To set the ball rolling, you should add
4418 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
4421 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4424 After doing this, each time you enter a group, it'll be recorded.
4426 This information can be displayed in various ways---the easiest is to
4427 use the @samp{%d} spec in the group line format:
4430 (setq gnus-group-line-format
4431 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4434 This will result in lines looking like:
4437 * 0: mail.ding 19961002T012943
4438 0: custom 19961002T012713
4441 As you can see, the date is displayed in compact ISO 8601 format. This
4442 may be a bit too much, so to just display the date, you could say
4446 (setq gnus-group-line-format
4447 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4450 If you would like greater control of the time format, you can use a
4451 user-defined format spec. Something like the following should do the
4455 (setq gnus-group-line-format
4456 "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4457 (defun gnus-user-format-function-d (headers)
4458 (let ((time (gnus-group-timestamp gnus-tmp-group)))
4460 (format-time-string "%b %d %H:%M" time)
4466 @subsection File Commands
4467 @cindex file commands
4473 @findex gnus-group-read-init-file
4474 @vindex gnus-init-file
4475 @cindex reading init file
4476 Re-read the init file (@code{gnus-init-file}, which defaults to
4477 @file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
4481 @findex gnus-group-save-newsrc
4482 @cindex saving .newsrc
4483 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4484 (@code{gnus-group-save-newsrc}). If given a prefix, force saving the
4485 file(s) whether Gnus thinks it is necessary or not.
4488 @c @kindex Z (Group)
4489 @c @findex gnus-group-clear-dribble
4490 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
4495 @node Sieve Commands
4496 @subsection Sieve Commands
4497 @cindex group sieve commands
4499 Sieve is a server-side mail filtering language. In Gnus you can use
4500 the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4501 sieve rules that should apply to each group. Gnus provides two
4502 commands to translate all these group parameters into a proper Sieve
4503 script that can be transfered to the server somehow.
4505 @vindex gnus-sieve-file
4506 @vindex gnus-sieve-region-start
4507 @vindex gnus-sieve-region-end
4508 The generated Sieve script is placed in @code{gnus-sieve-file} (by
4509 default @file{~/.sieve}). The Sieve code that Gnus generate is placed
4510 between two delimiters, @code{gnus-sieve-region-start} and
4511 @code{gnus-sieve-region-end}, so you may write additional Sieve code
4512 outside these delimiters that will not be removed the next time you
4513 regenerate the Sieve script.
4515 @vindex gnus-sieve-crosspost
4516 The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4517 is generated. If it is non-@code{nil} (the default) articles is
4518 placed in all groups that have matching rules, otherwise the article
4519 is only placed in the group with the first matching rule. For
4520 example, the group parameter @samp{(sieve address "sender"
4521 "owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4522 code if @code{gnus-sieve-crosspost} is @code{nil}. (When
4523 @code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4524 except that the line containing the call to @code{stop} is removed.)
4527 if address "sender" "owner-ding@@hpc.uh.edu" @{
4528 fileinto "INBOX.ding";
4533 @xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
4539 @findex gnus-sieve-generate
4540 @vindex gnus-sieve-file
4541 @cindex generating sieve script
4542 Regenerate a Sieve script from the @code{sieve} group parameters and
4543 put you into the @code{gnus-sieve-file} without saving it.
4547 @findex gnus-sieve-update
4548 @vindex gnus-sieve-file
4549 @cindex updating sieve script
4550 Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4551 @code{sieve} group parameters, save the file and upload it to the
4552 server using the @code{sieveshell} program.
4557 @node Summary Buffer
4558 @chapter Summary Buffer
4559 @cindex summary buffer
4561 A line for each article is displayed in the summary buffer. You can
4562 move around, read articles, post articles and reply to articles.
4564 The most common way to a summary buffer is to select a group from the
4565 group buffer (@pxref{Selecting a Group}).
4567 You can have as many summary buffers open as you wish.
4569 You can customize the Summary Mode tool bar, see @kbd{M-x
4570 customize-apropos RET gnus-summary-tool-bar}. This feature is only
4574 @cindex keys, reserved for users (Summary)
4575 The key @kbd{v} is reserved for users. You can bind it key to some
4576 function or better use it as a prefix key. For example:
4578 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4582 * Summary Buffer Format:: Deciding how the summary buffer is to look.
4583 * Summary Maneuvering:: Moving around the summary buffer.
4584 * Choosing Articles:: Reading articles.
4585 * Paging the Article:: Scrolling the current article.
4586 * Reply Followup and Post:: Posting articles.
4587 * Delayed Articles:: Send articles at a later time.
4588 * Marking Articles:: Marking articles as read, expirable, etc.
4589 * Limiting:: You can limit the summary buffer.
4590 * Threading:: How threads are made.
4591 * Sorting the Summary Buffer:: How articles and threads are sorted.
4592 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
4593 * Article Caching:: You may store articles in a cache.
4594 * Persistent Articles:: Making articles expiry-resistant.
4595 * Article Backlog:: Having already read articles hang around.
4596 * Saving Articles:: Ways of customizing article saving.
4597 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
4598 * Article Treatment:: The article buffer can be mangled at will.
4599 * MIME Commands:: Doing MIMEy things with the articles.
4600 * Charsets:: Character set issues.
4601 * Article Commands:: Doing various things with the article buffer.
4602 * Summary Sorting:: Sorting the summary buffer in various ways.
4603 * Finding the Parent:: No child support? Get the parent.
4604 * Alternative Approaches:: Reading using non-default summaries.
4605 * Tree Display:: A more visual display of threads.
4606 * Mail Group Commands:: Some commands can only be used in mail groups.
4607 * Various Summary Stuff:: What didn't fit anywhere else.
4608 * Exiting the Summary Buffer:: Returning to the Group buffer,
4609 or reselecting the current group.
4610 * Crosspost Handling:: How crossposted articles are dealt with.
4611 * Duplicate Suppression:: An alternative when crosspost handling fails.
4612 * Security:: Decrypt and Verify.
4613 * Mailing List:: Mailing list minor mode.
4617 @node Summary Buffer Format
4618 @section Summary Buffer Format
4619 @cindex summary buffer format
4623 \gnusfigure{The Summary Buffer}{180}{
4624 \put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4625 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
4631 * Summary Buffer Lines:: You can specify how summary lines should look.
4632 * To From Newsgroups:: How to not display your own name.
4633 * Summary Buffer Mode Line:: You can say how the mode line should look.
4634 * Summary Highlighting:: Making the summary buffer all pretty and nice.
4637 @findex mail-extract-address-components
4638 @findex gnus-extract-address-components
4639 @vindex gnus-extract-address-components
4640 Gnus will use the value of the @code{gnus-extract-address-components}
4641 variable as a function for getting the name and address parts of a
4642 @code{From} header. Two pre-defined functions exist:
4643 @code{gnus-extract-address-components}, which is the default, quite
4644 fast, and too simplistic solution; and
4645 @code{mail-extract-address-components}, which works very nicely, but is
4646 slower. The default function will return the wrong answer in 5% of the
4647 cases. If this is unacceptable to you, use the other function instead:
4650 (setq gnus-extract-address-components
4651 'mail-extract-address-components)
4654 @vindex gnus-summary-same-subject
4655 @code{gnus-summary-same-subject} is a string indicating that the current
4656 article has the same subject as the previous. This string will be used
4657 with those specs that require it. The default is @code{""}.
4660 @node Summary Buffer Lines
4661 @subsection Summary Buffer Lines
4663 @vindex gnus-summary-line-format
4664 You can change the format of the lines in the summary buffer by changing
4665 the @code{gnus-summary-line-format} variable. It works along the same
4666 lines as a normal @code{format} string, with some extensions
4667 (@pxref{Formatting Variables}).
4669 There should always be a colon or a point position marker on the line;
4670 the cursor always moves to the point position marker or the colon after
4671 performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't
4672 possible to change this. Just write a new function
4673 @code{gnus-goto-colon} which does whatever you like with the cursor.)
4674 @xref{Positioning Point}.
4676 The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
4678 The following format specification characters and extended format
4679 specification(s) are understood:
4685 Subject string. List identifiers stripped,
4686 @code{gnus-list-identifiers}. @xref{Article Hiding}.
4688 Subject if the article is the root of the thread or the previous article
4689 had a different subject, @code{gnus-summary-same-subject} otherwise.
4690 (@code{gnus-summary-same-subject} defaults to @code{""}.)
4692 Full @code{From} header.
4694 The name (from the @code{From} header).
4696 The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4699 The name (from the @code{From} header). This differs from the @code{n}
4700 spec in that it uses the function designated by the
4701 @code{gnus-extract-address-components} variable, which is slower, but
4702 may be more thorough.
4704 The address (from the @code{From} header). This works the same way as
4707 Number of lines in the article.
4709 Number of characters in the article. This specifier is not supported
4710 in some methods (like nnfolder).
4712 Pretty-printed version of the number of characters in the article;
4713 for example, @samp{1.2k} or @samp{0.4M}.
4715 Indentation based on thread level (@pxref{Customizing Threading}).
4717 A complex trn-style thread tree, showing response-connecting trace
4718 lines. A thread could be drawn like this:
4731 You can customize the appearance with the following options. Note
4732 that it is possible to make the thread display look really neat by
4733 replacing the default @acronym{ASCII} characters with graphic
4734 line-drawing glyphs.
4736 @item gnus-sum-thread-tree-root
4737 @vindex gnus-sum-thread-tree-root
4738 Used for the root of a thread. If @code{nil}, use subject
4739 instead. The default is @samp{> }.
4741 @item gnus-sum-thread-tree-false-root
4742 @vindex gnus-sum-thread-tree-false-root
4743 Used for the false root of a thread (@pxref{Loose Threads}). If
4744 @code{nil}, use subject instead. The default is @samp{> }.
4746 @item gnus-sum-thread-tree-single-indent
4747 @vindex gnus-sum-thread-tree-single-indent
4748 Used for a thread with just one message. If @code{nil}, use subject
4749 instead. The default is @samp{}.
4751 @item gnus-sum-thread-tree-vertical
4752 @vindex gnus-sum-thread-tree-vertical
4753 Used for drawing a vertical line. The default is @samp{| }.
4755 @item gnus-sum-thread-tree-indent
4756 @vindex gnus-sum-thread-tree-indent
4757 Used for indenting. The default is @samp{ }.
4759 @item gnus-sum-thread-tree-leaf-with-other
4760 @vindex gnus-sum-thread-tree-leaf-with-other
4761 Used for a leaf with brothers. The default is @samp{+-> }.
4763 @item gnus-sum-thread-tree-single-leaf
4764 @vindex gnus-sum-thread-tree-single-leaf
4765 Used for a leaf without brothers. The default is @samp{\-> }
4770 Nothing if the article is a root and lots of spaces if it isn't (it
4771 pushes everything after it off the screen).
4773 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4774 for adopted articles (@pxref{Customizing Threading}).
4776 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4777 for adopted articles.
4779 One space for each thread level.
4781 Twenty minus thread level spaces.
4783 Unread. @xref{Read Articles}.
4786 This misleadingly named specifier is the @dfn{secondary mark}. This
4787 mark will say whether the article has been replied to, has been cached,
4788 or has been saved. @xref{Other Marks}.
4791 Score as a number (@pxref{Scoring}).
4793 @vindex gnus-summary-zcore-fuzz
4794 Zcore, @samp{+} if above the default level and @samp{-} if below the
4795 default level. If the difference between
4796 @code{gnus-summary-default-score} and the score is less than
4797 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
4805 The @code{Date} in @code{DD-MMM} format.
4807 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4813 Number of articles in the current sub-thread. Using this spec will slow
4814 down summary buffer generation somewhat.
4816 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4817 article has any children.
4823 Desired cursor position (instead of after first colon).
4825 Age sensitive date format. Various date format is defined in
4826 @code{gnus-user-date-format-alist}.
4828 User defined specifier. The next character in the format string should
4829 be a letter. Gnus will call the function
4830 @code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
4831 following @samp{%u}. The function will be passed the current header as
4832 argument. The function should return a string, which will be inserted
4833 into the summary just like information from any other summary specifier.
4836 Text between @samp{%(} and @samp{%)} will be highlighted with
4837 @code{gnus-mouse-face} when the mouse point is placed inside the area.
4838 There can only be one such area.
4840 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4841 have to be handled with care. For reasons of efficiency, Gnus will
4842 compute what column these characters will end up in, and ``hard-code''
4843 that. This means that it is invalid to have these specs after a
4844 variable-length spec. Well, you might not be arrested, but your summary
4845 buffer will look strange, which is bad enough.
4847 The smart choice is to have these specs as far to the left as possible.
4848 (Isn't that the case with everything, though? But I digress.)
4850 This restriction may disappear in later versions of Gnus.
4853 @node To From Newsgroups
4854 @subsection To From Newsgroups
4858 In some groups (particularly in archive groups), the @code{From} header
4859 isn't very interesting, since all the articles there are written by
4860 you. To display the information in the @code{To} or @code{Newsgroups}
4861 headers instead, you need to decide three things: What information to
4862 gather; where to display it; and when to display it.
4866 @vindex gnus-extra-headers
4867 The reading of extra header information is controlled by the
4868 @code{gnus-extra-headers}. This is a list of header symbols. For
4872 (setq gnus-extra-headers
4873 '(To Newsgroups X-Newsreader))
4876 This will result in Gnus trying to obtain these three headers, and
4877 storing it in header structures for later easy retrieval.
4880 @findex gnus-extra-header
4881 The value of these extra headers can be accessed via the
4882 @code{gnus-extra-header} function. Here's a format line spec that will
4883 access the @code{X-Newsreader} header:
4886 "%~(form (gnus-extra-header 'X-Newsreader))@@"
4890 @vindex gnus-ignored-from-addresses
4891 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
4892 summary line spec returns the @code{To}, @code{Newsreader} or
4893 @code{From} header. If this regexp matches the contents of the
4894 @code{From} header, the value of the @code{To} or @code{Newsreader}
4895 headers are used instead.
4897 To distinguish regular articles from those where the @code{From} field
4898 has been swapped, a string is prefixed to the @code{To} or
4899 @code{Newsgroups} header in the summary line. By default the string is
4900 @samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
4901 customize these strings with @code{gnus-summary-to-prefix} and
4902 @code{gnus-summary-newsgroup-prefix}.
4906 @vindex nnmail-extra-headers
4907 A related variable is @code{nnmail-extra-headers}, which controls when
4908 to include extra headers when generating overview (@acronym{NOV}) files.
4909 If you have old overview files, you should regenerate them after
4910 changing this variable, by entering the server buffer using @kbd{^},
4911 and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
4914 @vindex gnus-summary-line-format
4915 You also have to instruct Gnus to display the data by changing the
4916 @code{%n} spec to the @code{%f} spec in the
4917 @code{gnus-summary-line-format} variable.
4919 In summary, you'd typically put something like the following in
4923 (setq gnus-extra-headers
4925 (setq nnmail-extra-headers gnus-extra-headers)
4926 (setq gnus-summary-line-format
4927 "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
4928 (setq gnus-ignored-from-addresses
4932 (The values listed above are the default values in Gnus. Alter them
4935 A note for news server administrators, or for users who wish to try to
4936 convince their news server administrator to provide some additional
4939 The above is mostly useful for mail groups, where you have control over
4940 the @acronym{NOV} files that are created. However, if you can persuade your
4941 nntp admin to add (in the usual implementation, notably INN):
4947 to the end of her @file{overview.fmt} file, then you can use that just
4948 as you would the extra headers from the mail groups.
4951 @node Summary Buffer Mode Line
4952 @subsection Summary Buffer Mode Line
4954 @vindex gnus-summary-mode-line-format
4955 You can also change the format of the summary mode bar (@pxref{Mode Line
4956 Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
4957 like. The default is @samp{Gnus: %%b [%A] %Z}.
4959 Here are the elements you can play with:
4965 Unprefixed group name.
4967 Current article number.
4969 Current article score.
4973 Number of unread articles in this group.
4975 Number of unread articles in this group that aren't displayed in the
4978 A string with the number of unread and unselected articles represented
4979 either as @samp{<%U(+%e) more>} if there are both unread and unselected
4980 articles, and just as @samp{<%U more>} if there are just unread articles
4981 and no unselected ones.
4983 Shortish group name. For instance, @samp{rec.arts.anime} will be
4984 shortened to @samp{r.a.anime}.
4986 Subject of the current article.
4988 User-defined spec (@pxref{User-Defined Specs}).
4990 Name of the current score file (@pxref{Scoring}).
4992 Number of dormant articles (@pxref{Unread Articles}).
4994 Number of ticked articles (@pxref{Unread Articles}).
4996 Number of articles that have been marked as read in this session.
4998 Number of articles expunged by the score files.
5002 @node Summary Highlighting
5003 @subsection Summary Highlighting
5007 @item gnus-visual-mark-article-hook
5008 @vindex gnus-visual-mark-article-hook
5009 This hook is run after selecting an article. It is meant to be used for
5010 highlighting the article in some way. It is not run if
5011 @code{gnus-visual} is @code{nil}.
5013 @item gnus-summary-update-hook
5014 @vindex gnus-summary-update-hook
5015 This hook is called when a summary line is changed. It is not run if
5016 @code{gnus-visual} is @code{nil}.
5018 @item gnus-summary-selected-face
5019 @vindex gnus-summary-selected-face
5020 This is the face (or @dfn{font} as some people call it) used to
5021 highlight the current article in the summary buffer.
5023 @item gnus-summary-highlight
5024 @vindex gnus-summary-highlight
5025 Summary lines are highlighted according to this variable, which is a
5026 list where the elements are of the format @code{(@var{form}
5027 . @var{face})}. If you would, for instance, like ticked articles to be
5028 italic and high-scored articles to be bold, you could set this variable
5031 (((eq mark gnus-ticked-mark) . italic)
5032 ((> score default) . bold))
5034 As you may have guessed, if @var{form} returns a non-@code{nil} value,
5035 @var{face} will be applied to the line.
5039 @node Summary Maneuvering
5040 @section Summary Maneuvering
5041 @cindex summary movement
5043 All the straight movement commands understand the numeric prefix and
5044 behave pretty much as you'd expect.
5046 None of these commands select articles.
5051 @kindex M-n (Summary)
5052 @kindex G M-n (Summary)
5053 @findex gnus-summary-next-unread-subject
5054 Go to the next summary line of an unread article
5055 (@code{gnus-summary-next-unread-subject}).
5059 @kindex M-p (Summary)
5060 @kindex G M-p (Summary)
5061 @findex gnus-summary-prev-unread-subject
5062 Go to the previous summary line of an unread article
5063 (@code{gnus-summary-prev-unread-subject}).
5066 @kindex G g (Summary)
5067 @findex gnus-summary-goto-subject
5068 Ask for an article number and then go to the summary line of that article
5069 without displaying the article (@code{gnus-summary-goto-subject}).
5072 If Gnus asks you to press a key to confirm going to the next group, you
5073 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
5074 buffer, searching for the next group to read without actually returning
5075 to the group buffer.
5077 Variables related to summary movement:
5081 @vindex gnus-auto-select-next
5082 @item gnus-auto-select-next
5083 If you issue one of the movement commands (like @kbd{n}) and there are
5084 no more unread articles after the current one, Gnus will offer to go to
5085 the next group. If this variable is @code{t} and the next group is
5086 empty, Gnus will exit summary mode and return to the group buffer. If
5087 this variable is neither @code{t} nor @code{nil}, Gnus will select the
5088 next group with unread articles. As a special case, if this variable
5089 is @code{quietly}, Gnus will select the next group without asking for
5090 confirmation. If this variable is @code{almost-quietly}, the same
5091 will happen only if you are located on the last article in the group.
5092 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
5093 command will go to the next group without confirmation. Also
5094 @pxref{Group Levels}.
5096 @item gnus-auto-select-same
5097 @vindex gnus-auto-select-same
5098 If non-@code{nil}, all the movement commands will try to go to the next
5099 article with the same subject as the current. (@dfn{Same} here might
5100 mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
5101 for details (@pxref{Customizing Threading}).) If there are no more
5102 articles with the same subject, go to the first unread article.
5104 This variable is not particularly useful if you use a threaded display.
5106 @item gnus-summary-check-current
5107 @vindex gnus-summary-check-current
5108 If non-@code{nil}, all the ``unread'' movement commands will not proceed
5109 to the next (or previous) article if the current article is unread.
5110 Instead, they will choose the current article.
5112 @item gnus-auto-center-summary
5113 @vindex gnus-auto-center-summary
5114 If non-@code{nil}, Gnus will keep the point in the summary buffer
5115 centered at all times. This makes things quite tidy, but if you have a
5116 slow network connection, or simply do not like this un-Emacsism, you can
5117 set this variable to @code{nil} to get the normal Emacs scrolling
5118 action. This will also inhibit horizontal re-centering of the summary
5119 buffer, which might make it more inconvenient to read extremely long
5122 This variable can also be a number. In that case, center the window at
5123 the given number of lines from the top.
5128 @node Choosing Articles
5129 @section Choosing Articles
5130 @cindex selecting articles
5133 * Choosing Commands:: Commands for choosing articles.
5134 * Choosing Variables:: Variables that influence these commands.
5138 @node Choosing Commands
5139 @subsection Choosing Commands
5141 None of the following movement commands understand the numeric prefix,
5142 and they all select and display an article.
5144 If you want to fetch new articles or redisplay the group, see
5145 @ref{Exiting the Summary Buffer}.
5149 @kindex SPACE (Summary)
5150 @findex gnus-summary-next-page
5151 Select the current article, or, if that one's read already, the next
5152 unread article (@code{gnus-summary-next-page}).
5154 If you have an article window open already and you press @kbd{SPACE}
5155 again, the article will be scrolled. This lets you conveniently
5156 @kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}.
5161 @kindex G n (Summary)
5162 @findex gnus-summary-next-unread-article
5163 @c @icon{gnus-summary-next-unread}
5164 Go to next unread article (@code{gnus-summary-next-unread-article}).
5169 @findex gnus-summary-prev-unread-article
5170 @c @icon{gnus-summary-prev-unread}
5171 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
5176 @kindex G N (Summary)
5177 @findex gnus-summary-next-article
5178 Go to the next article (@code{gnus-summary-next-article}).
5183 @kindex G P (Summary)
5184 @findex gnus-summary-prev-article
5185 Go to the previous article (@code{gnus-summary-prev-article}).
5188 @kindex G C-n (Summary)
5189 @findex gnus-summary-next-same-subject
5190 Go to the next article with the same subject
5191 (@code{gnus-summary-next-same-subject}).
5194 @kindex G C-p (Summary)
5195 @findex gnus-summary-prev-same-subject
5196 Go to the previous article with the same subject
5197 (@code{gnus-summary-prev-same-subject}).
5201 @kindex G f (Summary)
5203 @findex gnus-summary-first-unread-article
5204 Go to the first unread article
5205 (@code{gnus-summary-first-unread-article}).
5209 @kindex G b (Summary)
5211 @findex gnus-summary-best-unread-article
5212 Go to the unread article with the highest score
5213 (@code{gnus-summary-best-unread-article}). If given a prefix argument,
5214 go to the first unread article that has a score over the default score.
5219 @kindex G l (Summary)
5220 @findex gnus-summary-goto-last-article
5221 Go to the previous article read (@code{gnus-summary-goto-last-article}).
5224 @kindex G o (Summary)
5225 @findex gnus-summary-pop-article
5227 @cindex article history
5228 Pop an article off the summary history and go to this article
5229 (@code{gnus-summary-pop-article}). This command differs from the
5230 command above in that you can pop as many previous articles off the
5231 history as you like, while @kbd{l} toggles the two last read articles.
5232 For a somewhat related issue (if you use these commands a lot),
5233 @pxref{Article Backlog}.
5238 @kindex G j (Summary)
5239 @findex gnus-summary-goto-article
5240 Ask for an article number or @code{Message-ID}, and then go to that
5241 article (@code{gnus-summary-goto-article}).
5246 @node Choosing Variables
5247 @subsection Choosing Variables
5249 Some variables relevant for moving and selecting articles:
5252 @item gnus-auto-extend-newsgroup
5253 @vindex gnus-auto-extend-newsgroup
5254 All the movement commands will try to go to the previous (or next)
5255 article, even if that article isn't displayed in the Summary buffer if
5256 this variable is non-@code{nil}. Gnus will then fetch the article from
5257 the server and display it in the article buffer.
5259 @item gnus-select-article-hook
5260 @vindex gnus-select-article-hook
5261 This hook is called whenever an article is selected. The default is
5262 @code{nil}. If you would like each article to be saved in the Agent as
5263 you read it, putting @code{gnus-agent-fetch-selected-article} on this
5266 @item gnus-mark-article-hook
5267 @vindex gnus-mark-article-hook
5268 @findex gnus-summary-mark-unread-as-read
5269 @findex gnus-summary-mark-read-and-unread-as-read
5270 @findex gnus-unread-mark
5271 This hook is called whenever an article is selected. It is intended to
5272 be used for marking articles as read. The default value is
5273 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
5274 mark of almost any article you read to @code{gnus-read-mark}. The only
5275 articles not affected by this function are ticked, dormant, and
5276 expirable articles. If you'd instead like to just have unread articles
5277 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5278 instead. It will leave marks like @code{gnus-low-score-mark},
5279 @code{gnus-del-mark} (and so on) alone.
5284 @node Paging the Article
5285 @section Scrolling the Article
5286 @cindex article scrolling
5291 @kindex SPACE (Summary)
5292 @findex gnus-summary-next-page
5293 Pressing @kbd{SPACE} will scroll the current article forward one page,
5294 or, if you have come to the end of the current article, will choose the
5295 next article (@code{gnus-summary-next-page}).
5297 @vindex gnus-article-boring-faces
5298 @vindex gnus-article-skip-boring
5299 If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5300 the article consists only of citations and signature, then it will be
5301 skipped; the next article will be shown instead. You can customize
5302 what is considered uninteresting with
5303 @code{gnus-article-boring-faces}. You can manually view the article's
5304 pages, no matter how boring, using @kbd{C-M-v}.
5307 @kindex DEL (Summary)
5308 @findex gnus-summary-prev-page
5309 Scroll the current article back one page (@code{gnus-summary-prev-page}).
5312 @kindex RET (Summary)
5313 @findex gnus-summary-scroll-up
5314 Scroll the current article one line forward
5315 (@code{gnus-summary-scroll-up}).
5318 @kindex M-RET (Summary)
5319 @findex gnus-summary-scroll-down
5320 Scroll the current article one line backward
5321 (@code{gnus-summary-scroll-down}).
5325 @kindex A g (Summary)
5327 @findex gnus-summary-show-article
5328 @vindex gnus-summary-show-article-charset-alist
5329 (Re)fetch the current article (@code{gnus-summary-show-article}). If
5330 given a prefix, fetch the current article, but don't run any of the
5331 article treatment functions. This will give you a ``raw'' article, just
5332 the way it came from the server.
5334 If given a numerical prefix, you can do semi-manual charset stuff.
5335 @kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
5336 encoded in the @code{cn-gb-2312} charset. If you have
5339 (setq gnus-summary-show-article-charset-alist
5344 then you can say @kbd{C-u 1 g} to get the same effect.
5349 @kindex A < (Summary)
5350 @findex gnus-summary-beginning-of-article
5351 Scroll to the beginning of the article
5352 (@code{gnus-summary-beginning-of-article}).
5357 @kindex A > (Summary)
5358 @findex gnus-summary-end-of-article
5359 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
5363 @kindex A s (Summary)
5365 @findex gnus-summary-isearch-article
5366 Perform an isearch in the article buffer
5367 (@code{gnus-summary-isearch-article}).
5371 @findex gnus-summary-select-article-buffer
5372 Select the article buffer (@code{gnus-summary-select-article-buffer}).
5377 @node Reply Followup and Post
5378 @section Reply, Followup and Post
5381 * Summary Mail Commands:: Sending mail.
5382 * Summary Post Commands:: Sending news.
5383 * Summary Message Commands:: Other Message-related commands.
5384 * Canceling and Superseding::
5388 @node Summary Mail Commands
5389 @subsection Summary Mail Commands
5391 @cindex composing mail
5393 Commands for composing a mail message:
5399 @kindex S r (Summary)
5401 @findex gnus-summary-reply
5402 @c @icon{gnus-summary-mail-reply}
5403 @c @icon{gnus-summary-reply}
5404 Mail a reply to the author of the current article
5405 (@code{gnus-summary-reply}).
5410 @kindex S R (Summary)
5411 @findex gnus-summary-reply-with-original
5412 @c @icon{gnus-summary-reply-with-original}
5413 Mail a reply to the author of the current article and include the
5414 original message (@code{gnus-summary-reply-with-original}). This
5415 command uses the process/prefix convention.
5418 @kindex S w (Summary)
5419 @findex gnus-summary-wide-reply
5420 Mail a wide reply to the author of the current article
5421 (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
5422 goes out to all people listed in the @code{To}, @code{From} (or
5423 @code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is
5424 present, that's used instead.
5427 @kindex S W (Summary)
5428 @findex gnus-summary-wide-reply-with-original
5429 Mail a wide reply to the current article and include the original
5430 message (@code{gnus-summary-wide-reply-with-original}). This command uses
5431 the process/prefix convention.
5434 @kindex S v (Summary)
5435 @findex gnus-summary-very-wide-reply
5436 Mail a very wide reply to the author of the current article
5437 (@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
5438 that goes out to all people listed in the @code{To}, @code{From} (or
5439 @code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5440 articles. This command uses the process/prefix convention.
5443 @kindex S V (Summary)
5444 @findex gnus-summary-very-wide-reply-with-original
5445 Mail a very wide reply to the author of the current article and include the
5446 original message (@code{gnus-summary-very-wide-reply-with-original}). This
5447 command uses the process/prefix convention.
5450 @kindex S B r (Summary)
5451 @findex gnus-summary-reply-broken-reply-to
5452 Mail a reply to the author of the current article but ignore the
5453 @code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5454 If you need this because a mailing list incorrectly sets a
5455 @code{Reply-To} header pointing to the list, you probably want to set
5456 the @code{broken-reply-to} group parameter instead, so things will work
5457 correctly. @xref{Group Parameters}.
5460 @kindex S B R (Summary)
5461 @findex gnus-summary-reply-broken-reply-to-with-original
5462 Mail a reply to the author of the current article and include the
5463 original message but ignore the @code{Reply-To} field
5464 (@code{gnus-summary-reply-broken-reply-to-with-original}).
5468 @kindex S o m (Summary)
5469 @kindex C-c C-f (Summary)
5470 @findex gnus-summary-mail-forward
5471 @c @icon{gnus-summary-mail-forward}
5472 Forward the current article to some other person
5473 (@code{gnus-summary-mail-forward}). If no prefix is given, the message
5474 is forwarded according to the value of (@code{message-forward-as-mime})
5475 and (@code{message-forward-show-mml}); if the prefix is 1, decode the
5476 message and forward directly inline; if the prefix is 2, forward message
5477 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5478 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5479 directly inline; otherwise, the message is forwarded as no prefix given
5480 but use the flipped value of (@code{message-forward-as-mime}). By
5481 default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5487 @kindex S m (Summary)
5488 @findex gnus-summary-mail-other-window
5489 @c @icon{gnus-summary-mail-originate}
5490 Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use
5491 the posting style of the current group. If given a prefix, disable that.
5492 If the prefix is 1, prompt for a group name to find the posting style.
5497 @kindex S i (Summary)
5498 @findex gnus-summary-news-other-window
5499 Prepare a news (@code{gnus-summary-news-other-window}). By default,
5500 post to the current group. If given a prefix, disable that. If the
5501 prefix is 1, prompt for a group to post to.
5503 This function actually prepares a news even when using mail groups.
5504 This is useful for ``posting'' messages to mail groups without actually
5505 sending them over the network: they're just saved directly to the group
5506 in question. The corresponding back end must have a request-post method
5507 for this to work though.
5510 @kindex S D b (Summary)
5511 @findex gnus-summary-resend-bounced-mail
5512 @cindex bouncing mail
5513 If you have sent a mail, but the mail was bounced back to you for some
5514 reason (wrong address, transient failure), you can use this command to
5515 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
5516 will be popped into a mail buffer where you can edit the headers before
5517 sending the mail off again. If you give a prefix to this command, and
5518 the bounced mail is a reply to some other mail, Gnus will try to fetch
5519 that mail and display it for easy perusal of its headers. This might
5520 very well fail, though.
5523 @kindex S D r (Summary)
5524 @findex gnus-summary-resend-message
5525 Not to be confused with the previous command,
5526 @code{gnus-summary-resend-message} will prompt you for an address to
5527 send the current message off to, and then send it to that place. The
5528 headers of the message won't be altered---but lots of headers that say
5529 @code{Resent-To}, @code{Resent-From} and so on will be added. This
5530 means that you actually send a mail to someone that has a @code{To}
5531 header that (probably) points to yourself. This will confuse people.
5532 So, natcherly you'll only do that if you're really eVIl.
5534 This command is mainly used if you have several accounts and want to
5535 ship a mail to a different account of yours. (If you're both
5536 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
5537 to the @code{root} account, you may want to resend it to
5538 @code{postmaster}. Ordnung muss sein!
5540 This command understands the process/prefix convention
5541 (@pxref{Process/Prefix}).
5544 @kindex S D e (Summary)
5545 @findex gnus-summary-resend-message-edit
5547 Like the previous command, but will allow you to edit the message as
5548 if it were a new message before resending.
5551 @kindex S O m (Summary)
5552 @findex gnus-uu-digest-mail-forward
5553 Digest the current series (@pxref{Decoding Articles}) and forward the
5554 result using mail (@code{gnus-uu-digest-mail-forward}). This command
5555 uses the process/prefix convention (@pxref{Process/Prefix}).
5558 @kindex S M-c (Summary)
5559 @findex gnus-summary-mail-crosspost-complaint
5560 @cindex crossposting
5561 @cindex excessive crossposting
5562 Send a complaint about excessive crossposting to the author of the
5563 current article (@code{gnus-summary-mail-crosspost-complaint}).
5565 @findex gnus-crosspost-complaint
5566 This command is provided as a way to fight back against the current
5567 crossposting pandemic that's sweeping Usenet. It will compose a reply
5568 using the @code{gnus-crosspost-complaint} variable as a preamble. This
5569 command understands the process/prefix convention
5570 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
5574 Also @xref{Header Commands, ,Header Commands, message, The Message
5575 Manual}, for more information.
5578 @node Summary Post Commands
5579 @subsection Summary Post Commands
5581 @cindex composing news
5583 Commands for posting a news article:
5589 @kindex S p (Summary)
5590 @findex gnus-summary-post-news
5591 @c @icon{gnus-summary-post-news}
5592 Prepare for posting an article (@code{gnus-summary-post-news}). By
5593 default, post to the current group. If given a prefix, disable that.
5594 If the prefix is 1, prompt for another group instead.
5599 @kindex S f (Summary)
5600 @findex gnus-summary-followup
5601 @c @icon{gnus-summary-followup}
5602 Post a followup to the current article (@code{gnus-summary-followup}).
5606 @kindex S F (Summary)
5608 @c @icon{gnus-summary-followup-with-original}
5609 @findex gnus-summary-followup-with-original
5610 Post a followup to the current article and include the original message
5611 (@code{gnus-summary-followup-with-original}). This command uses the
5612 process/prefix convention.
5615 @kindex S n (Summary)
5616 @findex gnus-summary-followup-to-mail
5617 Post a followup to the current article via news, even if you got the
5618 message through mail (@code{gnus-summary-followup-to-mail}).
5621 @kindex S N (Summary)
5622 @findex gnus-summary-followup-to-mail-with-original
5623 Post a followup to the current article via news, even if you got the
5624 message through mail and include the original message
5625 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
5626 the process/prefix convention.
5629 @kindex S o p (Summary)
5630 @findex gnus-summary-post-forward
5631 Forward the current article to a newsgroup
5632 (@code{gnus-summary-post-forward}).
5633 If no prefix is given, the message is forwarded according to the value
5634 of (@code{message-forward-as-mime}) and
5635 (@code{message-forward-show-mml}); if the prefix is 1, decode the
5636 message and forward directly inline; if the prefix is 2, forward message
5637 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5638 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5639 directly inline; otherwise, the message is forwarded as no prefix given
5640 but use the flipped value of (@code{message-forward-as-mime}). By
5641 default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
5644 @kindex S O p (Summary)
5645 @findex gnus-uu-digest-post-forward
5647 @cindex making digests
5648 Digest the current series and forward the result to a newsgroup
5649 (@code{gnus-uu-digest-post-forward}). This command uses the
5650 process/prefix convention.
5653 @kindex S u (Summary)
5654 @findex gnus-uu-post-news
5655 @c @icon{gnus-uu-post-news}
5656 Uuencode a file, split it into parts, and post it as a series
5657 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
5660 Also @xref{Header Commands, ,Header Commands, message, The Message
5661 Manual}, for more information.
5664 @node Summary Message Commands
5665 @subsection Summary Message Commands
5669 @kindex S y (Summary)
5670 @findex gnus-summary-yank-message
5671 Yank the current article into an already existing Message composition
5672 buffer (@code{gnus-summary-yank-message}). This command prompts for
5673 what message buffer you want to yank into, and understands the
5674 process/prefix convention (@pxref{Process/Prefix}).
5679 @node Canceling and Superseding
5680 @subsection Canceling Articles
5681 @cindex canceling articles
5682 @cindex superseding articles
5684 Have you ever written something, and then decided that you really,
5685 really, really wish you hadn't posted that?
5687 Well, you can't cancel mail, but you can cancel posts.
5689 @findex gnus-summary-cancel-article
5691 @c @icon{gnus-summary-cancel-article}
5692 Find the article you wish to cancel (you can only cancel your own
5693 articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
5694 c} (@code{gnus-summary-cancel-article}). Your article will be
5695 canceled---machines all over the world will be deleting your article.
5696 This command uses the process/prefix convention (@pxref{Process/Prefix}).
5698 Be aware, however, that not all sites honor cancels, so your article may
5699 live on here and there, while most sites will delete the article in
5702 Gnus will use the ``current'' select method when canceling. If you
5703 want to use the standard posting method, use the @samp{a} symbolic
5704 prefix (@pxref{Symbolic Prefixes}).
5706 Gnus ensures that only you can cancel your own messages using a
5707 @code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5708 message, Message Manual}).
5710 If you discover that you have made some mistakes and want to do some
5711 corrections, you can post a @dfn{superseding} article that will replace
5712 your original article.
5714 @findex gnus-summary-supersede-article
5716 Go to the original article and press @kbd{S s}
5717 (@code{gnus-summary-supersede-article}). You will be put in a buffer
5718 where you can edit the article all you want before sending it off the
5721 The same goes for superseding as for canceling, only more so: Some
5722 sites do not honor superseding. On those sites, it will appear that you
5723 have posted almost the same article twice.
5725 If you have just posted the article, and change your mind right away,
5726 there is a trick you can use to cancel/supersede the article without
5727 waiting for the article to appear on your site first. You simply return
5728 to the post buffer (which is called @code{*sent ...*}). There you will
5729 find the article you just posted, with all the headers intact. Change
5730 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5731 header by substituting one of those words for the word
5732 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
5733 you would do normally. The previous article will be
5734 canceled/superseded.
5736 Just remember, kids: There is no 'c' in 'supersede'.
5738 @node Delayed Articles
5739 @section Delayed Articles
5740 @cindex delayed sending
5741 @cindex send delayed
5743 Sometimes, you might wish to delay the sending of a message. For
5744 example, you might wish to arrange for a message to turn up just in time
5745 to remind your about the birthday of your Significant Other. For this,
5746 there is the @code{gnus-delay} package. Setup is simple:
5749 (gnus-delay-initialize)
5752 @findex gnus-delay-article
5753 Normally, to send a message you use the @kbd{C-c C-c} command from
5754 Message mode. To delay a message, use @kbd{C-c C-j}
5755 (@code{gnus-delay-article}) instead. This will ask you for how long the
5756 message should be delayed. Possible answers are:
5760 A time span. Consists of an integer and a letter. For example,
5761 @code{42d} means to delay for 42 days. Available letters are @code{m}
5762 (minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5763 (months) and @code{Y} (years).
5766 A specific date. Looks like @code{YYYY-MM-DD}. The message will be
5767 delayed until that day, at a specific time (eight o'clock by default).
5768 See also @code{gnus-delay-default-hour}.
5771 A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
5772 stuff. The deadline will be at that time today, except if that time has
5773 already passed, then it's at the given time tomorrow. So if it's ten
5774 o'clock in the morning and you specify @code{11:15}, then the deadline
5775 is one hour and fifteen minutes hence. But if you specify @code{9:20},
5776 that means a time tomorrow.
5779 The action of the @code{gnus-delay-article} command is influenced by a
5780 couple of variables:
5783 @item gnus-delay-default-hour
5784 @vindex gnus-delay-default-hour
5785 When you specify a specific date, the message will be due on that hour
5786 on the given date. Possible values are integers 0 through 23.
5788 @item gnus-delay-default-delay
5789 @vindex gnus-delay-default-delay
5790 This is a string and gives the default delay. It can be of any of the
5791 formats described above.
5793 @item gnus-delay-group
5794 @vindex gnus-delay-group
5795 Delayed articles will be kept in this group on the drafts server until
5796 they are due. You probably don't need to change this. The default
5797 value is @code{"delayed"}.
5799 @item gnus-delay-header
5800 @vindex gnus-delay-header
5801 The deadline for each article will be stored in a header. This variable
5802 is a string and gives the header name. You probably don't need to
5803 change this. The default value is @code{"X-Gnus-Delayed"}.
5806 The way delaying works is like this: when you use the
5807 @code{gnus-delay-article} command, you give a certain delay. Gnus
5808 calculates the deadline of the message and stores it in the
5809 @code{X-Gnus-Delayed} header and puts the message in the
5810 @code{nndraft:delayed} group.
5812 @findex gnus-delay-send-queue
5813 And whenever you get new news, Gnus looks through the group for articles
5814 which are due and sends them. It uses the @code{gnus-delay-send-queue}
5815 function for this. By default, this function is added to the hook
5816 @code{gnus-get-new-news-hook}. But of course, you can change this.
5817 Maybe you want to use the demon to send drafts? Just tell the demon to
5818 execute the @code{gnus-delay-send-queue} function.
5821 @item gnus-delay-initialize
5822 @findex gnus-delay-initialize
5823 By default, this function installs @code{gnus-delay-send-queue} in
5824 @code{gnus-get-new-news-hook}. But it accepts the optional second
5825 argument @code{no-check}. If it is non-@code{nil},
5826 @code{gnus-get-new-news-hook} is not changed. The optional first
5827 argument is ignored.
5829 For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5830 Presumably, you want to use the demon for sending due delayed articles.
5831 Just don't forget to set that up :-)
5835 @node Marking Articles
5836 @section Marking Articles
5837 @cindex article marking
5838 @cindex article ticking
5841 There are several marks you can set on an article.
5843 You have marks that decide the @dfn{readedness} (whoo, neato-keano
5844 neologism ohoy!) of the article. Alphabetic marks generally mean
5845 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
5847 In addition, you also have marks that do not affect readedness.
5850 There's a plethora of commands for manipulating these marks.
5854 * Unread Articles:: Marks for unread articles.
5855 * Read Articles:: Marks for read articles.
5856 * Other Marks:: Marks that do not affect readedness.
5857 * Setting Marks:: How to set and remove marks.
5858 * Generic Marking Commands:: How to customize the marking.
5859 * Setting Process Marks:: How to mark articles for later processing.
5863 @node Unread Articles
5864 @subsection Unread Articles
5866 The following marks mark articles as (kinda) unread, in one form or
5871 @vindex gnus-ticked-mark
5872 Marked as ticked (@code{gnus-ticked-mark}).
5874 @dfn{Ticked articles} are articles that will remain visible always. If
5875 you see an article that you find interesting, or you want to put off
5876 reading it, or replying to it, until sometime later, you'd typically
5877 tick it. However, articles can be expired (from news servers by the
5878 news server software, Gnus itself never expires ticked messages), so if
5879 you want to keep an article forever, you'll have to make it persistent
5880 (@pxref{Persistent Articles}).
5883 @vindex gnus-dormant-mark
5884 Marked as dormant (@code{gnus-dormant-mark}).
5886 @dfn{Dormant articles} will only appear in the summary buffer if there
5887 are followups to it. If you want to see them even if they don't have
5888 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
5889 Otherwise (except for the visibility issue), they are just like ticked
5893 @vindex gnus-unread-mark
5894 Marked as unread (@code{gnus-unread-mark}).
5896 @dfn{Unread articles} are articles that haven't been read at all yet.
5901 @subsection Read Articles
5902 @cindex expirable mark
5904 All the following marks mark articles as read.
5909 @vindex gnus-del-mark
5910 These are articles that the user has marked as read with the @kbd{d}
5911 command manually, more or less (@code{gnus-del-mark}).
5914 @vindex gnus-read-mark
5915 Articles that have actually been read (@code{gnus-read-mark}).
5918 @vindex gnus-ancient-mark
5919 Articles that were marked as read in previous sessions and are now
5920 @dfn{old} (@code{gnus-ancient-mark}).
5923 @vindex gnus-killed-mark
5924 Marked as killed (@code{gnus-killed-mark}).
5927 @vindex gnus-kill-file-mark
5928 Marked as killed by kill files (@code{gnus-kill-file-mark}).
5931 @vindex gnus-low-score-mark
5932 Marked as read by having too low a score (@code{gnus-low-score-mark}).
5935 @vindex gnus-catchup-mark
5936 Marked as read by a catchup (@code{gnus-catchup-mark}).
5939 @vindex gnus-canceled-mark
5940 Canceled article (@code{gnus-canceled-mark})
5943 @vindex gnus-souped-mark
5944 @sc{soup}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
5947 @vindex gnus-sparse-mark
5948 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
5952 @vindex gnus-duplicate-mark
5953 Article marked as read by duplicate suppression
5954 (@code{gnus-duplicate-mark}). @xref{Duplicate Suppression}.
5958 All these marks just mean that the article is marked as read, really.
5959 They are interpreted differently when doing adaptive scoring, though.
5961 One more special mark, though:
5965 @vindex gnus-expirable-mark
5966 Marked as expirable (@code{gnus-expirable-mark}).
5968 Marking articles as @dfn{expirable} (or have them marked as such
5969 automatically) doesn't make much sense in normal groups---a user doesn't
5970 control expiring of news articles, but in mail groups, for instance,
5971 articles marked as @dfn{expirable} can be deleted by Gnus at
5977 @subsection Other Marks
5978 @cindex process mark
5981 There are some marks that have nothing to do with whether the article is
5987 You can set a bookmark in the current article. Say you are reading a
5988 long thesis on cats' urinary tracts, and have to go home for dinner
5989 before you've finished reading the thesis. You can then set a bookmark
5990 in the article, and Gnus will jump to this bookmark the next time it
5991 encounters the article. @xref{Setting Marks}.
5994 @vindex gnus-replied-mark
5995 All articles that you have replied to or made a followup to (i.e., have
5996 answered) will be marked with an @samp{A} in the second column
5997 (@code{gnus-replied-mark}).
6000 @vindex gnus-forwarded-mark
6001 All articles that you have forwarded will be marked with an @samp{F} in
6002 the second column (@code{gnus-forwarded-mark}).
6005 @vindex gnus-cached-mark
6006 Articles stored in the article cache will be marked with an @samp{*} in
6007 the second column (@code{gnus-cached-mark}). @xref{Article Caching}.
6010 @vindex gnus-saved-mark
6011 Articles ``saved'' (in some manner or other; not necessarily
6012 religiously) are marked with an @samp{S} in the second column
6013 (@code{gnus-saved-mark}).
6016 @vindex gnus-recent-mark
6017 Articles that according to the server haven't been shown to the user
6018 before are marked with a @samp{N} in the second column
6019 (@code{gnus-recent-mark}). Note that not all servers support this
6020 mark, in which case it simply never appears. Compare with
6021 @code{gnus-unseen-mark}.
6024 @vindex gnus-unseen-mark
6025 Articles that haven't been seen before in Gnus by the user are marked
6026 with a @samp{.} in the second column (@code{gnus-unseen-mark}).
6027 Compare with @code{gnus-recent-mark}.
6030 @vindex gnus-downloaded-mark
6031 When using the Gnus agent (@pxref{Agent Basics}), articles may be
6032 downloaded for unplugged (offline) viewing. If you are using the
6033 @samp{%O} spec, these articles get the @samp{+} mark in that spec.
6034 (The variable @code{gnus-downloaded-mark} controls which character to
6038 @vindex gnus-undownloaded-mark
6039 When using the Gnus agent (@pxref{Agent Basics}), some articles might
6040 not have been downloaded. Such articles cannot be viewed while you
6041 are unplugged (offline). If you are using the @samp{%O} spec, these
6042 articles get the @samp{-} mark in that spec. (The variable
6043 @code{gnus-undownloaded-mark} controls which character to use.)
6046 @vindex gnus-downloadable-mark
6047 The Gnus agent (@pxref{Agent Basics}) downloads some articles
6048 automatically, but it is also possible to explicitly mark articles for
6049 download, even if they would not be downloaded automatically. Such
6050 explicitly-marked articles get the @samp{%} mark in the first column.
6051 (The variable @code{gnus-downloadable-mark} controls which character to
6055 @vindex gnus-not-empty-thread-mark
6056 @vindex gnus-empty-thread-mark
6057 If the @samp{%e} spec is used, the presence of threads or not will be
6058 marked with @code{gnus-not-empty-thread-mark} and
6059 @code{gnus-empty-thread-mark} in the third column, respectively.
6062 @vindex gnus-process-mark
6063 Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
6064 variety of commands react to the presence of the process mark. For
6065 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
6066 all articles that have been marked with the process mark. Articles
6067 marked with the process mark have a @samp{#} in the second column.
6071 You might have noticed that most of these ``non-readedness'' marks
6072 appear in the second column by default. So if you have a cached, saved,
6073 replied article that you have process-marked, what will that look like?
6075 Nothing much. The precedence rules go as follows: process -> cache ->
6076 replied -> saved. So if the article is in the cache and is replied,
6077 you'll only see the cache mark and not the replied mark.
6081 @subsection Setting Marks
6082 @cindex setting marks
6084 All the marking commands understand the numeric prefix.
6089 @kindex M c (Summary)
6090 @kindex M-u (Summary)
6091 @findex gnus-summary-clear-mark-forward
6092 @cindex mark as unread
6093 Clear all readedness-marks from the current article
6094 (@code{gnus-summary-clear-mark-forward}). In other words, mark the
6100 @kindex M t (Summary)
6101 @findex gnus-summary-tick-article-forward
6102 Tick the current article (@code{gnus-summary-tick-article-forward}).
6103 @xref{Article Caching}.
6108 @kindex M ? (Summary)
6109 @findex gnus-summary-mark-as-dormant
6110 Mark the current article as dormant
6111 (@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
6115 @kindex M d (Summary)
6117 @findex gnus-summary-mark-as-read-forward
6118 Mark the current article as read
6119 (@code{gnus-summary-mark-as-read-forward}).
6123 @findex gnus-summary-mark-as-read-backward
6124 Mark the current article as read and move point to the previous line
6125 (@code{gnus-summary-mark-as-read-backward}).
6130 @kindex M k (Summary)
6131 @findex gnus-summary-kill-same-subject-and-select
6132 Mark all articles that have the same subject as the current one as read,
6133 and then select the next unread article
6134 (@code{gnus-summary-kill-same-subject-and-select}).
6138 @kindex M K (Summary)
6139 @kindex C-k (Summary)
6140 @findex gnus-summary-kill-same-subject
6141 Mark all articles that have the same subject as the current one as read
6142 (@code{gnus-summary-kill-same-subject}).
6145 @kindex M C (Summary)
6146 @findex gnus-summary-catchup
6147 @c @icon{gnus-summary-catchup}
6148 Mark all unread articles as read (@code{gnus-summary-catchup}).
6151 @kindex M C-c (Summary)
6152 @findex gnus-summary-catchup-all
6153 Mark all articles in the group as read---even the ticked and dormant
6154 articles (@code{gnus-summary-catchup-all}).
6157 @kindex M H (Summary)
6158 @findex gnus-summary-catchup-to-here
6159 Catchup the current group to point (before the point)
6160 (@code{gnus-summary-catchup-to-here}).
6163 @kindex M h (Summary)
6164 @findex gnus-summary-catchup-from-here
6165 Catchup the current group from point (after the point)
6166 (@code{gnus-summary-catchup-from-here}).
6169 @kindex C-w (Summary)
6170 @findex gnus-summary-mark-region-as-read
6171 Mark all articles between point and mark as read
6172 (@code{gnus-summary-mark-region-as-read}).
6175 @kindex M V k (Summary)
6176 @findex gnus-summary-kill-below
6177 Kill all articles with scores below the default score (or below the
6178 numeric prefix) (@code{gnus-summary-kill-below}).
6182 @kindex M e (Summary)
6184 @findex gnus-summary-mark-as-expirable
6185 Mark the current article as expirable
6186 (@code{gnus-summary-mark-as-expirable}).
6189 @kindex M b (Summary)
6190 @findex gnus-summary-set-bookmark
6191 Set a bookmark in the current article
6192 (@code{gnus-summary-set-bookmark}).
6195 @kindex M B (Summary)
6196 @findex gnus-summary-remove-bookmark
6197 Remove the bookmark from the current article
6198 (@code{gnus-summary-remove-bookmark}).
6201 @kindex M V c (Summary)
6202 @findex gnus-summary-clear-above
6203 Clear all marks from articles with scores over the default score (or
6204 over the numeric prefix) (@code{gnus-summary-clear-above}).
6207 @kindex M V u (Summary)
6208 @findex gnus-summary-tick-above
6209 Tick all articles with scores over the default score (or over the
6210 numeric prefix) (@code{gnus-summary-tick-above}).
6213 @kindex M V m (Summary)
6214 @findex gnus-summary-mark-above
6215 Prompt for a mark, and mark all articles with scores over the default
6216 score (or over the numeric prefix) with this mark
6217 (@code{gnus-summary-clear-above}).
6220 @vindex gnus-summary-goto-unread
6221 The @code{gnus-summary-goto-unread} variable controls what action should
6222 be taken after setting a mark. If non-@code{nil}, point will move to
6223 the next/previous unread article. If @code{nil}, point will just move
6224 one line up or down. As a special case, if this variable is
6225 @code{never}, all the marking commands as well as other commands (like
6226 @kbd{SPACE}) will move to the next article, whether it is unread or not.
6227 The default is @code{t}.
6230 @node Generic Marking Commands
6231 @subsection Generic Marking Commands
6233 Some people would like the command that ticks an article (@kbd{!}) go to
6234 the next article. Others would like it to go to the next unread
6235 article. Yet others would like it to stay on the current article. And
6236 even though I haven't heard of anybody wanting it to go to the
6237 previous (unread) article, I'm sure there are people that want that as
6240 Multiply these five behaviors with five different marking commands, and
6241 you get a potentially complex set of variable to control what each
6244 To sidestep that mess, Gnus provides commands that do all these
6245 different things. They can be found on the @kbd{M M} map in the summary
6246 buffer. Type @kbd{M M C-h} to see them all---there are too many of them
6247 to list in this manual.
6249 While you can use these commands directly, most users would prefer
6250 altering the summary mode keymap. For instance, if you would like the
6251 @kbd{!} command to go to the next article instead of the next unread
6252 article, you could say something like:
6256 (add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6257 (defun my-alter-summary-map ()
6258 (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
6266 (defun my-alter-summary-map ()
6267 (local-set-key "!" "MM!n"))
6271 @node Setting Process Marks
6272 @subsection Setting Process Marks
6273 @cindex setting process marks
6275 Process marks are displayed as @code{#} in the summary buffer, and are
6276 used for marking articles in such a way that other commands will
6277 process these articles. For instance, if you process mark four
6278 articles and then use the @kbd{*} command, Gnus will enter these four
6279 articles into the cache. For more information,
6280 @pxref{Process/Prefix}.
6287 @kindex M P p (Summary)
6288 @findex gnus-summary-mark-as-processable
6289 Mark the current article with the process mark
6290 (@code{gnus-summary-mark-as-processable}).
6291 @findex gnus-summary-unmark-as-processable
6295 @kindex M P u (Summary)
6296 @kindex M-# (Summary)
6297 Remove the process mark, if any, from the current article
6298 (@code{gnus-summary-unmark-as-processable}).
6301 @kindex M P U (Summary)
6302 @findex gnus-summary-unmark-all-processable
6303 Remove the process mark from all articles
6304 (@code{gnus-summary-unmark-all-processable}).
6307 @kindex M P i (Summary)
6308 @findex gnus-uu-invert-processable
6309 Invert the list of process marked articles
6310 (@code{gnus-uu-invert-processable}).
6313 @kindex M P R (Summary)
6314 @findex gnus-uu-mark-by-regexp
6315 Mark articles that have a @code{Subject} header that matches a regular
6316 expression (@code{gnus-uu-mark-by-regexp}).
6319 @kindex M P G (Summary)
6320 @findex gnus-uu-unmark-by-regexp
6321 Unmark articles that have a @code{Subject} header that matches a regular
6322 expression (@code{gnus-uu-unmark-by-regexp}).
6325 @kindex M P r (Summary)
6326 @findex gnus-uu-mark-region
6327 Mark articles in region (@code{gnus-uu-mark-region}).
6330 @kindex M P g (Summary)
6331 @findex gnus-uu-unmark-region
6332 Unmark articles in region (@code{gnus-uu-unmark-region}).
6335 @kindex M P t (Summary)
6336 @findex gnus-uu-mark-thread
6337 Mark all articles in the current (sub)thread
6338 (@code{gnus-uu-mark-thread}).
6341 @kindex M P T (Summary)
6342 @findex gnus-uu-unmark-thread
6343 Unmark all articles in the current (sub)thread
6344 (@code{gnus-uu-unmark-thread}).
6347 @kindex M P v (Summary)
6348 @findex gnus-uu-mark-over
6349 Mark all articles that have a score above the prefix argument
6350 (@code{gnus-uu-mark-over}).
6353 @kindex M P s (Summary)
6354 @findex gnus-uu-mark-series
6355 Mark all articles in the current series (@code{gnus-uu-mark-series}).
6358 @kindex M P S (Summary)
6359 @findex gnus-uu-mark-sparse
6360 Mark all series that have already had some articles marked
6361 (@code{gnus-uu-mark-sparse}).
6364 @kindex M P a (Summary)
6365 @findex gnus-uu-mark-all
6366 Mark all articles in series order (@code{gnus-uu-mark-all}).
6369 @kindex M P b (Summary)
6370 @findex gnus-uu-mark-buffer
6371 Mark all articles in the buffer in the order they appear
6372 (@code{gnus-uu-mark-buffer}).
6375 @kindex M P k (Summary)
6376 @findex gnus-summary-kill-process-mark
6377 Push the current process mark set onto the stack and unmark all articles
6378 (@code{gnus-summary-kill-process-mark}).
6381 @kindex M P y (Summary)
6382 @findex gnus-summary-yank-process-mark
6383 Pop the previous process mark set from the stack and restore it
6384 (@code{gnus-summary-yank-process-mark}).
6387 @kindex M P w (Summary)
6388 @findex gnus-summary-save-process-mark
6389 Push the current process mark set onto the stack
6390 (@code{gnus-summary-save-process-mark}).
6394 Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
6395 set process marks based on article body contents.
6402 It can be convenient to limit the summary buffer to just show some
6403 subset of the articles currently in the group. The effect most limit
6404 commands have is to remove a few (or many) articles from the summary
6407 All limiting commands work on subsets of the articles already fetched
6408 from the servers. None of these commands query the server for
6409 additional articles.
6415 @kindex / / (Summary)
6416 @findex gnus-summary-limit-to-subject
6417 Limit the summary buffer to articles that match some subject
6418 (@code{gnus-summary-limit-to-subject}). If given a prefix, exclude
6422 @kindex / a (Summary)
6423 @findex gnus-summary-limit-to-author
6424 Limit the summary buffer to articles that match some author
6425 (@code{gnus-summary-limit-to-author}). If given a prefix, exclude
6429 @kindex / R (Summary)
6430 @findex gnus-summary-limit-to-recipient
6431 Limit the summary buffer to articles that match some recipient
6432 (@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
6436 @kindex / S (Summary)
6437 @findex gnus-summary-limit-to-singletons
6438 Limit the summary buffer to articles that aren't part of any displayed
6439 threads (@code{gnus-summary-limit-to-singletons}). If given a prefix,
6440 limit to articles that are part of displayed threads.
6443 @kindex / x (Summary)
6444 @findex gnus-summary-limit-to-extra
6445 Limit the summary buffer to articles that match one of the ``extra''
6446 headers (@pxref{To From Newsgroups})
6447 (@code{gnus-summary-limit-to-extra}). If given a prefix, exclude
6452 @kindex / u (Summary)
6454 @findex gnus-summary-limit-to-unread
6455 Limit the summary buffer to articles not marked as read
6456 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
6457 buffer to articles strictly unread. This means that ticked and
6458 dormant articles will also be excluded.
6461 @kindex / m (Summary)
6462 @findex gnus-summary-limit-to-marks
6463 Ask for a mark and then limit to all articles that have been marked
6464 with that mark (@code{gnus-summary-limit-to-marks}).
6467 @kindex / t (Summary)
6468 @findex gnus-summary-limit-to-age
6469 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
6470 (@code{gnus-summary-limit-to-age}). If given a prefix, limit to
6471 articles younger than that number of days.
6474 @kindex / n (Summary)
6475 @findex gnus-summary-limit-to-articles
6476 With prefix @samp{n}, limit the summary buffer to the next @samp{n}
6477 articles. If not given a prefix, use the process marked articles
6478 instead. (@code{gnus-summary-limit-to-articles}).
6481 @kindex / w (Summary)
6482 @findex gnus-summary-pop-limit
6483 Pop the previous limit off the stack and restore it
6484 (@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
6488 @kindex / . (Summary)
6489 @findex gnus-summary-limit-to-unseen
6490 Limit the summary buffer to the unseen articles
6491 (@code{gnus-summary-limit-to-unseen}).
6494 @kindex / v (Summary)
6495 @findex gnus-summary-limit-to-score
6496 Limit the summary buffer to articles that have a score at or above some
6497 score (@code{gnus-summary-limit-to-score}).
6500 @kindex / p (Summary)
6501 @findex gnus-summary-limit-to-display-predicate
6502 Limit the summary buffer to articles that satisfy the @code{display}
6503 group parameter predicate
6504 (@code{gnus-summary-limit-to-display-predicate}). @xref{Group
6505 Parameters}, for more on this predicate.
6508 @kindex / r (Summary)
6509 @findex gnus-summary-limit-to-replied
6510 Limit the summary buffer to replied articles
6511 (@code{gnus-summary-limit-to-replied}). If given a prefix, exclude
6516 @kindex M S (Summary)
6517 @kindex / E (Summary)
6518 @findex gnus-summary-limit-include-expunged
6519 Include all expunged articles in the limit
6520 (@code{gnus-summary-limit-include-expunged}).
6523 @kindex / D (Summary)
6524 @findex gnus-summary-limit-include-dormant
6525 Include all dormant articles in the limit
6526 (@code{gnus-summary-limit-include-dormant}).
6529 @kindex / * (Summary)
6530 @findex gnus-summary-limit-include-cached
6531 Include all cached articles in the limit
6532 (@code{gnus-summary-limit-include-cached}).
6535 @kindex / d (Summary)
6536 @findex gnus-summary-limit-exclude-dormant
6537 Exclude all dormant articles from the limit
6538 (@code{gnus-summary-limit-exclude-dormant}).
6541 @kindex / M (Summary)
6542 @findex gnus-summary-limit-exclude-marks
6543 Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
6546 @kindex / T (Summary)
6547 @findex gnus-summary-limit-include-thread
6548 Include all the articles in the current thread in the limit.
6551 @kindex / c (Summary)
6552 @findex gnus-summary-limit-exclude-childless-dormant
6553 Exclude all dormant articles that have no children from the limit@*
6554 (@code{gnus-summary-limit-exclude-childless-dormant}).
6557 @kindex / C (Summary)
6558 @findex gnus-summary-limit-mark-excluded-as-read
6559 Mark all excluded unread articles as read
6560 (@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
6561 also mark excluded ticked and dormant articles as read.
6564 @kindex / N (Summary)
6565 @findex gnus-summary-insert-new-articles
6566 Insert all new articles in the summary buffer. It scans for new emails
6567 if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6570 @kindex / o (Summary)
6571 @findex gnus-summary-insert-old-articles
6572 Insert all old articles in the summary buffer. If given a numbered
6573 prefix, fetch this number of articles.
6576 @kindex / b (Summary)
6577 @findex gnus-summary-limit-to-bodies
6578 Limit the summary buffer to articles that have bodies that match a
6579 certain regexp (@code{gnus-summary-limit-to-bodies}). If given a
6580 prefix, reverse the limit. This command is quite slow since it
6581 requires selecting each article to find the matches.
6584 @kindex / h (Summary)
6585 @findex gnus-summary-limit-to-headers
6586 Like the previous command, only limit to headers instead
6587 (@code{gnus-summary-limit-to-headers}).
6595 @cindex article threading
6597 Gnus threads articles by default. @dfn{To thread} is to put responses
6598 to articles directly after the articles they respond to---in a
6599 hierarchical fashion.
6601 Threading is done by looking at the @code{References} headers of the
6602 articles. In a perfect world, this would be enough to build pretty
6603 trees, but unfortunately, the @code{References} header is often broken
6604 or simply missing. Weird news propagation exacerbates the problem,
6605 so one has to employ other heuristics to get pleasing results. A
6606 plethora of approaches exists, as detailed in horrible detail in
6607 @ref{Customizing Threading}.
6609 First, a quick overview of the concepts:
6613 The top-most article in a thread; the first article in the thread.
6616 A tree-like article structure.
6619 A small(er) section of this tree-like structure.
6622 Threads often lose their roots due to article expiry, or due to the root
6623 already having been read in a previous session, and not displayed in the
6624 summary buffer. We then typically have many sub-threads that really
6625 belong to one thread, but are without connecting roots. These are
6626 called loose threads.
6628 @item thread gathering
6629 An attempt to gather loose threads into bigger threads.
6631 @item sparse threads
6632 A thread where the missing articles have been ``guessed'' at, and are
6633 displayed as empty lines in the summary buffer.
6639 * Customizing Threading:: Variables you can change to affect the threading.
6640 * Thread Commands:: Thread based commands in the summary buffer.
6644 @node Customizing Threading
6645 @subsection Customizing Threading
6646 @cindex customizing threading
6649 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
6650 * Filling In Threads:: Making the threads displayed look fuller.
6651 * More Threading:: Even more variables for fiddling with threads.
6652 * Low-Level Threading:: You thought it was over@dots{} but you were wrong!
6657 @subsubsection Loose Threads
6660 @cindex loose threads
6663 @item gnus-summary-make-false-root
6664 @vindex gnus-summary-make-false-root
6665 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6666 and create a dummy root at the top. (Wait a minute. Root at the top?
6667 Yup.) Loose subtrees occur when the real root has expired, or you've
6668 read or killed the root in a previous session.
6670 When there is no real root of a thread, Gnus will have to fudge
6671 something. This variable says what fudging method Gnus should use.
6672 There are four possible values:
6676 \gnusfigure{The Summary Buffer}{390}{
6677 \put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6678 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6679 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6680 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
6685 @cindex adopting articles
6690 Gnus will make the first of the orphaned articles the parent. This
6691 parent will adopt all the other articles. The adopted articles will be
6692 marked as such by pointy brackets (@samp{<>}) instead of the standard
6693 square brackets (@samp{[]}). This is the default method.
6696 @vindex gnus-summary-dummy-line-format
6697 @vindex gnus-summary-make-false-root-always
6698 Gnus will create a dummy summary line that will pretend to be the
6699 parent. This dummy line does not correspond to any real article, so
6700 selecting it will just select the first real article after the dummy
6701 article. @code{gnus-summary-dummy-line-format} is used to specify the
6702 format of the dummy roots. It accepts only one format spec: @samp{S},
6703 which is the subject of the article. @xref{Formatting Variables}.
6704 If you want all threads to have a dummy root, even the non-gathered
6705 ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
6708 Gnus won't actually make any article the parent, but simply leave the
6709 subject field of all orphans except the first empty. (Actually, it will
6710 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6714 Don't make any article parent at all. Just gather the threads and
6715 display them after one another.
6718 Don't gather loose threads.
6721 @item gnus-summary-gather-subject-limit
6722 @vindex gnus-summary-gather-subject-limit
6723 Loose threads are gathered by comparing subjects of articles. If this
6724 variable is @code{nil}, Gnus requires an exact match between the
6725 subjects of the loose threads before gathering them into one big
6726 super-thread. This might be too strict a requirement, what with the
6727 presence of stupid newsreaders that chop off long subject lines. If
6728 you think so, set this variable to, say, 20 to require that only the
6729 first 20 characters of the subjects have to match. If you set this
6730 variable to a really low number, you'll find that Gnus will gather
6731 everything in sight into one thread, which isn't very helpful.
6733 @cindex fuzzy article gathering
6734 If you set this variable to the special value @code{fuzzy}, Gnus will
6735 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6738 @item gnus-simplify-subject-fuzzy-regexp
6739 @vindex gnus-simplify-subject-fuzzy-regexp
6740 This can either be a regular expression or list of regular expressions
6741 that match strings that will be removed from subjects if fuzzy subject
6742 simplification is used.
6744 @item gnus-simplify-ignored-prefixes
6745 @vindex gnus-simplify-ignored-prefixes
6746 If you set @code{gnus-summary-gather-subject-limit} to something as low
6747 as 10, you might consider setting this variable to something sensible:
6749 @c Written by Michael Ernst <mernst@cs.rice.edu>
6751 (setq gnus-simplify-ignored-prefixes
6757 "wanted" "followup" "summary\\( of\\)?"
6758 "help" "query" "problem" "question"
6759 "answer" "reference" "announce"
6760 "How can I" "How to" "Comparison of"
6765 (mapconcat 'identity
6766 '("for" "for reference" "with" "about")
6768 "\\)?\\]?:?[ \t]*"))
6771 All words that match this regexp will be removed before comparing two
6774 @item gnus-simplify-subject-functions
6775 @vindex gnus-simplify-subject-functions
6776 If non-@code{nil}, this variable overrides
6777 @code{gnus-summary-gather-subject-limit}. This variable should be a
6778 list of functions to apply to the @code{Subject} string iteratively to
6779 arrive at the simplified version of the string.
6781 Useful functions to put in this list include:
6784 @item gnus-simplify-subject-re
6785 @findex gnus-simplify-subject-re
6786 Strip the leading @samp{Re:}.
6788 @item gnus-simplify-subject-fuzzy
6789 @findex gnus-simplify-subject-fuzzy
6792 @item gnus-simplify-whitespace
6793 @findex gnus-simplify-whitespace
6794 Remove excessive whitespace.
6796 @item gnus-simplify-all-whitespace
6797 @findex gnus-simplify-all-whitespace
6798 Remove all whitespace.
6801 You may also write your own functions, of course.
6804 @item gnus-summary-gather-exclude-subject
6805 @vindex gnus-summary-gather-exclude-subject
6806 Since loose thread gathering is done on subjects only, that might lead
6807 to many false hits, especially with certain common subjects like
6808 @samp{} and @samp{(none)}. To make the situation slightly better,
6809 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6810 what subjects should be excluded from the gathering process.@*
6811 The default is @samp{^ *$\\|^(none)$}.
6813 @item gnus-summary-thread-gathering-function
6814 @vindex gnus-summary-thread-gathering-function
6815 Gnus gathers threads by looking at @code{Subject} headers. This means
6816 that totally unrelated articles may end up in the same ``thread'', which
6817 is confusing. An alternate approach is to look at all the
6818 @code{Message-ID}s in all the @code{References} headers to find matches.
6819 This will ensure that no gathered threads ever include unrelated
6820 articles, but it also means that people who have posted with broken
6821 newsreaders won't be gathered properly. The choice is yours---plague or
6825 @item gnus-gather-threads-by-subject
6826 @findex gnus-gather-threads-by-subject
6827 This function is the default gathering function and looks at
6828 @code{Subject}s exclusively.
6830 @item gnus-gather-threads-by-references
6831 @findex gnus-gather-threads-by-references
6832 This function looks at @code{References} headers exclusively.
6835 If you want to test gathering by @code{References}, you could say
6839 (setq gnus-summary-thread-gathering-function
6840 'gnus-gather-threads-by-references)
6846 @node Filling In Threads
6847 @subsubsection Filling In Threads
6850 @item gnus-fetch-old-headers
6851 @vindex gnus-fetch-old-headers
6852 If non-@code{nil}, Gnus will attempt to build old threads by fetching
6853 more old headers---headers to articles marked as read. If you would
6854 like to display as few summary lines as possible, but still connect as
6855 many loose threads as possible, you should set this variable to
6856 @code{some} or a number. If you set it to a number, no more than that
6857 number of extra old headers will be fetched. In either case, fetching
6858 old headers only works if the back end you are using carries overview
6859 files---this would normally be @code{nntp}, @code{nnspool},
6860 @code{nnml}, and @code{nnmaildir}. Also remember that if the root of
6861 the thread has been expired by the server, there's not much Gnus can
6864 This variable can also be set to @code{invisible}. This won't have any
6865 visible effects, but is useful if you use the @kbd{A T} command a lot
6866 (@pxref{Finding the Parent}).
6868 @item gnus-fetch-old-ephemeral-headers
6869 @vindex gnus-fetch-old-ephemeral-headers
6870 Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
6873 @item gnus-build-sparse-threads
6874 @vindex gnus-build-sparse-threads
6875 Fetching old headers can be slow. A low-rent similar effect can be
6876 gotten by setting this variable to @code{some}. Gnus will then look at
6877 the complete @code{References} headers of all articles and try to string
6878 together articles that belong in the same thread. This will leave
6879 @dfn{gaps} in the threading display where Gnus guesses that an article
6880 is missing from the thread. (These gaps appear like normal summary
6881 lines. If you select a gap, Gnus will try to fetch the article in
6882 question.) If this variable is @code{t}, Gnus will display all these
6883 ``gaps'' without regard for whether they are useful for completing the
6884 thread or not. Finally, if this variable is @code{more}, Gnus won't cut
6885 off sparse leaf nodes that don't lead anywhere. This variable is
6886 @code{nil} by default.
6888 @item gnus-read-all-available-headers
6889 @vindex gnus-read-all-available-headers
6890 This is a rather obscure variable that few will find useful. It's
6891 intended for those non-news newsgroups where the back end has to fetch
6892 quite a lot to present the summary buffer, and where it's impossible to
6893 go back to parents of articles. This is mostly the case in the
6894 web-based groups, like the @code{nnultimate} groups.
6896 If you don't use those, then it's safe to leave this as the default
6897 @code{nil}. If you want to use this variable, it should be a regexp
6898 that matches the group name, or @code{t} for all groups.
6903 @node More Threading
6904 @subsubsection More Threading
6907 @item gnus-show-threads
6908 @vindex gnus-show-threads
6909 If this variable is @code{nil}, no threading will be done, and all of
6910 the rest of the variables here will have no effect. Turning threading
6911 off will speed group selection up a bit, but it is sure to make reading
6912 slower and more awkward.
6914 @item gnus-thread-hide-subtree
6915 @vindex gnus-thread-hide-subtree
6916 If non-@code{nil}, all threads will be hidden when the summary buffer is
6919 This can also be a predicate specifier (@pxref{Predicate Specifiers}).
6920 Available predicates are @code{gnus-article-unread-p} and
6921 @code{gnus-article-unseen-p}.
6926 (setq gnus-thread-hide-subtree
6927 '(or gnus-article-unread-p
6928 gnus-article-unseen-p))
6931 (It's a pretty nonsensical example, since all unseen articles are also
6932 unread, but you get my drift.)
6935 @item gnus-thread-expunge-below
6936 @vindex gnus-thread-expunge-below
6937 All threads that have a total score (as defined by
6938 @code{gnus-thread-score-function}) less than this number will be
6939 expunged. This variable is @code{nil} by default, which means that no
6940 threads are expunged.
6942 @item gnus-thread-hide-killed
6943 @vindex gnus-thread-hide-killed
6944 if you kill a thread and this variable is non-@code{nil}, the subtree
6947 @item gnus-thread-ignore-subject
6948 @vindex gnus-thread-ignore-subject
6949 Sometimes somebody changes the subject in the middle of a thread. If
6950 this variable is non-@code{nil}, which is the default, the subject
6951 change is ignored. If it is @code{nil}, a change in the subject will
6952 result in a new thread.
6954 @item gnus-thread-indent-level
6955 @vindex gnus-thread-indent-level
6956 This is a number that says how much each sub-thread should be indented.
6959 @item gnus-sort-gathered-threads-function
6960 @vindex gnus-sort-gathered-threads-function
6961 Sometimes, particularly with mailing lists, the order in which mails
6962 arrive locally is not necessarily the same as the order in which they
6963 arrived on the mailing list. Consequently, when sorting sub-threads
6964 using the default @code{gnus-thread-sort-by-number}, responses can end
6965 up appearing before the article to which they are responding to.
6966 Setting this variable to an alternate value
6967 (e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
6968 appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
6969 more logical sub-thread ordering in such instances.
6974 @node Low-Level Threading
6975 @subsubsection Low-Level Threading
6979 @item gnus-parse-headers-hook
6980 @vindex gnus-parse-headers-hook
6981 Hook run before parsing any headers.
6983 @item gnus-alter-header-function
6984 @vindex gnus-alter-header-function
6985 If non-@code{nil}, this function will be called to allow alteration of
6986 article header structures. The function is called with one parameter,
6987 the article header vector, which it may alter in any way. For instance,
6988 if you have a mail-to-news gateway which alters the @code{Message-ID}s
6989 in systematic ways (by adding prefixes and such), you can use this
6990 variable to un-scramble the @code{Message-ID}s so that they are more
6991 meaningful. Here's one example:
6994 (setq gnus-alter-header-function 'my-alter-message-id)
6996 (defun my-alter-message-id (header)
6997 (let ((id (mail-header-id header)))
6999 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
7001 (concat (match-string 1 id) "@@" (match-string 2 id))
7008 @node Thread Commands
7009 @subsection Thread Commands
7010 @cindex thread commands
7016 @kindex T k (Summary)
7017 @kindex C-M-k (Summary)
7018 @findex gnus-summary-kill-thread
7019 Mark all articles in the current (sub-)thread as read
7020 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
7021 remove all marks instead. If the prefix argument is negative, tick
7026 @kindex T l (Summary)
7027 @kindex C-M-l (Summary)
7028 @findex gnus-summary-lower-thread
7029 Lower the score of the current (sub-)thread
7030 (@code{gnus-summary-lower-thread}).
7033 @kindex T i (Summary)
7034 @findex gnus-summary-raise-thread
7035 Increase the score of the current (sub-)thread
7036 (@code{gnus-summary-raise-thread}).
7039 @kindex T # (Summary)
7040 @findex gnus-uu-mark-thread
7041 Set the process mark on the current (sub-)thread
7042 (@code{gnus-uu-mark-thread}).
7045 @kindex T M-# (Summary)
7046 @findex gnus-uu-unmark-thread
7047 Remove the process mark from the current (sub-)thread
7048 (@code{gnus-uu-unmark-thread}).
7051 @kindex T T (Summary)
7052 @findex gnus-summary-toggle-threads
7053 Toggle threading (@code{gnus-summary-toggle-threads}).
7056 @kindex T s (Summary)
7057 @findex gnus-summary-show-thread
7058 Expose the (sub-)thread hidden under the current article, if any@*
7059 (@code{gnus-summary-show-thread}).
7062 @kindex T h (Summary)
7063 @findex gnus-summary-hide-thread
7064 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
7067 @kindex T S (Summary)
7068 @findex gnus-summary-show-all-threads
7069 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
7072 @kindex T H (Summary)
7073 @findex gnus-summary-hide-all-threads
7074 Hide all threads (@code{gnus-summary-hide-all-threads}).
7077 @kindex T t (Summary)
7078 @findex gnus-summary-rethread-current
7079 Re-thread the current article's thread
7080 (@code{gnus-summary-rethread-current}). This works even when the
7081 summary buffer is otherwise unthreaded.
7084 @kindex T ^ (Summary)
7085 @findex gnus-summary-reparent-thread
7086 Make the current article the child of the marked (or previous) article
7087 (@code{gnus-summary-reparent-thread}).
7090 @kindex T M-^ (Summary)
7091 @findex gnus-summary-reparent-children
7092 Make the current article the parent of the marked articles
7093 (@code{gnus-summary-reparent-children}).
7097 The following commands are thread movement commands. They all
7098 understand the numeric prefix.
7103 @kindex T n (Summary)
7105 @kindex C-M-n (Summary)
7107 @kindex M-down (Summary)
7108 @findex gnus-summary-next-thread
7109 Go to the next thread (@code{gnus-summary-next-thread}).
7112 @kindex T p (Summary)
7114 @kindex C-M-p (Summary)
7116 @kindex M-up (Summary)
7117 @findex gnus-summary-prev-thread
7118 Go to the previous thread (@code{gnus-summary-prev-thread}).
7121 @kindex T d (Summary)
7122 @findex gnus-summary-down-thread
7123 Descend the thread (@code{gnus-summary-down-thread}).
7126 @kindex T u (Summary)
7127 @findex gnus-summary-up-thread
7128 Ascend the thread (@code{gnus-summary-up-thread}).
7131 @kindex T o (Summary)
7132 @findex gnus-summary-top-thread
7133 Go to the top of the thread (@code{gnus-summary-top-thread}).
7136 @vindex gnus-thread-operation-ignore-subject
7137 If you ignore subject while threading, you'll naturally end up with
7138 threads that have several different subjects in them. If you then issue
7139 a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
7140 wish to kill the entire thread, but just those parts of the thread that
7141 have the same subject as the current article. If you like this idea,
7142 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
7143 is non-@code{nil} (which it is by default), subjects will be ignored
7144 when doing thread commands. If this variable is @code{nil}, articles in
7145 the same thread with different subjects will not be included in the
7146 operation in question. If this variable is @code{fuzzy}, only articles
7147 that have subjects fuzzily equal will be included (@pxref{Fuzzy
7151 @node Sorting the Summary Buffer
7152 @section Sorting the Summary Buffer
7154 @findex gnus-thread-sort-by-total-score
7155 @findex gnus-thread-sort-by-date
7156 @findex gnus-thread-sort-by-date-reverse
7157 @findex gnus-thread-sort-by-score
7158 @findex gnus-thread-sort-by-subject
7159 @findex gnus-thread-sort-by-author
7160 @findex gnus-thread-sort-by-recipient
7161 @findex gnus-thread-sort-by-number
7162 @findex gnus-thread-sort-by-random
7163 @vindex gnus-thread-sort-functions
7164 @findex gnus-thread-sort-by-most-recent-number
7165 @findex gnus-thread-sort-by-most-recent-date
7166 If you are using a threaded summary display, you can sort the threads by
7167 setting @code{gnus-thread-sort-functions}, which can be either a single
7168 function, a list of functions, or a list containing functions and
7169 @code{(not some-function)} elements.
7171 By default, sorting is done on article numbers. Ready-made sorting
7172 predicate functions include @code{gnus-thread-sort-by-number},
7173 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
7174 @code{gnus-thread-sort-by-subject},
7175 @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-date-reverse},
7176 @code{gnus-thread-sort-by-score},
7177 @code{gnus-thread-sort-by-most-recent-number},
7178 @code{gnus-thread-sort-by-most-recent-date},
7179 @code{gnus-thread-sort-by-random} and
7180 @code{gnus-thread-sort-by-total-score}.
7182 Each function takes two threads and returns non-@code{nil} if the first
7183 thread should be sorted before the other. Note that sorting really is
7184 normally done by looking only at the roots of each thread.
7186 If you use more than one function, the primary sort key should be the
7187 last function in the list. You should probably always include
7188 @code{gnus-thread-sort-by-number} in the list of sorting
7189 functions---preferably first. This will ensure that threads that are
7190 equal with respect to the other sort criteria will be displayed in
7191 ascending article order.
7193 If you would like to sort by reverse score, then by subject, and finally
7194 by number, you could do something like:
7197 (setq gnus-thread-sort-functions
7198 '(gnus-thread-sort-by-number
7199 gnus-thread-sort-by-subject
7200 (not gnus-thread-sort-by-total-score)))
7203 The threads that have highest score will be displayed first in the
7204 summary buffer. When threads have the same score, they will be sorted
7205 alphabetically. The threads that have the same score and the same
7206 subject will be sorted by number, which is (normally) the sequence in
7207 which the articles arrived.
7209 If you want to sort by score and then reverse arrival order, you could
7213 (setq gnus-thread-sort-functions
7214 '((not gnus-thread-sort-by-number)
7215 gnus-thread-sort-by-score))
7218 @vindex gnus-thread-score-function
7219 The function in the @code{gnus-thread-score-function} variable (default
7220 @code{+}) is used for calculating the total score of a thread. Useful
7221 functions might be @code{max}, @code{min}, or squared means, or whatever
7224 @findex gnus-article-sort-functions
7225 @findex gnus-article-sort-by-date
7226 @findex gnus-article-sort-by-score
7227 @findex gnus-article-sort-by-subject
7228 @findex gnus-article-sort-by-author
7229 @findex gnus-article-sort-by-random
7230 @findex gnus-article-sort-by-number
7231 If you are using an unthreaded display for some strange reason or
7232 other, you have to fiddle with the @code{gnus-article-sort-functions}
7233 variable. It is very similar to the
7234 @code{gnus-thread-sort-functions}, except that it uses slightly
7235 different functions for article comparison. Available sorting
7236 predicate functions are @code{gnus-article-sort-by-number},
7237 @code{gnus-article-sort-by-author},
7238 @code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date},
7239 @code{gnus-article-sort-by-random}, and
7240 @code{gnus-article-sort-by-score}.
7242 If you want to sort an unthreaded summary display by subject, you could
7246 (setq gnus-article-sort-functions
7247 '(gnus-article-sort-by-number
7248 gnus-article-sort-by-subject))
7251 You can define group specific sorting via @code{gnus-parameters},
7252 @xref{Group Parameters}.
7255 @node Asynchronous Fetching
7256 @section Asynchronous Article Fetching
7257 @cindex asynchronous article fetching
7258 @cindex article pre-fetch
7261 If you read your news from an @acronym{NNTP} server that's far away, the
7262 network latencies may make reading articles a chore. You have to wait
7263 for a while after pressing @kbd{n} to go to the next article before the
7264 article appears. Why can't Gnus just go ahead and fetch the article
7265 while you are reading the previous one? Why not, indeed.
7267 First, some caveats. There are some pitfalls to using asynchronous
7268 article fetching, especially the way Gnus does it.
7270 Let's say you are reading article 1, which is short, and article 2 is
7271 quite long, and you are not interested in reading that. Gnus does not
7272 know this, so it goes ahead and fetches article 2. You decide to read
7273 article 3, but since Gnus is in the process of fetching article 2, the
7274 connection is blocked.
7276 To avoid these situations, Gnus will open two (count 'em two)
7277 connections to the server. Some people may think this isn't a very nice
7278 thing to do, but I don't see any real alternatives. Setting up that
7279 extra connection takes some time, so Gnus startup will be slower.
7281 Gnus will fetch more articles than you will read. This will mean that
7282 the link between your machine and the @acronym{NNTP} server will become more
7283 loaded than if you didn't use article pre-fetch. The server itself will
7284 also become more loaded---both with the extra article requests, and the
7287 Ok, so now you know that you shouldn't really use this thing@dots{} unless
7290 @vindex gnus-asynchronous
7291 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
7292 happen automatically.
7294 @vindex gnus-use-article-prefetch
7295 You can control how many articles are to be pre-fetched by setting
7296 @code{gnus-use-article-prefetch}. This is 30 by default, which means
7297 that when you read an article in the group, the back end will pre-fetch
7298 the next 30 articles. If this variable is @code{t}, the back end will
7299 pre-fetch all the articles it can without bound. If it is
7300 @code{nil}, no pre-fetching will be done.
7302 @vindex gnus-async-prefetch-article-p
7303 @findex gnus-async-read-p
7304 There are probably some articles that you don't want to pre-fetch---read
7305 articles, for instance. The @code{gnus-async-prefetch-article-p}
7306 variable controls whether an article is to be pre-fetched. This
7307 function should return non-@code{nil} when the article in question is
7308 to be pre-fetched. The default is @code{gnus-async-read-p}, which
7309 returns @code{nil} on read articles. The function is called with an
7310 article data structure as the only parameter.
7312 If, for instance, you wish to pre-fetch only unread articles shorter
7313 than 100 lines, you could say something like:
7316 (defun my-async-short-unread-p (data)
7317 "Return non-nil for short, unread articles."
7318 (and (gnus-data-unread-p data)
7319 (< (mail-header-lines (gnus-data-header data))
7322 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
7325 These functions will be called many, many times, so they should
7326 preferably be short and sweet to avoid slowing down Gnus too much.
7327 It's probably a good idea to byte-compile things like this.
7329 @vindex gnus-prefetched-article-deletion-strategy
7330 Articles have to be removed from the asynch buffer sooner or later. The
7331 @code{gnus-prefetched-article-deletion-strategy} says when to remove
7332 articles. This is a list that may contain the following elements:
7336 Remove articles when they are read.
7339 Remove articles when exiting the group.
7342 The default value is @code{(read exit)}.
7344 @c @vindex gnus-use-header-prefetch
7345 @c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
7346 @c from the next group.
7349 @node Article Caching
7350 @section Article Caching
7351 @cindex article caching
7354 If you have an @emph{extremely} slow @acronym{NNTP} connection, you may
7355 consider turning article caching on. Each article will then be stored
7356 locally under your home directory. As you may surmise, this could
7357 potentially use @emph{huge} amounts of disk space, as well as eat up all
7358 your inodes so fast it will make your head swim. In vodka.
7360 Used carefully, though, it could be just an easier way to save articles.
7362 @vindex gnus-use-long-file-name
7363 @vindex gnus-cache-directory
7364 @vindex gnus-use-cache
7365 To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
7366 all articles ticked or marked as dormant will then be copied
7367 over to your local cache (@code{gnus-cache-directory}). Whether this
7368 cache is flat or hierarchical is controlled by the
7369 @code{gnus-use-long-file-name} variable, as usual.
7371 When re-selecting a ticked or dormant article, it will be fetched from the
7372 cache instead of from the server. As articles in your cache will never
7373 expire, this might serve as a method of saving articles while still
7374 keeping them where they belong. Just mark all articles you want to save
7375 as dormant, and don't worry.
7377 When an article is marked as read, is it removed from the cache.
7379 @vindex gnus-cache-remove-articles
7380 @vindex gnus-cache-enter-articles
7381 The entering/removal of articles from the cache is controlled by the
7382 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
7383 variables. Both are lists of symbols. The first is @code{(ticked
7384 dormant)} by default, meaning that ticked and dormant articles will be
7385 put in the cache. The latter is @code{(read)} by default, meaning that
7386 articles marked as read are removed from the cache. Possibly
7387 symbols in these two lists are @code{ticked}, @code{dormant},
7388 @code{unread} and @code{read}.
7390 @findex gnus-jog-cache
7391 So where does the massive article-fetching and storing come into the
7392 picture? The @code{gnus-jog-cache} command will go through all
7393 subscribed newsgroups, request all unread articles, score them, and
7394 store them in the cache. You should only ever, ever ever ever, use this
7395 command if 1) your connection to the @acronym{NNTP} server is really, really,
7396 really slow and 2) you have a really, really, really huge disk.
7397 Seriously. One way to cut down on the number of articles downloaded is
7398 to score unwanted articles down and have them marked as read. They will
7399 not then be downloaded by this command.
7401 @vindex gnus-uncacheable-groups
7402 @vindex gnus-cacheable-groups
7403 It is likely that you do not want caching on all groups. For instance,
7404 if your @code{nnml} mail is located under your home directory, it makes no
7405 sense to cache it somewhere else under your home directory. Unless you
7406 feel that it's neat to use twice as much space.
7408 To limit the caching, you could set @code{gnus-cacheable-groups} to a
7409 regexp of groups to cache, @samp{^nntp} for instance, or set the
7410 @code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
7411 Both variables are @code{nil} by default. If a group matches both
7412 variables, the group is not cached.
7414 @findex gnus-cache-generate-nov-databases
7415 @findex gnus-cache-generate-active
7416 @vindex gnus-cache-active-file
7417 The cache stores information on what articles it contains in its active
7418 file (@code{gnus-cache-active-file}). If this file (or any other parts
7419 of the cache) becomes all messed up for some reason or other, Gnus
7420 offers two functions that will try to set things right. @kbd{M-x
7421 gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV}
7422 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
7425 @findex gnus-cache-move-cache
7426 @code{gnus-cache-move-cache} will move your whole
7427 @code{gnus-cache-directory} to some other location. You get asked to
7428 where, isn't that cool?
7430 @node Persistent Articles
7431 @section Persistent Articles
7432 @cindex persistent articles
7434 Closely related to article caching, we have @dfn{persistent articles}.
7435 In fact, it's just a different way of looking at caching, and much more
7436 useful in my opinion.
7438 Say you're reading a newsgroup, and you happen on to some valuable gem
7439 that you want to keep and treasure forever. You'd normally just save it
7440 (using one of the many saving commands) in some file. The problem with
7441 that is that it's just, well, yucky. Ideally you'd prefer just having
7442 the article remain in the group where you found it forever; untouched by
7443 the expiry going on at the news server.
7445 This is what a @dfn{persistent article} is---an article that just won't
7446 be deleted. It's implemented using the normal cache functions, but
7447 you use two explicit commands for managing persistent articles:
7453 @findex gnus-cache-enter-article
7454 Make the current article persistent (@code{gnus-cache-enter-article}).
7457 @kindex M-* (Summary)
7458 @findex gnus-cache-remove-article
7459 Remove the current article from the persistent articles
7460 (@code{gnus-cache-remove-article}). This will normally delete the
7464 Both these commands understand the process/prefix convention.
7466 To avoid having all ticked articles (and stuff) entered into the cache,
7467 you should set @code{gnus-use-cache} to @code{passive} if you're just
7468 interested in persistent articles:
7471 (setq gnus-use-cache 'passive)
7475 @node Article Backlog
7476 @section Article Backlog
7478 @cindex article backlog
7480 If you have a slow connection, but the idea of using caching seems
7481 unappealing to you (and it is, really), you can help the situation some
7482 by switching on the @dfn{backlog}. This is where Gnus will buffer
7483 already read articles so that it doesn't have to re-fetch articles
7484 you've already read. This only helps if you are in the habit of
7485 re-selecting articles you've recently read, of course. If you never do
7486 that, turning the backlog on will slow Gnus down a little bit, and
7487 increase memory usage some.
7489 @vindex gnus-keep-backlog
7490 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
7491 at most @var{n} old articles in a buffer for later re-fetching. If this
7492 variable is non-@code{nil} and is not a number, Gnus will store
7493 @emph{all} read articles, which means that your Emacs will grow without
7494 bound before exploding and taking your machine down with you. I put
7495 that in there just to keep y'all on your toes.
7497 The default value is 20.
7500 @node Saving Articles
7501 @section Saving Articles
7502 @cindex saving articles
7504 Gnus can save articles in a number of ways. Below is the documentation
7505 for saving articles in a fairly straight-forward fashion (i.e., little
7506 processing of the article is done before it is saved). For a different
7507 approach (uudecoding, unsharing) you should use @code{gnus-uu}
7508 (@pxref{Decoding Articles}).
7510 For the commands listed here, the target is a file. If you want to
7511 save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article})
7512 command (@pxref{Mail Group Commands}).
7514 @vindex gnus-save-all-headers
7515 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
7516 unwanted headers before saving the article.
7518 @vindex gnus-saved-headers
7519 If the preceding variable is @code{nil}, all headers that match the
7520 @code{gnus-saved-headers} regexp will be kept, while the rest will be
7521 deleted before saving.
7527 @kindex O o (Summary)
7529 @findex gnus-summary-save-article
7530 @c @icon{gnus-summary-save-article}
7531 Save the current article using the default article saver
7532 (@code{gnus-summary-save-article}).
7535 @kindex O m (Summary)
7536 @findex gnus-summary-save-article-mail
7537 Save the current article in a Unix mail box (mbox) file
7538 (@code{gnus-summary-save-article-mail}).
7541 @kindex O r (Summary)
7542 @findex gnus-summary-save-article-rmail
7543 Save the current article in Rmail format
7544 (@code{gnus-summary-save-article-rmail}).
7547 @kindex O f (Summary)
7548 @findex gnus-summary-save-article-file
7549 @c @icon{gnus-summary-save-article-file}
7550 Save the current article in plain file format
7551 (@code{gnus-summary-save-article-file}).
7554 @kindex O F (Summary)
7555 @findex gnus-summary-write-article-file
7556 Write the current article in plain file format, overwriting any previous
7557 file contents (@code{gnus-summary-write-article-file}).
7560 @kindex O b (Summary)
7561 @findex gnus-summary-save-article-body-file
7562 Save the current article body in plain file format
7563 (@code{gnus-summary-save-article-body-file}).
7566 @kindex O h (Summary)
7567 @findex gnus-summary-save-article-folder
7568 Save the current article in mh folder format
7569 (@code{gnus-summary-save-article-folder}).
7572 @kindex O v (Summary)
7573 @findex gnus-summary-save-article-vm
7574 Save the current article in a VM folder
7575 (@code{gnus-summary-save-article-vm}).
7579 @kindex O p (Summary)
7581 @findex gnus-summary-pipe-output
7582 Save the current article in a pipe. Uhm, like, what I mean is---Pipe
7583 the current article to a process (@code{gnus-summary-pipe-output}).
7584 If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the
7585 complete headers in the piped output.
7588 @kindex O P (Summary)
7589 @findex gnus-summary-muttprint
7590 @vindex gnus-summary-muttprint-program
7591 Save the current article into muttprint. That is, print it using the
7592 external program @uref{http://muttprint.sourceforge.net/,
7593 Muttprint}. The program name and options to use is controlled by the
7594 variable @code{gnus-summary-muttprint-program}.
7595 (@code{gnus-summary-muttprint}).
7599 @vindex gnus-prompt-before-saving
7600 All these commands use the process/prefix convention
7601 (@pxref{Process/Prefix}). If you save bunches of articles using these
7602 functions, you might get tired of being prompted for files to save each
7603 and every article in. The prompting action is controlled by
7604 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
7605 default, giving you that excessive prompting action you know and
7606 loathe. If you set this variable to @code{t} instead, you'll be prompted
7607 just once for each series of articles you save. If you like to really
7608 have Gnus do all your thinking for you, you can even set this variable
7609 to @code{nil}, which means that you will never be prompted for files to
7610 save articles in. Gnus will simply save all the articles in the default
7614 @vindex gnus-default-article-saver
7615 You can customize the @code{gnus-default-article-saver} variable to make
7616 Gnus do what you want it to. You can use any of the eight ready-made
7617 functions below, or you can create your own.
7621 @item gnus-summary-save-in-rmail
7622 @findex gnus-summary-save-in-rmail
7623 @vindex gnus-rmail-save-name
7624 @findex gnus-plain-save-name
7625 This is the default format, @dfn{Babyl}. Uses the function in the
7626 @code{gnus-rmail-save-name} variable to get a file name to save the
7627 article in. The default is @code{gnus-plain-save-name}.
7629 @item gnus-summary-save-in-mail
7630 @findex gnus-summary-save-in-mail
7631 @vindex gnus-mail-save-name
7632 Save in a Unix mail (mbox) file. Uses the function in the
7633 @code{gnus-mail-save-name} variable to get a file name to save the
7634 article in. The default is @code{gnus-plain-save-name}.
7636 @item gnus-summary-save-in-file
7637 @findex gnus-summary-save-in-file
7638 @vindex gnus-file-save-name
7639 @findex gnus-numeric-save-name
7640 Append the article straight to an ordinary file. Uses the function in
7641 the @code{gnus-file-save-name} variable to get a file name to save the
7642 article in. The default is @code{gnus-numeric-save-name}.
7644 @item gnus-summary-write-to-file
7645 @findex gnus-summary-write-to-file
7646 Write the article straight to an ordinary file. The file is
7647 overwritten if it exists. Uses the function in the
7648 @code{gnus-file-save-name} variable to get a file name to save the
7649 article in. The default is @code{gnus-numeric-save-name}.
7651 @item gnus-summary-save-body-in-file
7652 @findex gnus-summary-save-body-in-file
7653 Append the article body to an ordinary file. Uses the function in the
7654 @code{gnus-file-save-name} variable to get a file name to save the
7655 article in. The default is @code{gnus-numeric-save-name}.
7657 @item gnus-summary-write-body-to-file
7658 @findex gnus-summary-write-body-to-file
7659 Write the article body straight to an ordinary file. The file is
7660 overwritten if it exists. Uses the function in the
7661 @code{gnus-file-save-name} variable to get a file name to save the
7662 article in. The default is @code{gnus-numeric-save-name}.
7664 @item gnus-summary-save-in-folder
7665 @findex gnus-summary-save-in-folder
7666 @findex gnus-folder-save-name
7667 @findex gnus-Folder-save-name
7668 @vindex gnus-folder-save-name
7671 Save the article to an MH folder using @code{rcvstore} from the MH
7672 library. Uses the function in the&n