3 @include gnus-overrides.texi
11 @documentencoding ISO-8859-1
14 Copyright @copyright{} 1995-2011 Free Software Foundation, Inc.
17 Permission is granted to copy, distribute and/or modify this document
18 under the terms of the GNU Free Documentation License, Version 1.3 or
19 any later version published by the Free Software Foundation; with no
20 Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
21 and with the Back-Cover Texts as in (a) below. A copy of the license
22 is included in the section entitled ``GNU Free Documentation License''.
24 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
25 modify this GNU manual. Buying copies from the FSF supports it in
26 developing GNU and promoting software freedom.''
32 \documentclass[twoside,a4paper,openright,11pt]{book}
33 \usepackage[latin1]{inputenc}
34 \usepackage{pagestyle}
37 \input{gnusconfig.tex}
39 \ifx\pdfoutput\undefined
41 \usepackage[pdftex,bookmarks,colorlinks=true]{hyperref}
49 % Adjust ../Makefile.in if you change the following line:
50 \newcommand{\gnusversionname}{No Gnus v0.16}
51 \newcommand{\gnuschaptername}{}
52 \newcommand{\gnussectionname}{}
54 \newcommand{\gnusbackslash}{/}
56 \newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}}
57 \ifx\pdfoutput\undefined
58 \newcommand{\gnusuref}[1]{\gnustt{#1}}
60 \newcommand{\gnusuref}[1]{\href{#1}{\gnustt{#1}}}
62 \newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}}
63 \newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}}
65 \newcommand{\gnuskindex}[1]{\index{#1}}
66 \newcommand{\gnusindex}[1]{\index{#1}}
68 \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}}
69 \newcommand{\gnuscode}[1]{\gnustt{#1}}
70 \newcommand{\gnusasis}[1]{\gnustt{#1}}
71 \newcommand{\gnusurl}[1]{\gnustt{#1}}
72 \newcommand{\gnuscommand}[1]{\gnustt{#1}}
73 \newcommand{\gnusenv}[1]{\gnustt{#1}}
74 \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''}
75 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
76 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
77 \newcommand{\gnuskey}[1]{`\gnustt{#1}'}
78 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
79 \newcommand{\gnusdfn}[1]{\textit{#1}}
80 \newcommand{\gnusi}[1]{\textit{#1}}
81 \newcommand{\gnusr}[1]{\textrm{#1}}
82 \newcommand{\gnusstrong}[1]{\textbf{#1}}
83 \newcommand{\gnusemph}[1]{\textit{#1}}
84 \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}}
85 \newcommand{\gnussc}[1]{\textsc{#1}}
86 \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}}
87 \newcommand{\gnusversion}[1]{{\small\textit{#1}}}
88 \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}}
89 \newcommand{\gnusresult}[1]{\gnustt{=> #1}}
90 \newcommand{\gnusacronym}[1]{\textsc{#1}}
91 \newcommand{\gnusemail}[1]{\textit{#1}}
93 \newcommand{\gnusbullet}{{${\bullet}$}}
94 \newcommand{\gnusdollar}{\$}
95 \newcommand{\gnusampersand}{\&}
96 \newcommand{\gnuspercent}{\%}
97 \newcommand{\gnushash}{\#}
98 \newcommand{\gnushat}{\symbol{"5E}}
99 \newcommand{\gnusunderline}{\symbol{"5F}}
100 \newcommand{\gnusnot}{$\neg$}
101 \newcommand{\gnustilde}{\symbol{"7E}}
102 \newcommand{\gnusless}{{$<$}}
103 \newcommand{\gnusgreater}{{$>$}}
104 \newcommand{\gnusbraceleft}{{$>$}}
105 \newcommand{\gnusbraceright}{{$>$}}
107 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head,height=1cm}}}
108 \newcommand{\gnusinteresting}{
109 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
112 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
114 \newcommand{\gnuspagechapter}[1]{
118 \newdimen{\gnusdimen}
121 \newcommand{\gnuschapter}[2]{
123 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
125 \renewcommand{\gnussectionname}{}
126 \renewcommand{\gnuschaptername}{#2}
127 \thispagestyle{empty}
129 \begin{picture}(500,500)(0,0)
130 \put(480,350){\makebox(0,0)[tr]{#1}}
131 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
136 \newcommand{\gnusfigure}[3]{
138 \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2)
145 \newcommand{\gnusicon}[1]{
146 \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=ps/#1-up,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=ps/#1-up,height=1cm}}}
149 \newcommand{\gnuspicon}[1]{
150 \margindex{\epsfig{figure=#1,width=2cm}}
153 \newcommand{\gnusxface}[2]{
154 \margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
157 \newcommand{\gnussmiley}[2]{
158 \margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
161 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
163 \newcommand{\gnussection}[1]{
164 \renewcommand{\gnussectionname}{#1}
168 \newenvironment{codelist}%
173 \newenvironment{asislist}%
178 \newenvironment{kbdlist}%
184 \newenvironment{dfnlist}%
189 \newenvironment{stronglist}%
194 \newenvironment{samplist}%
199 \newenvironment{varlist}%
204 \newenvironment{emphlist}%
209 \newlength\gnusheadtextwidth
210 \setlength{\gnusheadtextwidth}{\headtextwidth}
211 \addtolength{\gnusheadtextwidth}{1cm}
213 \newpagestyle{gnuspreamble}%
218 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
222 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
231 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
233 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
238 \newpagestyle{gnusindex}%
243 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
247 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
255 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
257 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
267 \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}}
271 \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}}
279 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
281 \raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}}
286 \pagenumbering{roman}
287 \pagestyle{gnuspreamble}
298 %\addtolength{\oddsidemargin}{-5cm}
299 %\addtolength{\evensidemargin}{-5cm}
301 \addtolength{\textheight}{2cm}
303 \gnustitle{\gnustitlename}\hfill\gnusversion{\gnusversionname}\\
306 \hspace*{0cm}\epsfig{figure=ps/gnus-big-logo,height=15cm}
309 \gnusauthor{by Lars Magne Ingebrigtsen}
316 \thispagestyle{empty}
324 @dircategory Emacs network features
326 * Gnus: (gnus). The newsreader Gnus.
335 @title Gnus Manual (DEVELOPMENT VERSION)
337 @ifclear WEBHACKDEVEL
341 @author by Lars Magne Ingebrigtsen
343 @vskip 0pt plus 1filll
351 @top The Gnus Newsreader
355 You can read news (and mail) from within Emacs by using Gnus. The news
356 can be gotten by any nefarious means you can think of---@acronym{NNTP}, local
357 spool or your mbox file. All at the same time, if you want to push your
360 @c Adjust ../Makefile.in if you change the following line:
361 This manual corresponds to No Gnus v0.16
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)
394 @c Adjust ../Makefile.in if you change the following line:
395 This manual corresponds to No Gnus v0.16
397 @heading Other related manuals
399 @item Message manual: Composing messages
400 @item Emacs-MIME: Composing messages; @acronym{MIME}-specific parts.
401 @item Sieve: Managing Sieve scripts in Emacs.
402 @item PGG: @acronym{PGP/MIME} with Gnus.
403 @item SASL: @acronym{SASL} authentication in Emacs.
409 * Starting Up:: Finding news can be a pain.
410 * Group Buffer:: Selecting, subscribing and killing groups.
411 * Summary Buffer:: Reading, saving and posting articles.
412 * Article Buffer:: Displaying and handling articles.
413 * Composing Messages:: Information on sending mail and news.
414 * Select Methods:: Gnus reads all messages from various select methods.
415 * Scoring:: Assigning values to articles.
416 * Searching:: Mail and News search engines.
417 * Various:: General purpose settings.
418 * The End:: Farewell and goodbye.
419 * Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
420 * GNU Free Documentation License:: The license for this documentation.
421 * Index:: Variable, function and concept index.
422 * Key Index:: Key Index.
424 Other related manuals
426 * Message:(message). Composing messages.
427 * Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts.
428 * Sieve:(sieve). Managing Sieve scripts in Emacs.
429 * PGG:(pgg). @acronym{PGP/MIME} with Gnus.
430 * SASL:(sasl). @acronym{SASL} authentication in Emacs.
433 --- The Detailed Node Listing ---
437 * Finding the News:: Choosing a method for getting news.
438 * The Server is Down:: How can I read my mail then?
439 * Slave Gnusae:: You can have more than one Gnus active at a time.
440 * Fetching a Group:: Starting Gnus just to read a group.
441 * New Groups:: What is Gnus supposed to do with new groups?
442 * Changing Servers:: You may want to move from one server to another.
443 * Startup Files:: Those pesky startup files---@file{.newsrc}.
444 * Auto Save:: Recovering from a crash.
445 * The Active File:: Reading the active file over a slow line Takes Time.
446 * Startup Variables:: Other variables you might change.
450 * Checking New Groups:: Determining what groups are new.
451 * Subscription Methods:: What Gnus should do with new groups.
452 * Filtering New Groups:: Making Gnus ignore certain new groups.
456 * Group Buffer Format:: Information listed and how you can change it.
457 * Group Maneuvering:: Commands for moving in the group buffer.
458 * Selecting a Group:: Actually reading news.
459 * Subscription Commands:: Unsubscribing, killing, subscribing.
460 * Group Data:: Changing the info for a group.
461 * Group Levels:: Levels? What are those, then?
462 * Group Score:: A mechanism for finding out what groups you like.
463 * Marking Groups:: You can mark groups for later processing.
464 * Foreign Groups:: Creating and editing groups.
465 * Group Parameters:: Each group may have different parameters set.
466 * Listing Groups:: Gnus can list various subsets of the groups.
467 * Sorting Groups:: Re-arrange the group order.
468 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
469 * Browse Foreign Server:: You can browse a server. See what it has to offer.
470 * Exiting Gnus:: Stop reading news and get some work done.
471 * Group Topics:: A folding group mode divided into topics.
472 * Non-ASCII Group Names:: Accessing groups of non-English names.
473 * Misc Group Stuff:: Other stuff that you can to do.
477 * Group Line Specification:: Deciding how the group buffer is to look.
478 * Group Mode Line Specification:: The group buffer mode line.
479 * Group Highlighting:: Having nice colors in the group buffer.
483 * Topic Commands:: Interactive E-Z commands.
484 * Topic Variables:: How to customize the topics the Lisp Way.
485 * Topic Sorting:: Sorting each topic individually.
486 * Topic Topology:: A map of the world.
487 * Topic Parameters:: Parameters that apply to all groups in a topic.
491 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
492 * Group Information:: Information and help on groups and Gnus.
493 * Group Timestamp:: Making Gnus keep track of when you last read a group.
494 * File Commands:: Reading and writing the Gnus files.
495 * Sieve Commands:: Managing Sieve scripts.
499 * Summary Buffer Format:: Deciding how the summary buffer is to look.
500 * Summary Maneuvering:: Moving around the summary buffer.
501 * Choosing Articles:: Reading articles.
502 * Paging the Article:: Scrolling the current article.
503 * Reply Followup and Post:: Posting articles.
504 * Delayed Articles:: Send articles at a later time.
505 * Marking Articles:: Marking articles as read, expirable, etc.
506 * Limiting:: You can limit the summary buffer.
507 * Threading:: How threads are made.
508 * Sorting the Summary Buffer:: How articles and threads are sorted.
509 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
510 * Article Caching:: You may store articles in a cache.
511 * Persistent Articles:: Making articles expiry-resistant.
512 * Sticky Articles:: Article buffers that are not reused.
513 * Article Backlog:: Having already read articles hang around.
514 * Saving Articles:: Ways of customizing article saving.
515 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
516 * Article Treatment:: The article buffer can be mangled at will.
517 * MIME Commands:: Doing MIMEy things with the articles.
518 * Charsets:: Character set issues.
519 * Article Commands:: Doing various things with the article buffer.
520 * Summary Sorting:: Sorting the summary buffer in various ways.
521 * Finding the Parent:: No child support? Get the parent.
522 * Alternative Approaches:: Reading using non-default summaries.
523 * Tree Display:: A more visual display of threads.
524 * Mail Group Commands:: Some commands can only be used in mail groups.
525 * Various Summary Stuff:: What didn't fit anywhere else.
526 * Exiting the Summary Buffer:: Returning to the Group buffer,
527 or reselecting the current group.
528 * Crosspost Handling:: How crossposted articles are dealt with.
529 * Duplicate Suppression:: An alternative when crosspost handling fails.
530 * Security:: Decrypt and Verify.
531 * Mailing List:: Mailing list minor mode.
533 Summary Buffer Format
535 * Summary Buffer Lines:: You can specify how summary lines should look.
536 * To From Newsgroups:: How to not display your own name.
537 * Summary Buffer Mode Line:: You can say how the mode line should look.
538 * Summary Highlighting:: Making the summary buffer all pretty and nice.
542 * Choosing Commands:: Commands for choosing articles.
543 * Choosing Variables:: Variables that influence these commands.
545 Reply, Followup and Post
547 * Summary Mail Commands:: Sending mail.
548 * Summary Post Commands:: Sending news.
549 * Summary Message Commands:: Other Message-related commands.
550 * Canceling and Superseding::
554 * Unread Articles:: Marks for unread articles.
555 * Read Articles:: Marks for read articles.
556 * Other Marks:: Marks that do not affect readedness.
557 * Setting Marks:: How to set and remove marks.
558 * Generic Marking Commands:: How to customize the marking.
559 * Setting Process Marks:: How to mark articles for later processing.
563 * Customizing Threading:: Variables you can change to affect the threading.
564 * Thread Commands:: Thread based commands in the summary buffer.
566 Customizing Threading
568 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
569 * Filling In Threads:: Making the threads displayed look fuller.
570 * More Threading:: Even more variables for fiddling with threads.
571 * Low-Level Threading:: You thought it was over@dots{} but you were wrong!
575 * Uuencoded Articles:: Uudecode articles.
576 * Shell Archives:: Unshar articles.
577 * PostScript Files:: Split PostScript.
578 * Other Files:: Plain save and binhex.
579 * Decoding Variables:: Variables for a happy decoding.
580 * Viewing Files:: You want to look at the result of the decoding?
584 * Rule Variables:: Variables that say how a file is to be viewed.
585 * Other Decode Variables:: Other decode variables.
586 * Uuencoding and Posting:: Variables for customizing uuencoding.
590 * Article Highlighting:: You want to make the article look like fruit salad.
591 * Article Fontisizing:: Making emphasized text look nice.
592 * Article Hiding:: You also want to make certain info go away.
593 * Article Washing:: Lots of way-neat functions to make life better.
594 * Article Header:: Doing various header transformations.
595 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
596 * Article Button Levels:: Controlling appearance of buttons.
597 * Article Date:: Grumble, UT!
598 * Article Display:: Display various stuff---X-Face, Picons, Smileys, Gravatars
599 * Article Signature:: What is a signature?
600 * Article Miscellanea:: Various other stuff.
602 Alternative Approaches
604 * Pick and Read:: First mark articles and then read them.
605 * Binary Groups:: Auto-decode all articles.
607 Various Summary Stuff
609 * Summary Group Information:: Information oriented commands.
610 * Searching for Articles:: Multiple article commands.
611 * Summary Generation Commands::
612 * Really Various Summary Commands:: Those pesky non-conformant commands.
616 * Hiding Headers:: Deciding what headers should be displayed.
617 * Using MIME:: Pushing articles through @acronym{MIME} before reading them.
618 * Customizing Articles:: Tailoring the look of the articles.
619 * Article Keymap:: Keystrokes available in the article buffer.
620 * Misc Article:: Other stuff.
624 * Mail:: Mailing and replying.
625 * Posting Server:: What server should you post and mail via?
626 * POP before SMTP:: You cannot send a mail unless you read a mail.
627 * Mail and Post:: Mailing and posting at the same time.
628 * Archived Messages:: Where Gnus stores the messages you've sent.
629 * Posting Styles:: An easier way to specify who you are.
630 * Drafts:: Postponing messages and rejected messages.
631 * Rejected Articles:: What happens if the server doesn't like your article?
632 * Signing and encrypting:: How to compose secure messages.
636 * Server Buffer:: Making and editing virtual servers.
637 * Getting News:: Reading USENET news with Gnus.
638 * Using IMAP:: Reading mail from @acronym{IMAP}.
639 * Getting Mail:: Reading your personal mail with Gnus.
640 * Browsing the Web:: Getting messages from a plethora of Web sources.
641 * Other Sources:: Reading directories, files.
642 * Combined Groups:: Combining groups into one group.
643 * Email Based Diary:: Using mails to manage diary events in Gnus.
644 * Gnus Unplugged:: Reading news and mail offline.
648 * Server Buffer Format:: You can customize the look of this buffer.
649 * Server Commands:: Commands to manipulate servers.
650 * Example Methods:: Examples server specifications.
651 * Creating a Virtual Server:: An example session.
652 * Server Variables:: Which variables to set.
653 * Servers and Methods:: You can use server names as select methods.
654 * Unavailable Servers:: Some servers you try to contact may be down.
658 * NNTP:: Reading news from an @acronym{NNTP} server.
659 * News Spool:: Reading news from the local spool.
663 * Direct Functions:: Connecting directly to the server.
664 * Indirect Functions:: Connecting indirectly to the server.
665 * Common Variables:: Understood by several connection functions.
666 * NNTP marks:: Storing marks for @acronym{NNTP} servers.
670 * Mail in a Newsreader:: Important introductory notes.
671 * Getting Started Reading Mail:: A simple cookbook example.
672 * Splitting Mail:: How to create mail groups.
673 * Mail Sources:: How to tell Gnus where to get mail from.
674 * Mail Back End Variables:: Variables for customizing mail handling.
675 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
676 * Group Mail Splitting:: Use group customize to drive mail splitting.
677 * Incorporating Old Mail:: What about the old mail you have?
678 * Expiring Mail:: Getting rid of unwanted mail.
679 * Washing Mail:: Removing cruft from the mail you get.
680 * Duplicates:: Dealing with duplicated mail.
681 * Not Reading Mail:: Using mail back ends for reading other files.
682 * Choosing a Mail Back End:: Gnus can read a variety of mail formats.
686 * Mail Source Specifiers:: How to specify what a mail source is.
687 * Mail Source Customization:: Some variables that influence things.
688 * Fetching Mail:: Using the mail source specifiers.
690 Choosing a Mail Back End
692 * Unix Mail Box:: Using the (quite) standard Un*x mbox.
693 * Babyl:: Babyl was used by older versions of Rmail.
694 * Mail Spool:: Store your mail in a private spool?
695 * MH Spool:: An mhspool-like back end.
696 * Maildir:: Another one-file-per-message format.
697 * Mail Folders:: Having one file for each group.
698 * Comparing Mail Back Ends:: An in-depth looks at pros and cons.
703 * Web Searches:: Creating groups from articles that match a string.
704 * RSS:: Reading RDF site summary.
705 * Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
709 * Directory Groups:: You can read a directory as if it was a newsgroup.
710 * Anything Groups:: Dired? Who needs dired?
711 * Document Groups:: Single files can be the basis of a group.
712 * Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
713 * The Empty Backend:: The backend that never has any news.
717 * Document Server Internals:: How to add your own document types.
721 * Virtual Groups:: Combining articles from many groups.
725 * The NNDiary Back End:: Basic setup and usage.
726 * The Gnus Diary Library:: Utility toolkit on top of nndiary.
727 * Sending or Not Sending:: A final note on sending diary messages.
731 * Diary Messages:: What makes a message valid for nndiary.
732 * Running NNDiary:: NNDiary has two modes of operation.
733 * Customizing NNDiary:: Bells and whistles.
735 The Gnus Diary Library
737 * Diary Summary Line Format:: A nicer summary buffer line format.
738 * Diary Articles Sorting:: A nicer way to sort messages.
739 * Diary Headers Generation:: Not doing it manually.
740 * Diary Group Parameters:: Not handling them manually.
744 * Agent Basics:: How it all is supposed to work.
745 * Agent Categories:: How to tell the Gnus Agent what to download.
746 * Agent Commands:: New commands for all the buffers.
747 * Agent Visuals:: Ways that the agent may effect your summary buffer.
748 * Agent as Cache:: The Agent is a big cache too.
749 * Agent Expiry:: How to make old articles go away.
750 * Agent Regeneration:: How to recover from lost connections and other accidents.
751 * Agent and flags:: How the Agent maintains flags.
752 * Agent and IMAP:: How to use the Agent with @acronym{IMAP}.
753 * Outgoing Messages:: What happens when you post/mail something?
754 * Agent Variables:: Customizing is fun.
755 * Example Setup:: An example @file{~/.gnus.el} file for offline people.
756 * Batching Agents:: How to fetch news from a @code{cron} job.
757 * Agent Caveats:: What you think it'll do and what it does.
761 * Category Syntax:: What a category looks like.
762 * Category Buffer:: A buffer for maintaining categories.
763 * Category Variables:: Customize'r'Us.
767 * Group Agent Commands:: Configure groups and fetch their contents.
768 * Summary Agent Commands:: Manually select then fetch specific articles.
769 * Server Agent Commands:: Select the servers that are supported by the agent.
773 * Summary Score Commands:: Adding score entries for the current group.
774 * Group Score Commands:: General score commands.
775 * Score Variables:: Customize your scoring. (My, what terminology).
776 * Score File Format:: What a score file may contain.
777 * Score File Editing:: You can edit score files by hand as well.
778 * Adaptive Scoring:: Big Sister Gnus knows what you read.
779 * Home Score File:: How to say where new score entries are to go.
780 * Followups To Yourself:: Having Gnus notice when people answer you.
781 * Scoring On Other Headers:: Scoring on non-standard headers.
782 * Scoring Tips:: How to score effectively.
783 * Reverse Scoring:: That problem child of old is not problem.
784 * Global Score Files:: Earth-spanning, ear-splitting score files.
785 * Kill Files:: They are still here, but they can be ignored.
786 * Converting Kill Files:: Translating kill files to score files.
787 * Advanced Scoring:: Using logical expressions to build score rules.
788 * Score Decays:: It can be useful to let scores wither away.
792 * Advanced Scoring Syntax:: A definition.
793 * Advanced Scoring Examples:: What they look like.
794 * Advanced Scoring Tips:: Getting the most out of it.
798 * nnir:: Searching with various engines.
799 * nnmairix:: Searching with Mairix.
803 * What is nnir?:: What does nnir do.
804 * Basic Usage:: How to perform simple searches.
805 * Setting up nnir:: How to set up nnir.
809 * Associating Engines:: How to associate engines.
813 * Process/Prefix:: A convention used by many treatment commands.
814 * Interactive:: Making Gnus ask you many questions.
815 * Symbolic Prefixes:: How to supply some Gnus functions with options.
816 * Formatting Variables:: You can specify what buffers should look like.
817 * Window Layout:: Configuring the Gnus buffer windows.
818 * Faces and Fonts:: How to change how faces look.
819 * Compilation:: How to speed Gnus up.
820 * Mode Lines:: Displaying information in the mode lines.
821 * Highlighting and Menus:: Making buffers look all nice and cozy.
822 * Daemons:: Gnus can do things behind your back.
823 * Undo:: Some actions can be undone.
824 * Predicate Specifiers:: Specifying predicates.
825 * Moderation:: What to do if you're a moderator.
826 * Image Enhancements:: Modern versions of Emacs/XEmacs can display images.
827 * Fuzzy Matching:: What's the big fuzz?
828 * Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email.
829 * Spam Package:: A package for filtering and processing spam.
830 * The Gnus Registry:: A package for tracking messages by Message-ID.
831 * Other modes:: Interaction with other modes.
832 * Various Various:: Things that are really various.
836 * Formatting Basics:: A formatting variable is basically a format string.
837 * Mode Line Formatting:: Some rules about mode line formatting variables.
838 * Advanced Formatting:: Modifying output in various ways.
839 * User-Defined Specs:: Having Gnus call your own functions.
840 * Formatting Fonts:: Making the formatting look colorful and nice.
841 * Positioning Point:: Moving point to a position after an operation.
842 * Tabulation:: Tabulating your output.
843 * Wide Characters:: Dealing with wide characters.
847 * X-Face:: Display a funky, teensy black-and-white image.
848 * Face:: Display a funkier, teensier colored image.
849 * Smileys:: Show all those happy faces the way they were
851 * Picons:: How to display pictures of what you're reading.
852 * Gravatars:: Display the avatar of people you read.
853 * XVarious:: Other XEmacsy Gnusey variables.
857 * The problem of spam:: Some background, and some solutions
858 * Anti-Spam Basics:: Simple steps to reduce the amount of spam.
859 * SpamAssassin:: How to use external anti-spam tools.
860 * Hashcash:: Reduce spam by burning CPU time.
864 * Spam Package Introduction::
865 * Filtering Incoming Mail::
866 * Detecting Spam in Groups::
867 * Spam and Ham Processors::
868 * Spam Package Configuration Examples::
870 * Extending the Spam package::
871 * Spam Statistics Package::
873 Spam Statistics Package
875 * Creating a spam-stat dictionary::
876 * Splitting mail using spam-stat::
877 * Low-level interface to the spam-stat dictionary::
881 * XEmacs:: Requirements for installing under XEmacs.
882 * History:: How Gnus got where it is today.
883 * On Writing Manuals:: Why this is not a beginner's guide.
884 * Terminology:: We use really difficult, like, words here.
885 * Customization:: Tailoring Gnus to your needs.
886 * Troubleshooting:: What you might try if things do not work.
887 * Gnus Reference Guide:: Rilly, rilly technical stuff.
888 * Emacs for Heathens:: A short introduction to Emacsian terms.
889 * Frequently Asked Questions:: The Gnus FAQ
893 * Gnus Versions:: What Gnus versions have been released.
894 * Other Gnus Versions:: Other Gnus versions that also have been released.
895 * Why?:: What's the point of Gnus?
896 * Compatibility:: Just how compatible is Gnus with @sc{gnus}?
897 * Conformity:: Gnus tries to conform to all standards.
898 * Emacsen:: Gnus can be run on a few modern Emacsen.
899 * Gnus Development:: How Gnus is developed.
900 * Contributors:: Oodles of people.
901 * New Features:: Pointers to some of the new stuff in Gnus.
905 * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
906 * September Gnus:: The Thing Formally Known As Gnus 5.2/5.3.
907 * Red Gnus:: Third time best---Gnus 5.4/5.5.
908 * Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
909 * Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
910 * Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11.
911 * No Gnus:: Very punny.
915 * Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
916 * Slow Terminal Connection:: You run a remote Emacs.
917 * Little Disk Space:: You feel that having large setup files is icky.
918 * Slow Machine:: You feel like buying a faster machine.
922 * Gnus Utility Functions:: Common functions and variable to use.
923 * Back End Interface:: How Gnus communicates with the servers.
924 * Score File Syntax:: A BNF definition of the score file standard.
925 * Headers:: How Gnus stores headers internally.
926 * Ranges:: A handy format for storing mucho numbers.
927 * Group Info:: The group info format.
928 * Extended Interactive:: Symbolic prefixes and stuff.
929 * Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
930 * Various File Formats:: Formats of files that Gnus use.
934 * Required Back End Functions:: Functions that must be implemented.
935 * Optional Back End Functions:: Functions that need not be implemented.
936 * Error Messaging:: How to get messages and report errors.
937 * Writing New Back Ends:: Extending old back ends.
938 * Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
939 * Mail-like Back Ends:: Some tips on mail back ends.
943 * Active File Format:: Information on articles and groups available.
944 * Newsgroups File Format:: Group descriptions.
948 * Keystrokes:: Entering text and executing commands.
949 * Emacs Lisp:: The built-in Emacs programming language.
955 @chapter Starting Gnus
958 If you haven't used Emacs much before using Gnus, read @ref{Emacs for
963 If your system administrator has set things up properly, starting Gnus
964 and reading news is extremely easy---you just type @kbd{M-x gnus} in
965 your Emacs. If not, you should customize the variable
966 @code{gnus-select-method} as described in @ref{Finding the News}. For a
967 minimal setup for posting should also customize the variables
968 @code{user-full-name} and @code{user-mail-address}.
970 @findex gnus-other-frame
971 @kindex M-x gnus-other-frame
972 If you want to start Gnus in a different frame, you can use the command
973 @kbd{M-x gnus-other-frame} instead.
975 If things do not go smoothly at startup, you have to twiddle some
976 variables in your @file{~/.gnus.el} file. This file is similar to
977 @file{~/.emacs}, but is read when Gnus starts.
979 If you puzzle at any terms used in this manual, please refer to the
980 terminology section (@pxref{Terminology}).
983 * Finding the News:: Choosing a method for getting news.
984 * The Server is Down:: How can I read my mail then?
985 * Slave Gnusae:: You can have more than one Gnus active at a time.
986 * New Groups:: What is Gnus supposed to do with new groups?
987 * Changing Servers:: You may want to move from one server to another.
988 * Startup Files:: Those pesky startup files---@file{.newsrc}.
989 * Auto Save:: Recovering from a crash.
990 * The Active File:: Reading the active file over a slow line Takes Time.
991 * Startup Variables:: Other variables you might change.
995 @node Finding the News
996 @section Finding the News
999 First of all, you should know that there is a special buffer called
1000 @code{*Server*} that lists all the servers Gnus knows about. You can
1001 press @kbd{^} from the Group buffer to see it. In the Server buffer,
1002 you can press @kbd{RET} on a defined server to see all the groups it
1003 serves (subscribed or not!). You can also add or delete servers, edit
1004 a foreign server's definition, agentize or de-agentize a server, and
1005 do many other neat things. @xref{Server Buffer}.
1006 @xref{Foreign Groups}. @xref{Agent Basics}.
1008 @vindex gnus-select-method
1010 The @code{gnus-select-method} variable says where Gnus should look for
1011 news. This variable should be a list where the first element says
1012 @dfn{how} and the second element says @dfn{where}. This method is your
1013 native method. All groups not fetched with this method are
1016 For instance, if the @samp{news.somewhere.edu} @acronym{NNTP} server is where
1017 you want to get your daily dosage of news from, you'd say:
1020 (setq gnus-select-method '(nntp "news.somewhere.edu"))
1023 If you want to read directly from the local spool, say:
1026 (setq gnus-select-method '(nnspool ""))
1029 If you can use a local spool, you probably should, as it will almost
1030 certainly be much faster. But do not use the local spool if your
1031 server is running Leafnode (which is a simple, standalone private news
1032 server); in this case, use @code{(nntp "localhost")}.
1034 @vindex gnus-nntpserver-file
1036 @cindex @acronym{NNTP} server
1037 If this variable is not set, Gnus will take a look at the
1038 @env{NNTPSERVER} environment variable. If that variable isn't set,
1039 Gnus will see whether @code{gnus-nntpserver-file}
1040 (@file{/etc/nntpserver} by default) has any opinions on the matter.
1041 If that fails as well, Gnus will try to use the machine running Emacs
1042 as an @acronym{NNTP} server. That's a long shot, though.
1044 @findex gnus-group-browse-foreign-server
1046 However, if you use one @acronym{NNTP} server regularly and are just
1047 interested in a couple of groups from a different server, you would be
1048 better served by using the @kbd{B} command in the group buffer. It will
1049 let you have a look at what groups are available, and you can subscribe
1050 to any of the groups you want to. This also makes @file{.newsrc}
1051 maintenance much tidier. @xref{Foreign Groups}.
1053 @vindex gnus-secondary-select-methods
1055 A slightly different approach to foreign groups is to set the
1056 @code{gnus-secondary-select-methods} variable. The select methods
1057 listed in this variable are in many ways just as native as the
1058 @code{gnus-select-method} server. They will also be queried for active
1059 files during startup (if that's required), and new newsgroups that
1060 appear on these servers will be subscribed (or not) just as native
1063 For instance, if you use the @code{nnmbox} back end to read your mail,
1064 you would typically set this variable to
1067 (setq gnus-secondary-select-methods '((nnmbox "")))
1070 Note: the @acronym{NNTP} back end stores marks in marks files
1071 (@pxref{NNTP marks}). This feature makes it easy to share marks between
1072 several Gnus installations, but may slow down things a bit when fetching
1073 new articles. @xref{NNTP marks}, for more information.
1076 @node The Server is Down
1077 @section The Server is Down
1078 @cindex server errors
1080 If the default server is down, Gnus will understandably have some
1081 problems starting. However, if you have some mail groups in addition to
1082 the news groups, you may want to start Gnus anyway.
1084 Gnus, being the trusting sort of program, will ask whether to proceed
1085 without a native select method if that server can't be contacted. This
1086 will happen whether the server doesn't actually exist (i.e., you have
1087 given the wrong address) or the server has just momentarily taken ill
1088 for some reason or other. If you decide to continue and have no foreign
1089 groups, you'll find it difficult to actually do anything in the group
1090 buffer. But, hey, that's your problem. Blllrph!
1092 @findex gnus-no-server
1093 @kindex M-x gnus-no-server
1095 If you know that the server is definitely down, or you just want to read
1096 your mail without bothering with the server at all, you can use the
1097 @code{gnus-no-server} command to start Gnus. That might come in handy
1098 if you're in a hurry as well. This command will not attempt to contact
1099 your primary server---instead, it will just activate all groups on level
1100 1 and 2. (You should preferably keep no native groups on those two
1101 levels.) Also @pxref{Group Levels}.
1105 @section Slave Gnusae
1108 You might want to run more than one Emacs with more than one Gnus at the
1109 same time. If you are using different @file{.newsrc} files (e.g., if you
1110 are using the two different Gnusae to read from two different servers),
1111 that is no problem whatsoever. You just do it.
1113 The problem appears when you want to run two Gnusae that use the same
1114 @file{.newsrc} file.
1116 To work around that problem some, we here at the Think-Tank at the Gnus
1117 Towers have come up with a new concept: @dfn{Masters} and
1118 @dfn{slaves}. (We have applied for a patent on this concept, and have
1119 taken out a copyright on those words. If you wish to use those words in
1120 conjunction with each other, you have to send $1 per usage instance to
1121 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
1122 Applications}) will be much more expensive, of course.)
1125 Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or
1126 however you do it). Each subsequent slave Gnusae should be started with
1127 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
1128 files, but instead save @dfn{slave files} that contain information only
1129 on what groups have been read in the slave session. When a master Gnus
1130 starts, it will read (and delete) these slave files, incorporating all
1131 information from them. (The slave files will be read in the sequence
1132 they were created, so the latest changes will have precedence.)
1134 Information from the slave files has, of course, precedence over the
1135 information in the normal (i.e., master) @file{.newsrc} file.
1137 If the @file{.newsrc*} files have not been saved in the master when the
1138 slave starts, you may be prompted as to whether to read an auto-save
1139 file. If you answer ``yes'', the unsaved changes to the master will be
1140 incorporated into the slave. If you answer ``no'', the slave may see some
1141 messages as unread that have been read in the master.
1148 @cindex subscription
1150 @vindex gnus-check-new-newsgroups
1151 If you are satisfied that you really never want to see any new groups,
1152 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
1153 also save you some time at startup. Even if this variable is
1154 @code{nil}, you can always subscribe to the new groups just by pressing
1155 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
1156 is @code{ask-server} by default. If you set this variable to
1157 @code{always}, then Gnus will query the back ends for new groups even
1158 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
1161 * Checking New Groups:: Determining what groups are new.
1162 * Subscription Methods:: What Gnus should do with new groups.
1163 * Filtering New Groups:: Making Gnus ignore certain new groups.
1167 @node Checking New Groups
1168 @subsection Checking New Groups
1170 Gnus normally determines whether a group is new or not by comparing the
1171 list of groups from the active file(s) with the lists of subscribed and
1172 dead groups. This isn't a particularly fast method. If
1173 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
1174 server for new groups since the last time. This is both faster and
1175 cheaper. This also means that you can get rid of the list of killed
1176 groups altogether, so you may set @code{gnus-save-killed-list} to
1177 @code{nil}, which will save time both at startup, at exit, and all over.
1178 Saves disk space, too. Why isn't this the default, then?
1179 Unfortunately, not all servers support this command.
1181 I bet I know what you're thinking now: How do I find out whether my
1182 server supports @code{ask-server}? No? Good, because I don't have a
1183 fail-safe answer. I would suggest just setting this variable to
1184 @code{ask-server} and see whether any new groups appear within the next
1185 few days. If any do, then it works. If none do, then it doesn't
1186 work. I could write a function to make Gnus guess whether the server
1187 supports @code{ask-server}, but it would just be a guess. So I won't.
1188 You could @code{telnet} to the server and say @code{HELP} and see
1189 whether it lists @samp{NEWGROUPS} among the commands it understands. If
1190 it does, then it might work. (But there are servers that lists
1191 @samp{NEWGROUPS} without supporting the function properly.)
1193 This variable can also be a list of select methods. If so, Gnus will
1194 issue an @code{ask-server} command to each of the select methods, and
1195 subscribe them (or not) using the normal methods. This might be handy
1196 if you are monitoring a few servers for new groups. A side effect is
1197 that startup will take much longer, so you can meditate while waiting.
1198 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
1201 @node Subscription Methods
1202 @subsection Subscription Methods
1204 @vindex gnus-subscribe-newsgroup-method
1205 What Gnus does when it encounters a new group is determined by the
1206 @code{gnus-subscribe-newsgroup-method} variable.
1208 This variable should contain a function. This function will be called
1209 with the name of the new group as the only parameter.
1211 Some handy pre-fab functions are:
1215 @item gnus-subscribe-zombies
1216 @vindex gnus-subscribe-zombies
1217 Make all new groups zombies. This is the default. You can browse the
1218 zombies later (with @kbd{A z}) and either kill them all off properly
1219 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
1221 @item gnus-subscribe-randomly
1222 @vindex gnus-subscribe-randomly
1223 Subscribe all new groups in arbitrary order. This really means that all
1224 new groups will be added at ``the top'' of the group buffer.
1226 @item gnus-subscribe-alphabetically
1227 @vindex gnus-subscribe-alphabetically
1228 Subscribe all new groups in alphabetical order.
1230 @item gnus-subscribe-hierarchically
1231 @vindex gnus-subscribe-hierarchically
1232 Subscribe all new groups hierarchically. The difference between this
1233 function and @code{gnus-subscribe-alphabetically} is slight.
1234 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
1235 alphabetical fashion, while this function will enter groups into its
1236 hierarchy. So if you want to have the @samp{rec} hierarchy before the
1237 @samp{comp} hierarchy, this function will not mess that configuration
1238 up. Or something like that.
1240 @item gnus-subscribe-interactively
1241 @vindex gnus-subscribe-interactively
1242 Subscribe new groups interactively. This means that Gnus will ask
1243 you about @strong{all} new groups. The groups you choose to subscribe
1244 to will be subscribed hierarchically.
1246 @item gnus-subscribe-killed
1247 @vindex gnus-subscribe-killed
1248 Kill all new groups.
1250 @item gnus-subscribe-topics
1251 @vindex gnus-subscribe-topics
1252 Put the groups into the topic that has a matching @code{subscribe} topic
1253 parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe}
1254 topic parameter that looks like
1260 will mean that all groups that match that regex will be subscribed under
1263 If no topics match the groups, the groups will be subscribed in the
1268 @vindex gnus-subscribe-hierarchical-interactive
1269 A closely related variable is
1270 @code{gnus-subscribe-hierarchical-interactive}. (That's quite a
1271 mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a
1272 hierarchical fashion whether to subscribe to new groups or not. Gnus
1273 will ask you for each sub-hierarchy whether you want to descend the
1276 One common mistake is to set the variable a few paragraphs above
1277 (@code{gnus-subscribe-newsgroup-method}) to
1278 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This
1279 will not work. This is ga-ga. So don't do it.
1282 @node Filtering New Groups
1283 @subsection Filtering New Groups
1285 A nice and portable way to control which new newsgroups should be
1286 subscribed (or ignored) is to put an @dfn{options} line at the start of
1287 the @file{.newsrc} file. Here's an example:
1290 options -n !alt.all !rec.all sci.all
1293 @vindex gnus-subscribe-options-newsgroup-method
1294 This line obviously belongs to a serious-minded intellectual scientific
1295 person (or she may just be plain old boring), because it says that all
1296 groups that have names beginning with @samp{alt} and @samp{rec} should
1297 be ignored, and all groups with names beginning with @samp{sci} should
1298 be subscribed. Gnus will not use the normal subscription method for
1299 subscribing these groups.
1300 @code{gnus-subscribe-options-newsgroup-method} is used instead. This
1301 variable defaults to @code{gnus-subscribe-alphabetically}.
1303 @vindex gnus-options-not-subscribe
1304 @vindex gnus-options-subscribe
1305 If you don't want to mess with your @file{.newsrc} file, you can just
1306 set the two variables @code{gnus-options-subscribe} and
1307 @code{gnus-options-not-subscribe}. These two variables do exactly the
1308 same as the @file{.newsrc} @samp{options -n} trick. Both are regexps,
1309 and if the new group matches the former, it will be unconditionally
1310 subscribed, and if it matches the latter, it will be ignored.
1312 @vindex gnus-auto-subscribed-groups
1313 Yet another variable that meddles here is
1314 @code{gnus-auto-subscribed-groups}. It works exactly like
1315 @code{gnus-options-subscribe}, and is therefore really superfluous,
1316 but I thought it would be nice to have two of these. This variable is
1317 more meant for setting some ground rules, while the other variable is
1318 used more for user fiddling. By default this variable makes all new
1319 groups that come from mail back ends (@code{nnml}, @code{nnbabyl},
1320 @code{nnfolder}, @code{nnmbox}, @code{nnmh}, @code{nnimap}, and
1321 @code{nnmaildir}) subscribed. If you don't like that, just set this
1322 variable to @code{nil}.
1324 @vindex gnus-auto-subscribed-categories
1325 As if that wasn't enough, @code{gnus-auto-subscribed-categories} also
1326 allows you to specify that new groups should be subcribed based on the
1327 category their select methods belong to. The default is @samp{(mail
1328 post-mail)}, meaning that all new groups from mail-like backends
1329 should be subscribed automatically.
1331 New groups that match these variables are subscribed using
1332 @code{gnus-subscribe-options-newsgroup-method}.
1335 @node Changing Servers
1336 @section Changing Servers
1337 @cindex changing servers
1339 Sometimes it is necessary to move from one @acronym{NNTP} server to another.
1340 This happens very rarely, but perhaps you change jobs, or one server is
1341 very flaky and you want to use another.
1343 Changing the server is pretty easy, right? You just change
1344 @code{gnus-select-method} to point to the new server?
1348 Article numbers are not (in any way) kept synchronized between different
1349 @acronym{NNTP} servers, and the only way Gnus keeps track of what articles
1350 you have read is by keeping track of article numbers. So when you
1351 change @code{gnus-select-method}, your @file{.newsrc} file becomes
1354 @kindex M-x gnus-group-clear-data-on-native-groups
1355 @findex gnus-group-clear-data-on-native-groups
1356 You can use the @kbd{M-x gnus-group-clear-data-on-native-groups}
1357 command to clear out all data that you have on your native groups.
1360 @kindex M-x gnus-group-clear-data
1361 @findex gnus-group-clear-data
1362 Clear the data from the current group only---nix out marks and the
1363 list of read articles (@code{gnus-group-clear-data}).
1365 After changing servers, you @strong{must} move the cache hierarchy away,
1366 since the cached articles will have wrong article numbers, which will
1367 affect which articles Gnus thinks are read.
1368 @code{gnus-group-clear-data-on-native-groups} will ask you if you want
1369 to have it done automatically; for @code{gnus-group-clear-data}, you
1370 can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the
1371 cache for all groups).
1375 @section Startup Files
1376 @cindex startup files
1381 Most common Unix news readers use a shared startup file called
1382 @file{.newsrc}. This file contains all the information about what
1383 groups are subscribed, and which articles in these groups have been
1386 Things got a bit more complicated with @sc{gnus}. In addition to
1387 keeping the @file{.newsrc} file updated, it also used a file called
1388 @file{.newsrc.el} for storing all the information that didn't fit into
1389 the @file{.newsrc} file. (Actually, it also duplicated everything in
1390 the @file{.newsrc} file.) @sc{gnus} would read whichever one of these
1391 files was the most recently saved, which enabled people to swap between
1392 @sc{gnus} and other newsreaders.
1394 That was kinda silly, so Gnus went one better: In addition to the
1395 @file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
1396 @file{.newsrc.eld}. It will read whichever of these files that are most
1397 recent, but it will never write a @file{.newsrc.el} file. You should
1398 never delete the @file{.newsrc.eld} file---it contains much information
1399 not stored in the @file{.newsrc} file.
1401 @vindex gnus-save-newsrc-file
1402 @vindex gnus-read-newsrc-file
1403 You can turn off writing the @file{.newsrc} file by setting
1404 @code{gnus-save-newsrc-file} to @code{nil}, which means you can delete
1405 the file and save some space, as well as exiting from Gnus faster.
1406 However, this will make it impossible to use other newsreaders than
1407 Gnus. But hey, who would want to, right? Similarly, setting
1408 @code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the
1409 @file{.newsrc} file and any @file{.newsrc-SERVER} files, which can be
1410 convenient if you use a different news reader occasionally, and you
1411 want to read a different subset of the available groups with that
1414 @vindex gnus-save-killed-list
1415 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
1416 will not save the list of killed groups to the startup file. This will
1417 save both time (when starting and quitting) and space (on disk). It
1418 will also mean that Gnus has no record of what groups are new or old,
1419 so the automatic new groups subscription methods become meaningless.
1420 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
1421 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
1422 Groups}). This variable can also be a regular expression. If that's
1423 the case, remove all groups that do not match this regexp before
1424 saving. This can be useful in certain obscure situations that involve
1425 several servers where not all servers support @code{ask-server}.
1427 @vindex gnus-startup-file
1428 @vindex gnus-backup-startup-file
1429 @vindex version-control
1430 The @code{gnus-startup-file} variable says where the startup files are.
1431 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
1432 file being whatever that one is, with a @samp{.eld} appended.
1433 If you want version control for this file, set
1434 @code{gnus-backup-startup-file}. It respects the same values as the
1435 @code{version-control} variable.
1437 @vindex gnus-save-newsrc-hook
1438 @vindex gnus-save-quick-newsrc-hook
1439 @vindex gnus-save-standard-newsrc-hook
1440 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
1441 files, while @code{gnus-save-quick-newsrc-hook} is called just before
1442 saving the @file{.newsrc.eld} file, and
1443 @code{gnus-save-standard-newsrc-hook} is called just before saving the
1444 @file{.newsrc} file. The latter two are commonly used to turn version
1445 control on or off. Version control is on by default when saving the
1446 startup files. If you want to turn backup creation off, say something like:
1449 (defun turn-off-backup ()
1450 (set (make-local-variable 'backup-inhibited) t))
1452 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
1453 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
1456 @vindex gnus-init-file
1457 @vindex gnus-site-init-file
1458 When Gnus starts, it will read the @code{gnus-site-init-file}
1459 (@file{.../site-lisp/gnus-init} by default) and @code{gnus-init-file}
1460 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files
1461 and can be used to avoid cluttering your @file{~/.emacs} and
1462 @file{site-init} files with Gnus stuff. Gnus will also check for files
1463 with the same names as these, but with @file{.elc} and @file{.el}
1464 suffixes. In other words, if you have set @code{gnus-init-file} to
1465 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el},
1466 and finally @file{~/.gnus} (in this order). If Emacs was invoked with
1467 the @option{-q} or @option{--no-init-file} options (@pxref{Initial
1468 Options, ,Initial Options, emacs, The Emacs Manual}), Gnus doesn't read
1469 @code{gnus-init-file}.
1474 @cindex dribble file
1477 Whenever you do something that changes the Gnus data (reading articles,
1478 catching up, killing/subscribing groups), the change is added to a
1479 special @dfn{dribble buffer}. This buffer is auto-saved the normal
1480 Emacs way. If your Emacs should crash before you have saved the
1481 @file{.newsrc} files, all changes you have made can be recovered from
1484 If Gnus detects this file at startup, it will ask the user whether to
1485 read it. The auto save file is deleted whenever the real startup file is
1488 @vindex gnus-use-dribble-file
1489 If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and
1490 maintain a dribble buffer. The default is @code{t}.
1492 @vindex gnus-dribble-directory
1493 Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If
1494 this variable is @code{nil}, which it is by default, Gnus will dribble
1495 into the directory where the @file{.newsrc} file is located. (This is
1496 normally the user's home directory.) The dribble file will get the same
1497 file permissions as the @file{.newsrc} file.
1499 @vindex gnus-always-read-dribble-file
1500 If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will
1501 read the dribble file on startup without querying the user.
1504 @node The Active File
1505 @section The Active File
1507 @cindex ignored groups
1509 When Gnus starts, or indeed whenever it tries to determine whether new
1510 articles have arrived, it reads the active file. This is a very large
1511 file that lists all the active groups and articles on the server.
1513 @vindex gnus-ignored-newsgroups
1514 Before examining the active file, Gnus deletes all lines that match the
1515 regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject
1516 any groups with bogus names, but you can use this variable to make Gnus
1517 ignore hierarchies you aren't ever interested in. However, this is not
1518 recommended. In fact, it's highly discouraged. Instead, @pxref{New
1519 Groups} for an overview of other variables that can be used instead.
1522 @c @code{nil} by default, and will slow down active file handling somewhat
1523 @c if you set it to anything else.
1525 @vindex gnus-read-active-file
1527 The active file can be rather Huge, so if you have a slow network, you
1528 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
1529 reading the active file. This variable is @code{some} by default.
1531 Gnus will try to make do by getting information just on the groups that
1532 you actually subscribe to.
1534 Note that if you subscribe to lots and lots of groups, setting this
1535 variable to @code{nil} will probably make Gnus slower, not faster. At
1536 present, having this variable @code{nil} will slow Gnus down
1537 considerably, unless you read news over a 2400 baud modem.
1539 This variable can also have the value @code{some}. Gnus will then
1540 attempt to read active info only on the subscribed groups. On some
1541 servers this is quite fast (on sparkling, brand new INN servers that
1542 support the @code{LIST ACTIVE group} command), on others this isn't fast
1543 at all. In any case, @code{some} should be faster than @code{nil}, and
1544 is certainly faster than @code{t} over slow lines.
1546 Some news servers (old versions of Leafnode and old versions of INN, for
1547 instance) do not support the @code{LIST ACTIVE group}. For these
1548 servers, @code{nil} is probably the most efficient value for this
1551 If this variable is @code{nil}, Gnus will ask for group info in total
1552 lock-step, which isn't very fast. If it is @code{some} and you use an
1553 @acronym{NNTP} server, Gnus will pump out commands as fast as it can, and
1554 read all the replies in one swoop. This will normally result in better
1555 performance, but if the server does not support the aforementioned
1556 @code{LIST ACTIVE group} command, this isn't very nice to the server.
1558 If you think that starting up Gnus takes too long, try all the three
1559 different values for this variable and see what works best for you.
1561 In any case, if you use @code{some} or @code{nil}, you should definitely
1562 kill all groups that you aren't interested in to speed things up.
1564 Note that this variable also affects active file retrieval from
1565 secondary select methods.
1568 @node Startup Variables
1569 @section Startup Variables
1573 @item gnus-load-hook
1574 @vindex gnus-load-hook
1575 A hook run while Gnus is being loaded. Note that this hook will
1576 normally be run just once in each Emacs session, no matter how many
1577 times you start Gnus.
1579 @item gnus-before-startup-hook
1580 @vindex gnus-before-startup-hook
1581 A hook called as the first thing when Gnus is started.
1583 @item gnus-startup-hook
1584 @vindex gnus-startup-hook
1585 A hook run as the very last thing after starting up Gnus
1587 @item gnus-started-hook
1588 @vindex gnus-started-hook
1589 A hook that is run as the very last thing after starting up Gnus
1592 @item gnus-setup-news-hook
1593 @vindex gnus-setup-news-hook
1594 A hook that is run after reading the @file{.newsrc} file(s), but before
1595 generating the group buffer.
1597 @item gnus-check-bogus-newsgroups
1598 @vindex gnus-check-bogus-newsgroups
1599 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1600 startup. A @dfn{bogus group} is a group that you have in your
1601 @file{.newsrc} file, but doesn't exist on the news server. Checking for
1602 bogus groups can take quite a while, so to save time and resources it's
1603 best to leave this option off, and do the checking for bogus groups once
1604 in a while from the group buffer instead (@pxref{Group Maintenance}).
1606 @item gnus-inhibit-startup-message
1607 @vindex gnus-inhibit-startup-message
1608 If non-@code{nil}, the startup message won't be displayed. That way,
1609 your boss might not notice as easily that you are reading news instead
1610 of doing your job. Note that this variable is used before
1611 @file{~/.gnus.el} is loaded, so it should be set in @file{.emacs} instead.
1613 @item gnus-no-groups-message
1614 @vindex gnus-no-groups-message
1615 Message displayed by Gnus when no groups are available.
1617 @item gnus-use-backend-marks
1618 @vindex gnus-use-backend-marks
1619 If non-@code{nil}, Gnus will store article marks both in the
1620 @file{.newsrc.eld} file and in the backends. This will slow down
1621 group operation some.
1627 @chapter Group Buffer
1628 @cindex group buffer
1630 @c Alex Schroeder suggests to rearrange this as follows:
1632 @c <kensanata> ok, just save it for reference. I'll go to bed in a minute.
1633 @c 1. Selecting a Group, 2. (new) Finding a Group, 3. Group Levels,
1634 @c 4. Subscription Commands, 5. Group Maneuvering, 6. Group Data,
1635 @c 7. Group Score, 8. Group Buffer Format
1636 @c <kensanata> Group Levels should have more information on levels 5 to 9. I
1637 @c suggest to split the 4th paragraph ("Gnus considers groups...") as follows:
1638 @c <kensanata> First, "Gnus considers groups... (default 9)."
1639 @c <kensanata> New, a table summarizing what levels 1 to 9 mean.
1640 @c <kensanata> Third, "Gnus treats subscribed ... reasons of efficiency"
1641 @c <kensanata> Then expand the next paragraph or add some more to it.
1642 @c This short one sentence explains levels 1 and 2, therefore I understand
1643 @c that I should keep important news at 3 and boring news at 4.
1644 @c Say so! Then go on to explain why I should bother with levels 6 to 9.
1645 @c Maybe keep those that you don't want to read temporarily at 6,
1646 @c those that you never want to read at 8, those that offend your
1647 @c human rights at 9...
1650 The @dfn{group buffer} lists all (or parts) of the available groups. It
1651 is the first buffer shown when Gnus starts, and will never be killed as
1652 long as Gnus is active.
1656 \gnusfigure{The Group Buffer}{320}{
1657 \put(75,50){\epsfig{figure=ps/group,height=9cm}}
1658 \put(120,37){\makebox(0,0)[t]{Buffer name}}
1659 \put(120,38){\vector(1,2){10}}
1660 \put(40,60){\makebox(0,0)[r]{Mode line}}
1661 \put(40,58){\vector(1,0){30}}
1662 \put(200,28){\makebox(0,0)[t]{Native select method}}
1663 \put(200,26){\vector(-1,2){15}}
1669 * Group Buffer Format:: Information listed and how you can change it.
1670 * Group Maneuvering:: Commands for moving in the group buffer.
1671 * Selecting a Group:: Actually reading news.
1672 * Subscription Commands:: Unsubscribing, killing, subscribing.
1673 * Group Data:: Changing the info for a group.
1674 * Group Levels:: Levels? What are those, then?
1675 * Group Score:: A mechanism for finding out what groups you like.
1676 * Marking Groups:: You can mark groups for later processing.
1677 * Foreign Groups:: Creating and editing groups.
1678 * Group Parameters:: Each group may have different parameters set.
1679 * Listing Groups:: Gnus can list various subsets of the groups.
1680 * Sorting Groups:: Re-arrange the group order.
1681 * Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
1682 * Browse Foreign Server:: You can browse a server. See what it has to offer.
1683 * Exiting Gnus:: Stop reading news and get some work done.
1684 * Group Topics:: A folding group mode divided into topics.
1685 * Non-ASCII Group Names:: Accessing groups of non-English names.
1686 * Misc Group Stuff:: Other stuff that you can to do.
1690 @node Group Buffer Format
1691 @section Group Buffer Format
1694 * Group Line Specification:: Deciding how the group buffer is to look.
1695 * Group Mode Line Specification:: The group buffer mode line.
1696 * Group Highlighting:: Having nice colors in the group buffer.
1699 You can customize the Group Mode tool bar, see @kbd{M-x
1700 customize-apropos RET gnus-group-tool-bar}. This feature is only
1703 The tool bar icons are now (de)activated correctly depending on the
1704 cursor position. Therefore, moving around in the Group Buffer is
1705 slower. You can disable this via the variable
1706 @code{gnus-group-update-tool-bar}. Its default value depends on your
1709 @node Group Line Specification
1710 @subsection Group Line Specification
1711 @cindex group buffer format
1713 The default format of the group buffer is nice and dull, but you can
1714 make it as exciting and ugly as you feel like.
1716 Here's a couple of example group lines:
1719 25: news.announce.newusers
1720 * 0: alt.fan.andrea-dworkin
1725 You can see that there are 25 unread articles in
1726 @samp{news.announce.newusers}. There are no unread articles, but some
1727 ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little
1728 asterisk at the beginning of the line?).
1730 @vindex gnus-group-line-format
1731 You can change that format to whatever you want by fiddling with the
1732 @code{gnus-group-line-format} variable. This variable works along the
1733 lines of a @code{format} specification, which is pretty much the same as
1734 a @code{printf} specifications, for those of you who use (feh!) C.
1735 @xref{Formatting Variables}.
1737 @samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above.
1739 There should always be a colon on the line; the cursor always moves to
1740 the colon after performing an operation. @xref{Positioning
1741 Point}. Nothing else is required---not even the group name. All
1742 displayed text is just window dressing, and is never examined by Gnus.
1743 Gnus stores all real information it needs using text properties.
1745 (Note that if you make a really strange, wonderful, spreadsheet-like
1746 layout, everybody will believe you are hard at work with the accounting
1747 instead of wasting time reading news.)
1749 Here's a list of all available format characters:
1754 An asterisk if the group only has marked articles.
1757 Whether the group is subscribed.
1760 Level of subscribedness.
1763 Number of unread articles.
1766 Number of dormant articles.
1769 Number of ticked articles.
1772 Number of read articles.
1775 Number of unseen articles.
1778 Estimated total number of articles. (This is really @var{max-number}
1779 minus @var{min-number} plus 1.)
1781 Gnus uses this estimation because the @acronym{NNTP} protocol provides
1782 efficient access to @var{max-number} and @var{min-number} but getting
1783 the true unread message count is not possible efficiently. For
1784 hysterical raisins, even the mail back ends, where the true number of
1785 unread messages might be available efficiently, use the same limited
1786 interface. To remove this restriction from Gnus means that the back
1787 end interface has to be changed, which is not an easy job.
1789 The nnml backend (@pxref{Mail Spool}) has a feature called ``group
1790 compaction'' which circumvents this deficiency: the idea is to
1791 renumber all articles from 1, removing all gaps between numbers, hence
1792 getting a correct total count. Other backends may support this in the
1793 future. In order to keep your total article count relatively up to
1794 date, you might want to compact your groups (or even directly your
1795 server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
1798 Number of unread, unticked, non-dormant articles.
1801 Number of ticked and dormant articles.
1810 Group comment (@pxref{Group Parameters}) or group name if there is no
1811 comment element in the group parameters.
1814 Newsgroup description. You need to read the group descriptions
1815 before these will appear, and to do that, you either have to set
1816 @code{gnus-read-active-file} or use the group buffer @kbd{M-d}
1820 @samp{m} if moderated.
1823 @samp{(m)} if moderated.
1829 If the summary buffer for the group is open or not.
1835 A string that looks like @samp{<%s:%n>} if a foreign select method is
1839 Indentation based on the level of the topic (@pxref{Group Topics}).
1842 @vindex gnus-group-uncollapsed-levels
1843 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
1844 variable says how many levels to leave at the end of the group name.
1845 The default is 1---this will mean that group names like
1846 @samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}.
1849 @vindex gnus-new-mail-mark
1851 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1855 @samp{#} (@code{gnus-process-mark}) if the group is process marked.
1858 A string that says when you last read the group (@pxref{Group
1862 The disk space used by the articles fetched by both the cache and
1863 agent. The value is automatically scaled to bytes(B), kilobytes(K),
1864 megabytes(M), or gigabytes(G) to minimize the column width. A format
1865 of %7F is sufficient for a fixed-width column.
1868 User defined specifier. The next character in the format string should
1869 be a letter. Gnus will call the function
1870 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
1871 following @samp{%u}. The function will be passed a single dummy
1872 parameter as argument. The function should return a string, which will
1873 be inserted into the buffer just like information from any other
1878 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
1879 if no info is available---for instance, if it is a non-activated foreign
1880 group, or a bogus native group.
1883 @node Group Mode Line Specification
1884 @subsection Group Mode Line Specification
1885 @cindex group mode line
1887 @vindex gnus-group-mode-line-format
1888 The mode line can be changed by setting
1889 @code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It
1890 doesn't understand that many format specifiers:
1894 The native news server.
1896 The native select method.
1900 @node Group Highlighting
1901 @subsection Group Highlighting
1902 @cindex highlighting
1903 @cindex group highlighting
1905 @vindex gnus-group-highlight
1906 Highlighting in the group buffer is controlled by the
1907 @code{gnus-group-highlight} variable. This is an alist with elements
1908 that look like @code{(@var{form} . @var{face})}. If @var{form} evaluates to
1909 something non-@code{nil}, the @var{face} will be used on the line.
1911 Here's an example value for this variable that might look nice if the
1915 (cond (window-system
1916 (setq custom-background-mode 'light)
1917 (defface my-group-face-1
1918 '((t (:foreground "Red" :bold t))) "First group face")
1919 (defface my-group-face-2
1920 '((t (:foreground "DarkSeaGreen4" :bold t)))
1921 "Second group face")
1922 (defface my-group-face-3
1923 '((t (:foreground "Green4" :bold t))) "Third group face")
1924 (defface my-group-face-4
1925 '((t (:foreground "SteelBlue" :bold t))) "Fourth group face")
1926 (defface my-group-face-5
1927 '((t (:foreground "Blue" :bold t))) "Fifth group face")))
1929 (setq gnus-group-highlight
1930 '(((> unread 200) . my-group-face-1)
1931 ((and (< level 3) (zerop unread)) . my-group-face-2)
1932 ((< level 3) . my-group-face-3)
1933 ((zerop unread) . my-group-face-4)
1934 (t . my-group-face-5)))
1937 Also @pxref{Faces and Fonts}.
1939 Variables that are dynamically bound when the forms are evaluated
1946 The number of unread articles in the group.
1950 Whether the group is a mail group.
1952 The level of the group.
1954 The score of the group.
1956 The number of ticked articles in the group.
1958 The total number of articles in the group. Or rather,
1959 @var{max-number} minus @var{min-number} plus one.
1961 When using the topic minor mode, this variable is bound to the current
1962 topic being inserted.
1965 When the forms are @code{eval}ed, point is at the beginning of the line
1966 of the group in question, so you can use many of the normal Gnus
1967 functions for snarfing info on the group.
1969 @vindex gnus-group-update-hook
1970 @findex gnus-group-highlight-line
1971 @code{gnus-group-update-hook} is called when a group line is changed.
1972 It will not be called when @code{gnus-visual} is @code{nil}.
1975 @node Group Maneuvering
1976 @section Group Maneuvering
1977 @cindex group movement
1979 All movement commands understand the numeric prefix and will behave as
1980 expected, hopefully.
1986 @findex gnus-group-next-unread-group
1987 Go to the next group that has unread articles
1988 (@code{gnus-group-next-unread-group}).
1994 @findex gnus-group-prev-unread-group
1995 Go to the previous group that has unread articles
1996 (@code{gnus-group-prev-unread-group}).
2000 @findex gnus-group-next-group
2001 Go to the next group (@code{gnus-group-next-group}).
2005 @findex gnus-group-prev-group
2006 Go to the previous group (@code{gnus-group-prev-group}).
2010 @findex gnus-group-next-unread-group-same-level
2011 Go to the next unread group on the same (or lower) level
2012 (@code{gnus-group-next-unread-group-same-level}).
2016 @findex gnus-group-prev-unread-group-same-level
2017 Go to the previous unread group on the same (or lower) level
2018 (@code{gnus-group-prev-unread-group-same-level}).
2021 Three commands for jumping to groups:
2027 @findex gnus-group-jump-to-group
2028 Jump to a group (and make it visible if it isn't already)
2029 (@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just
2034 @findex gnus-group-best-unread-group
2035 Jump to the unread group with the lowest level
2036 (@code{gnus-group-best-unread-group}).
2040 @findex gnus-group-first-unread-group
2041 Jump to the first group with unread articles
2042 (@code{gnus-group-first-unread-group}).
2045 @vindex gnus-group-goto-unread
2046 If @code{gnus-group-goto-unread} is @code{nil}, all the movement
2047 commands will move to the next group, not the next unread group. Even
2048 the commands that say they move to the next unread group. The default
2051 @vindex gnus-summary-next-group-on-exit
2052 If @code{gnus-summary-next-group-on-exit} is @code{t}, when a summary is
2053 exited, the point in the group buffer is moved to the next unread group.
2054 Otherwise, the point is set to the group just exited. The default is
2057 @node Selecting a Group
2058 @section Selecting a Group
2059 @cindex group selection
2064 @kindex SPACE (Group)
2065 @findex gnus-group-read-group
2066 Select the current group, switch to the summary buffer and display the
2067 first unread article (@code{gnus-group-read-group}). If there are no
2068 unread articles in the group, or if you give a non-numerical prefix to
2069 this command, Gnus will offer to fetch all the old articles in this
2070 group from the server. If you give a numerical prefix @var{n}, @var{n}
2071 determines the number of articles Gnus will fetch. If @var{n} is
2072 positive, Gnus fetches the @var{n} newest articles, if @var{n} is
2073 negative, Gnus fetches the @code{abs(@var{n})} oldest articles.
2075 Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
2076 articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
2077 - 4 2 SPC} fetches the 42 oldest ones.
2079 When you are in the group (in the Summary buffer), you can type
2080 @kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
2085 @findex gnus-group-select-group
2086 Select the current group and switch to the summary buffer
2087 (@code{gnus-group-select-group}). Takes the same arguments as
2088 @code{gnus-group-read-group}---the only difference is that this command
2089 does not display the first unread article automatically upon group
2093 @kindex M-RET (Group)
2094 @findex gnus-group-quick-select-group
2095 This does the same as the command above, but tries to do it with the
2096 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
2097 scoring/killing will be performed, there will be no highlights and no
2098 expunging. This might be useful if you're in a real hurry and have to
2099 enter some humongous group. If you give a 0 prefix to this command
2100 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer,
2101 which is useful if you want to toggle threading before generating the
2102 summary buffer (@pxref{Summary Generation Commands}).
2105 @kindex M-SPACE (Group)
2106 @findex gnus-group-visible-select-group
2107 This is yet one more command that does the same as the @kbd{RET}
2108 command, but this one does it without expunging and hiding dormants
2109 (@code{gnus-group-visible-select-group}).
2112 @kindex C-M-RET (Group)
2113 @findex gnus-group-select-group-ephemerally
2114 Finally, this command selects the current group ephemerally without
2115 doing any processing of its contents
2116 (@code{gnus-group-select-group-ephemerally}). Even threading has been
2117 turned off. Everything you do in the group after selecting it in this
2118 manner will have no permanent effects.
2122 @vindex gnus-large-newsgroup
2123 The @code{gnus-large-newsgroup} variable says what Gnus should
2124 consider to be a big group. If it is @code{nil}, no groups are
2125 considered big. The default value is 200. If the group has more
2126 (unread and/or ticked) articles than this, Gnus will query the user
2127 before entering the group. The user can then specify how many
2128 articles should be fetched from the server. If the user specifies a
2129 negative number (@var{-n}), the @var{n} oldest articles will be
2130 fetched. If it is positive, the @var{n} articles that have arrived
2131 most recently will be fetched.
2133 @vindex gnus-large-ephemeral-newsgroup
2134 @code{gnus-large-ephemeral-newsgroup} is the same as
2135 @code{gnus-large-newsgroup}, but is only used for ephemeral
2138 @vindex gnus-newsgroup-maximum-articles
2139 In groups in some news servers, there might be a big gap between a few
2140 very old articles that will never be expired and the recent ones. In
2141 such a case, the server will return the data like @code{(1 . 30000000)}
2142 for the @code{LIST ACTIVE group} command, for example. Even if there
2143 are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't
2144 know it at first and prepares for getting 30000000 articles. However,
2145 it will consume hundreds megabytes of memories and might make Emacs get
2146 stuck as the case may be. If you use such news servers, set the
2147 variable @code{gnus-newsgroup-maximum-articles} to a positive number.
2148 The value means that Gnus ignores articles other than this number of the
2149 latest ones in every group. For instance, the value 10000 makes Gnus
2150 get only the articles 29990001-30000000 (if the latest article number is
2151 30000000 in a group). Note that setting this variable to a number might
2152 prevent you from reading very old articles. The default value of the
2153 variable @code{gnus-newsgroup-maximum-articles} is @code{nil}, which
2154 means Gnus never ignores old articles.
2156 @vindex gnus-select-group-hook
2157 @vindex gnus-auto-select-first
2158 @vindex gnus-auto-select-subject
2159 If @code{gnus-auto-select-first} is non-@code{nil}, select an article
2160 automatically when entering a group with the @kbd{SPACE} command.
2161 Which article this is controlled by the
2162 @code{gnus-auto-select-subject} variable. Valid values for this
2168 Place point on the subject line of the first unread article.
2171 Place point on the subject line of the first article.
2174 Place point on the subject line of the first unseen article.
2176 @item unseen-or-unread
2177 Place point on the subject line of the first unseen article, and if
2178 there is no such article, place point on the subject line of the first
2182 Place point on the subject line of the highest-scored unread article.
2186 This variable can also be a function. In that case, that function
2187 will be called to place point on a subject line.
2189 If you want to prevent automatic selection in some group (say, in a
2190 binary group with Huge articles) you can set the
2191 @code{gnus-auto-select-first} variable to @code{nil} in
2192 @code{gnus-select-group-hook}, which is called when a group is
2196 @node Subscription Commands
2197 @section Subscription Commands
2198 @cindex subscription
2200 The following commands allow for managing your subscriptions in the
2201 Group buffer. If you want to subscribe to many groups, it's probably
2202 more convenient to go to the @ref{Server Buffer}, and choose the
2203 server there using @kbd{RET} or @kbd{SPC}. Then you'll have the
2204 commands listed in @ref{Browse Foreign Server} at hand.
2212 @findex gnus-group-unsubscribe-current-group
2213 @c @icon{gnus-group-unsubscribe}
2214 Toggle subscription to the current group
2215 (@code{gnus-group-unsubscribe-current-group}).
2221 @findex gnus-group-unsubscribe-group
2222 Prompt for a group to subscribe, and then subscribe it. If it was
2223 subscribed already, unsubscribe it instead
2224 (@code{gnus-group-unsubscribe-group}).
2230 @findex gnus-group-kill-group
2231 @c @icon{gnus-group-kill-group}
2232 Kill the current group (@code{gnus-group-kill-group}).
2238 @findex gnus-group-yank-group
2239 Yank the last killed group (@code{gnus-group-yank-group}).
2242 @kindex C-x C-t (Group)
2243 @findex gnus-group-transpose-groups
2244 Transpose two groups (@code{gnus-group-transpose-groups}). This isn't
2245 really a subscription command, but you can use it instead of a
2246 kill-and-yank sequence sometimes.
2252 @findex gnus-group-kill-region
2253 Kill all groups in the region (@code{gnus-group-kill-region}).
2257 @findex gnus-group-kill-all-zombies
2258 Kill all zombie groups (@code{gnus-group-kill-all-zombies}).
2261 @kindex S C-k (Group)
2262 @findex gnus-group-kill-level
2263 Kill all groups on a certain level (@code{gnus-group-kill-level}).
2264 These groups can't be yanked back after killing, so this command should
2265 be used with some caution. The only time where this command comes in
2266 really handy is when you have a @file{.newsrc} with lots of unsubscribed
2267 groups that you want to get rid off. @kbd{S C-k} on level 7 will
2268 kill off all unsubscribed groups that do not have message numbers in the
2269 @file{.newsrc} file.
2273 Also @pxref{Group Levels}.
2283 @findex gnus-group-catchup-current
2284 @vindex gnus-group-catchup-group-hook
2285 @c @icon{gnus-group-catchup-current}
2286 Mark all unticked articles in this group as read
2287 (@code{gnus-group-catchup-current}).
2288 @code{gnus-group-catchup-group-hook} is called when catching up a group from
2293 @findex gnus-group-catchup-current-all
2294 Mark all articles in this group, even the ticked ones, as read
2295 (@code{gnus-group-catchup-current-all}).
2299 @findex gnus-group-clear-data
2300 Clear the data from the current group---nix out marks and the list of
2301 read articles (@code{gnus-group-clear-data}).
2303 @item M-x gnus-group-clear-data-on-native-groups
2304 @kindex M-x gnus-group-clear-data-on-native-groups
2305 @findex gnus-group-clear-data-on-native-groups
2306 If you have switched from one @acronym{NNTP} server to another, all your marks
2307 and read ranges have become worthless. You can use this command to
2308 clear out all data that you have on your native groups. Use with
2315 @section Group Levels
2319 All groups have a level of @dfn{subscribedness}. For instance, if a
2320 group is on level 2, it is more subscribed than a group on level 5. You
2321 can ask Gnus to just list groups on a given level or lower
2322 (@pxref{Listing Groups}), or to just check for new articles in groups on
2323 a given level or lower (@pxref{Scanning New Messages}).
2325 Remember: The higher the level of the group, the less important it is.
2331 @findex gnus-group-set-current-level
2332 Set the level of the current group. If a numeric prefix is given, the
2333 next @var{n} groups will have their levels set. The user will be
2334 prompted for a level.
2337 @vindex gnus-level-killed
2338 @vindex gnus-level-zombie
2339 @vindex gnus-level-unsubscribed
2340 @vindex gnus-level-subscribed
2341 Gnus considers groups from levels 1 to
2342 @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed,
2343 @code{gnus-level-subscribed} (exclusive) and
2344 @code{gnus-level-unsubscribed} (inclusive) (default 7) to be
2345 unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2346 (default 8) and @code{gnus-level-killed} to be killed (completely dead)
2347 (default 9). Gnus treats subscribed and unsubscribed groups exactly the
2348 same, but zombie and killed groups have no information on what articles
2349 you have read, etc, stored. This distinction between dead and living
2350 groups isn't done because it is nice or clever, it is done purely for
2351 reasons of efficiency.
2353 It is recommended that you keep all your mail groups (if any) on quite
2354 low levels (e.g. 1 or 2).
2356 Maybe the following description of the default behavior of Gnus helps to
2357 understand what these levels are all about. By default, Gnus shows you
2358 subscribed nonempty groups, but by hitting @kbd{L} you can have it show
2359 empty subscribed groups and unsubscribed groups, too. Type @kbd{l} to
2360 go back to showing nonempty subscribed groups again. Thus, unsubscribed
2361 groups are hidden, in a way.
2363 Zombie and killed groups are similar to unsubscribed groups in that they
2364 are hidden by default. But they are different from subscribed and
2365 unsubscribed groups in that Gnus doesn't ask the news server for
2366 information (number of messages, number of unread messages) on zombie
2367 and killed groups. Normally, you use @kbd{C-k} to kill the groups you
2368 aren't interested in. If most groups are killed, Gnus is faster.
2370 Why does Gnus distinguish between zombie and killed groups? Well, when
2371 a new group arrives on the server, Gnus by default makes it a zombie
2372 group. This means that you are normally not bothered with new groups,
2373 but you can type @kbd{A z} to get a list of all new groups. Subscribe
2374 the ones you like and kill the ones you don't want. (@kbd{A k} shows a
2375 list of killed groups.)
2377 If you want to play with the level variables, you should show some care.
2378 Set them once, and don't touch them ever again. Better yet, don't touch
2379 them at all unless you know exactly what you're doing.
2381 @vindex gnus-level-default-unsubscribed
2382 @vindex gnus-level-default-subscribed
2383 Two closely related variables are @code{gnus-level-default-subscribed}
2384 (default 3) and @code{gnus-level-default-unsubscribed} (default 6),
2385 which are the levels that new groups will be put on if they are
2386 (un)subscribed. These two variables should, of course, be inside the
2387 relevant valid ranges.
2389 @vindex gnus-keep-same-level
2390 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
2391 will only move to groups of the same level (or lower). In
2392 particular, going from the last article in one group to the next group
2393 will go to the next group of the same level (or lower). This might be
2394 handy if you want to read the most important groups before you read the
2397 If this variable is @code{best}, Gnus will make the next newsgroup the
2398 one with the best level.
2400 @vindex gnus-group-default-list-level
2401 All groups with a level less than or equal to
2402 @code{gnus-group-default-list-level} will be listed in the group buffer
2404 This variable can also be a function. In that case, that function will
2405 be called and the result will be used as value.
2408 @vindex gnus-group-list-inactive-groups
2409 If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
2410 groups will be listed along with the unread groups. This variable is
2411 @code{t} by default. If it is @code{nil}, inactive groups won't be
2414 @vindex gnus-group-use-permanent-levels
2415 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
2416 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
2417 use this level as the ``work'' level.
2419 @vindex gnus-activate-level
2420 Gnus will normally just activate (i. e., query the server about) groups
2421 on level @code{gnus-activate-level} or less. If you don't want to
2422 activate unsubscribed groups, for instance, you might set this variable
2423 to 5. The default is 6.
2427 @section Group Score
2432 You would normally keep important groups on high levels, but that scheme
2433 is somewhat restrictive. Don't you wish you could have Gnus sort the
2434 group buffer according to how often you read groups, perhaps? Within
2437 This is what @dfn{group score} is for. You can have Gnus assign a score
2438 to each group through the mechanism described below. You can then sort
2439 the group buffer based on this score. Alternatively, you can sort on
2440 score and then level. (Taken together, the level and the score is
2441 called the @dfn{rank} of the group. A group that is on level 4 and has
2442 a score of 1 has a higher rank than a group on level 5 that has a score
2443 of 300. (The level is the most significant part and the score is the
2444 least significant part.))
2446 @findex gnus-summary-bubble-group
2447 If you want groups you read often to get higher scores than groups you
2448 read seldom you can add the @code{gnus-summary-bubble-group} function to
2449 the @code{gnus-summary-exit-hook} hook. This will result (after
2450 sorting) in a bubbling sort of action. If you want to see that in
2451 action after each summary exit, you can add
2452 @code{gnus-group-sort-groups-by-rank} or
2453 @code{gnus-group-sort-groups-by-score} to the same hook, but that will
2454 slow things down somewhat.
2457 @node Marking Groups
2458 @section Marking Groups
2459 @cindex marking groups
2461 If you want to perform some command on several groups, and they appear
2462 subsequently in the group buffer, you would normally just give a
2463 numerical prefix to the command. Most group commands will then do your
2464 bidding on those groups.
2466 However, if the groups are not in sequential order, you can still
2467 perform a command on several groups. You simply mark the groups first
2468 with the process mark and then execute the command.
2476 @findex gnus-group-mark-group
2477 Set the mark on the current group (@code{gnus-group-mark-group}).
2483 @findex gnus-group-unmark-group
2484 Remove the mark from the current group
2485 (@code{gnus-group-unmark-group}).
2489 @findex gnus-group-unmark-all-groups
2490 Remove the mark from all groups (@code{gnus-group-unmark-all-groups}).
2494 @findex gnus-group-mark-region
2495 Mark all groups between point and mark (@code{gnus-group-mark-region}).
2499 @findex gnus-group-mark-buffer
2500 Mark all groups in the buffer (@code{gnus-group-mark-buffer}).
2504 @findex gnus-group-mark-regexp
2505 Mark all groups that match some regular expression
2506 (@code{gnus-group-mark-regexp}).
2509 Also @pxref{Process/Prefix}.
2511 @findex gnus-group-universal-argument
2512 If you want to execute some command on all groups that have been marked
2513 with the process mark, you can use the @kbd{M-&}
2514 (@code{gnus-group-universal-argument}) command. It will prompt you for
2515 the command to be executed.
2518 @node Foreign Groups
2519 @section Foreign Groups
2520 @cindex foreign groups
2522 If you recall how to subscribe to servers (@pxref{Finding the News})
2523 you will remember that @code{gnus-secondary-select-methods} and
2524 @code{gnus-select-method} let you write a definition in Emacs Lisp of
2525 what servers you want to see when you start up. The alternate
2526 approach is to use foreign servers and groups. ``Foreign'' here means
2527 they are not coming from the select methods. All foreign server
2528 configuration and subscriptions are stored only in the
2529 @file{~/.newsrc.eld} file.
2531 Below are some group mode commands for making and editing general foreign
2532 groups, as well as commands to ease the creation of a few
2533 special-purpose groups. All these commands insert the newly created
2534 groups under point---@code{gnus-subscribe-newsgroup-method} is not
2537 Changes from the group editing commands are stored in
2538 @file{~/.newsrc.eld} (@code{gnus-startup-file}). An alternative is the
2539 variable @code{gnus-parameters}, @xref{Group Parameters}.
2545 @findex gnus-group-make-group
2546 @cindex making groups
2547 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
2548 for a name, a method and possibly an @dfn{address}. For an easier way
2549 to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}).
2553 @findex gnus-group-read-ephemeral-group
2554 Make an ephemeral group (@code{gnus-group-read-ephemeral-group}). Gnus
2555 will prompt you for a name, a method and an @dfn{address}.
2559 @findex gnus-group-rename-group
2560 @cindex renaming groups
2561 Rename the current group to something else
2562 (@code{gnus-group-rename-group}). This is valid only on some
2563 groups---mail groups mostly. This command might very well be quite slow
2569 @findex gnus-group-customize
2570 Customize the group parameters (@code{gnus-group-customize}).
2574 @findex gnus-group-edit-group-method
2575 @cindex renaming groups
2576 Enter a buffer where you can edit the select method of the current
2577 group (@code{gnus-group-edit-group-method}).
2581 @findex gnus-group-edit-group-parameters
2582 Enter a buffer where you can edit the group parameters
2583 (@code{gnus-group-edit-group-parameters}).
2587 @findex gnus-group-edit-group
2588 Enter a buffer where you can edit the group info
2589 (@code{gnus-group-edit-group}).
2593 @findex gnus-group-make-directory-group
2595 Make a directory group (@pxref{Directory Groups}). You will be prompted
2596 for a directory name (@code{gnus-group-make-directory-group}).
2601 @findex gnus-group-make-help-group
2602 Make the Gnus help group (@code{gnus-group-make-help-group}).
2606 @findex gnus-group-enter-directory
2608 Read an arbitrary directory as if it were a newsgroup with the
2609 @code{nneething} back end (@code{gnus-group-enter-directory}).
2610 @xref{Anything Groups}.
2614 @findex gnus-group-make-doc-group
2615 @cindex ClariNet Briefs
2617 Make a group based on some file or other
2618 (@code{gnus-group-make-doc-group}). If you give a prefix to this
2619 command, you will be prompted for a file name and a file type.
2620 Currently supported types are @code{mbox}, @code{babyl},
2621 @code{digest}, @code{news}, @code{rnews}, @code{mmdf}, @code{forward},
2622 @code{rfc934}, @code{rfc822-forward}, @code{mime-parts},
2623 @code{standard-digest}, @code{slack-digest}, @code{clari-briefs},
2624 @code{nsmail}, @code{outlook}, @code{oe-dbx}, and @code{mailman}. If
2625 you run this command without a prefix, Gnus will guess at the file
2626 type. @xref{Document Groups}.
2630 @vindex gnus-useful-groups
2631 @findex gnus-group-make-useful-group
2632 Create one of the groups mentioned in @code{gnus-useful-groups}
2633 (@code{gnus-group-make-useful-group}).
2637 @findex gnus-group-make-web-group
2641 Make an ephemeral group based on a web search
2642 (@code{gnus-group-make-web-group}). If you give a prefix to this
2643 command, make a solid group instead. You will be prompted for the
2644 search engine type and the search string. Valid search engine types
2645 include @code{google}, @code{dejanews}, and @code{gmane}.
2646 @xref{Web Searches}.
2648 If you use the @code{google} search engine, you can limit the search
2649 to a particular group by using a match string like
2650 @samp{shaving group:alt.sysadmin.recovery}.
2654 @findex gnus-group-make-rss-group
2655 Make a group based on an @acronym{RSS} feed
2656 (@code{gnus-group-make-rss-group}). You will be prompted for an URL.
2660 @kindex G DEL (Group)
2661 @findex gnus-group-delete-group
2662 This function will delete the current group
2663 (@code{gnus-group-delete-group}). If given a prefix, this function will
2664 actually delete all the articles in the group, and forcibly remove the
2665 group itself from the face of the Earth. Use a prefix only if you are
2666 absolutely sure of what you are doing. This command can't be used on
2667 read-only groups (like @code{nntp} groups), though.
2671 @findex gnus-group-make-empty-virtual
2672 Make a new, fresh, empty @code{nnvirtual} group
2673 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
2677 @findex gnus-group-add-to-virtual
2678 Add the current group to an @code{nnvirtual} group
2679 (@code{gnus-group-add-to-virtual}). Uses the process/prefix convention.
2682 @xref{Select Methods}, for more information on the various select
2685 @vindex gnus-activate-foreign-newsgroups
2686 If @code{gnus-activate-foreign-newsgroups} is a positive number,
2687 Gnus will check all foreign groups with this level or lower at startup.
2688 This might take quite a while, especially if you subscribe to lots of
2689 groups from different @acronym{NNTP} servers. Also @pxref{Group Levels};
2690 @code{gnus-activate-level} also affects activation of foreign
2694 The following commands create ephemeral groups. They can be called not
2695 only from the Group buffer, but in any Gnus buffer.
2698 @item gnus-read-ephemeral-gmane-group
2699 @findex gnus-read-ephemeral-gmane-group
2700 @vindex gnus-gmane-group-download-format
2701 Read an ephemeral group on Gmane.org. The articles are downloaded via
2702 HTTP using the URL specified by @code{gnus-gmane-group-download-format}.
2703 Gnus will prompt you for a group name, the start article number and an
2706 @item gnus-read-ephemeral-gmane-group-url
2707 @findex gnus-read-ephemeral-gmane-group-url
2708 This command is similar to @code{gnus-read-ephemeral-gmane-group}, but
2709 the group name and the article number and range are constructed from a
2710 given @acronym{URL}. Supported @acronym{URL} formats include e.g.
2711 @url{http://thread.gmane.org/gmane.foo.bar/12300/focus=12399},
2712 @url{http://thread.gmane.org/gmane.foo.bar/12345/},
2713 @url{http://article.gmane.org/gmane.foo.bar/12345/},
2714 @url{http://permalink.gmane.org/gmane.foo.bar/12345/}, and
2715 @url{http://news.gmane.org/group/gmane.foo.bar/thread=12345}.
2717 @item gnus-read-ephemeral-emacs-bug-group
2718 @findex gnus-read-ephemeral-emacs-bug-group
2719 Read an Emacs bug report in an ephemeral group. Gnus will prompt for a
2720 bug number. The default is the number at point. The @acronym{URL} is
2721 specified in @code{gnus-bug-group-download-format-alist}.
2723 @item gnus-read-ephemeral-debian-bug-group
2724 @findex gnus-read-ephemeral-debian-bug-group
2725 Read a Debian bug report in an ephemeral group. Analog to
2726 @code{gnus-read-ephemeral-emacs-bug-group}.
2729 Some of these command are also useful for article buttons, @xref{Article
2737 '("#\\([0-9]+\\)\\>" 1
2738 (string-match "\\<emacs\\>" (or gnus-newsgroup-name ""))
2739 gnus-read-ephemeral-emacs-bug-group 1))
2743 @node Group Parameters
2744 @section Group Parameters
2745 @cindex group parameters
2747 The group parameters store information local to a particular group.
2749 Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a
2750 group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c}
2751 presents you with a Customize-like interface. The latter helps avoid
2752 silly Lisp errors.) You might also be interested in reading about topic
2753 parameters (@pxref{Topic Parameters}).
2754 Additionally, you can set group parameters via the
2755 @code{gnus-parameters} variable, see below.
2757 Here's an example group parameter list:
2760 ((to-address . "ding@@gnus.org")
2764 We see that each element consists of a ``dotted pair''---the thing before
2765 the dot is the key, while the thing after the dot is the value. All the
2766 parameters have this form @emph{except} local variable specs, which are
2767 not dotted pairs, but proper lists.
2769 Some parameters have correspondent customizable variables, each of which
2770 is an alist of regexps and values.
2772 The following group parameters can be used:
2777 Address used by when doing followups and new posts.
2780 (to-address . "some@@where.com")
2783 This is primarily useful in mail groups that represent closed mailing
2784 lists---mailing lists where it's expected that everybody that writes to
2785 the mailing list is subscribed to it. Since using this parameter
2786 ensures that the mail only goes to the mailing list itself, it means
2787 that members won't receive two copies of your followups.
2789 Using @code{to-address} will actually work whether the group is foreign
2790 or not. Let's say there's a group on the server that is called
2791 @samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten
2792 the articles from a mail-to-news gateway. Posting directly to this
2793 group is therefore impossible---you have to send mail to the mailing
2794 list address instead.
2796 See also @code{gnus-parameter-to-address-alist}.
2800 Address used when doing @kbd{a} in that group.
2803 (to-list . "some@@where.com")
2806 It is totally ignored
2807 when doing a followup---except that if it is present in a news group,
2808 you'll get mail group semantics when doing @kbd{f}.
2810 If you do an @kbd{a} command in a mail group and you have neither a
2811 @code{to-list} group parameter nor a @code{to-address} group parameter,
2812 then a @code{to-list} group parameter will be added automatically upon
2813 sending the message if @code{gnus-add-to-list} is set to @code{t}.
2814 @vindex gnus-add-to-list
2816 @findex gnus-mailing-list-mode
2817 @cindex mail list groups
2818 If this variable is set, @code{gnus-mailing-list-mode} is turned on when
2819 entering summary buffer.
2821 See also @code{gnus-parameter-to-list-alist}.
2826 @cindex Mail-Followup-To
2827 @findex gnus-find-subscribed-addresses
2828 If this parameter is set to @code{t}, Gnus will consider the
2829 to-address and to-list parameters for this group as addresses of
2830 mailing lists you are subscribed to. Giving Gnus this information is
2831 (only) a first step in getting it to generate correct Mail-Followup-To
2832 headers for your posts to these lists. The second step is to put the
2833 following in your @file{.gnus.el}
2836 (setq message-subscribed-address-functions
2837 '(gnus-find-subscribed-addresses))
2840 @xref{Mailing Lists, ,Mailing Lists, message, The Message Manual}, for
2841 a complete treatment of available MFT support.
2845 If the group parameter list has the element @code{(visible . t)},
2846 that group will always be visible in the Group buffer, regardless
2847 of whether it has any unread articles.
2849 This parameter cannot be set via @code{gnus-parameters}. See
2850 @code{gnus-permanently-visible-groups} as an alternative.
2852 @item broken-reply-to
2853 @cindex broken-reply-to
2854 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To}
2855 headers in this group are to be ignored, and for the header to be hidden
2856 if @code{reply-to} is part of @code{gnus-boring-article-headers}. This
2857 can be useful if you're reading a mailing list group where the listserv
2858 has inserted @code{Reply-To} headers that point back to the listserv
2859 itself. That is broken behavior. So there!
2863 Elements like @code{(to-group . "some.group.name")} means that all
2864 posts in that group will be sent to @code{some.group.name}.
2868 If you have @code{(newsgroup . t)} in the group parameter list, Gnus
2869 will treat all responses as if they were responses to news articles.
2870 This can be useful if you have a mail group that's really a mirror of a
2875 If @code{(gcc-self . t)} is present in the group parameter list, newly
2876 composed messages will be @code{Gcc}'d to the current group. If
2877 @code{(gcc-self . none)} is present, no @code{Gcc:} header will be
2878 generated, if @code{(gcc-self . "string")} is present, this string will
2879 be inserted literally as a @code{gcc} header. This parameter takes
2880 precedence over any default @code{Gcc} rules as described later
2881 (@pxref{Archived Messages}).
2883 @strong{Caveat}: Adding @code{(gcc-self . t)} to the parameter list of
2884 @code{nntp} groups (or the like) isn't valid. An @code{nntp} server
2885 doesn't accept articles.
2889 @cindex expiring mail
2890 If the group parameter has an element that looks like @code{(auto-expire
2891 . t)}, all articles read will be marked as expirable. For an
2892 alternative approach, @pxref{Expiring Mail}.
2894 See also @code{gnus-auto-expirable-newsgroups}.
2897 @cindex total-expire
2898 @cindex expiring mail
2899 If the group parameter has an element that looks like
2900 @code{(total-expire . t)}, all read articles will be put through the
2901 expiry process, even if they are not marked as expirable. Use with
2902 caution. Unread, ticked and dormant articles are not eligible for
2905 See also @code{gnus-total-expirable-newsgroups}.
2909 @vindex nnmail-expiry-wait-function
2910 If the group parameter has an element that looks like
2911 @code{(expiry-wait . 10)}, this value will override any
2912 @code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function}
2913 (@pxref{Expiring Mail}) when expiring expirable messages. The value
2914 can either be a number of days (not necessarily an integer) or the
2915 symbols @code{never} or @code{immediate}.
2918 @cindex expiry-target
2919 Where expired messages end up. This parameter overrides
2920 @code{nnmail-expiry-target}.
2923 @cindex score file group parameter
2924 Elements that look like @code{(score-file . "file")} will make
2925 @file{file} into the current score file for the group in question. All
2926 interactive score entries will be put into this file.
2929 @cindex adapt file group parameter
2930 Elements that look like @code{(adapt-file . "file")} will make
2931 @file{file} into the current adaptive file for the group in question.
2932 All adaptive score entries will be put into this file.
2935 @cindex admin-address
2936 When unsubscribing from a mailing list you should never send the
2937 unsubscription notice to the mailing list itself. Instead, you'd send
2938 messages to the administrative address. This parameter allows you to
2939 put the admin address somewhere convenient.
2943 Elements that look like @code{(display . MODE)} say which articles to
2944 display on entering the group. Valid values are:
2948 Display all articles, both read and unread.
2951 Display the last @var{integer} articles in the group. This is the same as
2952 entering the group with @kbd{C-u @var{integer}}.
2955 Display the default visible articles, which normally includes unread and
2959 Display articles that satisfy a predicate.
2961 Here are some examples:
2965 Display only unread articles.
2968 Display everything except expirable articles.
2970 @item [and (not reply) (not expire)]
2971 Display everything except expirable and articles you've already
2975 The available operators are @code{not}, @code{and} and @code{or}.
2976 Predicates include @code{tick}, @code{unsend}, @code{undownload},
2977 @code{unread}, @code{dormant}, @code{expire}, @code{reply},
2978 @code{killed}, @code{bookmark}, @code{score}, @code{save},
2979 @code{cache}, @code{forward}, @code{unseen} and @code{recent}.
2983 The @code{display} parameter works by limiting the summary buffer to
2984 the subset specified. You can pop the limit by using the @kbd{/ w}
2985 command (@pxref{Limiting}).
2989 Elements that look like @code{(comment . "This is a comment")} are
2990 arbitrary comments on the group. You can display comments in the
2991 group line (@pxref{Group Line Specification}).
2995 Elements that look like @code{(charset . iso-8859-1)} will make
2996 @code{iso-8859-1} the default charset; that is, the charset that will be
2997 used for all articles that do not specify a charset.
2999 See also @code{gnus-group-charset-alist}.
3001 @item ignored-charsets
3002 @cindex ignored-charset
3003 Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)}
3004 will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the
3005 default charset will be used for decoding articles.
3007 See also @code{gnus-group-ignored-charsets-alist}.
3010 @cindex posting-style
3011 You can store additional posting style information for this group
3012 here (@pxref{Posting Styles}). The format is that of an entry in the
3013 @code{gnus-posting-styles} alist, except that there's no regexp matching
3014 the group name (of course). Style elements in this group parameter will
3015 take precedence over the ones found in @code{gnus-posting-styles}.
3017 For instance, if you want a funky name and signature in this group only,
3018 instead of hacking @code{gnus-posting-styles}, you could put something
3019 like this in the group parameters:
3024 ("X-My-Header" "Funky Value")
3025 (signature "Funky Signature"))
3028 If you're using topics to organize your group buffer
3029 (@pxref{Group Topics}), note that posting styles can also be set in
3030 the topics parameters. Posting styles in topic parameters apply to all
3031 groups in this topic. More precisely, the posting-style settings for a
3032 group result from the hierarchical merging of all posting-style
3033 entries in the parameters of this group and all the topics it belongs
3039 If it is set, the value is used as the method for posting message
3040 instead of @code{gnus-post-method}.
3044 If it is set, and the setting of @code{mail-sources} includes a
3045 @code{group} mail source (@pxref{Mail Sources}), the value is a
3046 mail source for this group.
3050 An item like @code{(banner . @var{regexp})} causes any part of an article
3051 that matches the regular expression @var{regexp} to be stripped. Instead of
3052 @var{regexp}, you can also use the symbol @code{signature} which strips the
3053 last signature or any of the elements of the alist
3054 @code{gnus-article-banner-alist}.
3058 This parameter contains a Sieve test that should match incoming mail
3059 that should be placed in this group. From this group parameter, a
3060 Sieve @samp{IF} control structure is generated, having the test as the
3061 condition and @samp{fileinto "group.name";} as the body.
3063 For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve
3064 address "sender" "sieve-admin@@extundo.com")} group parameter, when
3065 translating the group parameter into a Sieve script (@pxref{Sieve
3066 Commands}) the following Sieve code is generated:
3069 if address "sender" "sieve-admin@@extundo.com" @{
3070 fileinto "INBOX.list.sieve";
3074 To generate tests for multiple email-addresses use a group parameter
3075 like @code{(sieve address "sender" ("name@@one.org" else@@two.org"))}.
3076 When generating a sieve script (@pxref{Sieve Commands}) Sieve code
3077 like the following is generated:
3080 if address "sender" ["name@@one.org", "else@@two.org"] @{
3081 fileinto "INBOX.list.sieve";
3085 See @pxref{Sieve Commands} for commands and variables that might be of
3086 interest in relation to the sieve parameter.
3088 The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve,
3089 Top, sieve, Emacs Sieve}.
3091 @item (agent parameters)
3092 If the agent has been enabled, you can set any of its parameters to
3093 control the behavior of the agent in individual groups. See Agent
3094 Parameters in @ref{Category Syntax}. Most users will choose to set
3095 agent parameters in either an agent category or group topic to
3096 minimize the configuration effort.
3098 @item (@var{variable} @var{form})
3099 You can use the group parameters to set variables local to the group you
3100 are entering. If you want to turn threading off in @samp{news.answers},
3101 you could put @code{(gnus-show-threads nil)} in the group parameters of
3102 that group. @code{gnus-show-threads} will be made into a local variable
3103 in the summary buffer you enter, and the form @code{nil} will be
3104 @code{eval}ed there.
3106 Note that this feature sets the variable locally to the summary buffer
3107 if and only if @var{variable} has been bound as a variable. Otherwise,
3108 only evaluating the form will take place. So, you may want to bind the
3109 variable in advance using @code{defvar} or other if the result of the
3110 form needs to be set to it.
3112 But some variables are evaluated in the article buffer, or in the
3113 message buffer (of a reply or followup or otherwise newly created
3114 message). As a workaround, it might help to add the variable in
3115 question to @code{gnus-newsgroup-variables}. @xref{Various Summary
3116 Stuff}. So if you want to set @code{message-from-style} via the group
3117 parameters, then you may need the following statement elsewhere in your
3118 @file{~/.gnus.el} file:
3121 (add-to-list 'gnus-newsgroup-variables 'message-from-style)
3124 @vindex gnus-list-identifiers
3125 A use for this feature is to remove a mailing list identifier tag in
3126 the subject fields of articles. E.g. if the news group
3129 nntp+news.gnus.org:gmane.text.docbook.apps
3132 has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this
3133 tag can be removed from the article subjects in the summary buffer for
3134 the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")}
3135 into the group parameters for the group.
3137 This can also be used as a group-specific hook function. If you want to
3138 hear a beep when you enter a group, you could put something like
3139 @code{(dummy-variable (ding))} in the parameters of that group. If
3140 @code{dummy-variable} has been bound (see above), it will be set to the
3141 (meaningless) result of the @code{(ding)} form.
3143 Alternatively, since the VARIABLE becomes local to the group, this
3144 pattern can be used to temporarily change a hook. For example, if the
3145 following is added to a group parameter
3148 (gnus-summary-prepared-hook
3149 '(lambda nil (local-set-key "d" (local-key-binding "n"))))
3152 when the group is entered, the 'd' key will not mark the article as
3157 @vindex gnus-parameters
3158 Group parameters can be set via the @code{gnus-parameters} variable too.
3159 But some variables, such as @code{visible}, have no effect (For this
3160 case see @code{gnus-permanently-visible-groups} as an alternative.).
3164 (setq gnus-parameters
3166 (gnus-show-threads nil)
3167 (gnus-use-scoring nil)
3168 (gnus-summary-line-format
3169 "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
3173 ("^nnimap:\\(foo.bar\\)$"
3177 (gnus-use-scoring t))
3181 (broken-reply-to . t))))
3184 String value of parameters will be subjected to regexp substitution, as
3185 the @code{to-group} example shows.
3187 @vindex gnus-parameters-case-fold-search
3188 By default, whether comparing the group name and one of those regexps
3189 specified in @code{gnus-parameters} is done in a case-sensitive manner
3190 or a case-insensitive manner depends on the value of
3191 @code{case-fold-search} at the time when the comparison is done. The
3192 value of @code{case-fold-search} is typically @code{t}; it means, for
3193 example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be
3194 applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo}
3195 group. If you want to make those regexps always case-sensitive, set the
3196 value of the @code{gnus-parameters-case-fold-search} variable to
3197 @code{nil}. Otherwise, set it to @code{t} if you want to compare them
3198 always in a case-insensitive manner.
3200 You can define different sorting to different groups via
3201 @code{gnus-parameters}. Here is an example to sort an @acronym{NNTP}
3202 group by reverse date to see the latest news at the top and an
3203 @acronym{RSS} group by subject. In this example, the first group is the
3204 Debian daily news group @code{gmane.linux.debian.user.news} from
3205 news.gmane.org. The @acronym{RSS} group corresponds to the Debian
3206 weekly news RSS feed
3207 @url{http://packages.debian.org/unstable/newpkg_main.en.rdf},
3213 '(("nntp.*gmane\\.debian\\.user\\.news"
3214 (gnus-show-threads nil)
3215 (gnus-article-sort-functions '((not gnus-article-sort-by-date)))
3216 (gnus-use-adaptive-scoring nil)
3217 (gnus-use-scoring nil))
3219 (gnus-show-threads nil)
3220 (gnus-article-sort-functions 'gnus-article-sort-by-subject)
3221 (gnus-use-adaptive-scoring nil)
3222 (gnus-use-scoring t)
3223 (gnus-score-find-score-files-function 'gnus-score-find-single)
3224 (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
3228 @node Listing Groups
3229 @section Listing Groups
3230 @cindex group listing
3232 These commands all list various slices of the groups available.
3240 @findex gnus-group-list-groups
3241 List all groups that have unread articles
3242 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
3243 command will list only groups of level ARG and lower. By default, it
3244 only lists groups of level five (i.e.,
3245 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
3252 @findex gnus-group-list-all-groups
3253 List all groups, whether they have unread articles or not
3254 (@code{gnus-group-list-all-groups}). If the numeric prefix is used,
3255 this command will list only groups of level ARG and lower. By default,
3256 it lists groups of level seven or lower (i.e., just subscribed and
3257 unsubscribed groups).
3261 @findex gnus-group-list-level
3262 List all unread groups on a specific level
3263 (@code{gnus-group-list-level}). If given a prefix, also list the groups
3264 with no unread articles.
3268 @findex gnus-group-list-killed
3269 List all killed groups (@code{gnus-group-list-killed}). If given a
3270 prefix argument, really list all groups that are available, but aren't
3271 currently (un)subscribed. This could entail reading the active file
3276 @findex gnus-group-list-zombies
3277 List all zombie groups (@code{gnus-group-list-zombies}).
3281 @findex gnus-group-list-matching
3282 List all unread, subscribed groups with names that match a regexp
3283 (@code{gnus-group-list-matching}).
3287 @findex gnus-group-list-all-matching
3288 List groups that match a regexp (@code{gnus-group-list-all-matching}).
3292 @findex gnus-group-list-active
3293 List absolutely all groups in the active file(s) of the
3294 server(s) you are connected to (@code{gnus-group-list-active}). This
3295 might very well take quite a while. It might actually be a better idea
3296 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
3297 thing to match on. Also note that this command may list groups that
3298 don't exist (yet)---these will be listed as if they were killed groups.
3299 Take the output with some grains of salt.
3303 @findex gnus-group-apropos
3304 List all groups that have names that match a regexp
3305 (@code{gnus-group-apropos}).
3309 @findex gnus-group-description-apropos
3310 List all groups that have names or descriptions that match a regexp
3311 (@code{gnus-group-description-apropos}).
3315 @findex gnus-group-list-cached
3316 List all groups with cached articles (@code{gnus-group-list-cached}).
3320 @findex gnus-group-list-dormant
3321 List all groups with dormant articles (@code{gnus-group-list-dormant}).
3325 @findex gnus-group-list-ticked
3326 List all groups with ticked articles (@code{gnus-group-list-ticked}).
3330 @findex gnus-group-list-limit
3331 List groups limited within the current selection
3332 (@code{gnus-group-list-limit}).
3336 @findex gnus-group-list-flush
3337 Flush groups from the current selection (@code{gnus-group-list-flush}).
3341 @findex gnus-group-list-plus
3342 List groups plus the current selection (@code{gnus-group-list-plus}).
3346 @vindex gnus-permanently-visible-groups
3347 @cindex visible group parameter
3348 Groups that match the @code{gnus-permanently-visible-groups} regexp will
3349 always be shown, whether they have unread articles or not. You can also
3350 add the @code{visible} element to the group parameters in question to
3351 get the same effect.
3353 @vindex gnus-list-groups-with-ticked-articles
3354 Groups that have just ticked articles in it are normally listed in the
3355 group buffer. If @code{gnus-list-groups-with-ticked-articles} is
3356 @code{nil}, these groups will be treated just like totally empty
3357 groups. It is @code{t} by default.
3360 @node Sorting Groups
3361 @section Sorting Groups
3362 @cindex sorting groups
3364 @kindex C-c C-s (Group)
3365 @findex gnus-group-sort-groups
3366 @vindex gnus-group-sort-function
3367 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3368 group buffer according to the function(s) given by the
3369 @code{gnus-group-sort-function} variable. Available sorting functions
3374 @item gnus-group-sort-by-alphabet
3375 @findex gnus-group-sort-by-alphabet
3376 Sort the group names alphabetically. This is the default.
3378 @item gnus-group-sort-by-real-name
3379 @findex gnus-group-sort-by-real-name
3380 Sort the group alphabetically on the real (unprefixed) group names.
3382 @item gnus-group-sort-by-level
3383 @findex gnus-group-sort-by-level
3384 Sort by group level.
3386 @item gnus-group-sort-by-score
3387 @findex gnus-group-sort-by-score
3388 Sort by group score. @xref{Group Score}.
3390 @item gnus-group-sort-by-rank
3391 @findex gnus-group-sort-by-rank
3392 Sort by group score and then the group level. The level and the score
3393 are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
3395 @item gnus-group-sort-by-unread
3396 @findex gnus-group-sort-by-unread
3397 Sort by number of unread articles.
3399 @item gnus-group-sort-by-method
3400 @findex gnus-group-sort-by-method
3401 Sort alphabetically on the select method.
3403 @item gnus-group-sort-by-server
3404 @findex gnus-group-sort-by-server
3405 Sort alphabetically on the Gnus server name.
3410 @code{gnus-group-sort-function} can also be a list of sorting
3411 functions. In that case, the most significant sort key function must be
3415 There are also a number of commands for sorting directly according to
3416 some sorting criteria:
3420 @kindex G S a (Group)
3421 @findex gnus-group-sort-groups-by-alphabet
3422 Sort the group buffer alphabetically by group name
3423 (@code{gnus-group-sort-groups-by-alphabet}).
3426 @kindex G S u (Group)
3427 @findex gnus-group-sort-groups-by-unread
3428 Sort the group buffer by the number of unread articles
3429 (@code{gnus-group-sort-groups-by-unread}).
3432 @kindex G S l (Group)
3433 @findex gnus-group-sort-groups-by-level
3434 Sort the group buffer by group level
3435 (@code{gnus-group-sort-groups-by-level}).
3438 @kindex G S v (Group)
3439 @findex gnus-group-sort-groups-by-score
3440 Sort the group buffer by group score
3441 (@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
3444 @kindex G S r (Group)
3445 @findex gnus-group-sort-groups-by-rank
3446 Sort the group buffer by group rank
3447 (@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
3450 @kindex G S m (Group)
3451 @findex gnus-group-sort-groups-by-method
3452 Sort the group buffer alphabetically by back end name@*
3453 (@code{gnus-group-sort-groups-by-method}).
3456 @kindex G S n (Group)
3457 @findex gnus-group-sort-groups-by-real-name
3458 Sort the group buffer alphabetically by real (unprefixed) group name
3459 (@code{gnus-group-sort-groups-by-real-name}).
3463 All the commands below obey the process/prefix convention
3464 (@pxref{Process/Prefix}).
3466 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3467 commands will sort in reverse order.
3469 You can also sort a subset of the groups:
3473 @kindex G P a (Group)
3474 @findex gnus-group-sort-selected-groups-by-alphabet
3475 Sort the groups alphabetically by group name
3476 (@code{gnus-group-sort-selected-groups-by-alphabet}).
3479 @kindex G P u (Group)
3480 @findex gnus-group-sort-selected-groups-by-unread
3481 Sort the groups by the number of unread articles
3482 (@code{gnus-group-sort-selected-groups-by-unread}).
3485 @kindex G P l (Group)
3486 @findex gnus-group-sort-selected-groups-by-level
3487 Sort the groups by group level
3488 (@code{gnus-group-sort-selected-groups-by-level}).
3491 @kindex G P v (Group)
3492 @findex gnus-group-sort-selected-groups-by-score
3493 Sort the groups by group score
3494 (@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
3497 @kindex G P r (Group)
3498 @findex gnus-group-sort-selected-groups-by-rank
3499 Sort the groups by group rank
3500 (@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
3503 @kindex G P m (Group)
3504 @findex gnus-group-sort-selected-groups-by-method
3505 Sort the groups alphabetically by back end name@*
3506 (@code{gnus-group-sort-selected-groups-by-method}).
3509 @kindex G P n (Group)
3510 @findex gnus-group-sort-selected-groups-by-real-name
3511 Sort the groups alphabetically by real (unprefixed) group name
3512 (@code{gnus-group-sort-selected-groups-by-real-name}).
3515 @kindex G P s (Group)
3516 @findex gnus-group-sort-selected-groups
3517 Sort the groups according to @code{gnus-group-sort-function}.
3521 And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3525 @node Group Maintenance
3526 @section Group Maintenance
3527 @cindex bogus groups
3532 @findex gnus-group-check-bogus-groups
3533 Find bogus groups and delete them
3534 (@code{gnus-group-check-bogus-groups}).
3538 @findex gnus-group-find-new-groups
3539 Find new groups and process them (@code{gnus-group-find-new-groups}).
3540 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3541 for new groups. With 2 @kbd{C-u}'s, use most complete method possible
3542 to query the server for new groups, and subscribe the new groups as
3546 @kindex C-c C-x (Group)
3547 @findex gnus-group-expire-articles
3548 @cindex expiring mail
3549 Run all expirable articles in the current group through the expiry
3550 process (if any) (@code{gnus-group-expire-articles}). That is, delete
3551 all expirable articles in the group that have been around for a while.
3552 (@pxref{Expiring Mail}).
3555 @kindex C-c C-M-x (Group)
3556 @findex gnus-group-expire-all-groups
3557 @cindex expiring mail
3558 Run all expirable articles in all groups through the expiry process
3559 (@code{gnus-group-expire-all-groups}).
3564 @node Browse Foreign Server
3565 @section Browse Foreign Server
3566 @cindex foreign servers
3567 @cindex browsing servers
3572 @findex gnus-group-browse-foreign-server
3573 You will be queried for a select method and a server name. Gnus will
3574 then attempt to contact this server and let you browse the groups there
3575 (@code{gnus-group-browse-foreign-server}).
3578 @findex gnus-browse-mode
3579 A new buffer with a list of available groups will appear. This buffer
3580 will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
3581 a lot) like a normal group buffer.
3583 Here's a list of keystrokes available in the browse mode:
3588 @findex gnus-group-next-group
3589 Go to the next group (@code{gnus-group-next-group}).
3593 @findex gnus-group-prev-group
3594 Go to the previous group (@code{gnus-group-prev-group}).
3597 @kindex SPACE (Browse)
3598 @findex gnus-browse-read-group
3599 Enter the current group and display the first article
3600 (@code{gnus-browse-read-group}).
3603 @kindex RET (Browse)
3604 @findex gnus-browse-select-group
3605 Enter the current group (@code{gnus-browse-select-group}).
3609 @findex gnus-browse-unsubscribe-current-group
3610 @vindex gnus-browse-subscribe-newsgroup-method
3611 Unsubscribe to the current group, or, as will be the case here,
3612 subscribe to it (@code{gnus-browse-unsubscribe-current-group}). You
3613 can affect the way the new group is entered into the Group buffer
3614 using the variable @code{gnus-browse-subscribe-newsgroup-method}. See
3615 @pxref{Subscription Methods} for available options.
3621 @findex gnus-browse-exit
3622 Exit browse mode (@code{gnus-browse-exit}).
3626 @findex gnus-browse-describe-group
3627 Describe the current group (@code{gnus-browse-describe-group}).
3631 @findex gnus-browse-describe-briefly
3632 Describe browse mode briefly (well, there's not much to describe, is
3633 there) (@code{gnus-browse-describe-briefly}).
3638 @section Exiting Gnus
3639 @cindex exiting Gnus
3641 Yes, Gnus is ex(c)iting.
3646 @findex gnus-group-suspend
3647 Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
3648 but it kills all buffers except the Group buffer. I'm not sure why this
3649 is a gain, but then who am I to judge?
3653 @findex gnus-group-exit
3654 @c @icon{gnus-group-exit}
3655 Quit Gnus (@code{gnus-group-exit}).
3659 @findex gnus-group-quit
3660 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3661 The dribble file will be saved, though (@pxref{Auto Save}).
3664 @vindex gnus-exit-gnus-hook
3665 @vindex gnus-suspend-gnus-hook
3666 @vindex gnus-after-exiting-gnus-hook
3667 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3668 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3669 @code{gnus-after-exiting-gnus-hook} is called as the final item when
3675 Miss Lisa Cannifax, while sitting in English class, felt her feet go
3676 numbly heavy and herself fall into a hazy trance as the boy sitting
3677 behind her drew repeated lines with his pencil across the back of her
3683 @section Group Topics
3686 If you read lots and lots of groups, it might be convenient to group
3687 them hierarchically according to topics. You put your Emacs groups over
3688 here, your sex groups over there, and the rest (what, two groups or so?)
3689 you put in some misc section that you never bother with anyway. You can
3690 even group the Emacs sex groups as a sub-topic to either the Emacs
3691 groups or the sex groups---or both! Go wild!
3695 \gnusfigure{Group Topics}{400}{
3696 \put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
3707 2: alt.religion.emacs
3710 0: comp.talk.emacs.recovery
3712 8: comp.binaries.fractals
3713 13: comp.sources.unix
3716 @findex gnus-topic-mode
3718 To get this @emph{fab} functionality you simply turn on (ooh!) the
3719 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
3720 is a toggling command.)
3722 Go ahead, just try it. I'll still be here when you get back. La de
3723 dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3724 Yes, and now press @kbd{l}. There. All your groups are now listed
3725 under @samp{misc}. Doesn't that make you feel all warm and fuzzy?
3728 If you want this permanently enabled, you should add that minor mode to
3729 the hook for the group mode. Put the following line in your
3730 @file{~/.gnus.el} file:
3733 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3737 * Topic Commands:: Interactive E-Z commands.
3738 * Topic Variables:: How to customize the topics the Lisp Way.
3739 * Topic Sorting:: Sorting each topic individually.
3740 * Topic Topology:: A map of the world.
3741 * Topic Parameters:: Parameters that apply to all groups in a topic.
3745 @node Topic Commands
3746 @subsection Topic Commands
3747 @cindex topic commands
3749 When the topic minor mode is turned on, a new @kbd{T} submap will be
3750 available. In addition, a few of the standard keys change their
3751 definitions slightly.
3753 In general, the following kinds of operations are possible on topics.
3754 First of all, you want to create topics. Secondly, you want to put
3755 groups in topics and to move them around until you have an order you
3756 like. The third kind of operation is to show/hide parts of the whole
3757 shebang. You might want to hide a topic including its subtopics and
3758 groups, to get a better overview of the other groups.
3760 Here is a list of the basic keys that you might need to set up topics
3767 @findex gnus-topic-create-topic
3768 Prompt for a new topic name and create it
3769 (@code{gnus-topic-create-topic}).
3773 @kindex T TAB (Topic)
3775 @findex gnus-topic-indent
3776 ``Indent'' the current topic so that it becomes a sub-topic of the
3777 previous topic (@code{gnus-topic-indent}). If given a prefix,
3778 ``un-indent'' the topic instead.
3781 @kindex M-TAB (Topic)
3782 @findex gnus-topic-unindent
3783 ``Un-indent'' the current topic so that it becomes a sub-topic of the
3784 parent of its current parent (@code{gnus-topic-unindent}).
3788 The following two keys can be used to move groups and topics around.
3789 They work like the well-known cut and paste. @kbd{C-k} is like cut and
3790 @kbd{C-y} is like paste. Of course, this being Emacs, we use the terms
3791 kill and yank rather than cut and paste.
3797 @findex gnus-topic-kill-group
3798 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
3799 topic will be removed along with the topic.
3803 @findex gnus-topic-yank-group
3804 Yank the previously killed group or topic
3805 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
3808 So, to move a topic to the beginning of the list of topics, just hit
3809 @kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then,
3810 move the cursor to the beginning of the buffer (just below the ``Gnus''
3811 topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and
3812 paste. Like I said -- E-Z.
3814 You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So
3815 you can move topics around as well as groups.
3819 After setting up the topics the way you like them, you might wish to
3820 hide a topic, or to show it again. That's why we have the following
3827 @findex gnus-topic-select-group
3829 Either select a group or fold a topic (@code{gnus-topic-select-group}).
3830 When you perform this command on a group, you'll enter the group, as
3831 usual. When done on a topic line, the topic will be folded (if it was
3832 visible) or unfolded (if it was folded already). So it's basically a
3833 toggling command on topics. In addition, if you give a numerical
3834 prefix, group on that level (and lower) will be displayed.
3838 Now for a list of other commands, in no particular order.
3844 @findex gnus-topic-move-group
3845 Move the current group to some other topic
3846 (@code{gnus-topic-move-group}). This command uses the process/prefix
3847 convention (@pxref{Process/Prefix}).
3851 @findex gnus-topic-jump-to-topic
3852 Go to a topic (@code{gnus-topic-jump-to-topic}).
3856 @findex gnus-topic-copy-group
3857 Copy the current group to some other topic
3858 (@code{gnus-topic-copy-group}). This command uses the process/prefix
3859 convention (@pxref{Process/Prefix}).
3863 @findex gnus-topic-hide-topic
3864 Hide the current topic (@code{gnus-topic-hide-topic}). If given
3865 a prefix, hide the topic permanently.
3869 @findex gnus-topic-show-topic
3870 Show the current topic (@code{gnus-topic-show-topic}). If given
3871 a prefix, show the topic permanently.
3875 @findex gnus-topic-remove-group
3876 Remove a group from the current topic (@code{gnus-topic-remove-group}).
3877 This command is mainly useful if you have the same group in several
3878 topics and wish to remove it from one of the topics. You may also
3879 remove a group from all topics, but in that case, Gnus will add it to
3880 the root topic the next time you start Gnus. In fact, all new groups
3881 (which, naturally, don't belong to any topic) will show up in the root
3884 This command uses the process/prefix convention
3885 (@pxref{Process/Prefix}).
3889 @findex gnus-topic-move-matching
3890 Move all groups that match some regular expression to a topic
3891 (@code{gnus-topic-move-matching}).
3895 @findex gnus-topic-copy-matching
3896 Copy all groups that match some regular expression to a topic
3897 (@code{gnus-topic-copy-matching}).
3901 @findex gnus-topic-toggle-display-empty-topics
3902 Toggle hiding empty topics
3903 (@code{gnus-topic-toggle-display-empty-topics}).
3907 @findex gnus-topic-mark-topic
3908 Mark all groups in the current topic with the process mark
3909 (@code{gnus-topic-mark-topic}). This command works recursively on
3910 sub-topics unless given a prefix.
3913 @kindex T M-# (Topic)
3914 @findex gnus-topic-unmark-topic
3915 Remove the process mark from all groups in the current topic
3916 (@code{gnus-topic-unmark-topic}). This command works recursively on
3917 sub-topics unless given a prefix.
3920 @kindex C-c C-x (Topic)
3921 @findex gnus-topic-expire-articles
3922 @cindex expiring mail
3923 Run all expirable articles in the current group or topic through the
3924 expiry process (if any)
3925 (@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
3929 @findex gnus-topic-rename
3930 Rename a topic (@code{gnus-topic-rename}).
3933 @kindex T DEL (Topic)
3934 @findex gnus-topic-delete
3935 Delete an empty topic (@code{gnus-topic-delete}).
3939 @findex gnus-topic-list-active
3940 List all groups that Gnus knows about in a topics-ified way
3941 (@code{gnus-topic-list-active}).
3944 @kindex T M-n (Topic)
3945 @findex gnus-topic-goto-next-topic
3946 Go to the next topic (@code{gnus-topic-goto-next-topic}).
3949 @kindex T M-p (Topic)
3950 @findex gnus-topic-goto-previous-topic
3951 Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
3955 @findex gnus-topic-edit-parameters
3956 @cindex group parameters
3957 @cindex topic parameters
3959 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3960 @xref{Topic Parameters}.
3965 @node Topic Variables
3966 @subsection Topic Variables
3967 @cindex topic variables
3969 The previous section told you how to tell Gnus which topics to display.
3970 This section explains how to tell Gnus what to display about each topic.
3972 @vindex gnus-topic-line-format
3973 The topic lines themselves are created according to the
3974 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3987 Number of groups in the topic.
3989 Number of unread articles in the topic.
3991 Number of unread articles in the topic and all its subtopics.
3994 @vindex gnus-topic-indent-level
3995 Each sub-topic (and the groups in the sub-topics) will be indented with
3996 @code{gnus-topic-indent-level} times the topic level number of spaces.
3999 @vindex gnus-topic-mode-hook
4000 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
4002 @vindex gnus-topic-display-empty-topics
4003 The @code{gnus-topic-display-empty-topics} says whether to display even
4004 topics that have no unread articles in them. The default is @code{t}.
4008 @subsection Topic Sorting
4009 @cindex topic sorting
4011 You can sort the groups in each topic individually with the following
4017 @kindex T S a (Topic)
4018 @findex gnus-topic-sort-groups-by-alphabet
4019 Sort the current topic alphabetically by group name
4020 (@code{gnus-topic-sort-groups-by-alphabet}).
4023 @kindex T S u (Topic)
4024 @findex gnus-topic-sort-groups-by-unread
4025 Sort the current topic by the number of unread articles
4026 (@code{gnus-topic-sort-groups-by-unread}).
4029 @kindex T S l (Topic)
4030 @findex gnus-topic-sort-groups-by-level
4031 Sort the current topic by group level
4032 (@code{gnus-topic-sort-groups-by-level}).
4035 @kindex T S v (Topic)
4036 @findex gnus-topic-sort-groups-by-score
4037 Sort the current topic by group score
4038 (@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
4041 @kindex T S r (Topic)
4042 @findex gnus-topic-sort-groups-by-rank
4043 Sort the current topic by group rank
4044 (@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
4047 @kindex T S m (Topic)
4048 @findex gnus-topic-sort-groups-by-method
4049 Sort the current topic alphabetically by back end name
4050 (@code{gnus-topic-sort-groups-by-method}).
4053 @kindex T S e (Topic)
4054 @findex gnus-topic-sort-groups-by-server
4055 Sort the current topic alphabetically by server name
4056 (@code{gnus-topic-sort-groups-by-server}).
4059 @kindex T S s (Topic)
4060 @findex gnus-topic-sort-groups
4061 Sort the current topic according to the function(s) given by the
4062 @code{gnus-group-sort-function} variable
4063 (@code{gnus-topic-sort-groups}).
4067 When given a prefix argument, all these commands will sort in reverse
4068 order. @xref{Sorting Groups}, for more information about group
4072 @node Topic Topology
4073 @subsection Topic Topology
4074 @cindex topic topology
4077 So, let's have a look at an example group buffer:
4084 2: alt.religion.emacs
4087 0: comp.talk.emacs.recovery
4089 8: comp.binaries.fractals
4090 13: comp.sources.unix
4094 So, here we have one top-level topic (@samp{Gnus}), two topics under
4095 that, and one sub-topic under one of the sub-topics. (There is always
4096 just one (1) top-level topic). This topology can be expressed as
4101 (("Emacs -- I wuw it!" visible)
4102 (("Naughty Emacs" visible)))
4106 @vindex gnus-topic-topology
4107 This is in fact how the variable @code{gnus-topic-topology} would look
4108 for the display above. That variable is saved in the @file{.newsrc.eld}
4109 file, and shouldn't be messed with manually---unless you really want
4110 to. Since this variable is read from the @file{.newsrc.eld} file,
4111 setting it in any other startup files will have no effect.
4113 This topology shows what topics are sub-topics of what topics (right),
4114 and which topics are visible. Two settings are currently
4115 allowed---@code{visible} and @code{invisible}.
4118 @node Topic Parameters
4119 @subsection Topic Parameters
4120 @cindex topic parameters
4122 All groups in a topic will inherit group parameters from the parent
4123 (and ancestor) topic parameters. All valid group parameters are valid
4124 topic parameters (@pxref{Group Parameters}). When the agent is
4125 enabled, all agent parameters (See Agent Parameters in @ref{Category
4126 Syntax}) are also valid topic parameters.
4128 In addition, the following parameters are only valid as topic
4133 When subscribing new groups by topic (@pxref{Subscription Methods}), the
4134 @code{subscribe} topic parameter says what groups go in what topic. Its
4135 value should be a regexp to match the groups that should go in that
4138 @item subscribe-level
4139 When subscribing new groups by topic (see the @code{subscribe} parameter),
4140 the group will be subscribed with the level specified in the
4141 @code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
4145 Group parameters (of course) override topic parameters, and topic
4146 parameters in sub-topics override topic parameters in super-topics. You
4147 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
4148 verb, although you may feel free to disagree with me here.)
4155 2: alt.religion.emacs
4159 0: comp.talk.emacs.recovery
4161 8: comp.binaries.fractals
4162 13: comp.sources.unix
4167 The @samp{Emacs} topic has the topic parameter @code{(score-file
4168 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4169 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4170 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
4171 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4172 . "religion.SCORE")}.
4174 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4175 will get the @file{relief.SCORE} home score file. If you enter the same
4176 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4177 score file. If you enter the group @samp{alt.religion.emacs}, you'll
4178 get the @file{religion.SCORE} home score file.
4180 This seems rather simple and self-evident, doesn't it? Well, yes. But
4181 there are some problems, especially with the @code{total-expiry}
4182 parameter. Say you have a mail group in two topics; one with
4183 @code{total-expiry} and one without. What happens when you do @kbd{M-x
4184 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
4185 of these topics you mean to expire articles from, so anything may
4186 happen. In fact, I hereby declare that it is @dfn{undefined} what
4187 happens. You just have to be careful if you do stuff like that.
4190 @node Non-ASCII Group Names
4191 @section Accessing groups of non-English names
4192 @cindex non-ascii group names
4194 There are some news servers that provide groups of which the names are
4195 expressed with their native languages in the world. For instance, in a
4196 certain news server there are some newsgroups of which the names are
4197 spelled in Chinese, where people are talking in Chinese. You can, of
4198 course, subscribe to such news groups using Gnus. Currently Gnus
4199 supports non-@acronym{ASCII} group names not only with the @code{nntp}
4200 back end but also with the @code{nnml} back end and the @code{nnrss}
4203 Every such group name is encoded by a certain charset in the server
4204 side (in an @acronym{NNTP} server its administrator determines the
4205 charset, but for groups in the other back ends it is determined by you).
4206 Gnus has to display the decoded ones for you in the group buffer and the
4207 article buffer, and needs to use the encoded ones when communicating
4208 with servers. However, Gnus doesn't know what charset is used for each
4209 non-@acronym{ASCII} group name. The following two variables are just
4210 the ones for telling Gnus what charset should be used for each group:
4213 @item gnus-group-name-charset-method-alist
4214 @vindex gnus-group-name-charset-method-alist
4215 An alist of select methods and charsets. The default value is
4216 @code{nil}. The names of groups in the server specified by that select
4217 method are all supposed to use the corresponding charset. For example:
4220 (setq gnus-group-name-charset-method-alist
4221 '(((nntp "news.com.cn") . cn-gb-2312)))
4224 Charsets specified for groups with this variable are preferred to the
4225 ones specified for the same groups with the
4226 @code{gnus-group-name-charset-group-alist} variable (see below).
4228 A select method can be very long, like:
4232 (nntp-address "news.gmane.org")
4233 (nntp-end-of-line "\n")
4234 (nntp-open-connection-function
4235 nntp-open-via-rlogin-and-telnet)
4236 (nntp-via-rlogin-command "ssh")
4237 (nntp-via-rlogin-command-switches
4238 ("-C" "-t" "-e" "none"))
4239 (nntp-via-address @dots{}))
4242 In that case, you can truncate it into @code{(nntp "gmane")} in this
4243 variable. That is, it is enough to contain only the back end name and
4246 @item gnus-group-name-charset-group-alist
4247 @cindex UTF-8 group names
4248 @vindex gnus-group-name-charset-group-alist
4249 An alist of regexp of group name and the charset for group names.
4250 @code{((".*" . utf-8))} is the default value if UTF-8 is supported,
4251 otherwise the default is @code{nil}. For example:
4254 (setq gnus-group-name-charset-group-alist
4255 '(("\\.com\\.cn:" . cn-gb-2312)
4259 Note that this variable is ignored if the match is made with
4260 @code{gnus-group-name-charset-method-alist}.
4263 Those two variables are used also to determine the charset for encoding
4264 and decoding non-@acronym{ASCII} group names that are in the back ends
4265 other than @code{nntp}. It means that it is you who determine it. If
4266 you do nothing, the charset used for group names in those back ends will
4267 all be @code{utf-8} because of the last element of
4268 @code{gnus-group-name-charset-group-alist}.
4270 There is one more important variable for non-@acronym{ASCII} group
4274 @item nnmail-pathname-coding-system
4275 @vindex nnmail-pathname-coding-system
4276 The value of this variable should be a coding system or @code{nil}. The
4277 default is @code{nil} in Emacs, or is the aliasee of the coding system
4278 named @code{file-name} (a certain coding system of which an alias is
4279 @code{file-name}) in XEmacs.
4281 The @code{nnml} back end, the @code{nnrss} back end, the @acronym{NNTP}
4282 marks feature (@pxref{NNTP marks}), the agent, and the cache use
4283 non-@acronym{ASCII} group names in those files and directories. This
4284 variable overrides the value of @code{file-name-coding-system} which
4285 specifies the coding system used when encoding and decoding those file
4286 names and directory names.
4288 In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
4289 is the only means to specify the coding system used to encode and decode
4290 file names. On the other hand, Emacs uses the value of
4291 @code{default-file-name-coding-system} if @code{file-name-coding-system}
4292 is @code{nil} or it is bound to the value of
4293 @code{nnmail-pathname-coding-system} which is @code{nil}.
4295 Normally the value of @code{default-file-name-coding-system} in Emacs or
4296 @code{nnmail-pathname-coding-system} in XEmacs is initialized according
4297 to the locale, so you will need to do nothing if the value is suitable
4298 to encode and decode non-@acronym{ASCII} group names.
4300 The value of this variable (or @code{default-file-name-coding-system})
4301 does not necessarily need to be the same value that is determined by
4302 @code{gnus-group-name-charset-method-alist} and
4303 @code{gnus-group-name-charset-group-alist}.
4305 If @code{default-file-name-coding-system} or this variable is
4306 initialized by default to @code{iso-latin-1} for example, although you
4307 want to subscribe to the groups spelled in Chinese, that is the most
4308 typical case where you have to customize
4309 @code{nnmail-pathname-coding-system}. The @code{utf-8} coding system is
4310 a good candidate for it. Otherwise, you may change the locale in your
4311 system so that @code{default-file-name-coding-system} or this variable
4312 may be initialized to an appropriate value.
4315 Note that when you copy or move articles from a non-@acronym{ASCII}
4316 group to another group, the charset used to encode and decode group
4317 names should be the same in both groups. Otherwise the Newsgroups
4318 header will be displayed incorrectly in the article buffer.
4321 @node Misc Group Stuff
4322 @section Misc Group Stuff
4325 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
4326 * Group Information:: Information and help on groups and Gnus.
4327 * Group Timestamp:: Making Gnus keep track of when you last read a group.
4328 * File Commands:: Reading and writing the Gnus files.
4329 * Sieve Commands:: Managing Sieve scripts.
4336 @cindex keys, reserved for users (Group)
4337 The key @kbd{v} is reserved for users. You can bind it to some
4338 command or better use it as a prefix key. For example:
4341 (define-key gnus-group-mode-map (kbd "v j d")
4344 (gnus-group-jump-to-group "nndraft:drafts")))
4347 On keys reserved for users in Emacs and on keybindings in general
4348 @xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
4352 @findex gnus-group-enter-server-mode
4353 Enter the server buffer (@code{gnus-group-enter-server-mode}).
4354 @xref{Server Buffer}.
4358 @findex gnus-group-post-news
4359 Start composing a message (a news by default)
4360 (@code{gnus-group-post-news}). If given a prefix, post to the group
4361 under the point. If the prefix is 1, prompt for a group to post to.
4362 Contrary to what the name of this function suggests, the prepared
4363 article might be a mail instead of a news, if a mail group is specified
4364 with the prefix argument. @xref{Composing Messages}.
4368 @findex gnus-group-mail
4369 Mail a message somewhere (@code{gnus-group-mail}). If given a prefix,
4370 use the posting style of the group under the point. If the prefix is 1,
4371 prompt for a group name to find the posting style.
4372 @xref{Composing Messages}.
4376 @findex gnus-group-news
4377 Start composing a news (@code{gnus-group-news}). If given a prefix,
4378 post to the group under the point. If the prefix is 1, prompt
4379 for group to post to. @xref{Composing Messages}.
4381 This function actually prepares a news even when using mail groups.
4382 This is useful for ``posting'' messages to mail groups without actually
4383 sending them over the network: they're just saved directly to the group
4384 in question. The corresponding back end must have a request-post method
4385 for this to work though.
4389 @findex gnus-group-compact-group
4391 Compact the group under point (@code{gnus-group-compact-group}).
4392 Currently implemented only in nnml (@pxref{Mail Spool}). This removes
4393 gaps between article numbers, hence getting a correct total article
4398 Variables for the group buffer:
4402 @item gnus-group-mode-hook
4403 @vindex gnus-group-mode-hook
4404 is called after the group buffer has been
4407 @item gnus-group-prepare-hook
4408 @vindex gnus-group-prepare-hook
4409 is called after the group buffer is
4410 generated. It may be used to modify the buffer in some strange,
4413 @item gnus-group-prepared-hook
4414 @vindex gnus-group-prepare-hook
4415 is called as the very last thing after the group buffer has been
4416 generated. It may be used to move point around, for instance.
4418 @item gnus-permanently-visible-groups
4419 @vindex gnus-permanently-visible-groups
4420 Groups matching this regexp will always be listed in the group buffer,
4421 whether they are empty or not.
4425 @node Scanning New Messages
4426 @subsection Scanning New Messages
4427 @cindex new messages
4428 @cindex scanning new news
4434 @findex gnus-group-get-new-news
4435 @c @icon{gnus-group-get-new-news}
4436 Check the server(s) for new articles. If the numerical prefix is used,
4437 this command will check only groups of level @var{arg} and lower
4438 (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
4439 command will force a total re-reading of the active file(s) from the
4444 @findex gnus-group-get-new-news-this-group
4445 @vindex gnus-goto-next-group-when-activating
4446 @c @icon{gnus-group-get-new-news-this-group}
4447 Check whether new articles have arrived in the current group
4448 (@code{gnus-group-get-new-news-this-group}).
4449 @code{gnus-goto-next-group-when-activating} says whether this command is
4450 to move point to the next group or not. It is @code{t} by default.
4452 @findex gnus-activate-all-groups
4453 @cindex activating groups
4455 @kindex C-c M-g (Group)
4456 Activate absolutely all groups (@code{gnus-activate-all-groups}).
4461 @findex gnus-group-restart
4462 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
4463 file(s), closes the connection to all servers, clears up all run-time
4464 Gnus variables, and then starts Gnus all over again.
4468 @vindex gnus-get-new-news-hook
4469 @code{gnus-get-new-news-hook} is run just before checking for new news.
4471 @vindex gnus-after-getting-new-news-hook
4472 @code{gnus-after-getting-new-news-hook} is run after checking for new
4476 @node Group Information
4477 @subsection Group Information
4478 @cindex group information
4479 @cindex information on groups
4486 @findex gnus-group-fetch-faq
4487 @vindex gnus-group-faq-directory
4490 Try to fetch the @acronym{FAQ} for the current group
4491 (@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ}
4492 from @code{gnus-group-faq-directory}, which is usually a directory on
4493 a remote machine. This variable can also be a list of directories.
4494 In that case, giving a prefix to this command will allow you to choose
4495 between the various sites. @code{ange-ftp} (or @code{efs}) will be
4496 used for fetching the file.
4498 If fetching from the first site is unsuccessful, Gnus will attempt to go
4499 through @code{gnus-group-faq-directory} and try to open them one by one.
4503 @c @icon{gnus-group-describe-group}
4505 @kindex C-c C-d (Group)
4506 @cindex describing groups
4507 @cindex group description
4508 @findex gnus-group-describe-group
4509 Describe the current group (@code{gnus-group-describe-group}). If given
4510 a prefix, force Gnus to re-read the description from the server.
4514 @findex gnus-group-describe-all-groups
4515 Describe all groups (@code{gnus-group-describe-all-groups}). If given a
4516 prefix, force Gnus to re-read the description file from the server.
4523 @findex gnus-version
4524 Display current Gnus version numbers (@code{gnus-version}).
4528 @findex gnus-group-describe-briefly
4529 Give a very short help message (@code{gnus-group-describe-briefly}).
4532 @kindex C-c C-i (Group)
4535 @findex gnus-info-find-node
4536 Go to the Gnus info node (@code{gnus-info-find-node}).
4540 @node Group Timestamp
4541 @subsection Group Timestamp
4543 @cindex group timestamps
4545 It can be convenient to let Gnus keep track of when you last read a
4546 group. To set the ball rolling, you should add
4547 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
4550 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4553 After doing this, each time you enter a group, it'll be recorded.
4555 This information can be displayed in various ways---the easiest is to
4556 use the @samp{%d} spec in the group line format:
4559 (setq gnus-group-line-format
4560 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4563 This will result in lines looking like:
4566 * 0: mail.ding 19961002T012943
4567 0: custom 19961002T012713
4570 As you can see, the date is displayed in compact ISO 8601 format. This
4571 may be a bit too much, so to just display the date, you could say
4575 (setq gnus-group-line-format
4576 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4579 If you would like greater control of the time format, you can use a
4580 user-defined format spec. Something like the following should do the
4584 (setq gnus-group-line-format
4585 "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4586 (defun gnus-user-format-function-d (headers)
4587 (let ((time (gnus-group-timestamp gnus-tmp-group)))
4589 (format-time-string "%b %d %H:%M" time)
4595 @subsection File Commands
4596 @cindex file commands
4602 @findex gnus-group-read-init-file
4603 @vindex gnus-init-file
4604 @cindex reading init file
4605 Re-read the init file (@code{gnus-init-file}, which defaults to
4606 @file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
4610 @findex gnus-group-save-newsrc
4611 @cindex saving .newsrc
4612 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4613 (@code{gnus-group-save-newsrc}). If given a prefix, force saving the
4614 file(s) whether Gnus thinks it is necessary or not.
4617 @c @kindex Z (Group)
4618 @c @findex gnus-group-clear-dribble
4619 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
4624 @node Sieve Commands
4625 @subsection Sieve Commands
4626 @cindex group sieve commands
4628 Sieve is a server-side mail filtering language. In Gnus you can use
4629 the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4630 sieve rules that should apply to each group. Gnus provides two
4631 commands to translate all these group parameters into a proper Sieve
4632 script that can be transfered to the server somehow.
4634 @vindex gnus-sieve-file
4635 @vindex gnus-sieve-region-start
4636 @vindex gnus-sieve-region-end
4637 The generated Sieve script is placed in @code{gnus-sieve-file} (by
4638 default @file{~/.sieve}). The Sieve code that Gnus generate is placed
4639 between two delimiters, @code{gnus-sieve-region-start} and
4640 @code{gnus-sieve-region-end}, so you may write additional Sieve code
4641 outside these delimiters that will not be removed the next time you
4642 regenerate the Sieve script.
4644 @vindex gnus-sieve-crosspost
4645 The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4646 is generated. If it is non-@code{nil} (the default) articles is
4647 placed in all groups that have matching rules, otherwise the article
4648 is only placed in the group with the first matching rule. For
4649 example, the group parameter @samp{(sieve address "sender"
4650 "owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4651 code if @code{gnus-sieve-crosspost} is @code{nil}. (When
4652 @code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4653 except that the line containing the call to @code{stop} is removed.)
4656 if address "sender" "owner-ding@@hpc.uh.edu" @{
4657 fileinto "INBOX.ding";
4662 @xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
4668 @findex gnus-sieve-generate
4669 @vindex gnus-sieve-file
4670 @cindex generating sieve script
4671 Regenerate a Sieve script from the @code{sieve} group parameters and
4672 put you into the @code{gnus-sieve-file} without saving it.
4676 @findex gnus-sieve-update
4677 @vindex gnus-sieve-file
4678 @cindex updating sieve script
4679 Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4680 @code{sieve} group parameters, save the file and upload it to the
4681 server using the @code{sieveshell} program.
4686 @node Summary Buffer
4687 @chapter Summary Buffer
4688 @cindex summary buffer
4690 A line for each article is displayed in the summary buffer. You can
4691 move around, read articles, post articles and reply to articles.
4693 The most common way to a summary buffer is to select a group from the
4694 group buffer (@pxref{Selecting a Group}).
4696 You can have as many summary buffers open as you wish.
4698 You can customize the Summary Mode tool bar, see @kbd{M-x
4699 customize-apropos RET gnus-summary-tool-bar}. This feature is only
4703 @cindex keys, reserved for users (Summary)
4704 The key @kbd{v} is reserved for users. You can bind it to some
4705 command or better use it as a prefix key. For example:
4707 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4711 * Summary Buffer Format:: Deciding how the summary buffer is to look.
4712 * Summary Maneuvering:: Moving around the summary buffer.
4713 * Choosing Articles:: Reading articles.
4714 * Paging the Article:: Scrolling the current article.
4715 * Reply Followup and Post:: Posting articles.
4716 * Delayed Articles:: Send articles at a later time.
4717 * Marking Articles:: Marking articles as read, expirable, etc.
4718 * Limiting:: You can limit the summary buffer.
4719 * Threading:: How threads are made.
4720 * Sorting the Summary Buffer:: How articles and threads are sorted.
4721 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
4722 * Article Caching:: You may store articles in a cache.
4723 * Persistent Articles:: Making articles expiry-resistant.
4724 * Sticky Articles:: Article buffers that are not reused.
4725 * Article Backlog:: Having already read articles hang around.
4726 * Saving Articles:: Ways of customizing article saving.
4727 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
4728 * Article Treatment:: The article buffer can be mangled at will.
4729 * MIME Commands:: Doing MIMEy things with the articles.
4730 * Charsets:: Character set issues.
4731 * Article Commands:: Doing various things with the article buffer.
4732 * Summary Sorting:: Sorting the summary buffer in various ways.
4733 * Finding the Parent:: No child support? Get the parent.
4734 * Alternative Approaches:: Reading using non-default summaries.
4735 * Tree Display:: A more visual display of threads.
4736 * Mail Group Commands:: Some commands can only be used in mail groups.
4737 * Various Summary Stuff:: What didn't fit anywhere else.
4738 * Exiting the Summary Buffer:: Returning to the Group buffer,
4739 or reselecting the current group.
4740 * Crosspost Handling:: How crossposted articles are dealt with.
4741 * Duplicate Suppression:: An alternative when crosspost handling fails.
4742 * Security:: Decrypt and Verify.
4743 * Mailing List:: Mailing list minor mode.
4747 @node Summary Buffer Format
4748 @section Summary Buffer Format
4749 @cindex summary buffer format
4753 \gnusfigure{The Summary Buffer}{180}{
4754 \put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4755 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
4761 * Summary Buffer Lines:: You can specify how summary lines should look.
4762 * To From Newsgroups:: How to not display your own name.
4763 * Summary Buffer Mode Line:: You can say how the mode line should look.
4764 * Summary Highlighting:: Making the summary buffer all pretty and nice.
4767 @findex mail-extract-address-components
4768 @findex gnus-extract-address-components
4769 @vindex gnus-extract-address-components
4770 Gnus will use the value of the @code{gnus-extract-address-components}
4771 variable as a function for getting the name and address parts of a
4772 @code{From} header. Two pre-defined functions exist:
4773 @code{gnus-extract-address-components}, which is the default, quite
4774 fast, and too simplistic solution; and
4775 @code{mail-extract-address-components}, which works very nicely, but is
4776 slower. The default function will return the wrong answer in 5% of the
4777 cases. If this is unacceptable to you, use the other function instead:
4780 (setq gnus-extract-address-components
4781 'mail-extract-address-components)
4784 @vindex gnus-summary-same-subject
4785 @code{gnus-summary-same-subject} is a string indicating that the current
4786 article has the same subject as the previous. This string will be used
4787 with those specs that require it. The default is @code{""}.
4790 @node Summary Buffer Lines
4791 @subsection Summary Buffer Lines
4793 @vindex gnus-summary-line-format
4794 You can change the format of the lines in the summary buffer by changing
4795 the @code{gnus-summary-line-format} variable. It works along the same
4796 lines as a normal @code{format} string, with some extensions
4797 (@pxref{Formatting Variables}).
4799 There should always be a colon or a point position marker on the line;
4800 the cursor always moves to the point position marker or the colon after
4801 performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't
4802 possible to change this. Just write a new function
4803 @code{gnus-goto-colon} which does whatever you like with the cursor.)
4804 @xref{Positioning Point}.
4806 The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
4808 The following format specification characters and extended format
4809 specification(s) are understood:
4815 Subject string. List identifiers stripped,
4816 @code{gnus-list-identifiers}. @xref{Article Hiding}.
4818 Subject if the article is the root of the thread or the previous article
4819 had a different subject, @code{gnus-summary-same-subject} otherwise.
4820 (@code{gnus-summary-same-subject} defaults to @code{""}.)
4822 Full @code{From} header.
4824 The name (from the @code{From} header).
4826 The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4829 The name (from the @code{From} header). This differs from the @code{n}
4830 spec in that it uses the function designated by the
4831 @code{gnus-extract-address-components} variable, which is slower, but
4832 may be more thorough.
4834 The address (from the @code{From} header). This works the same way as
4837 Number of lines in the article.
4839 Number of characters in the article. This specifier is not supported
4840 in some methods (like nnfolder).
4842 Pretty-printed version of the number of characters in the article;
4843 for example, @samp{1.2k} or @samp{0.4M}.
4845 Indentation based on thread level (@pxref{Customizing Threading}).
4847 A complex trn-style thread tree, showing response-connecting trace
4848 lines. A thread could be drawn like this:
4861 You can customize the appearance with the following options. Note
4862 that it is possible to make the thread display look really neat by
4863 replacing the default @acronym{ASCII} characters with graphic
4864 line-drawing glyphs.
4866 @item gnus-sum-thread-tree-root
4867 @vindex gnus-sum-thread-tree-root
4868 Used for the root of a thread. If @code{nil}, use subject
4869 instead. The default is @samp{> }.
4871 @item gnus-sum-thread-tree-false-root
4872 @vindex gnus-sum-thread-tree-false-root
4873 Used for the false root of a thread (@pxref{Loose Threads}). If
4874 @code{nil}, use subject instead. The default is @samp{> }.
4876 @item gnus-sum-thread-tree-single-indent
4877 @vindex gnus-sum-thread-tree-single-indent
4878 Used for a thread with just one message. If @code{nil}, use subject
4879 instead. The default is @samp{}.
4881 @item gnus-sum-thread-tree-vertical
4882 @vindex gnus-sum-thread-tree-vertical
4883 Used for drawing a vertical line. The default is @samp{| }.
4885 @item gnus-sum-thread-tree-indent
4886 @vindex gnus-sum-thread-tree-indent
4887 Used for indenting. The default is @samp{ }.
4889 @item gnus-sum-thread-tree-leaf-with-other
4890 @vindex gnus-sum-thread-tree-leaf-with-other
4891 Used for a leaf with brothers. The default is @samp{+-> }.
4893 @item gnus-sum-thread-tree-single-leaf
4894 @vindex gnus-sum-thread-tree-single-leaf
4895 Used for a leaf without brothers. The default is @samp{\-> }
4900 Nothing if the article is a root and lots of spaces if it isn't (it
4901 pushes everything after it off the screen).
4903 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4904 for adopted articles (@pxref{Customizing Threading}).
4906 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4907 for adopted articles.
4909 One space for each thread level.
4911 Twenty minus thread level spaces.
4913 Unread. @xref{Read Articles}.
4916 This misleadingly named specifier is the @dfn{secondary mark}. This
4917 mark will say whether the article has been replied to, has been cached,
4918 or has been saved. @xref{Other Marks}.
4921 Score as a number (@pxref{Scoring}).
4923 @vindex gnus-summary-zcore-fuzz
4924 Zcore, @samp{+} if above the default level and @samp{-} if below the
4925 default level. If the difference between
4926 @code{gnus-summary-default-score} and the score is less than
4927 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
4935 The @code{Date} in @code{DD-MMM} format.
4937 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4943 Number of articles in the current sub-thread. Using this spec will slow
4944 down summary buffer generation somewhat.
4946 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4947 article has any children.
4953 Desired cursor position (instead of after first colon).
4955 Age sensitive date format. Various date format is defined in
4956 @code{gnus-summary-user-date-format-alist}.
4958 User defined specifier. The next character in the format string should
4959 be a letter. Gnus will call the function
4960 @code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
4961 following @samp{%u}. The function will be passed the current header as
4962 argument. The function should return a string, which will be inserted
4963 into the summary just like information from any other summary specifier.
4966 Text between @samp{%(} and @samp{%)} will be highlighted with
4967 @code{gnus-mouse-face} when the mouse point is placed inside the area.
4968 There can only be one such area.
4970 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4971 have to be handled with care. For reasons of efficiency, Gnus will
4972 compute what column these characters will end up in, and ``hard-code''
4973 that. This means that it is invalid to have these specs after a
4974 variable-length spec. Well, you might not be arrested, but your summary
4975 buffer will look strange, which is bad enough.
4977 The smart choice is to have these specs as far to the left as possible.
4978 (Isn't that the case with everything, though? But I digress.)
4980 This restriction may disappear in later versions of Gnus.
4983 @node To From Newsgroups
4984 @subsection To From Newsgroups
4988 In some groups (particularly in archive groups), the @code{From} header
4989 isn't very interesting, since all the articles there are written by
4990 you. To display the information in the @code{To} or @code{Newsgroups}
4991 headers instead, you need to decide three things: What information to
4992 gather; where to display it; and when to display it.
4996 @vindex gnus-extra-headers
4997 The reading of extra header information is controlled by the
4998 @code{gnus-extra-headers}. This is a list of header symbols. For
5002 (setq gnus-extra-headers
5003 '(To Newsgroups X-Newsreader))
5006 This will result in Gnus trying to obtain these three headers, and
5007 storing it in header structures for later easy retrieval.
5010 @findex gnus-extra-header
5011 The value of these extra headers can be accessed via the
5012 @code{gnus-extra-header} function. Here's a format line spec that will
5013 access the @code{X-Newsreader} header:
5016 "%~(form (gnus-extra-header 'X-Newsreader))@@"
5020 @vindex gnus-ignored-from-addresses
5021 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
5022 summary line spec returns the @code{To}, @code{Newsreader} or
5023 @code{From} header. If this regexp matches the contents of the
5024 @code{From} header, the value of the @code{To} or @code{Newsreader}
5025 headers are used instead.
5027 To distinguish regular articles from those where the @code{From} field
5028 has been swapped, a string is prefixed to the @code{To} or
5029 @code{Newsgroups} header in the summary line. By default the string is
5030 @samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
5031 customize these strings with @code{gnus-summary-to-prefix} and
5032 @code{gnus-summary-newsgroup-prefix}.
5036 @vindex nnmail-extra-headers
5037 A related variable is @code{nnmail-extra-headers}, which controls when
5038 to include extra headers when generating overview (@acronym{NOV}) files.
5039 If you have old overview files, you should regenerate them after
5040 changing this variable, by entering the server buffer using @kbd{^},
5041 and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
5044 @vindex gnus-summary-line-format
5045 You also have to instruct Gnus to display the data by changing the
5046 @code{%n} spec to the @code{%f} spec in the
5047 @code{gnus-summary-line-format} variable.
5049 In summary, you'd typically put something like the following in
5053 (setq gnus-extra-headers
5055 (setq nnmail-extra-headers gnus-extra-headers)
5056 (setq gnus-summary-line-format
5057 "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
5058 (setq gnus-ignored-from-addresses
5062 (The values listed above are the default values in Gnus. Alter them
5065 A note for news server administrators, or for users who wish to try to
5066 convince their news server administrator to provide some additional
5069 The above is mostly useful for mail groups, where you have control over
5070 the @acronym{NOV} files that are created. However, if you can persuade your
5071 nntp admin to add (in the usual implementation, notably INN):
5077 to the end of her @file{overview.fmt} file, then you can use that just
5078 as you would the extra headers from the mail groups.
5081 @node Summary Buffer Mode Line
5082 @subsection Summary Buffer Mode Line
5084 @vindex gnus-summary-mode-line-format
5085 You can also change the format of the summary mode bar (@pxref{Mode Line
5086 Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
5087 like. The default is @samp{Gnus: %%b [%A] %Z}.
5089 Here are the elements you can play with:
5095 Unprefixed group name.
5097 Current article number.
5099 Current article score.
5103 Number of unread articles in this group.
5105 Number of unread articles in this group that aren't displayed in the
5108 A string with the number of unread and unselected articles represented
5109 either as @samp{<%U(+%e) more>} if there are both unread and unselected
5110 articles, and just as @samp{<%U more>} if there are just unread articles
5111 and no unselected ones.
5113 Shortish group name. For instance, @samp{rec.arts.anime} will be
5114 shortened to @samp{r.a.anime}.
5116 Subject of the current article.
5118 User-defined spec (@pxref{User-Defined Specs}).
5120 Name of the current score file (@pxref{Scoring}).
5122 Number of dormant articles (@pxref{Unread Articles}).
5124 Number of ticked articles (@pxref{Unread Articles}).
5126 Number of articles that have been marked as read in this session.
5128 Number of articles expunged by the score files.
5132 @node Summary Highlighting
5133 @subsection Summary Highlighting
5137 @item gnus-visual-mark-article-hook
5138 @vindex gnus-visual-mark-article-hook
5139 This hook is run after selecting an article. It is meant to be used for
5140 highlighting the article in some way. It is not run if
5141 @code{gnus-visual} is @code{nil}.
5143 @item gnus-summary-update-hook
5144 @vindex gnus-summary-update-hook
5145 This hook is called when a summary line is changed. It is not run if
5146 @code{gnus-visual} is @code{nil}.
5148 @item gnus-summary-selected-face
5149 @vindex gnus-summary-selected-face
5150 This is the face (or @dfn{font} as some people call it) used to
5151 highlight the current article in the summary buffer.
5153 @item gnus-summary-highlight
5154 @vindex gnus-summary-highlight
5155 Summary lines are highlighted according to this variable, which is a
5156 list where the elements are of the format @code{(@var{form}
5157 . @var{face})}. If you would, for instance, like ticked articles to be
5158 italic and high-scored articles to be bold, you could set this variable
5161 (((eq mark gnus-ticked-mark) . italic)
5162 ((> score default) . bold))
5164 As you may have guessed, if @var{form} returns a non-@code{nil} value,
5165 @var{face} will be applied to the line.
5169 @node Summary Maneuvering
5170 @section Summary Maneuvering
5171 @cindex summary movement
5173 All the straight movement commands understand the numeric prefix and
5174 behave pretty much as you'd expect.
5176 None of these commands select articles.
5181 @kindex M-n (Summary)
5182 @kindex G M-n (Summary)
5183 @findex gnus-summary-next-unread-subject
5184 Go to the next summary line of an unread article
5185 (@code{gnus-summary-next-unread-subject}).
5189 @kindex M-p (Summary)
5190 @kindex G M-p (Summary)
5191 @findex gnus-summary-prev-unread-subject
5192 Go to the previous summary line of an unread article
5193 (@code{gnus-summary-prev-unread-subject}).
5196 @kindex G g (Summary)
5197 @findex gnus-summary-goto-subject
5198 Ask for an article number and then go to the summary line of that article
5199 without displaying the article (@code{gnus-summary-goto-subject}).
5202 If Gnus asks you to press a key to confirm going to the next group, you
5203 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
5204 buffer, searching for the next group to read without actually returning
5205 to the group buffer.
5207 Variables related to summary movement:
5211 @vindex gnus-auto-select-next
5212 @item gnus-auto-select-next
5213 If you issue one of the movement commands (like @kbd{n}) and there are
5214 no more unread articles after the current one, Gnus will offer to go to
5215 the next group. If this variable is @code{t} and the next group is
5216 empty, Gnus will exit summary mode and return to the group buffer. If
5217 this variable is neither @code{t} nor @code{nil}, Gnus will select the
5218 next group with unread articles. As a special case, if this variable
5219 is @code{quietly}, Gnus will select the next group without asking for
5220 confirmation. If this variable is @code{almost-quietly}, the same
5221 will happen only if you are located on the last article in the group.
5222 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
5223 command will go to the next group without confirmation. Also
5224 @pxref{Group Levels}.
5226 @item gnus-auto-select-same
5227 @vindex gnus-auto-select-same
5228 If non-@code{nil}, all the movement commands will try to go to the next
5229 article with the same subject as the current. (@dfn{Same} here might
5230 mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
5231 for details (@pxref{Customizing Threading}).) If there are no more
5232 articles with the same subject, go to the first unread article.
5234 This variable is not particularly useful if you use a threaded display.
5236 @item gnus-summary-check-current
5237 @vindex gnus-summary-check-current
5238 If non-@code{nil}, all the ``unread'' movement commands will not proceed
5239 to the next (or previous) article if the current article is unread.
5240 Instead, they will choose the current article.
5242 @item gnus-auto-center-summary
5243 @vindex gnus-auto-center-summary
5244 If non-@code{nil}, Gnus will keep the point in the summary buffer
5245 centered at all times. This makes things quite tidy, but if you have a
5246 slow network connection, or simply do not like this un-Emacsism, you can
5247 set this variable to @code{nil} to get the normal Emacs scrolling
5248 action. This will also inhibit horizontal re-centering of the summary
5249 buffer, which might make it more inconvenient to read extremely long
5252 This variable can also be a number. In that case, center the window at
5253 the given number of lines from the top.
5255 @item gnus-summary-stop-at-end-of-message
5256 @vindex gnus-summary-stop-at-end-of-message
5257 If non-@code{nil}, don't go to the next article when hitting
5258 @kbd{SPC}, and you're at the end of the article.
5263 @node Choosing Articles
5264 @section Choosing Articles
5265 @cindex selecting articles
5268 * Choosing Commands:: Commands for choosing articles.
5269 * Choosing Variables:: Variables that influence these commands.
5273 @node Choosing Commands
5274 @subsection Choosing Commands
5276 None of the following movement commands understand the numeric prefix,
5277 and they all select and display an article.
5279 If you want to fetch new articles or redisplay the group, see
5280 @ref{Exiting the Summary Buffer}.
5284 @kindex SPACE (Summary)
5285 @findex gnus-summary-next-page
5286 Select the current article, or, if that one's read already, the next
5287 unread article (@code{gnus-summary-next-page}).
5289 If you have an article window open already and you press @kbd{SPACE}
5290 again, the article will be scrolled. This lets you conveniently
5291 @kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}.
5296 @kindex G n (Summary)
5297 @findex gnus-summary-next-unread-article
5298 @c @icon{gnus-summary-next-unread}
5299 Go to next unread article (@code{gnus-summary-next-unread-article}).
5304 @findex gnus-summary-prev-unread-article
5305 @c @icon{gnus-summary-prev-unread}
5306 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
5311 @kindex G N (Summary)
5312 @findex gnus-summary-next-article
5313 Go to the next article (@code{gnus-summary-next-article}).
5318 @kindex G P (Summary)
5319 @findex gnus-summary-prev-article
5320 Go to the previous article (@code{gnus-summary-prev-article}).
5323 @kindex G C-n (Summary)
5324 @findex gnus-summary-next-same-subject
5325 Go to the next article with the same subject
5326 (@code{gnus-summary-next-same-subject}).
5329 @kindex G C-p (Summary)
5330 @findex gnus-summary-prev-same-subject
5331 Go to the previous article with the same subject
5332 (@code{gnus-summary-prev-same-subject}).
5336 @kindex G f (Summary)
5338 @findex gnus-summary-first-unread-article
5339 Go to the first unread article
5340 (@code{gnus-summary-first-unread-article}).
5344 @kindex G b (Summary)
5346 @findex gnus-summary-best-unread-article
5347 Go to the unread article with the highest score
5348 (@code{gnus-summary-best-unread-article}). If given a prefix argument,
5349 go to the first unread article that has a score over the default score.
5354 @kindex G l (Summary)
5355 @findex gnus-summary-goto-last-article
5356 Go to the previous article read (@code{gnus-summary-goto-last-article}).
5359 @kindex G o (Summary)
5360 @findex gnus-summary-pop-article
5362 @cindex article history
5363 Pop an article off the summary history and go to this article
5364 (@code{gnus-summary-pop-article}). This command differs from the
5365 command above in that you can pop as many previous articles off the
5366 history as you like, while @kbd{l} toggles the two last read articles.
5367 For a somewhat related issue (if you use these commands a lot),
5368 @pxref{Article Backlog}.
5373 @kindex G j (Summary)
5374 @findex gnus-summary-goto-article
5375 Ask for an article number or @code{Message-ID}, and then go to that
5376 article (@code{gnus-summary-goto-article}).
5381 @node Choosing Variables
5382 @subsection Choosing Variables
5384 Some variables relevant for moving and selecting articles:
5387 @item gnus-auto-extend-newsgroup
5388 @vindex gnus-auto-extend-newsgroup
5389 All the movement commands will try to go to the previous (or next)
5390 article, even if that article isn't displayed in the Summary buffer if
5391 this variable is non-@code{nil}. Gnus will then fetch the article from
5392 the server and display it in the article buffer.
5394 @item gnus-select-article-hook
5395 @vindex gnus-select-article-hook
5396 This hook is called whenever an article is selected. The default is
5397 @code{nil}. If you would like each article to be saved in the Agent as
5398 you read it, putting @code{gnus-agent-fetch-selected-article} on this
5401 @item gnus-mark-article-hook
5402 @vindex gnus-mark-article-hook
5403 @findex gnus-summary-mark-unread-as-read
5404 @findex gnus-summary-mark-read-and-unread-as-read
5405 @findex gnus-unread-mark
5406 This hook is called whenever an article is selected. It is intended to
5407 be used for marking articles as read. The default value is
5408 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
5409 mark of almost any article you read to @code{gnus-read-mark}. The only
5410 articles not affected by this function are ticked, dormant, and
5411 expirable articles. If you'd instead like to just have unread articles
5412 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5413 instead. It will leave marks like @code{gnus-low-score-mark},
5414 @code{gnus-del-mark} (and so on) alone.
5419 @node Paging the Article
5420 @section Scrolling the Article
5421 @cindex article scrolling
5426 @kindex SPACE (Summary)
5427 @findex gnus-summary-next-page
5428 Pressing @kbd{SPACE} will scroll the current article forward one page,
5429 or, if you have come to the end of the current article, will choose the
5430 next article (@code{gnus-summary-next-page}).
5432 @vindex gnus-article-boring-faces
5433 @vindex gnus-article-skip-boring
5434 If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5435 the article consists only of citations and signature, then it will be
5436 skipped; the next article will be shown instead. You can customize
5437 what is considered uninteresting with
5438 @code{gnus-article-boring-faces}. You can manually view the article's
5439 pages, no matter how boring, using @kbd{C-M-v}.
5442 @kindex DEL (Summary)
5443 @findex gnus-summary-prev-page
5444 Scroll the current article back one page (@code{gnus-summary-prev-page}).
5447 @kindex RET (Summary)
5448 @findex gnus-summary-scroll-up
5449 Scroll the current article one line forward
5450 (@code{gnus-summary-scroll-up}).
5453 @kindex M-RET (Summary)
5454 @findex gnus-summary-scroll-down
5455 Scroll the current article one line backward
5456 (@code{gnus-summary-scroll-down}).
5460 @kindex A g (Summary)
5462 @findex gnus-summary-show-article
5463 @vindex gnus-summary-show-article-charset-alist
5464 (Re)fetch the current article (@code{gnus-summary-show-article}). If
5465 given a prefix, show a completely ``raw'' article, just the way it
5466 came from the server. If given a prefix twice (i.e., @kbd{C-u C-u
5467 g'}), fetch the current article, but don't run any of the article
5468 treatment functions.
5470 @cindex charset, view article with different charset
5471 If given a numerical prefix, you can do semi-manual charset stuff.
5472 @kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
5473 encoded in the @code{cn-gb-2312} charset. If you have
5476 (setq gnus-summary-show-article-charset-alist
5481 then you can say @kbd{C-u 1 g} to get the same effect.
5486 @kindex A < (Summary)
5487 @findex gnus-summary-beginning-of-article
5488 Scroll to the beginning of the article
5489 (@code{gnus-summary-beginning-of-article}).
5494 @kindex A > (Summary)
5495 @findex gnus-summary-end-of-article
5496 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
5500 @kindex A s (Summary)
5502 @findex gnus-summary-isearch-article
5503 Perform an isearch in the article buffer
5504 (@code{gnus-summary-isearch-article}).
5508 @findex gnus-summary-select-article-buffer
5509 Select the article buffer (@code{gnus-summary-select-article-buffer}).
5514 @node Reply Followup and Post
5515 @section Reply, Followup and Post
5518 * Summary Mail Commands:: Sending mail.
5519 * Summary Post Commands:: Sending news.
5520 * Summary Message Commands:: Other Message-related commands.
5521 * Canceling and Superseding::
5525 @node Summary Mail Commands
5526 @subsection Summary Mail Commands
5528 @cindex composing mail
5530 Commands for composing a mail message:
5536 @kindex S r (Summary)
5538 @findex gnus-summary-reply
5539 @c @icon{gnus-summary-mail-reply}
5540 @c @icon{gnus-summary-reply}
5541 Mail a reply to the author of the current article
5542 (@code{gnus-summary-reply}).
5547 @kindex S R (Summary)
5548 @findex gnus-summary-reply-with-original
5549 @c @icon{gnus-summary-reply-with-original}
5550 Mail a reply to the author of the current article and include the
5551 original message (@code{gnus-summary-reply-with-original}). This
5552 command uses the process/prefix convention.
5555 @kindex S w (Summary)
5556 @findex gnus-summary-wide-reply
5557 Mail a wide reply to the author of the current article
5558 (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
5559 goes out to all people listed in the @code{To}, @code{From} (or
5560 @code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is
5561 present, that's used instead.
5564 @kindex S W (Summary)
5565 @findex gnus-summary-wide-reply-with-original
5566 Mail a wide reply to the current article and include the original
5567 message (@code{gnus-summary-wide-reply-with-original}). This command uses
5568 the process/prefix convention, but only uses the headers from the
5569 first article to determine the recipients.
5572 @kindex S v (Summary)
5573 @findex gnus-summary-very-wide-reply
5574 Mail a very wide reply to the author of the current article
5575 (@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
5576 that goes out to all people listed in the @code{To}, @code{From} (or
5577 @code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5578 articles. This command uses the process/prefix convention.
5581 @kindex S V (Summary)
5582 @findex gnus-summary-very-wide-reply-with-original
5583 Mail a very wide reply to the author of the current article and include the
5584 original message (@code{gnus-summary-very-wide-reply-with-original}). This
5585 command uses the process/prefix convention.
5588 @kindex S B r (Summary)
5589 @findex gnus-summary-reply-broken-reply-to
5590 Mail a reply to the author of the current article but ignore the
5591 @code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5592 If you need this because a mailing list incorrectly sets a
5593 @code{Reply-To} header pointing to the list, you probably want to set
5594 the @code{broken-reply-to} group parameter instead, so things will work
5595 correctly. @xref{Group Parameters}.
5598 @kindex S B R (Summary)
5599 @findex gnus-summary-reply-broken-reply-to-with-original
5600 Mail a reply to the author of the current article and include the
5601 original message but ignore the @code{Reply-To} field
5602 (@code{gnus-summary-reply-broken-reply-to-with-original}).
5606 @kindex S o m (Summary)
5607 @kindex C-c C-f (Summary)
5608 @findex gnus-summary-mail-forward
5609 @c @icon{gnus-summary-mail-forward}
5610 Forward the current article to some other person
5611 (@code{gnus-summary-mail-forward}). If no prefix is given, the message
5612 is forwarded according to the value of (@code{message-forward-as-mime})
5613 and (@code{message-forward-show-mml}); if the prefix is 1, decode the
5614 message and forward directly inline; if the prefix is 2, forward message
5615 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5616 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5617 directly inline; otherwise, the message is forwarded as no prefix given
5618 but use the flipped value of (@code{message-forward-as-mime}). By
5619 default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5625 @kindex S m (Summary)
5626 @findex gnus-summary-mail-other-window
5627 @c @icon{gnus-summary-mail-originate}
5628 Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use
5629 the posting style of the current group. If given a prefix, disable that.
5630 If the prefix is 1, prompt for a group name to find the posting style.
5633 @kindex S i (Summary)
5634 @findex gnus-summary-news-other-window
5635 Prepare a news (@code{gnus-summary-news-other-window}). By default,
5636 post to the current group. If given a prefix, disable that. If the
5637 prefix is 1, prompt for a group to post to.
5639 This function actually prepares a news even when using mail groups.
5640 This is useful for ``posting'' messages to mail groups without actually
5641 sending them over the network: they're just saved directly to the group
5642 in question. The corresponding back end must have a request-post method
5643 for this to work though.
5646 @kindex S D b (Summary)
5647 @findex gnus-summary-resend-bounced-mail
5648 @cindex bouncing mail
5649 If you have sent a mail, but the mail was bounced back to you for some
5650 reason (wrong address, transient failure), you can use this command to
5651 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
5652 will be popped into a mail buffer where you can edit the headers before
5653 sending the mail off again. If you give a prefix to this command, and
5654 the bounced mail is a reply to some other mail, Gnus will try to fetch
5655 that mail and display it for easy perusal of its headers. This might
5656 very well fail, though.
5659 @kindex S D r (Summary)
5660 @findex gnus-summary-resend-message
5661 Not to be confused with the previous command,
5662 @code{gnus-summary-resend-message} will prompt you for an address to
5663 send the current message off to, and then send it to that place. The
5664 headers of the message won't be altered---but lots of headers that say
5665 @code{Resent-To}, @code{Resent-From} and so on will be added. This
5666 means that you actually send a mail to someone that has a @code{To}
5667 header that (probably) points to yourself. This will confuse people.
5668 So, natcherly you'll only do that if you're really eVIl.
5670 This command is mainly used if you have several accounts and want to
5671 ship a mail to a different account of yours. (If you're both
5672 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
5673 to the @code{root} account, you may want to resend it to
5674 @code{postmaster}. Ordnung muss sein!
5676 This command understands the process/prefix convention
5677 (@pxref{Process/Prefix}).
5680 @kindex S D e (Summary)
5681 @findex gnus-summary-resend-message-edit
5683 Like the previous command, but will allow you to edit the message as
5684 if it were a new message before resending.
5687 @kindex S O m (Summary)
5688 @findex gnus-uu-digest-mail-forward
5689 Digest the current series (@pxref{Decoding Articles}) and forward the
5690 result using mail (@code{gnus-uu-digest-mail-forward}). This command
5691 uses the process/prefix convention (@pxref{Process/Prefix}).
5694 @kindex S M-c (Summary)
5695 @findex gnus-summary-mail-crosspost-complaint
5696 @cindex crossposting
5697 @cindex excessive crossposting
5698 Send a complaint about excessive crossposting to the author of the
5699 current article (@code{gnus-summary-mail-crosspost-complaint}).
5701 @findex gnus-crosspost-complaint
5702 This command is provided as a way to fight back against the current
5703 crossposting pandemic that's sweeping Usenet. It will compose a reply
5704 using the @code{gnus-crosspost-complaint} variable as a preamble. This
5705 command understands the process/prefix convention
5706 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
5710 Also @xref{Header Commands, ,Header Commands, message, The Message
5711 Manual}, for more information.
5714 @node Summary Post Commands
5715 @subsection Summary Post Commands
5717 @cindex composing news
5719 Commands for posting a news article:
5725 @kindex S p (Summary)
5726 @findex gnus-summary-post-news
5727 @c @icon{gnus-summary-post-news}
5728 Prepare for posting an article (@code{gnus-summary-post-news}). By
5729 default, post to the current group. If given a prefix, disable that.
5730 If the prefix is 1, prompt for another group instead.
5735 @kindex S f (Summary)
5736 @findex gnus-summary-followup
5737 @c @icon{gnus-summary-followup}
5738 Post a followup to the current article (@code{gnus-summary-followup}).
5742 @kindex S F (Summary)
5744 @c @icon{gnus-summary-followup-with-original}
5745 @findex gnus-summary-followup-with-original
5746 Post a followup to the current article and include the original message
5747 (@code{gnus-summary-followup-with-original}). This command uses the
5748 process/prefix convention.
5751 @kindex S n (Summary)
5752 @findex gnus-summary-followup-to-mail
5753 Post a followup to the current article via news, even if you got the
5754 message through mail (@code{gnus-summary-followup-to-mail}).
5757 @kindex S N (Summary)
5758 @findex gnus-summary-followup-to-mail-with-original
5759 Post a followup to the current article via news, even if you got the
5760 message through mail and include the original message
5761 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
5762 the process/prefix convention.
5765 @kindex S o p (Summary)
5766 @findex gnus-summary-post-forward
5767 Forward the current article to a newsgroup
5768 (@code{gnus-summary-post-forward}).
5769 If no prefix is given, the message is forwarded according to the value
5770 of (@code{message-forward-as-mime}) and
5771 (@code{message-forward-show-mml}); if the prefix is 1, decode the
5772 message and forward directly inline; if the prefix is 2, forward message
5773 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5774 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5775 directly inline; otherwise, the message is forwarded as no prefix given
5776 but use the flipped value of (@code{message-forward-as-mime}). By
5777 default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
5780 @kindex S O p (Summary)
5781 @findex gnus-uu-digest-post-forward
5783 @cindex making digests
5784 Digest the current series and forward the result to a newsgroup
5785 (@code{gnus-uu-digest-post-forward}). This command uses the
5786 process/prefix convention.
5789 @kindex S u (Summary)
5790 @findex gnus-uu-post-news
5791 @c @icon{gnus-uu-post-news}
5792 Uuencode a file, split it into parts, and post it as a series
5793 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
5796 Also @xref{Header Commands, ,Header Commands, message, The Message
5797 Manual}, for more information.
5800 @node Summary Message Commands
5801 @subsection Summary Message Commands
5805 @kindex S y (Summary)
5806 @findex gnus-summary-yank-message
5807 Yank the current article into an already existing Message composition
5808 buffer (@code{gnus-summary-yank-message}). This command prompts for
5809 what message buffer you want to yank into, and understands the
5810 process/prefix convention (@pxref{Process/Prefix}).
5815 @node Canceling and Superseding
5816 @subsection Canceling Articles
5817 @cindex canceling articles
5818 @cindex superseding articles
5820 Have you ever written something, and then decided that you really,
5821 really, really wish you hadn't posted that?
5823 Well, you can't cancel mail, but you can cancel posts.
5825 @findex gnus-summary-cancel-article
5827 @c @icon{gnus-summary-cancel-article}
5828 Find the article you wish to cancel (you can only cancel your own
5829 articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
5830 c} (@code{gnus-summary-cancel-article}). Your article will be
5831 canceled---machines all over the world will be deleting your article.
5832 This command uses the process/prefix convention (@pxref{Process/Prefix}).
5834 Be aware, however, that not all sites honor cancels, so your article may
5835 live on here and there, while most sites will delete the article in
5838 Gnus will use the ``current'' select method when canceling. If you
5839 want to use the standard posting method, use the @samp{a} symbolic
5840 prefix (@pxref{Symbolic Prefixes}).
5842 Gnus ensures that only you can cancel your own messages using a
5843 @code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5844 message, Message Manual}).
5846 If you discover that you have made some mistakes and want to do some
5847 corrections, you can post a @dfn{superseding} article that will replace
5848 your original article.
5850 @findex gnus-summary-supersede-article
5852 Go to the original article and press @kbd{S s}
5853 (@code{gnus-summary-supersede-article}). You will be put in a buffer
5854 where you can edit the article all you want before sending it off the
5857 The same goes for superseding as for canceling, only more so: Some
5858 sites do not honor superseding. On those sites, it will appear that you
5859 have posted almost the same article twice.
5861 If you have just posted the article, and change your mind right away,
5862 there is a trick you can use to cancel/supersede the article without
5863 waiting for the article to appear on your site first. You simply return
5864 to the post buffer (which is called @code{*sent ...*}). There you will
5865 find the article you just posted, with all the headers intact. Change
5866 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5867 header by substituting one of those words for the word
5868 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
5869 you would do normally. The previous article will be
5870 canceled/superseded.
5872 Just remember, kids: There is no 'c' in 'supersede'.
5874 @node Delayed Articles
5875 @section Delayed Articles
5876 @cindex delayed sending
5877 @cindex send delayed
5879 Sometimes, you might wish to delay the sending of a message. For
5880 example, you might wish to arrange for a message to turn up just in time
5881 to remind your about the birthday of your Significant Other. For this,
5882 there is the @code{gnus-delay} package. Setup is simple:
5885 (gnus-delay-initialize)
5888 @findex gnus-delay-article
5889 Normally, to send a message you use the @kbd{C-c C-c} command from
5890 Message mode. To delay a message, use @kbd{C-c C-j}
5891 (@code{gnus-delay-article}) instead. This will ask you for how long the
5892 message should be delayed. Possible answers are:
5896 A time span. Consists of an integer and a letter. For example,
5897 @code{42d} means to delay for 42 days. Available letters are @code{m}
5898 (minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5899 (months) and @code{Y} (years).
5902 A specific date. Looks like @code{YYYY-MM-DD}. The message will be
5903 delayed until that day, at a specific time (eight o'clock by default).
5904 See also @code{gnus-delay-default-hour}.
5907 A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
5908 stuff. The deadline will be at that time today, except if that time has
5909 already passed, then it's at the given time tomorrow. So if it's ten
5910 o'clock in the morning and you specify @code{11:15}, then the deadline
5911 is one hour and fifteen minutes hence. But if you specify @code{9:20},
5912 that means a time tomorrow.
5915 The action of the @code{gnus-delay-article} command is influenced by a
5916 couple of variables:
5919 @item gnus-delay-default-hour
5920 @vindex gnus-delay-default-hour
5921 When you specify a specific date, the message will be due on that hour
5922 on the given date. Possible values are integers 0 through 23.
5924 @item gnus-delay-default-delay
5925 @vindex gnus-delay-default-delay
5926 This is a string and gives the default delay. It can be of any of the
5927 formats described above.
5929 @item gnus-delay-group
5930 @vindex gnus-delay-group
5931 Delayed articles will be kept in this group on the drafts server until
5932 they are due. You probably don't need to change this. The default
5933 value is @code{"delayed"}.
5935 @item gnus-delay-header
5936 @vindex gnus-delay-header
5937 The deadline for each article will be stored in a header. This variable
5938 is a string and gives the header name. You probably don't need to
5939 change this. The default value is @code{"X-Gnus-Delayed"}.
5942 The way delaying works is like this: when you use the
5943 @code{gnus-delay-article} command, you give a certain delay. Gnus
5944 calculates the deadline of the message and stores it in the
5945 @code{X-Gnus-Delayed} header and puts the message in the
5946 @code{nndraft:delayed} group.
5948 @findex gnus-delay-send-queue
5949 And whenever you get new news, Gnus looks through the group for articles
5950 which are due and sends them. It uses the @code{gnus-delay-send-queue}
5951 function for this. By default, this function is added to the hook
5952 @code{gnus-get-new-news-hook}. But of course, you can change this.
5953 Maybe you want to use the demon to send drafts? Just tell the demon to
5954 execute the @code{gnus-delay-send-queue} function.
5957 @item gnus-delay-initialize
5958 @findex gnus-delay-initialize
5959 By default, this function installs @code{gnus-delay-send-queue} in
5960 @code{gnus-get-new-news-hook}. But it accepts the optional second
5961 argument @code{no-check}. If it is non-@code{nil},
5962 @code{gnus-get-new-news-hook} is not changed. The optional first
5963 argument is ignored.
5965 For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5966 Presumably, you want to use the demon for sending due delayed articles.
5967 Just don't forget to set that up :-)
5970 When delaying an article with @kbd{C-c C-j}, Message mode will
5971 automatically add a @code{"Date"} header with the current time. In
5972 many cases you probably want the @code{"Date"} header to reflect the
5973 time the message is sent instead. To do this, you have to delete
5974 @code{Date} from @code{message-draft-headers}.
5977 @node Marking Articles
5978 @section Marking Articles
5979 @cindex article marking
5980 @cindex article ticking
5983 There are several marks you can set on an article.
5985 You have marks that decide the @dfn{readedness} (whoo, neato-keano
5986 neologism ohoy!) of the article. Alphabetic marks generally mean
5987 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
5989 In addition, you also have marks that do not affect readedness.
5992 There's a plethora of commands for manipulating these marks.
5996 * Unread Articles:: Marks for unread articles.
5997 * Read Articles:: Marks for read articles.
5998 * Other Marks:: Marks that do not affect readedness.
5999 * Setting Marks:: How to set and remove marks.
6000 * Generic Marking Commands:: How to customize the marking.
6001 * Setting Process Marks:: How to mark articles for later processing.
6005 @node Unread Articles
6006 @subsection Unread Articles
6008 The following marks mark articles as (kinda) unread, in one form or
6013 @vindex gnus-ticked-mark
6014 Marked as ticked (@code{gnus-ticked-mark}).
6016 @dfn{Ticked articles} are articles that will remain visible always. If
6017 you see an article that you find interesting, or you want to put off
6018 reading it, or replying to it, until sometime later, you'd typically
6019 tick it. However, articles can be expired (from news servers by the
6020 news server software, Gnus itself never expires ticked messages), so if
6021 you want to keep an article forever, you'll have to make it persistent
6022 (@pxref{Persistent Articles}).
6025 @vindex gnus-dormant-mark
6026 Marked as dormant (@code{gnus-dormant-mark}).
6028 @dfn{Dormant articles} will only appear in the summary buffer if there
6029 are followups to it. If you want to see them even if they don't have
6030 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
6031 Otherwise (except for the visibility issue), they are just like ticked
6035 @vindex gnus-unread-mark
6036 Marked as unread (@code{gnus-unread-mark}).
6038 @dfn{Unread articles} are articles that haven't been read at all yet.
6043 @subsection Read Articles
6044 @cindex expirable mark
6046 All the following marks mark articles as read.
6051 @vindex gnus-del-mark
6052 These are articles that the user has marked as read with the @kbd{d}
6053 command manually, more or less (@code{gnus-del-mark}).
6056 @vindex gnus-read-mark
6057 Articles that have actually been read (@code{gnus-read-mark}).
6060 @vindex gnus-ancient-mark
6061 Articles that were marked as read in previous sessions and are now
6062 @dfn{old} (@code{gnus-ancient-mark}).
6065 @vindex gnus-killed-mark
6066 Marked as killed (@code{gnus-killed-mark}).
6069 @vindex gnus-kill-file-mark
6070 Marked as killed by kill files (@code{gnus-kill-file-mark}).
6073 @vindex gnus-low-score-mark
6074 Marked as read by having too low a score (@code{gnus-low-score-mark}).
6077 @vindex gnus-catchup-mark
6078 Marked as read by a catchup (@code{gnus-catchup-mark}).
6081 @vindex gnus-canceled-mark
6082 Canceled article (@code{gnus-canceled-mark})
6085 @vindex gnus-sparse-mark
6086 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
6090 @vindex gnus-duplicate-mark
6091 Article marked as read by duplicate suppression
6092 (@code{gnus-duplicate-mark}). @xref{Duplicate Suppression}.
6096 All these marks just mean that the article is marked as read, really.
6097 They are interpreted differently when doing adaptive scoring, though.
6099 One more special mark, though:
6103 @vindex gnus-expirable-mark
6104 Marked as expirable (@code{gnus-expirable-mark}).
6106 Marking articles as @dfn{expirable} (or have them marked as such
6107 automatically) doesn't make much sense in normal groups---a user doesn't
6108 control expiring of news articles, but in mail groups, for instance,
6109 articles marked as @dfn{expirable} can be deleted by Gnus at
6115 @subsection Other Marks
6116 @cindex process mark
6119 There are some marks that have nothing to do with whether the article is
6125 You can set a bookmark in the current article. Say you are reading a
6126 long thesis on cats' urinary tracts, and have to go home for dinner
6127 before you've finished reading the thesis. You can then set a bookmark
6128 in the article, and Gnus will jump to this bookmark the next time it
6129 encounters the article. @xref{Setting Marks}.
6132 @vindex gnus-replied-mark
6133 All articles that you have replied to or made a followup to (i.e., have
6134 answered) will be marked with an @samp{A} in the second column
6135 (@code{gnus-replied-mark}).
6138 @vindex gnus-forwarded-mark
6139 All articles that you have forwarded will be marked with an @samp{F} in
6140 the second column (@code{gnus-forwarded-mark}).
6143 @vindex gnus-cached-mark
6144 Articles stored in the article cache will be marked with an @samp{*} in
6145 the second column (@code{gnus-cached-mark}). @xref{Article Caching}.
6148 @vindex gnus-saved-mark
6149 Articles ``saved'' (in some manner or other; not necessarily
6150 religiously) are marked with an @samp{S} in the second column
6151 (@code{gnus-saved-mark}).
6154 @vindex gnus-recent-mark
6155 Articles that according to the server haven't been shown to the user
6156 before are marked with a @samp{N} in the second column
6157 (@code{gnus-recent-mark}). Note that not all servers support this
6158 mark, in which case it simply never appears. Compare with
6159 @code{gnus-unseen-mark}.
6162 @vindex gnus-unseen-mark
6163 Articles that haven't been seen before in Gnus by the user are marked
6164 with a @samp{.} in the second column (@code{gnus-unseen-mark}).
6165 Compare with @code{gnus-recent-mark}.
6168 @vindex gnus-downloaded-mark
6169 When using the Gnus agent (@pxref{Agent Basics}), articles may be
6170 downloaded for unplugged (offline) viewing. If you are using the
6171 @samp{%O} spec, these articles get the @samp{+} mark in that spec.
6172 (The variable @code{gnus-downloaded-mark} controls which character to
6176 @vindex gnus-undownloaded-mark
6177 When using the Gnus agent (@pxref{Agent Basics}), some articles might
6178 not have been downloaded. Such articles cannot be viewed while you
6179 are unplugged (offline). If you are using the @samp{%O} spec, these
6180 articles get the @samp{-} mark in that spec. (The variable
6181 @code{gnus-undownloaded-mark} controls which character to use.)
6184 @vindex gnus-downloadable-mark
6185 The Gnus agent (@pxref{Agent Basics}) downloads some articles
6186 automatically, but it is also possible to explicitly mark articles for
6187 download, even if they would not be downloaded automatically. Such
6188 explicitly-marked articles get the @samp{%} mark in the first column.
6189 (The variable @code{gnus-downloadable-mark} controls which character to
6193 @vindex gnus-not-empty-thread-mark
6194 @vindex gnus-empty-thread-mark
6195 If the @samp{%e} spec is used, the presence of threads or not will be
6196 marked with @code{gnus-not-empty-thread-mark} and
6197 @code{gnus-empty-thread-mark} in the third column, respectively.
6200 @vindex gnus-process-mark
6201 Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
6202 variety of commands react to the presence of the process mark. For
6203 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
6204 all articles that have been marked with the process mark. Articles
6205 marked with the process mark have a @samp{#} in the second column.
6209 You might have noticed that most of these ``non-readedness'' marks
6210 appear in the second column by default. So if you have a cached, saved,
6211 replied article that you have process-marked, what will that look like?
6213 Nothing much. The precedence rules go as follows: process -> cache ->
6214 replied -> saved. So if the article is in the cache and is replied,
6215 you'll only see the cache mark and not the replied mark.
6219 @subsection Setting Marks
6220 @cindex setting marks
6222 All the marking commands understand the numeric prefix.
6227 @kindex M c (Summary)
6228 @kindex M-u (Summary)
6229 @findex gnus-summary-clear-mark-forward
6230 @cindex mark as unread
6231 Clear all readedness-marks from the current article
6232 (@code{gnus-summary-clear-mark-forward}). In other words, mark the
6238 @kindex M t (Summary)
6239 @findex gnus-summary-tick-article-forward
6240 Tick the current article (@code{gnus-summary-tick-article-forward}).
6241 @xref{Article Caching}.
6246 @kindex M ? (Summary)
6247 @findex gnus-summary-mark-as-dormant
6248 Mark the current article as dormant
6249 (@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
6253 @kindex M d (Summary)
6255 @findex gnus-summary-mark-as-read-forward
6256 Mark the current article as read
6257 (@code{gnus-summary-mark-as-read-forward}).
6261 @findex gnus-summary-mark-as-read-backward
6262 Mark the current article as read and move point to the previous line
6263 (@code{gnus-summary-mark-as-read-backward}).
6268 @kindex M k (Summary)
6269 @findex gnus-summary-kill-same-subject-and-select
6270 Mark all articles that have the same subject as the current one as read,
6271 and then select the next unread article
6272 (@code{gnus-summary-kill-same-subject-and-select}).
6276 @kindex M K (Summary)
6277 @kindex C-k (Summary)
6278 @findex gnus-summary-kill-same-subject
6279 Mark all articles that have the same subject as the current one as read
6280 (@code{gnus-summary-kill-same-subject}).
6283 @kindex M C (Summary)
6284 @findex gnus-summary-catchup
6285 @c @icon{gnus-summary-catchup}
6286 Mark all unread articles as read (@code{gnus-summary-catchup}).
6289 @kindex M C-c (Summary)
6290 @findex gnus-summary-catchup-all
6291 Mark all articles in the group as read---even the ticked and dormant
6292 articles (@code{gnus-summary-catchup-all}).
6295 @kindex M H (Summary)
6296 @findex gnus-summary-catchup-to-here
6297 Catchup the current group to point (before the point)
6298 (@code{gnus-summary-catchup-to-here}).
6301 @kindex M h (Summary)
6302 @findex gnus-summary-catchup-from-here
6303 Catchup the current group from point (after the point)
6304 (@code{gnus-summary-catchup-from-here}).
6307 @kindex C-w (Summary)
6308 @findex gnus-summary-mark-region-as-read
6309 Mark all articles between point and mark as read
6310 (@code{gnus-summary-mark-region-as-read}).
6313 @kindex M V k (Summary)
6314 @findex gnus-summary-kill-below
6315 Kill all articles with scores below the default score (or below the
6316 numeric prefix) (@code{gnus-summary-kill-below}).
6320 @kindex M e (Summary)
6322 @findex gnus-summary-mark-as-expirable
6323 Mark the current article as expirable
6324 (@code{gnus-summary-mark-as-expirable}).
6327 @kindex M b (Summary)
6328 @findex gnus-summary-set-bookmark
6329 Set a bookmark in the current article
6330 (@code{gnus-summary-set-bookmark}).
6333 @kindex M B (Summary)
6334 @findex gnus-summary-remove-bookmark
6335 Remove the bookmark from the current article
6336 (@code{gnus-summary-remove-bookmark}).
6339 @kindex M V c (Summary)
6340 @findex gnus-summary-clear-above
6341 Clear all marks from articles with scores over the default score (or
6342 over the numeric prefix) (@code{gnus-summary-clear-above}).
6345 @kindex M V u (Summary)
6346 @findex gnus-summary-tick-above
6347 Tick all articles with scores over the default score (or over the
6348 numeric prefix) (@code{gnus-summary-tick-above}).
6351 @kindex M V m (Summary)
6352 @findex gnus-summary-mark-above
6353 Prompt for a mark, and mark all articles with scores over the default
6354 score (or over the numeric prefix) with this mark
6355 (@code{gnus-summary-clear-above}).
6358 @vindex gnus-summary-goto-unread
6359 The @code{gnus-summary-goto-unread} variable controls what action should
6360 be taken after setting a mark. If non-@code{nil}, point will move to
6361 the next/previous unread article. If @code{nil}, point will just move
6362 one line up or down. As a special case, if this variable is
6363 @code{never}, all the marking commands as well as other commands (like
6364 @kbd{SPACE}) will move to the next article, whether it is unread or not.
6365 The default is @code{t}.
6368 @node Generic Marking Commands
6369 @subsection Generic Marking Commands
6371 Some people would like the command that ticks an article (@kbd{!}) go to
6372 the next article. Others would like it to go to the next unread
6373 article. Yet others would like it to stay on the current article. And
6374 even though I haven't heard of anybody wanting it to go to the
6375 previous (unread) article, I'm sure there are people that want that as
6378 Multiply these five behaviors with five different marking commands, and
6379 you get a potentially complex set of variable to control what each
6382 To sidestep that mess, Gnus provides commands that do all these
6383 different things. They can be found on the @kbd{M M} map in the summary
6384 buffer. Type @kbd{M M C-h} to see them all---there are too many of them
6385 to list in this manual.
6387 While you can use these commands directly, most users would prefer
6388 altering the summary mode keymap. For instance, if you would like the
6389 @kbd{!} command to go to the next article instead of the next unread
6390 article, you could say something like:
6394 (add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6395 (defun my-alter-summary-map ()
6396 (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
6404 (defun my-alter-summary-map ()
6405 (local-set-key "!" "MM!n"))
6409 @node Setting Process Marks
6410 @subsection Setting Process Marks
6411 @cindex setting process marks
6413 Process marks are displayed as @code{#} in the summary buffer, and are
6414 used for marking articles in such a way that other commands will
6415 process these articles. For instance, if you process mark four
6416 articles and then use the @kbd{*} command, Gnus will enter these four
6417 articles into the cache. For more information,
6418 @pxref{Process/Prefix}.
6425 @kindex M P p (Summary)
6426 @findex gnus-summary-mark-as-processable
6427 Mark the current article with the process mark
6428 (@code{gnus-summary-mark-as-processable}).
6429 @findex gnus-summary-unmark-as-processable
6433 @kindex M P u (Summary)
6434 @kindex M-# (Summary)
6435 Remove the process mark, if any, from the current article
6436 (@code{gnus-summary-unmark-as-processable}).
6439 @kindex M P U (Summary)
6440 @findex gnus-summary-unmark-all-processable
6441 Remove the process mark from all articles
6442 (@code{gnus-summary-unmark-all-processable}).
6445 @kindex M P i (Summary)
6446 @findex gnus-uu-invert-processable
6447 Invert the list of process marked articles
6448 (@code{gnus-uu-invert-processable}).
6451 @kindex M P R (Summary)
6452 @findex gnus-uu-mark-by-regexp
6453 Mark articles that have a @code{Subject} header that matches a regular
6454 expression (@code{gnus-uu-mark-by-regexp}).
6457 @kindex M P G (Summary)
6458 @findex gnus-uu-unmark-by-regexp
6459 Unmark articles that have a @code{Subject} header that matches a regular
6460 expression (@code{gnus-uu-unmark-by-regexp}).
6463 @kindex M P r (Summary)
6464 @findex gnus-uu-mark-region
6465 Mark articles in region (@code{gnus-uu-mark-region}).
6468 @kindex M P g (Summary)
6469 @findex gnus-uu-unmark-region
6470 Unmark articles in region (@code{gnus-uu-unmark-region}).
6473 @kindex M P t (Summary)
6474 @findex gnus-uu-mark-thread
6475 Mark all articles in the current (sub)thread
6476 (@code{gnus-uu-mark-thread}).
6479 @kindex M P T (Summary)
6480 @findex gnus-uu-unmark-thread
6481 Unmark all articles in the current (sub)thread
6482 (@code{gnus-uu-unmark-thread}).
6485 @kindex M P v (Summary)
6486 @findex gnus-uu-mark-over
6487 Mark all articles that have a score above the prefix argument
6488 (@code{gnus-uu-mark-over}).
6491 @kindex M P s (Summary)
6492 @findex gnus-uu-mark-series
6493 Mark all articles in the current series (@code{gnus-uu-mark-series}).
6496 @kindex M P S (Summary)
6497 @findex gnus-uu-mark-sparse
6498 Mark all series that have already had some articles marked
6499 (@code{gnus-uu-mark-sparse}).
6502 @kindex M P a (Summary)
6503 @findex gnus-uu-mark-all
6504 Mark all articles in series order (@code{gnus-uu-mark-all}).
6507 @kindex M P b (Summary)
6508 @findex gnus-uu-mark-buffer
6509 Mark all articles in the buffer in the order they appear
6510 (@code{gnus-uu-mark-buffer}).
6513 @kindex M P k (Summary)
6514 @findex gnus-summary-kill-process-mark
6515 Push the current process mark set onto the stack and unmark all articles
6516 (@code{gnus-summary-kill-process-mark}).
6519 @kindex M P y (Summary)
6520 @findex gnus-summary-yank-process-mark
6521 Pop the previous process mark set from the stack and restore it
6522 (@code{gnus-summary-yank-process-mark}).
6525 @kindex M P w (Summary)
6526 @findex gnus-summary-save-process-mark
6527 Push the current process mark set onto the stack
6528 (@code{gnus-summary-save-process-mark}).
6532 Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
6533 set process marks based on article body contents.
6540 It can be convenient to limit the summary buffer to just show some
6541 subset of the articles currently in the group. The effect most limit
6542 commands have is to remove a few (or many) articles from the summary
6545 Limiting commands work on subsets of the articles already fetched from
6546 the servers. These commands don't query the server for additional
6553 @kindex / / (Summary)
6554 @findex gnus-summary-limit-to-subject
6555 Limit the summary buffer to articles that match some subject
6556 (@code{gnus-summary-limit-to-subject}). If given a prefix, exclude
6560 @kindex / a (Summary)
6561 @findex gnus-summary-limit-to-author
6562 Limit the summary buffer to articles that match some author
6563 (@code{gnus-summary-limit-to-author}). If given a prefix, exclude
6567 @kindex / R (Summary)
6568 @findex gnus-summary-limit-to-recipient
6569 Limit the summary buffer to articles that match some recipient
6570 (@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
6574 @kindex / A (Summary)
6575 @findex gnus-summary-limit-to-address
6576 Limit the summary buffer to articles in which contents of From, To or Cc
6577 header match a given address (@code{gnus-summary-limit-to-address}). If
6578 given a prefix, exclude matching articles.
6581 @kindex / S (Summary)
6582 @findex gnus-summary-limit-to-singletons
6583 Limit the summary buffer to articles that aren't part of any displayed
6584 threads (@code{gnus-summary-limit-to-singletons}). If given a prefix,
6585 limit to articles that are part of displayed threads.
6588 @kindex / x (Summary)
6589 @findex gnus-summary-limit-to-extra
6590 Limit the summary buffer to articles that match one of the ``extra''
6591 headers (@pxref{To From Newsgroups})
6592 (@code{gnus-summary-limit-to-extra}). If given a prefix, exclude
6597 @kindex / u (Summary)
6599 @findex gnus-summary-limit-to-unread
6600 Limit the summary buffer to articles not marked as read
6601 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
6602 buffer to articles strictly unread. This means that ticked and
6603 dormant articles will also be excluded.
6606 @kindex / m (Summary)
6607 @findex gnus-summary-limit-to-marks
6608 Ask for a mark and then limit to all articles that have been marked
6609 with that mark (@code{gnus-summary-limit-to-marks}).
6612 @kindex / t (Summary)
6613 @findex gnus-summary-limit-to-age
6614 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
6615 (@code{gnus-summary-limit-to-age}). If given a prefix, limit to
6616 articles younger than that number of days.
6619 @kindex / n (Summary)
6620 @findex gnus-summary-limit-to-articles
6621 With prefix @samp{n}, limit the summary buffer to the next @samp{n}
6622 articles. If not given a prefix, use the process marked articles
6623 instead. (@code{gnus-summary-limit-to-articles}).
6626 @kindex / w (Summary)
6627 @findex gnus-summary-pop-limit
6628 Pop the previous limit off the stack and restore it
6629 (@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
6633 @kindex / . (Summary)
6634 @findex gnus-summary-limit-to-unseen
6635 Limit the summary buffer to the unseen articles
6636 (@code{gnus-summary-limit-to-unseen}).
6639 @kindex / v (Summary)
6640 @findex gnus-summary-limit-to-score
6641 Limit the summary buffer to articles that have a score at or above some
6642 score (@code{gnus-summary-limit-to-score}).
6645 @kindex / p (Summary)
6646 @findex gnus-summary-limit-to-display-predicate
6647 Limit the summary buffer to articles that satisfy the @code{display}
6648 group parameter predicate
6649 (@code{gnus-summary-limit-to-display-predicate}). @xref{Group
6650 Parameters}, for more on this predicate.
6653 @kindex / r (Summary)
6654 @findex gnus-summary-limit-to-replied
6655 Limit the summary buffer to replied articles
6656 (@code{gnus-summary-limit-to-replied}). If given a prefix, exclude
6661 @kindex M S (Summary)
6662 @kindex / E (Summary)
6663 @findex gnus-summary-limit-include-expunged
6664 Include all expunged articles in the limit
6665 (@code{gnus-summary-limit-include-expunged}).
6668 @kindex / D (Summary)
6669 @findex gnus-summary-limit-include-dormant
6670 Include all dormant articles in the limit
6671 (@code{gnus-summary-limit-include-dormant}).
6674 @kindex / * (Summary)
6675 @findex gnus-summary-limit-include-cached
6676 Include all cached articles in the limit
6677 (@code{gnus-summary-limit-include-cached}).
6680 @kindex / d (Summary)
6681 @findex gnus-summary-limit-exclude-dormant
6682 Exclude all dormant articles from the limit
6683 (@code{gnus-summary-limit-exclude-dormant}).
6686 @kindex / M (Summary)
6687 @findex gnus-summary-limit-exclude-marks
6688 Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
6691 @kindex / T (Summary)
6692 @findex gnus-summary-limit-include-thread
6693 Include all the articles in the current thread in the limit.
6696 @kindex / c (Summary)
6697 @findex gnus-summary-limit-exclude-childless-dormant
6698 Exclude all dormant articles that have no children from the limit@*
6699 (@code{gnus-summary-limit-exclude-childless-dormant}).
6702 @kindex / C (Summary)
6703 @findex gnus-summary-limit-mark-excluded-as-read
6704 Mark all excluded unread articles as read
6705 (@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
6706 also mark excluded ticked and dormant articles as read.
6709 @kindex / b (Summary)
6710 @findex gnus-summary-limit-to-bodies
6711 Limit the summary buffer to articles that have bodies that match a
6712 certain regexp (@code{gnus-summary-limit-to-bodies}). If given a
6713 prefix, reverse the limit. This command is quite slow since it
6714 requires selecting each article to find the matches.
6717 @kindex / h (Summary)
6718 @findex gnus-summary-limit-to-headers
6719 Like the previous command, only limit to headers instead
6720 (@code{gnus-summary-limit-to-headers}).
6725 The following commands aren't limiting commands, but use the @kbd{/}
6730 @kindex / N (Summary)
6731 @findex gnus-summary-insert-new-articles
6732 Insert all new articles in the summary buffer. It scans for new emails
6733 if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6736 @kindex / o (Summary)
6737 @findex gnus-summary-insert-old-articles
6738 Insert all old articles in the summary buffer. If given a numbered
6739 prefix, fetch this number of articles.
6747 @cindex article threading
6749 Gnus threads articles by default. @dfn{To thread} is to put responses
6750 to articles directly after the articles they respond to---in a
6751 hierarchical fashion.
6753 Threading is done by looking at the @code{References} headers of the
6754 articles. In a perfect world, this would be enough to build pretty
6755 trees, but unfortunately, the @code{References} header is often broken
6756 or simply missing. Weird news propagation exacerbates the problem,
6757 so one has to employ other heuristics to get pleasing results. A
6758 plethora of approaches exists, as detailed in horrible detail in
6759 @ref{Customizing Threading}.
6761 First, a quick overview of the concepts:
6765 The top-most article in a thread; the first article in the thread.
6768 A tree-like article structure.
6771 A small(er) section of this tree-like structure.
6774 Threads often lose their roots due to article expiry, or due to the root
6775 already having been read in a previous session, and not displayed in the
6776 summary buffer. We then typically have many sub-threads that really
6777 belong to one thread, but are without connecting roots. These are
6778 called loose threads.
6780 @item thread gathering
6781 An attempt to gather loose threads into bigger threads.
6783 @item sparse threads
6784 A thread where the missing articles have been ``guessed'' at, and are
6785 displayed as empty lines in the summary buffer.
6791 * Customizing Threading:: Variables you can change to affect the threading.
6792 * Thread Commands:: Thread based commands in the summary buffer.
6796 @node Customizing Threading
6797 @subsection Customizing Threading
6798 @cindex customizing threading
6801 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
6802 * Filling In Threads:: Making the threads displayed look fuller.
6803 * More Threading:: Even more variables for fiddling with threads.
6804 * Low-Level Threading:: You thought it was over@dots{} but you were wrong!
6809 @subsubsection Loose Threads
6812 @cindex loose threads
6815 @item gnus-summary-make-false-root
6816 @vindex gnus-summary-make-false-root
6817 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6818 and create a dummy root at the top. (Wait a minute. Root at the top?
6819 Yup.) Loose subtrees occur when the real root has expired, or you've
6820 read or killed the root in a previous session.
6822 When there is no real root of a thread, Gnus will have to fudge
6823 something. This variable says what fudging method Gnus should use.
6824 There are four possible values:
6828 \gnusfigure{The Summary Buffer}{390}{
6829 \put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6830 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6831 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6832 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
6837 @cindex adopting articles
6842 Gnus will make the first of the orphaned articles the parent. This
6843 parent will adopt all the other articles. The adopted articles will be
6844 marked as such by pointy brackets (@samp{<>}) instead of the standard
6845 square brackets (@samp{[]}). This is the default method.
6848 @vindex gnus-summary-dummy-line-format
6849 @vindex gnus-summary-make-false-root-always
6850 Gnus will create a dummy summary line that will pretend to be the
6851 parent. This dummy line does not correspond to any real article, so
6852 selecting it will just select the first real article after the dummy
6853 article. @code{gnus-summary-dummy-line-format} is used to specify the
6854 format of the dummy roots. It accepts only one format spec: @samp{S},
6855 which is the subject of the article. @xref{Formatting Variables}.
6856 If you want all threads to have a dummy root, even the non-gathered
6857 ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
6860 Gnus won't actually make any article the parent, but simply leave the
6861 subject field of all orphans except the first empty. (Actually, it will
6862 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6866 Don't make any article parent at all. Just gather the threads and
6867 display them after one another.
6870 Don't gather loose threads.
6873 @item gnus-summary-gather-subject-limit
6874 @vindex gnus-summary-gather-subject-limit
6875 Loose threads are gathered by comparing subjects of articles. If this
6876 variable is @code{nil}, Gnus requires an exact match between the
6877 subjects of the loose threads before gathering them into one big
6878 super-thread. This might be too strict a requirement, what with the
6879 presence of stupid newsreaders that chop off long subject lines. If
6880 you think so, set this variable to, say, 20 to require that only the
6881 first 20 characters of the subjects have to match. If you set this
6882 variable to a really low number, you'll find that Gnus will gather
6883 everything in sight into one thread, which isn't very helpful.
6885 @cindex fuzzy article gathering
6886 If you set this variable to the special value @code{fuzzy}, Gnus will
6887 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6890 @item gnus-simplify-subject-fuzzy-regexp
6891 @vindex gnus-simplify-subject-fuzzy-regexp
6892 This can either be a regular expression or list of regular expressions
6893 that match strings that will be removed from subjects if fuzzy subject
6894 simplification is used.
6896 @item gnus-simplify-ignored-prefixes
6897 @vindex gnus-simplify-ignored-prefixes
6898 If you set @code{gnus-summary-gather-subject-limit} to something as low
6899 as 10, you might consider setting this variable to something sensible:
6901 @c Written by Michael Ernst <mernst@cs.rice.edu>
6903 (setq gnus-simplify-ignored-prefixes
6909 "wanted" "followup" "summary\\( of\\)?"
6910 "help" "query" "problem" "question"
6911 "answer" "reference" "announce"
6912 "How can I" "How to" "Comparison of"
6917 (mapconcat 'identity
6918 '("for" "for reference" "with" "about")
6920 "\\)?\\]?:?[ \t]*"))
6923 All words that match this regexp will be removed before comparing two
6926 @item gnus-simplify-subject-functions
6927 @vindex gnus-simplify-subject-functions
6928 If non-@code{nil}, this variable overrides
6929 @code{gnus-summary-gather-subject-limit}. This variable should be a
6930 list of functions to apply to the @code{Subject} string iteratively to
6931 arrive at the simplified version of the string.
6933 Useful functions to put in this list include:
6936 @item gnus-simplify-subject-re
6937 @findex gnus-simplify-subject-re
6938 Strip the leading @samp{Re:}.
6940 @item gnus-simplify-subject-fuzzy
6941 @findex gnus-simplify-subject-fuzzy
6944 @item gnus-simplify-whitespace
6945 @findex gnus-simplify-whitespace
6946 Remove excessive whitespace.
6948 @item gnus-simplify-all-whitespace
6949 @findex gnus-simplify-all-whitespace
6950 Remove all whitespace.
6953 You may also write your own functions, of course.
6956 @item gnus-summary-gather-exclude-subject
6957 @vindex gnus-summary-gather-exclude-subject
6958 Since loose thread gathering is done on subjects only, that might lead
6959 to many false hits, especially with certain common subjects like
6960 @samp{} and @samp{(none)}. To make the situation slightly better,
6961 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6962 what subjects should be excluded from the gathering process.@*
6963 The default is @samp{^ *$\\|^(none)$}.
6965 @item gnus-summary-thread-gathering-function
6966 @vindex gnus-summary-thread-gathering-function
6967 Gnus gathers threads by looking at @code{Subject} headers. This means
6968 that totally unrelated articles may end up in the same ``thread'', which
6969 is confusing. An alternate approach is to look at all the
6970 @code{Message-ID}s in all the @code{References} headers to find matches.
6971 This will ensure that no gathered threads ever include unrelated
6972 articles, but it also means that people who have posted with broken
6973 newsreaders won't be gathered properly. The choice is yours---plague or
6977 @item gnus-gather-threads-by-subject
6978 @findex gnus-gather-threads-by-subject
6979 This function is the default gathering function and looks at
6980 @code{Subject}s exclusively.
6982 @item gnus-gather-threads-by-references
6983 @findex gnus-gather-threads-by-references
6984 This function looks at @code{References} headers exclusively.
6987 If you want to test gathering by @code{References}, you could say
6991 (setq gnus-summary-thread-gathering-function
6992 'gnus-gather-threads-by-references)
6998 @node Filling In Threads
6999 @subsubsection Filling In Threads
7002 @item gnus-fetch-old-headers
7003 @vindex gnus-fetch-old-headers
7004 If non-@code{nil}, Gnus will attempt to build old threads by fetching
7005 more old headers---headers to articles marked as read. If you would
7006 like to display as few summary lines as possible, but still connect as
7007 many loose threads as possible, you should set this variable to
7008 @code{some} or a number. If you set it to a number, no more than that
7009 number of extra old headers will be fetched. In either case, fetching
7010 old headers only works if the back end you are using carries overview
7011 files---this would normally be @code{nntp}, @code{nnspool},
7012 @code{nnml}, and @code{nnmaildir}. Also remember that if the root of
7013 the thread has been expired by the server, there's not much Gnus can
7016 This variable can also be set to @code{invisible}. This won't have any
7017 visible effects, but is useful if you use the @kbd{A T} command a lot
7018 (@pxref{Finding the Parent}).
7020 The server has to support @acronym{NOV} for any of this to work.
7022 @cindex Gmane, gnus-fetch-old-headers
7023 This feature can seriously impact performance it ignores all locally
7024 cached header entries. Setting it to @code{t} for groups for a server
7025 that doesn't expire articles (such as news.gmane.org), leads to very
7026 slow summary generation.
7028 @item gnus-fetch-old-ephemeral-headers
7029 @vindex gnus-fetch-old-ephemeral-headers
7030 Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
7033 @item gnus-build-sparse-threads
7034 @vindex gnus-build-sparse-threads
7035 Fetching old headers can be slow. A low-rent similar effect can be
7036 gotten by setting this variable to @code{some}. Gnus will then look at
7037 the complete @code{References} headers of all articles and try to string
7038 together articles that belong in the same thread. This will leave
7039 @dfn{gaps} in the threading display where Gnus guesses that an article
7040 is missing from the thread. (These gaps appear like normal summary
7041 lines. If you select a gap, Gnus will try to fetch the article in
7042 question.) If this variable is @code{t}, Gnus will display all these
7043 ``gaps'' without regard for whether they are useful for completing the
7044 thread or not. Finally, if this variable is @code{more}, Gnus won't cut
7045 off sparse leaf nodes that don't lead anywhere. This variable is
7046 @code{nil} by default.
7048 @item gnus-read-all-available-headers
7049 @vindex gnus-read-all-available-headers
7050 This is a rather obscure variable that few will find useful. It's
7051 intended for those non-news newsgroups where the back end has to fetch
7052 quite a lot to present the summary buffer, and where it's impossible to
7053 go back to parents of articles. This is mostly the case in the
7056 If you don't use those, then it's safe to leave this as the default
7057 @code{nil}. If you want to use this variable, it should be a regexp
7058 that matches the group name, or @code{t} for all groups.
7063 @node More Threading
7064 @subsubsection More Threading
7067 @item gnus-show-threads
7068 @vindex gnus-show-threads
7069 If this variable is @code{nil}, no threading will be done, and all of
7070 the rest of the variables here will have no effect. Turning threading
7071 off will speed group selection up a bit, but it is sure to make reading
7072 slower and more awkward.
7074 @item gnus-thread-hide-subtree
7075 @vindex gnus-thread-hide-subtree
7076 If non-@code{nil}, all threads will be hidden when the summary buffer is
7079 This can also be a predicate specifier (@pxref{Predicate Specifiers}).
7080 Available predicates are @code{gnus-article-unread-p} and
7081 @code{gnus-article-unseen-p}.
7086 (setq gnus-thread-hide-subtree
7087 '(or gnus-article-unread-p
7088 gnus-article-unseen-p))
7091 (It's a pretty nonsensical example, since all unseen articles are also
7092 unread, but you get my drift.)
7095 @item gnus-thread-expunge-below
7096 @vindex gnus-thread-expunge-below
7097 All threads that have a total score (as defined by
7098 @code{gnus-thread-score-function}) less than this number will be
7099 expunged. This variable is @code{nil} by default, which means that no
7100 threads are expunged.
7102 @item gnus-thread-hide-killed
7103 @vindex gnus-thread-hide-killed
7104 if you kill a thread and this variable is non-@code{nil}, the subtree
7107 @item gnus-thread-ignore-subject
7108 @vindex gnus-thread-ignore-subject
7109 Sometimes somebody changes the subject in the middle of a thread. If
7110 this variable is non-@code{nil}, which is the default, the subject
7111 change is ignored. If it is @code{nil}, a change in the subject will
7112 result in a new thread.
7114 @item gnus-thread-indent-level
7115 @vindex gnus-thread-indent-level
7116 This is a number that says how much each sub-thread should be indented.
7119 @item gnus-sort-gathered-threads-function
7120 @vindex gnus-sort-gathered-threads-function
7121 Sometimes, particularly with mailing lists, the order in which mails
7122 arrive locally is not necessarily the same as the order in which they
7123 arrived on the mailing list. Consequently, when sorting sub-threads
7124 using the default @code{gnus-thread-sort-by-number}, responses can end
7125 up appearing before the article to which they are responding to.
7126 Setting this variable to an alternate value
7127 (e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
7128 appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
7129 more logical sub-thread ordering in such instances.
7134 @node Low-Level Threading
7135 @subsubsection Low-Level Threading
7139 @item gnus-parse-headers-hook
7140 @vindex gnus-parse-headers-hook
7141 Hook run before parsing any headers.
7143 @item gnus-alter-header-function
7144 @vindex gnus-alter-header-function
7145 If non-@code{nil}, this function will be called to allow alteration of
7146 article header structures. The function is called with one parameter,
7147 the article header vector, which it may alter in any way. For instance,
7148 if you have a mail-to-news gateway which alters the @code{Message-ID}s
7149 in systematic ways (by adding prefixes and such), you can use this
7150 variable to un-scramble the @code{Message-ID}s so that they are more
7151 meaningful. Here's one example:
7154 (setq gnus-alter-header-function 'my-alter-message-id)
7156 (defun my-alter-message-id (header)
7157 (let ((id (mail-header-id header)))
7159 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
7161 (concat (match-string 1 id) "@@" (match-string 2 id))
7168 @node Thread Commands
7169 @subsection Thread Commands
7170 @cindex thread commands
7176 @kindex T k (Summary)
7177 @kindex C-M-k (Summary)
7178 @findex gnus-summary-kill-thread
7179 Mark all articles in the current (sub-)thread as read
7180 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
7181 remove all marks instead. If the prefix argument is negative, tick
7186 @kindex T l (Summary)
7187 @kindex C-M-l (Summary)
7188 @findex gnus-summary-lower-thread
7189 Lower the score of the current (sub-)thread
7190 (@code{gnus-summary-lower-thread}).
7193 @kindex T i (Summary)
7194 @findex gnus-summary-raise-thread
7195 Increase the score of the current (sub-)thread
7196 (@code{gnus-summary-raise-thread}).
7199 @kindex T # (Summary)
7200 @findex gnus-uu-mark-thread
7201 Set the process mark on the current (sub-)thread
7202 (@code{gnus-uu-mark-thread}).
7205 @kindex T M-# (Summary)
7206 @findex gnus-uu-unmark-thread
7207 Remove the process mark from the current (sub-)thread
7208 (@code{gnus-uu-unmark-thread}).
7211 @kindex T T (Summary)
7212 @findex gnus-summary-toggle-threads
7213 Toggle threading (@code{gnus-summary-toggle-threads}).
7216 @kindex T s (Summary)
7217 @findex gnus-summary-show-thread
7218 Expose the (sub-)thread hidden under the current article, if any@*
7219 (@code{gnus-summary-show-thread}).
7222 @kindex T h (Summary)
7223 @findex gnus-summary-hide-thread
7224 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
7227 @kindex T S (Summary)
7228 @findex gnus-summary-show-all-threads
7229 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
7232 @kindex T H (Summary)
7233 @findex gnus-summary-hide-all-threads
7234 Hide all threads (@code{gnus-summary-hide-all-threads}).
7237 @kindex T t (Summary)
7238 @findex gnus-summary-rethread-current
7239 Re-thread the current article's thread
7240 (@code{gnus-summary-rethread-current}). This works even when the
7241 summary buffer is otherwise unthreaded.
7244 @kindex T ^ (Summary)
7245 @findex gnus-summary-reparent-thread
7246 Make the current article the child of the marked (or previous) article
7247 (@code{gnus-summary-reparent-thread}).
7250 @kindex T M-^ (Summary)
7251 @findex gnus-summary-reparent-children
7252 Make the current article the parent of the marked articles
7253 (@code{gnus-summary-reparent-children}).
7257 The following commands are thread movement commands. They all
7258 understand the numeric prefix.
7263 @kindex T n (Summary)
7265 @kindex C-M-n (Summary)
7267 @kindex M-down (Summary)
7268 @findex gnus-summary-next-thread
7269 Go to the next thread (@code{gnus-summary-next-thread}).
7272 @kindex T p (Summary)
7274 @kindex C-M-p (Summary)
7276 @kindex M-up (Summary)
7277 @findex gnus-summary-prev-thread
7278 Go to the previous thread (@code{gnus-summary-prev-thread}).
7281 @kindex T d (Summary)
7282 @findex gnus-summary-down-thread
7283 Descend the thread (@code{gnus-summary-down-thread}).
7286 @kindex T u (Summary)
7287 @findex gnus-summary-up-thread
7288 Ascend the thread (@code{gnus-summary-up-thread}).
7291 @kindex T o (Summary)
7292 @findex gnus-summary-top-thread
7293 Go to the top of the thread (@code{gnus-summary-top-thread}).
7296 @vindex gnus-thread-operation-ignore-subject
7297 If you ignore subject while threading, you'll naturally end up with
7298 threads that have several different subjects in them. If you then issue
7299 a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not
7300 wish to kill the entire thread, but just those parts of the thread that
7301 have the same subject as the current article. If you like this idea,
7302 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
7303 is non-@code{nil} (which it is by default), subjects will be ignored
7304 when doing thread commands. If this variable is @code{nil}, articles in
7305 the same thread with different subjects will not be included in the
7306 operation in question. If this variable is @code{fuzzy}, only articles
7307 that have subjects fuzzily equal will be included (@pxref{Fuzzy
7311 @node Sorting the Summary Buffer
7312 @section Sorting the Summary Buffer
7314 @findex gnus-thread-sort-by-total-score
7315 @findex gnus-thread-sort-by-date
7316 @findex gnus-thread-sort-by-score
7317 @findex gnus-thread-sort-by-subject
7318 @findex gnus-thread-sort-by-author
7319 @findex gnus-thread-sort-by-recipient
7320 @findex gnus-thread-sort-by-number
7321 @findex gnus-thread-sort-by-random
7322 @vindex gnus-thread-sort-functions
7323 @findex gnus-thread-sort-by-most-recent-number
7324 @findex gnus-thread-sort-by-most-recent-date
7325 If you are using a threaded summary display, you can sort the threads by
7326 setting @code{gnus-thread-sort-functions}, which can be either a single
7327 function, a list of functions, or a list containing functions and
7328 @code{(not some-function)} elements.
7330 By default, sorting is done on article numbers. Ready-made sorting
7331 predicate functions include @code{gnus-thread-sort-by-number},
7332 @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
7333 @code{gnus-thread-sort-by-subject},
7334 @code{gnus-thread-sort-by-date},
7335 @code{gnus-thread-sort-by-score},
7336 @code{gnus-thread-sort-by-most-recent-number},
7337 @code{gnus-thread-sort-by-most-recent-date},
7338 @code{gnus-thread-sort-by-random} and
7339 @code{gnus-thread-sort-by-total-score}.
7341 Each function takes two threads and returns non-@code{nil} if the first
7342 thread should be sorted before the other. Note that sorting really is
7343 normally done by looking only at the roots of each thread.
7345 If you use more than one function, the primary sort key should be the
7346 last function in the list. You should probably always include
7347 @code{gnus-thread-sort-by-number} in the list of sorting
7348 functions---preferably first. This will ensure that threads that are
7349 equal with respect to the other sort criteria will be displayed in
7350 ascending article order.
7352 If you would like to sort by reverse score, then by subject, and finally
7353 by number, you could do something like:
7356 (setq gnus-thread-sort-functions
7357 '(gnus-thread-sort-by-number
7358 gnus-thread-sort-by-subject
7359 (not gnus-thread-sort-by-total-score)))
7362 The threads that have highest score will be displayed first in the
7363 summary buffer. When threads have the same score, they will be sorted
7364 alphabetically. The threads that have the same score and the same
7365 subject will be sorted by number, which is (normally) the sequence in
7366 which the articles arrived.
7368 If you want to sort by score and then reverse arrival order, you could
7372 (setq gnus-thread-sort-functions
7373 '((not gnus-thread-sort-by-number)
7374 gnus-thread-sort-by-score))
7377 @vindex gnus-thread-score-function
7378 The function in the @code{gnus-thread-score-function} variable (default
7379 @code{+}) is used for calculating the total score of a thread. Useful
7380 functions might be @code{max}, @code{min}, or squared means, or whatever
7383 @findex gnus-article-sort-functions
7384 @findex gnus-article-sort-by-date
7385 @findex gnus-article-sort-by-most-recent-date
7386 @findex gnus-article-sort-by-score
7387 @findex gnus-article-sort-by-subject
7388 @findex gnus-article-sort-by-author
7389 @findex gnus-article-sort-by-random
7390 @findex gnus-article-sort-by-number
7391 @findex gnus-article-sort-by-most-recent-number
7392 If you are using an unthreaded display for some strange reason or
7393 other, you have to fiddle with the @code{gnus-article-sort-functions}
7394 variable. It is very similar to the
7395 @code{gnus-thread-sort-functions}, except that it uses slightly
7396 different functions for article comparison. Available sorting
7397 predicate functions are @code{gnus-article-sort-by-number},
7398 @code{gnus-article-sort-by-author},
7399 @code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date},
7400 @code{gnus-article-sort-by-random}, and
7401 @code{gnus-article-sort-by-score}.
7403 If you want to sort an unthreaded summary display by subject, you could
7407 (setq gnus-article-sort-functions
7408 '(gnus-article-sort-by-number
7409 gnus-article-sort-by-subject))
7412 You can define group specific sorting via @code{gnus-parameters},
7413 @xref{Group Parameters}.
7416 @node Asynchronous Fetching
7417 @section Asynchronous Article Fetching
7418 @cindex asynchronous article fetching
7419 @cindex article pre-fetch
7422 If you read your news from an @acronym{NNTP} server that's far away, the
7423 network latencies may make reading articles a chore. You have to wait
7424 for a while after pressing @kbd{n} to go to the next article before the
7425 article appears. Why can't Gnus just go ahead and fetch the article
7426 while you are reading the previous one? Why not, indeed.
7428 First, some caveats. There are some pitfalls to using asynchronous
7429 article fetching, especially the way Gnus does it.
7431 Let's say you are reading article 1, which is short, and article 2 is
7432 quite long, and you are not interested in reading that. Gnus does not
7433 know this, so it goes ahead and fetches article 2. You decide to read
7434 article 3, but since Gnus is in the process of fetching article 2, the
7435 connection is blocked.
7437 To avoid these situations, Gnus will open two (count 'em two)
7438 connections to the server. Some people may think this isn't a very nice
7439 thing to do, but I don't see any real alternatives. Setting up that
7440 extra connection takes some time, so Gnus startup will be slower.
7442 Gnus will fetch more articles than you will read. This will mean that
7443 the link between your machine and the @acronym{NNTP} server will become more
7444 loaded than if you didn't use article pre-fetch. The server itself will
7445 also become more loaded---both with the extra article requests, and the
7448 Ok, so now you know that you shouldn't really use this thing@dots{} unless
7451 @vindex gnus-asynchronous
7452 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
7453 happen automatically.
7455 @vindex gnus-use-article-prefetch
7456 You can control how many articles are to be pre-fetched by setting
7457 @code{gnus-use-article-prefetch}. This is 30 by default, which means
7458 that when you read an article in the group, the back end will pre-fetch
7459 the next 30 articles. If this variable is @code{t}, the back end will
7460 pre-fetch all the articles it can without bound. If it is
7461 @code{nil}, no pre-fetching will be done.
7463 @vindex gnus-async-prefetch-article-p
7464 @findex gnus-async-unread-p
7465 There are probably some articles that you don't want to pre-fetch---read
7466 articles, for instance. The @code{gnus-async-prefetch-article-p}
7467 variable controls whether an article is to be pre-fetched. This
7468 function should return non-@code{nil} when the article in question is
7469 to be pre-fetched. The default is @code{gnus-async-unread-p}, which
7470 returns @code{nil} on read articles. The function is called with an
7471 article data structure as the only parameter.
7473 If, for instance, you wish to pre-fetch only unread articles shorter
7474 than 100 lines, you could say something like:
7477 (defun my-async-short-unread-p (data)
7478 "Return non-nil for short, unread articles."
7479 (and (gnus-data-unread-p data)
7480 (< (mail-header-lines (gnus-data-header data))
7483 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
7486 These functions will be called many, many times, so they should
7487 preferably be short and sweet to avoid slowing down Gnus too much.
7488 It's probably a good idea to byte-compile things like this.
7490 @vindex gnus-async-post-fetch-function
7491 @findex gnus-html-prefetch-images
7492 After an article has been prefetched, this
7493 @code{gnus-async-post-fetch-function} will be called. The buffer will
7494 be narrowed to the region of the article that was fetched. A useful
7495 value would be @code{gnus-html-prefetch-images}, which will prefetch
7496 and store images referenced in the article, so that you don't have to
7497 wait for them to be fetched when you read the article. This is useful
7498 for @acronym{HTML} messages that have external images.
7500 @vindex gnus-prefetched-article-deletion-strategy
7501 Articles have to be removed from the asynch buffer sooner or later. The
7502 @code{gnus-prefetched-article-deletion-strategy} says when to remove
7503 articles. This is a list that may contain the following elements:
7507 Remove articles when they are read.
7510 Remove articles when exiting the group.
7513 The default value is @code{(read exit)}.
7515 @c @vindex gnus-use-header-prefetch
7516 @c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
7517 @c from the next group.
7520 @node Article Caching
7521 @section Article Caching
7522 @cindex article caching
7525 If you have an @emph{extremely} slow @acronym{NNTP} connection, you may
7526 consider turning article caching on. Each article will then be stored
7527 locally under your home directory. As you may surmise, this could
7528 potentially use @emph{huge} amounts of disk space, as well as eat up all
7529 your inodes so fast it will make your head swim. In vodka.
7531 Used carefully, though, it could be just an easier way to save articles.
7533 @vindex gnus-use-long-file-name
7534 @vindex gnus-cache-directory
7535 @vindex gnus-use-cache
7536 To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
7537 all articles ticked or marked as dormant will then be copied
7538 over to your local cache (@code{gnus-cache-directory}). Whether this
7539 cache is flat or hierarchical is controlled by the
7540 @code{gnus-use-long-file-name} variable, as usual.
7542 When re-selecting a ticked or dormant article, it will be fetched from the
7543 cache instead of from the server. As articles in your cache will never
7544 expire, this might serve as a method of saving articles while still
7545 keeping them where they belong. Just mark all articles you want to save
7546 as dormant, and don't worry.
7548 When an article is marked as read, is it removed from the cache.
7550 @vindex gnus-cache-remove-articles
7551 @vindex gnus-cache-enter-articles
7552 The entering/removal of articles from the cache is controlled by the
7553 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
7554 variables. Both are lists of symbols. The first is @code{(ticked
7555 dormant)} by default, meaning that ticked and dormant articles will be
7556 put in the cache. The latter is @code{(read)} by default, meaning that
7557 articles marked as read are removed from the cache. Possibly
7558 symbols in these two lists are @code{ticked}, @code{dormant},
7559 @code{unread} and @code{read}.
7561 @findex gnus-jog-cache
7562 So where does the massive article-fetching and storing come into the
7563 picture? The @code{gnus-jog-cache} command will go through all
7564 subscribed newsgroups, request all unread articles, score them, and
7565 store them in the cache. You should only ever, ever ever ever, use this
7566 command if 1) your connection to the @acronym{NNTP} server is really, really,
7567 really slow and 2) you have a really, really, really huge disk.
7568 Seriously. One way to cut down on the number of articles downloaded is
7569 to score unwanted articles down and have them marked as read. They will
7570 not then be downloaded by this command.
7572 @vindex gnus-uncacheable-groups
7573 @vindex gnus-cacheable-groups
7574 It is likely that you do not want caching on all groups. For instance,
7575 if your @code{nnml} mail is located under your home directory, it makes no
7576 sense to cache it somewhere else under your home directory. Unless you
7577 feel that it's neat to use twice as much space.
7579 To limit the caching, you could set @code{gnus-cacheable-groups} to a
7580 regexp of groups to cache, @samp{^nntp} for instance, or set the
7581 @code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance.
7582 Both variables are @code{nil} by default. If a group matches both
7583 variables, the group is not cached.
7585 @findex gnus-cache-generate-nov-databases
7586 @findex gnus-cache-generate-active
7587 @vindex gnus-cache-active-file
7588 The cache stores information on what articles it contains in its active
7589 file (@code{gnus-cache-active-file}). If this file (or any other parts
7590 of the cache) becomes all messed up for some reason or other, Gnus
7591 offers two functions that will try to set things right. @kbd{M-x
7592 gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV}
7593 files, and @kbd{gnus-cache-generate-active} will (re)generate the active
7596 @findex gnus-cache-move-cache
7597 @code{gnus-cache-move-cache} will move your whole
7598 @code{gnus-cache-directory} to some other location. You get asked to
7599 where, isn't that cool?
7601 @node Persistent Articles
7602 @section Persistent Articles
7603 @cindex persistent articles
7605 Closely related to article caching, we have @dfn{persistent articles}.
7606 In fact, it's just a different way of looking at caching, and much more
7607 useful in my opinion.
7609 Say you're reading a newsgroup, and you happen on to some valuable gem
7610 that you want to keep and treasure forever. You'd normally just save it
7611 (using one of the many saving commands) in some file. The problem with
7612 that is that it's just, well, yucky. Ideally you'd prefer just having
7613 the article remain in the group where you found it forever; untouched by
7614 the expiry going on at the news server.
7616 This is what a @dfn{persistent article} is---an article that just won't
7617 be deleted. It's implemented using the normal cache functions, but
7618 you use two explicit commands for managing persistent articles:
7624 @findex gnus-cache-enter-article
7625 Make the current article persistent (@code{gnus-cache-enter-article}).
7628 @kindex M-* (Summary)
7629 @findex gnus-cache-remove-article
7630 Remove the current article from the persistent articles
7631 (@code{gnus-cache-remove-article}). This will normally delete the
7635 Both these commands understand the process/prefix convention.
7637 To avoid having all ticked articles (and stuff) entered into the cache,
7638 you should set @code{gnus-use-cache} to @code{passive} if you're just
7639 interested in persistent articles:
7642 (setq gnus-use-cache 'passive)
7645 @node Sticky Articles
7646 @section Sticky Articles
7647 @cindex sticky articles
7649 When you select an article the current article buffer will be reused
7650 according to the value of the variable
7651 @code{gnus-single-article-buffer}. If its value is non-@code{nil} (the
7652 default) all articles reuse the same article buffer. Else each group
7653 has its own article buffer.
7655 This implies that it's not possible to have more than one article buffer
7656 in a group at a time. But sometimes you might want to display all the
7657 latest emails from your mother, your father, your aunt, your uncle and
7658 your 17 cousins to coordinate the next christmas party.
7660 That's where sticky articles come in handy. A sticky article buffer
7661 basically is a normal article buffer, but it won't be reused when you
7662 select another article. You can make an article sticky with:
7666 @kindex A S (Summary)
7667 @findex gnus-sticky-article
7668 Make the current article sticky. If a prefix arg is given, ask for a
7669 name for this sticky article buffer.
7672 To close a sticky article buffer you can use these commands:
7678 Puts this sticky article buffer at the end of the list of all buffers.
7682 @findex gnus-kill-sticky-article-buffer
7683 Kills this sticky article buffer.
7686 To kill all sticky article buffers you can use:
7688 @defun gnus-kill-sticky-article-buffers ARG
7689 Kill all sticky article buffers.
7690 If a prefix ARG is given, ask for confirmation.
7693 @node Article Backlog
7694 @section Article Backlog
7696 @cindex article backlog
7698 If you have a slow connection, but the idea of using caching seems
7699 unappealing to you (and it is, really), you can help the situation some
7700 by switching on the @dfn{backlog}. This is where Gnus will buffer
7701 already read articles so that it doesn't have to re-fetch articles
7702 you've already read. This only helps if you are in the habit of
7703 re-selecting articles you've recently read, of course. If you never do
7704 that, turning the backlog on will slow Gnus down a little bit, and
7705 increase memory usage some.
7707 @vindex gnus-keep-backlog
7708 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
7709 at most @var{n} old articles in a buffer for later re-fetching. If this
7710 variable is non-@code{nil} and is not a number, Gnus will store
7711 @emph{all} read articles, which means that your Emacs will grow without
7712 bound before exploding and taking your machine down with you. I put
7713 that in there just to keep y'all on your toes.
7715 The default value is 20.
7718 @node Saving Articles
7719 @section Saving Articles
7720 @cindex saving articles
7722 Gnus can save articles in a number of ways. Below is the documentation
7723 for saving articles in a fairly straight-forward fashion (i.e., little
7724 processing of the article is done before it is saved). For a different
7725 approach (uudecoding, unsharing) you should use @code{gnus-uu}
7726 (@pxref{Decoding Articles}).
7728 For the commands listed here, the target is a file. If you want to
7729 save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article})
7730 command (@pxref{Mail Group Commands}).
7732 @vindex gnus-save-all-headers
7733 If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete
7734 unwanted headers before saving the article.
7736 @vindex gnus-saved-headers
7737 If the preceding variable is @code{nil}, all headers that match the
7738 @code{gnus-saved-headers} regexp will be kept, while the rest will be
7739 deleted before saving.
7745 @kindex O o (Summary)
7747 @findex gnus-summary-save-article
7748 @c @icon{gnus-summary-save-article}
7749 Save the current article using the default article saver
7750 (@code{gnus-summary-save-article}).
7753 @kindex O m (Summary)
7754 @findex gnus-summary-save-article-mail
7755 Save the current article in a Unix mail box (mbox) file
7756 (@code{gnus-summary-save-article-mail}).
7759 @kindex O r (Summary)
7760 @findex gnus-summary-save-article-rmail
7761 Save the current article in Rmail format
7762 (@code{gnus-summary-save-article-rmail}). This is mbox since Emacs 23,
7763 Babyl in older versions.
7766 @kindex O f (Summary)
7767 @findex gnus-summary-save-article-file
7768 @c @icon{gnus-summary-save-article-file}
7769 Save the current article in plain file format
7770 (@code{gnus-summary-save-article-file}).
7773 @kindex O F (Summary)
7774 @findex gnus-summary-write-article-file
7775 Write the current article in plain file format, overwriting any previous
7776 file contents (@code{gnus-summary-write-article-file}).
7779 @kindex O b (Summary)
7780 @findex gnus-summary-save-article-body-file
7781 Save the current article body in plain file format
7782 (@code{gnus-summary-save-article-body-file}).
7785 @kindex O h (Summary)
7786 @findex gnus-summary-save-article-folder
7787 Save the current article in mh folder format
7788 (@code{gnus-summary-save-article-folder}).
7791 @kindex O v (Summary)
7792 @findex gnus-summary-save-article-vm
7793 Save the current article in a VM folder
7794 (@code{gnus-summary-save-article-vm}).
7798 @kindex O p (Summary)
7800 @findex gnus-summary-pipe-output
7801 @vindex gnus-summary-pipe-output-default-command
7802 Save the current article in a pipe. Uhm, like, what I mean is---Pipe
7803 the current article to a process (@code{gnus-summary-pipe-output}).
7804 If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the
7805 complete headers in the piped output. The symbolic prefix @code{r} is
7806 special; it lets this command pipe a raw article including all headers.
7807 The @code{gnus-summary-pipe-output-default-command} variable can be set
7808 to a string containing the default command and options (default
7812 @kindex O P (Summary)
7813 @findex gnus-summary-muttprint
7814 @vindex gnus-summary-muttprint-program
7815 Save the current article into muttprint. That is, print it using the
7816 external program @uref{http://muttprint.sourceforge.net/,
7817 Muttprint}. The program name and options to use is controlled by the
7818 variable @code{gnus-summary-muttprint-program}.
7819 (@code{gnus-summary-muttprint}).
7823 @vindex gnus-prompt-before-saving
7824 All these commands use the process/prefix convention
7825 (@pxref{Process/Prefix}). If you save bunches of articles using these
7826 functions, you might get tired of being prompted for files to save each
7827 and every article in. The prompting action is controlled by
7828 the @code{gnus-prompt-before-saving} variable, which is @code{always} by
7829 default, giving you that excessive prompting action you know and
7830 loathe. If you set this variable to @code{t} instead, you'll be prompted
7831 just once for each series of articles you save. If you like to really
7832 have Gnus do all your thinking for you, you can even set this variable
7833 to @code{nil}, which means that you will never be prompted for files to
7834 save articles in. Gnus will simply save all the articles in the default
7838 @vindex gnus-default-article-saver
7839 You can customize the @code{gnus-default-article-saver} variable to make
7840 Gnus do what you want it to. You can use any of the eight ready-made
7841 functions below, or you can create your own.
7845 @item gnus-summary-save-in-rmail
7846 @findex gnus-summary-save-in-rmail
7847 @vindex gnus-rmail-save-name
7848 @findex gnus-plain-save-name
7849 This is the default format, that used by the Rmail package. Since Emacs
7850 23, Rmail uses standard mbox format. Before this, it used the
7851 @dfn{Babyl} format. Accordingly, this command writes mbox format since
7852 Emacs 23, unless appending to an existing Babyl file. In older versions
7853 of Emacs, it always uses Babyl format. Uses the function in the
7854 @code{gnus-rmail-save-name} variable to get a file name to save the
7855 article in. The default is @code{gnus-plain-save-name}.
7857 @item gnus-summary-save-in-mail
7858 @findex gnus-summary-save-in-mail
7859 @vindex gnus-mail-save-name
7860 Save in a Unix mail (mbox) file. Uses the function in the
7861 @code{gnus-mail-save-name} variable to get a file name to save the
7862 article in. The default is @code{gnus-plain-save-name}.
7864 @item gnus-summary-save-in-file
7865 @findex gnus-summary-save-in-file
7866 @vindex gnus-file-save-name
7867 @findex gnus-numeric-save-name
7868 Append the article straight to an ordinary file. Uses the function in
7869 the @code{gnus-file-save-name} variable to get a file name to save the
7870 article in. The default is @code{gnus-numeric-save-name}.
7872 @item gnus-summary-write-to-file
7873 @findex gnus-summary-write-to-file
7874 Write the article straight to an ordinary file. The file is
7875 overwritten if it exists. Uses the function in the
7876 @code{gnus-file-save-name} variable to get a file name to save the
7877 article in. The default is @code{gnus-numeric-save-name}.
7879 @item gnus-summary-save-body-in-file
7880 @findex gnus-summary-save-body-in-file
7881 Append the article body to an ordinary file. Uses the function in the
7882 @code{gnus-file-save-name} variable to get a file name to save the
7883 article in. The default is @code{gnus-numeric-save-name}.
7885 @item gnus-summary-write-body-to-file
7886 @findex gnus-summary-write-body-to-file
7887 Write the article body straight to an ordinary file. The file is
7888 overwritten if it exists. Uses the function in the
7889 @code{gnus-file-save-name} variable to get a file name to save the
7890 article in. The default is @code{gnus-numeric-save-name}.
7892 @item gnus-summary-save-in-folder
7893 @findex gnus-summary-save-in-folder
7894 @findex gnus-folder-save-name
7895 @findex gnus-Folder-save-name
7896 @vindex gnus-folder-save-name
7899 Save the article to an MH folder using @code{rcvstore} from the MH
7900 library. Uses the function in the @code{gnus-folder-save-name} variable
7901 to get a file name to save the article in. The default is
7902 @code{gnus-folder-save-name}, but you can also use
7903 @code{gnus-Folder-save-name}, which creates capitalized names.
7905 @item gnus-summary-save-in-vm
7906 @findex gnus-summary-save-in-vm
7907 Save the article in a VM folder. You have to have the VM mail
7908 reader to use this setting.
7910 @item gnus-summary-save-in-pipe
7911 @findex gnus-summary-save-in-pipe
7912 Pipe the article to a shell command. This function takes optional two
7913 arguments COMMAND and RAW. Valid values for COMMAND include:
7917 The executable command name and possibly arguments.
7919 You will be prompted for the command in the minibuffer.
7920 @item the symbol @code{default}@*
7921 It will be replaced with the command which the variable
7922 @code{gnus-summary-pipe-output-default-command} holds or the command
7923 last used for saving.
7926 Non-@code{nil} value for RAW overrides @code{:decode} and
7927 @code{:headers} properties (see below) and the raw article including all
7928 headers will be piped.
7931 The symbol of each function may have the following properties:
7935 The value non-@code{nil} means save decoded articles. This is
7936 meaningful only with @code{gnus-summary-save-in-file},
7937 @code{gnus-summary-save-body-in-file},
7938 @code{gnus-summary-write-to-file},
7939 @code{gnus-summary-write-body-to-file}, and
7940 @code{gnus-summary-save-in-pipe}.
7943 The value specifies an alternative function which appends, not
7944 overwrites, articles to a file. This implies that when saving many
7945 articles at a time, @code{gnus-prompt-before-saving} is bound to
7946 @code{t} and all articles are saved in a single file. This is
7947 meaningful only with @code{gnus-summary-write-to-file} and
7948 @code{gnus-summary-write-body-to-file}.
7951 The value specifies the symbol of a variable of which the value
7952 specifies headers to be saved. If it is omitted,
7953 @code{gnus-save-all-headers} and @code{gnus-saved-headers} control what
7954 headers should be saved.
7957 @vindex gnus-article-save-directory
7958 All of these functions, except for the last one, will save the article
7959 in the @code{gnus-article-save-directory}, which is initialized from the
7960 @env{SAVEDIR} environment variable. This is @file{~/News/} by
7963 As you can see above, the functions use different functions to find a
7964 suitable name of a file to save the article in. Below is a list of
7965 available functions that generate names:
7969 @item gnus-Numeric-save-name
7970 @findex gnus-Numeric-save-name
7971 File names like @file{~/News/Alt.andrea-dworkin/45}.
7973 @item gnus-numeric-save-name
7974 @findex gnus-numeric-save-name
7975 File names like @file{~/News/alt.andrea-dworkin/45}.
7977 @item gnus-Plain-save-name
7978 @findex gnus-Plain-save-name
7979 File names like @file{~/News/Alt.andrea-dworkin}.
7981 @item gnus-plain-save-name
7982 @findex gnus-plain-save-name
7983 File names like @file{~/News/alt.andrea-dworkin}.
7985 @item gnus-sender-save-name
7986 @findex gnus-sender-save-name
7987 File names like @file{~/News/larsi}.
7990 @vindex gnus-split-methods
7991 You can have Gnus suggest where to save articles by plonking a regexp into
7992 the @code{gnus-split-methods} alist. For instance, if you would like to
7993 save articles related to Gnus in the file @file{gnus-stuff}, and articles
7994 related to VM in @file{vm-stuff}, you could set this variable to something
7998 (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
7999 ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
8000 (my-choosing-function "../other-dir/my-stuff")
8001 ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
8004 We see that this is a list where each element is a list that has two
8005 elements---the @dfn{match} and the @dfn{file}. The match can either be
8006 a string (in which case it is used as a regexp to match on the article
8007 head); it can be a symbol (which will be called as a function with the
8008 group name as a parameter); or it can be a list (which will be
8009 @code{eval}ed). If any of these actions have a non-@code{nil} result,
8010 the @dfn{file} will be used as a default prompt. In addition, the
8011 result of the operation itself will be used if the function or form
8012 called returns a string or a list of strings.
8014 You basically end up with a list of file names that might be used when
8015 saving the current article. (All ``matches'' will be used.) You will
8016 then be prompted for what you really want to use as a name, with file
8017 name completion over the results from applying this variable.
8019 This variable is @code{((gnus-article-archive-name))} by default, which
8020 means that Gnus will look at the articles it saves for an
8021 @code{Archive-name} line and use that as a suggestion for the file
8024 Here's an example function to clean up file names somewhat. If you have
8025 lots of mail groups called things like
8026 @samp{nnml:mail.whatever}, you may want to chop off the beginning of
8027 these group names before creating the file name to save to. The
8028 following will do just that:
8031 (defun my-save-name (group)
8032 (when (string-match "^nnml:mail." group)
8033 (substring group (match-end 0))))
8035 (setq gnus-split-methods
8036 '((gnus-article-archive-name)
8041 @vindex gnus-use-long-file-name
8042 Finally, you have the @code{gnus-use-long-file-name} variable. If it is
8043 @code{nil}, all the preceding functions will replace all periods
8044 (@samp{.}) in the group names with slashes (@samp{/})---which means that
8045 the functions will generate hierarchies of directories instead of having
8046 all the files in the top level directory
8047 (@file{~/News/alt/andrea-dworkin} instead of
8048 @file{~/News/alt.andrea-dworkin}.) This variable is @code{t} by default
8049 on most systems. However, for historical reasons, this is @code{nil} on
8050 Xenix and usg-unix-v machines by default.
8052 This function also affects kill and score file names. If this variable
8053 is a list, and the list contains the element @code{not-score}, long file
8054 names will not be used for score files, if it contains the element
8055 @code{not-save}, long file names will not be used for saving, and if it
8056 contains the element @code{not-kill}, long file names will not be used
8059 If you'd like to save articles in a hierarchy that looks something like
8063 (setq gnus-use-long-file-name '(not-save)) ; @r{to get a hierarchy}
8064 (setq gnus-default-article-saver
8065 'gnus-summary-save-in-file) ; @r{no encoding}
8068 Then just save with @kbd{o}. You'd then read this hierarchy with
8069 ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
8070 the top level directory as the argument (@file{~/News/}). Then just walk
8071 around to the groups/directories with @code{nneething}.
8074 @node Decoding Articles
8075 @section Decoding Articles
8076 @cindex decoding articles
8078 Sometime users post articles (or series of articles) that have been
8079 encoded in some way or other. Gnus can decode them for you.
8082 * Uuencoded Articles:: Uudecode articles.
8083 * Shell Archives:: Unshar articles.
8084 * PostScript Files:: Split PostScript.
8085 * Other Files:: Plain save and binhex.
8086 * Decoding Variables:: Variables for a happy decoding.
8087 * Viewing Files:: You want to look at the result of the decoding?
8091 @cindex article series
8092 All these functions use the process/prefix convention
8093 (@pxref{Process/Prefix}) for finding out what articles to work on, with
8094 the extension that a ``single article'' means ``a single series''. Gnus
8095 can find out by itself what articles belong to a series, decode all the
8096 articles and unpack/view/save the resulting file(s).
8098 Gnus guesses what articles are in the series according to the following
8099 simplish rule: The subjects must be (nearly) identical, except for the
8100 last two numbers of the line. (Spaces are largely ignored, however.)
8102 For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus
8103 will find all the articles that match the regexp @samp{^cat.gif
8104 ([0-9]+/[0-9]+).*$}.
8106 Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a
8107 series}, will not be properly recognized by any of the automatic viewing
8108 commands, and you have to mark the articles manually with @kbd{#}.
8111 @node Uuencoded Articles
8112 @subsection Uuencoded Articles
8114 @cindex uuencoded articles
8119 @kindex X u (Summary)
8120 @findex gnus-uu-decode-uu
8121 @c @icon{gnus-uu-decode-uu}
8122 Uudecodes the current series (@code{gnus-uu-decode-uu}).
8125 @kindex X U (Summary)
8126 @findex gnus-uu-decode-uu-and-save
8127 Uudecodes and saves the current series
8128 (@code{gnus-uu-decode-uu-and-save}).
8131 @kindex X v u (Summary)
8132 @findex gnus-uu-decode-uu-view
8133 Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}).
8136 @kindex X v U (Summary)
8137 @findex gnus-uu-decode-uu-and-save-view
8138 Uudecodes, views and saves the current series
8139 (@code{gnus-uu-decode-uu-and-save-view}).
8143 Remember that these all react to the presence of articles marked with
8144 the process mark. If, for instance, you'd like to decode and save an
8145 entire newsgroup, you'd typically do @kbd{M P a}
8146 (@code{gnus-uu-mark-all}) and then @kbd{X U}
8147 (@code{gnus-uu-decode-uu-and-save}).
8149 All this is very much different from how @code{gnus-uu} worked with
8150 @sc{gnus 4.1}, where you had explicit keystrokes for everything under
8151 the sun. This version of @code{gnus-uu} generally assumes that you mark
8152 articles in some way (@pxref{Setting Process Marks}) and then press
8155 @vindex gnus-uu-notify-files
8156 Note: When trying to decode articles that have names matching
8157 @code{gnus-uu-notify-files}, which is hard-coded to
8158 @samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will
8159 automatically post an article on @samp{comp.unix.wizards} saying that
8160 you have just viewed the file in question. This feature can't be turned
8164 @node Shell Archives
8165 @subsection Shell Archives
8167 @cindex shell archives
8168 @cindex shared articles
8170 Shell archives (``shar files'') used to be a popular way to distribute
8171 sources, but it isn't used all that much today. In any case, we have
8172 some commands to deal with these:
8177 @kindex X s (Summary)
8178 @findex gnus-uu-decode-unshar
8179 Unshars the current series (@code{gnus-uu-decode-unshar}).
8182 @kindex X S (Summary)
8183 @findex gnus-uu-decode-unshar-and-save
8184 Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}).
8187 @kindex X v s (Summary)
8188 @findex gnus-uu-decode-unshar-view
8189 Unshars and views the current series (@code{gnus-uu-decode-unshar-view}).
8192 @kindex X v S (Summary)
8193 @findex gnus-uu-decode-unshar-and-save-view
8194 Unshars, views and saves the current series
8195 (@code{gnus-uu-decode-unshar-and-save-view}).
8199 @node PostScript Files
8200 @subsection PostScript Files
8206 @kindex X p (Summary)
8207 @findex gnus-uu-decode-postscript
8208 Unpack the current PostScript series (@code{gnus-uu-decode-postscript}).
8211 @kindex X P (Summary)
8212 @findex gnus-uu-decode-postscript-and-save
8213 Unpack and save the current PostScript series
8214 (@code{gnus-uu-decode-postscript-and-save}).
8217 @kindex X v p (Summary)
8218 @findex gnus-uu-decode-postscript-view
8219 View the current PostScript series
8220 (@code{gnus-uu-decode-postscript-view}).
8223 @kindex X v P (Summary)
8224 @findex gnus-uu-decode-postscript-and-save-view
8225 View and save the current PostScript series
8226 (@code{gnus-uu-decode-postscript-and-save-view}).
8231 @subsection Other Files
8235 @kindex X o (Summary)
8236 @findex gnus-uu-decode-save
8237 Save the current series
8238 (@code{gnus-uu-decode-save}).
8241 @kindex X b (Summary)
8242 @findex gnus-uu-decode-binhex
8243 Unbinhex the current series (@code{gnus-uu-decode-binhex}). This
8244 doesn't really work yet.
8247 @kindex X Y (Summary)
8248 @findex gnus-uu-decode-yenc
8249 yEnc-decode the current series and save it (@code{gnus-uu-decode-yenc}).
8253 @node Decoding Variables
8254 @subsection Decoding Variables
8256 Adjective, not verb.
8259 * Rule Variables:: Variables that say how a file is to be viewed.
8260 * Other Decode Variables:: Other decode variables.
8261 * Uuencoding and Posting:: Variables for customizing uuencoding.
8265 @node Rule Variables
8266 @subsubsection Rule Variables
8267 @cindex rule variables
8269 Gnus uses @dfn{rule variables} to decide how to view a file. All these
8270 variables are of the form
8273 (list '(regexp1 command2)
8280 @item gnus-uu-user-view-rules
8281 @vindex gnus-uu-user-view-rules
8283 This variable is consulted first when viewing files. If you wish to use,
8284 for instance, @code{sox} to convert an @file{.au} sound file, you could
8287 (setq gnus-uu-user-view-rules
8288 (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio")))
8291 @item gnus-uu-user-view-rules-end
8292 @vindex gnus-uu-user-view-rules-end
8293 This variable is consulted if Gnus couldn't make any matches from the
8294 user and default view rules.
8296 @item gnus-uu-user-archive-rules
8297 @vindex gnus-uu-user-archive-rules
8298 This variable can be used to say what commands should be used to unpack
8303 @node Other Decode Variables
8304 @subsubsection Other Decode Variables
8307 @vindex gnus-uu-grabbed-file-functions
8309 @item gnus-uu-grabbed-file-functions
8310 All functions in this list will be called right after each file has been
8311 successfully decoded---so that you can move or view files right away,
8312 and don't have to wait for all files to be decoded before you can do
8313 anything. Ready-made functions you can put in this list are:
8317 @item gnus-uu-grab-view
8318 @findex gnus-uu-grab-view
8321 @item gnus-uu-grab-move
8322 @findex gnus-uu-grab-move
8323 Move the file (if you're using a saving function.)
8326 @item gnus-uu-be-dangerous
8327 @vindex gnus-uu-be-dangerous
8328 Specifies what to do if unusual situations arise during decoding. If
8329 @code{nil}, be as conservative as possible. If @code{t}, ignore things
8330 that didn't work, and overwrite existing files. Otherwise, ask each
8333 @item gnus-uu-ignore-files-by-name
8334 @vindex gnus-uu-ignore-files-by-name
8335 Files with name matching this regular expression won't be viewed.
8337 @item gnus-uu-ignore-files-by-type
8338 @vindex gnus-uu-ignore-files-by-type
8339 Files with a @acronym{MIME} type matching this variable won't be viewed.
8340 Note that Gnus tries to guess what type the file is based on the name.
8341 @code{gnus-uu} is not a @acronym{MIME} package (yet), so this is slightly
8344 @item gnus-uu-tmp-dir
8345 @vindex gnus-uu-tmp-dir
8346 Where @code{gnus-uu} does its work.
8348 @item gnus-uu-do-not-unpack-archives
8349 @vindex gnus-uu-do-not-unpack-archives
8350 Non-@code{nil} means that @code{gnus-uu} won't peek inside archives
8351 looking for files to display.
8353 @item gnus-uu-view-and-save
8354 @vindex gnus-uu-view-and-save
8355 Non-@code{nil} means that the user will always be asked to save a file
8358 @item gnus-uu-ignore-default-view-rules
8359 @vindex gnus-uu-ignore-default-view-rules
8360 Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing
8363 @item gnus-uu-ignore-default-archive-rules
8364 @vindex gnus-uu-ignore-default-archive-rules
8365 Non-@code{nil} means that @code{gnus-uu} will ignore the default archive
8368 @item gnus-uu-kill-carriage-return
8369 @vindex gnus-uu-kill-carriage-return
8370 Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns
8373 @item gnus-uu-unmark-articles-not-decoded
8374 @vindex gnus-uu-unmark-articles-not-decoded
8375 Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully
8376 decoded articles as unread.
8378 @item gnus-uu-correct-stripped-uucode
8379 @vindex gnus-uu-correct-stripped-uucode
8380 Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix
8381 uuencoded files that have had trailing spaces deleted.
8383 @item gnus-uu-pre-uudecode-hook
8384 @vindex gnus-uu-pre-uudecode-hook
8385 Hook run before sending a message to @code{uudecode}.
8387 @item gnus-uu-view-with-metamail
8388 @vindex gnus-uu-view-with-metamail
8390 Non-@code{nil} means that @code{gnus-uu} will ignore the viewing
8391 commands defined by the rule variables and just fudge a @acronym{MIME}
8392 content type based on the file name. The result will be fed to
8393 @code{metamail} for viewing.
8395 @item gnus-uu-save-in-digest
8396 @vindex gnus-uu-save-in-digest
8397 Non-@code{nil} means that @code{gnus-uu}, when asked to save without
8398 decoding, will save in digests. If this variable is @code{nil},
8399 @code{gnus-uu} will just save everything in a file without any
8400 embellishments. The digesting almost conforms to RFC 1153---no easy way
8401 to specify any meaningful volume and issue numbers were found, so I
8402 simply dropped them.
8407 @node Uuencoding and Posting
8408 @subsubsection Uuencoding and Posting
8412 @item gnus-uu-post-include-before-composing
8413 @vindex gnus-uu-post-include-before-composing
8414 Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode
8415 before you compose the article. If this variable is @code{t}, you can
8416 either include an encoded file with @kbd{C-c C-i} or have one included
8417 for you when you post the article.
8419 @item gnus-uu-post-length
8420 @vindex gnus-uu-post-length
8421 Maximum length of an article. The encoded file will be split into how
8422 many articles it takes to post the entire file.
8424 @item gnus-uu-post-threaded
8425 @vindex gnus-uu-post-threaded
8426 Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a
8427 thread. This may not be smart, as no other decoder I have seen is able
8428 to follow threads when collecting uuencoded articles. (Well, I have
8429 seen one package that does that---@code{gnus-uu}, but somehow, I don't
8430 think that counts@dots{}) Default is @code{nil}.
8432 @item gnus-uu-post-separate-description
8433 @vindex gnus-uu-post-separate-description
8434 Non-@code{nil} means that the description will be posted in a separate
8435 article. The first article will typically be numbered (0/x). If this
8436 variable is @code{nil}, the description the user enters will be included
8437 at the beginning of the first article, which will be numbered (1/x).
8438 Default is @code{t}.
8444 @subsection Viewing Files
8445 @cindex viewing files
8446 @cindex pseudo-articles
8448 After decoding, if the file is some sort of archive, Gnus will attempt
8449 to unpack the archive and see if any of the files in the archive can be
8450 viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz}
8451 containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will
8452 uncompress and de-tar the main file, and then view the two pictures.
8453 This unpacking process is recursive, so if the archive contains archives
8454 of archives, it'll all be unpacked.
8456 Finally, Gnus will normally insert a @dfn{pseudo-article} for each
8457 extracted file into the summary buffer. If you go to these
8458 ``articles'', you will be prompted for a command to run (usually Gnus
8459 will make a suggestion), and then the command will be run.
8461 @vindex gnus-view-pseudo-asynchronously
8462 If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait
8463 until the viewing is done before proceeding.
8465 @vindex gnus-view-pseudos
8466 If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert
8467 the pseudo-articles into the summary buffer, but view them
8468 immediately. If this variable is @code{not-confirm}, the user won't even
8469 be asked for a confirmation before viewing is done.
8471 @vindex gnus-view-pseudos-separately
8472 If @code{gnus-view-pseudos-separately} is non-@code{nil}, one
8473 pseudo-article will be created for each file to be viewed. If
8474 @code{nil}, all files that use the same viewing command will be given as
8475 a list of parameters to that command.
8477 @vindex gnus-insert-pseudo-articles
8478 If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert
8479 pseudo-articles when decoding. It is @code{t} by default.
8481 So; there you are, reading your @emph{pseudo-articles} in your
8482 @emph{virtual newsgroup} from the @emph{virtual server}; and you think:
8483 Why isn't anything real anymore? How did we get here?
8486 @node Article Treatment
8487 @section Article Treatment
8489 Reading through this huge manual, you may have quite forgotten that the
8490 object of newsreaders is to actually, like, read what people have
8491 written. Reading articles. Unfortunately, people are quite bad at
8492 writing, so there are tons of functions and variables to make reading
8493 these articles easier.
8496 * Article Highlighting:: You want to make the article look like fruit salad.
8497 * Article Fontisizing:: Making emphasized text look nice.
8498 * Article Hiding:: You also want to make certain info go away.
8499 * Article Washing:: Lots of way-neat functions to make life better.
8500 * Article Header:: Doing various header transformations.
8501 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
8502 * Article Button Levels:: Controlling appearance of buttons.
8503 * Article Date:: Grumble, UT!
8504 * Article Display:: Display various stuff:
8505 X-Face, Picons, Gravatars, Smileys.
8506 * Article Signature:: What is a signature?