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.5}
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.5.
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