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.14}
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.14
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.14
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-limit
3326 List groups limited within the current selection
3327 (@code{gnus-group-list-limit}).
3331 @findex gnus-group-list-flush
3332 Flush groups from the current selection (@code{gnus-group-list-flush}).
3336 @findex gnus-group-list-plus
3337 List groups plus the current selection (@code{gnus-group-list-plus}).
3341 @vindex gnus-permanently-visible-groups
3342 @cindex visible group parameter
3343 Groups that match the @code{gnus-permanently-visible-groups} regexp will
3344 always be shown, whether they have unread articles or not. You can also
3345 add the @code{visible} element to the group parameters in question to
3346 get the same effect.
3348 @vindex gnus-list-groups-with-ticked-articles
3349 Groups that have just ticked articles in it are normally listed in the
3350 group buffer. If @code{gnus-list-groups-with-ticked-articles} is
3351 @code{nil}, these groups will be treated just like totally empty
3352 groups. It is @code{t} by default.
3355 @node Sorting Groups
3356 @section Sorting Groups
3357 @cindex sorting groups
3359 @kindex C-c C-s (Group)
3360 @findex gnus-group-sort-groups
3361 @vindex gnus-group-sort-function
3362 The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the
3363 group buffer according to the function(s) given by the
3364 @code{gnus-group-sort-function} variable. Available sorting functions
3369 @item gnus-group-sort-by-alphabet
3370 @findex gnus-group-sort-by-alphabet
3371 Sort the group names alphabetically. This is the default.
3373 @item gnus-group-sort-by-real-name
3374 @findex gnus-group-sort-by-real-name
3375 Sort the group alphabetically on the real (unprefixed) group names.
3377 @item gnus-group-sort-by-level
3378 @findex gnus-group-sort-by-level
3379 Sort by group level.
3381 @item gnus-group-sort-by-score
3382 @findex gnus-group-sort-by-score
3383 Sort by group score. @xref{Group Score}.
3385 @item gnus-group-sort-by-rank
3386 @findex gnus-group-sort-by-rank
3387 Sort by group score and then the group level. The level and the score
3388 are, when taken together, the group's @dfn{rank}. @xref{Group Score}.
3390 @item gnus-group-sort-by-unread
3391 @findex gnus-group-sort-by-unread
3392 Sort by number of unread articles.
3394 @item gnus-group-sort-by-method
3395 @findex gnus-group-sort-by-method
3396 Sort alphabetically on the select method.
3398 @item gnus-group-sort-by-server
3399 @findex gnus-group-sort-by-server
3400 Sort alphabetically on the Gnus server name.
3405 @code{gnus-group-sort-function} can also be a list of sorting
3406 functions. In that case, the most significant sort key function must be
3410 There are also a number of commands for sorting directly according to
3411 some sorting criteria:
3415 @kindex G S a (Group)
3416 @findex gnus-group-sort-groups-by-alphabet
3417 Sort the group buffer alphabetically by group name
3418 (@code{gnus-group-sort-groups-by-alphabet}).
3421 @kindex G S u (Group)
3422 @findex gnus-group-sort-groups-by-unread
3423 Sort the group buffer by the number of unread articles
3424 (@code{gnus-group-sort-groups-by-unread}).
3427 @kindex G S l (Group)
3428 @findex gnus-group-sort-groups-by-level
3429 Sort the group buffer by group level
3430 (@code{gnus-group-sort-groups-by-level}).
3433 @kindex G S v (Group)
3434 @findex gnus-group-sort-groups-by-score
3435 Sort the group buffer by group score
3436 (@code{gnus-group-sort-groups-by-score}). @xref{Group Score}.
3439 @kindex G S r (Group)
3440 @findex gnus-group-sort-groups-by-rank
3441 Sort the group buffer by group rank
3442 (@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}.
3445 @kindex G S m (Group)
3446 @findex gnus-group-sort-groups-by-method
3447 Sort the group buffer alphabetically by back end name@*
3448 (@code{gnus-group-sort-groups-by-method}).
3451 @kindex G S n (Group)
3452 @findex gnus-group-sort-groups-by-real-name
3453 Sort the group buffer alphabetically by real (unprefixed) group name
3454 (@code{gnus-group-sort-groups-by-real-name}).
3458 All the commands below obey the process/prefix convention
3459 (@pxref{Process/Prefix}).
3461 When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
3462 commands will sort in reverse order.
3464 You can also sort a subset of the groups:
3468 @kindex G P a (Group)
3469 @findex gnus-group-sort-selected-groups-by-alphabet
3470 Sort the groups alphabetically by group name
3471 (@code{gnus-group-sort-selected-groups-by-alphabet}).
3474 @kindex G P u (Group)
3475 @findex gnus-group-sort-selected-groups-by-unread
3476 Sort the groups by the number of unread articles
3477 (@code{gnus-group-sort-selected-groups-by-unread}).
3480 @kindex G P l (Group)
3481 @findex gnus-group-sort-selected-groups-by-level
3482 Sort the groups by group level
3483 (@code{gnus-group-sort-selected-groups-by-level}).
3486 @kindex G P v (Group)
3487 @findex gnus-group-sort-selected-groups-by-score
3488 Sort the groups by group score
3489 (@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}.
3492 @kindex G P r (Group)
3493 @findex gnus-group-sort-selected-groups-by-rank
3494 Sort the groups by group rank
3495 (@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}.
3498 @kindex G P m (Group)
3499 @findex gnus-group-sort-selected-groups-by-method
3500 Sort the groups alphabetically by back end name@*
3501 (@code{gnus-group-sort-selected-groups-by-method}).
3504 @kindex G P n (Group)
3505 @findex gnus-group-sort-selected-groups-by-real-name
3506 Sort the groups alphabetically by real (unprefixed) group name
3507 (@code{gnus-group-sort-selected-groups-by-real-name}).
3510 @kindex G P s (Group)
3511 @findex gnus-group-sort-selected-groups
3512 Sort the groups according to @code{gnus-group-sort-function}.
3516 And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually
3520 @node Group Maintenance
3521 @section Group Maintenance
3522 @cindex bogus groups
3527 @findex gnus-group-check-bogus-groups
3528 Find bogus groups and delete them
3529 (@code{gnus-group-check-bogus-groups}).
3533 @findex gnus-group-find-new-groups
3534 Find new groups and process them (@code{gnus-group-find-new-groups}).
3535 With 1 @kbd{C-u}, use the @code{ask-server} method to query the server
3536 for new groups. With 2 @kbd{C-u}'s, use most complete method possible
3537 to query the server for new groups, and subscribe the new groups as
3541 @kindex C-c C-x (Group)
3542 @findex gnus-group-expire-articles
3543 @cindex expiring mail
3544 Run all expirable articles in the current group through the expiry
3545 process (if any) (@code{gnus-group-expire-articles}). That is, delete
3546 all expirable articles in the group that have been around for a while.
3547 (@pxref{Expiring Mail}).
3550 @kindex C-c C-M-x (Group)
3551 @findex gnus-group-expire-all-groups
3552 @cindex expiring mail
3553 Run all expirable articles in all groups through the expiry process
3554 (@code{gnus-group-expire-all-groups}).
3559 @node Browse Foreign Server
3560 @section Browse Foreign Server
3561 @cindex foreign servers
3562 @cindex browsing servers
3567 @findex gnus-group-browse-foreign-server
3568 You will be queried for a select method and a server name. Gnus will
3569 then attempt to contact this server and let you browse the groups there
3570 (@code{gnus-group-browse-foreign-server}).
3573 @findex gnus-browse-mode
3574 A new buffer with a list of available groups will appear. This buffer
3575 will use the @code{gnus-browse-mode}. This buffer looks a bit (well,
3576 a lot) like a normal group buffer.
3578 Here's a list of keystrokes available in the browse mode:
3583 @findex gnus-group-next-group
3584 Go to the next group (@code{gnus-group-next-group}).
3588 @findex gnus-group-prev-group
3589 Go to the previous group (@code{gnus-group-prev-group}).
3592 @kindex SPACE (Browse)
3593 @findex gnus-browse-read-group
3594 Enter the current group and display the first article
3595 (@code{gnus-browse-read-group}).
3598 @kindex RET (Browse)
3599 @findex gnus-browse-select-group
3600 Enter the current group (@code{gnus-browse-select-group}).
3604 @findex gnus-browse-unsubscribe-current-group
3605 @vindex gnus-browse-subscribe-newsgroup-method
3606 Unsubscribe to the current group, or, as will be the case here,
3607 subscribe to it (@code{gnus-browse-unsubscribe-current-group}). You
3608 can affect the way the new group is entered into the Group buffer
3609 using the variable @code{gnus-browse-subscribe-newsgroup-method}. See
3610 @pxref{Subscription Methods} for available options.
3616 @findex gnus-browse-exit
3617 Exit browse mode (@code{gnus-browse-exit}).
3621 @findex gnus-browse-describe-group
3622 Describe the current group (@code{gnus-browse-describe-group}).
3626 @findex gnus-browse-describe-briefly
3627 Describe browse mode briefly (well, there's not much to describe, is
3628 there) (@code{gnus-browse-describe-briefly}).
3633 @section Exiting Gnus
3634 @cindex exiting Gnus
3636 Yes, Gnus is ex(c)iting.
3641 @findex gnus-group-suspend
3642 Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus,
3643 but it kills all buffers except the Group buffer. I'm not sure why this
3644 is a gain, but then who am I to judge?
3648 @findex gnus-group-exit
3649 @c @icon{gnus-group-exit}
3650 Quit Gnus (@code{gnus-group-exit}).
3654 @findex gnus-group-quit
3655 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
3656 The dribble file will be saved, though (@pxref{Auto Save}).
3659 @vindex gnus-exit-gnus-hook
3660 @vindex gnus-suspend-gnus-hook
3661 @vindex gnus-after-exiting-gnus-hook
3662 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
3663 @code{gnus-exit-gnus-hook} is called when you quit Gnus, while
3664 @code{gnus-after-exiting-gnus-hook} is called as the final item when
3670 Miss Lisa Cannifax, while sitting in English class, felt her feet go
3671 numbly heavy and herself fall into a hazy trance as the boy sitting
3672 behind her drew repeated lines with his pencil across the back of her
3678 @section Group Topics
3681 If you read lots and lots of groups, it might be convenient to group
3682 them hierarchically according to topics. You put your Emacs groups over
3683 here, your sex groups over there, and the rest (what, two groups or so?)
3684 you put in some misc section that you never bother with anyway. You can
3685 even group the Emacs sex groups as a sub-topic to either the Emacs
3686 groups or the sex groups---or both! Go wild!
3690 \gnusfigure{Group Topics}{400}{
3691 \put(75,50){\epsfig{figure=ps/group-topic,height=9cm}}
3702 2: alt.religion.emacs
3705 0: comp.talk.emacs.recovery
3707 8: comp.binaries.fractals
3708 13: comp.sources.unix
3711 @findex gnus-topic-mode
3713 To get this @emph{fab} functionality you simply turn on (ooh!) the
3714 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
3715 is a toggling command.)
3717 Go ahead, just try it. I'll still be here when you get back. La de
3718 dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back?
3719 Yes, and now press @kbd{l}. There. All your groups are now listed
3720 under @samp{misc}. Doesn't that make you feel all warm and fuzzy?
3723 If you want this permanently enabled, you should add that minor mode to
3724 the hook for the group mode. Put the following line in your
3725 @file{~/.gnus.el} file:
3728 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
3732 * Topic Commands:: Interactive E-Z commands.
3733 * Topic Variables:: How to customize the topics the Lisp Way.
3734 * Topic Sorting:: Sorting each topic individually.
3735 * Topic Topology:: A map of the world.
3736 * Topic Parameters:: Parameters that apply to all groups in a topic.
3740 @node Topic Commands
3741 @subsection Topic Commands
3742 @cindex topic commands
3744 When the topic minor mode is turned on, a new @kbd{T} submap will be
3745 available. In addition, a few of the standard keys change their
3746 definitions slightly.
3748 In general, the following kinds of operations are possible on topics.
3749 First of all, you want to create topics. Secondly, you want to put
3750 groups in topics and to move them around until you have an order you
3751 like. The third kind of operation is to show/hide parts of the whole
3752 shebang. You might want to hide a topic including its subtopics and
3753 groups, to get a better overview of the other groups.
3755 Here is a list of the basic keys that you might need to set up topics
3762 @findex gnus-topic-create-topic
3763 Prompt for a new topic name and create it
3764 (@code{gnus-topic-create-topic}).
3768 @kindex T TAB (Topic)
3770 @findex gnus-topic-indent
3771 ``Indent'' the current topic so that it becomes a sub-topic of the
3772 previous topic (@code{gnus-topic-indent}). If given a prefix,
3773 ``un-indent'' the topic instead.
3776 @kindex M-TAB (Topic)
3777 @findex gnus-topic-unindent
3778 ``Un-indent'' the current topic so that it becomes a sub-topic of the
3779 parent of its current parent (@code{gnus-topic-unindent}).
3783 The following two keys can be used to move groups and topics around.
3784 They work like the well-known cut and paste. @kbd{C-k} is like cut and
3785 @kbd{C-y} is like paste. Of course, this being Emacs, we use the terms
3786 kill and yank rather than cut and paste.
3792 @findex gnus-topic-kill-group
3793 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
3794 topic will be removed along with the topic.
3798 @findex gnus-topic-yank-group
3799 Yank the previously killed group or topic
3800 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
3803 So, to move a topic to the beginning of the list of topics, just hit
3804 @kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then,
3805 move the cursor to the beginning of the buffer (just below the ``Gnus''
3806 topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and
3807 paste. Like I said -- E-Z.
3809 You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So
3810 you can move topics around as well as groups.
3814 After setting up the topics the way you like them, you might wish to
3815 hide a topic, or to show it again. That's why we have the following
3822 @findex gnus-topic-select-group
3824 Either select a group or fold a topic (@code{gnus-topic-select-group}).
3825 When you perform this command on a group, you'll enter the group, as
3826 usual. When done on a topic line, the topic will be folded (if it was
3827 visible) or unfolded (if it was folded already). So it's basically a
3828 toggling command on topics. In addition, if you give a numerical
3829 prefix, group on that level (and lower) will be displayed.
3833 Now for a list of other commands, in no particular order.
3839 @findex gnus-topic-move-group
3840 Move the current group to some other topic
3841 (@code{gnus-topic-move-group}). This command uses the process/prefix
3842 convention (@pxref{Process/Prefix}).
3846 @findex gnus-topic-jump-to-topic
3847 Go to a topic (@code{gnus-topic-jump-to-topic}).
3851 @findex gnus-topic-copy-group
3852 Copy the current group to some other topic
3853 (@code{gnus-topic-copy-group}). This command uses the process/prefix
3854 convention (@pxref{Process/Prefix}).
3858 @findex gnus-topic-hide-topic
3859 Hide the current topic (@code{gnus-topic-hide-topic}). If given
3860 a prefix, hide the topic permanently.
3864 @findex gnus-topic-show-topic
3865 Show the current topic (@code{gnus-topic-show-topic}). If given
3866 a prefix, show the topic permanently.
3870 @findex gnus-topic-remove-group
3871 Remove a group from the current topic (@code{gnus-topic-remove-group}).
3872 This command is mainly useful if you have the same group in several
3873 topics and wish to remove it from one of the topics. You may also
3874 remove a group from all topics, but in that case, Gnus will add it to
3875 the root topic the next time you start Gnus. In fact, all new groups
3876 (which, naturally, don't belong to any topic) will show up in the root
3879 This command uses the process/prefix convention
3880 (@pxref{Process/Prefix}).
3884 @findex gnus-topic-move-matching
3885 Move all groups that match some regular expression to a topic
3886 (@code{gnus-topic-move-matching}).
3890 @findex gnus-topic-copy-matching
3891 Copy all groups that match some regular expression to a topic
3892 (@code{gnus-topic-copy-matching}).
3896 @findex gnus-topic-toggle-display-empty-topics
3897 Toggle hiding empty topics
3898 (@code{gnus-topic-toggle-display-empty-topics}).
3902 @findex gnus-topic-mark-topic
3903 Mark all groups in the current topic with the process mark
3904 (@code{gnus-topic-mark-topic}). This command works recursively on
3905 sub-topics unless given a prefix.
3908 @kindex T M-# (Topic)
3909 @findex gnus-topic-unmark-topic
3910 Remove the process mark from all groups in the current topic
3911 (@code{gnus-topic-unmark-topic}). This command works recursively on
3912 sub-topics unless given a prefix.
3915 @kindex C-c C-x (Topic)
3916 @findex gnus-topic-expire-articles
3917 @cindex expiring mail
3918 Run all expirable articles in the current group or topic through the
3919 expiry process (if any)
3920 (@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
3924 @findex gnus-topic-rename
3925 Rename a topic (@code{gnus-topic-rename}).
3928 @kindex T DEL (Topic)
3929 @findex gnus-topic-delete
3930 Delete an empty topic (@code{gnus-topic-delete}).
3934 @findex gnus-topic-list-active
3935 List all groups that Gnus knows about in a topics-ified way
3936 (@code{gnus-topic-list-active}).
3939 @kindex T M-n (Topic)
3940 @findex gnus-topic-goto-next-topic
3941 Go to the next topic (@code{gnus-topic-goto-next-topic}).
3944 @kindex T M-p (Topic)
3945 @findex gnus-topic-goto-previous-topic
3946 Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
3950 @findex gnus-topic-edit-parameters
3951 @cindex group parameters
3952 @cindex topic parameters
3954 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
3955 @xref{Topic Parameters}.
3960 @node Topic Variables
3961 @subsection Topic Variables
3962 @cindex topic variables
3964 The previous section told you how to tell Gnus which topics to display.
3965 This section explains how to tell Gnus what to display about each topic.
3967 @vindex gnus-topic-line-format
3968 The topic lines themselves are created according to the
3969 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
3982 Number of groups in the topic.
3984 Number of unread articles in the topic.
3986 Number of unread articles in the topic and all its subtopics.
3989 @vindex gnus-topic-indent-level
3990 Each sub-topic (and the groups in the sub-topics) will be indented with
3991 @code{gnus-topic-indent-level} times the topic level number of spaces.
3994 @vindex gnus-topic-mode-hook
3995 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
3997 @vindex gnus-topic-display-empty-topics
3998 The @code{gnus-topic-display-empty-topics} says whether to display even
3999 topics that have no unread articles in them. The default is @code{t}.
4003 @subsection Topic Sorting
4004 @cindex topic sorting
4006 You can sort the groups in each topic individually with the following
4012 @kindex T S a (Topic)
4013 @findex gnus-topic-sort-groups-by-alphabet
4014 Sort the current topic alphabetically by group name
4015 (@code{gnus-topic-sort-groups-by-alphabet}).
4018 @kindex T S u (Topic)
4019 @findex gnus-topic-sort-groups-by-unread
4020 Sort the current topic by the number of unread articles
4021 (@code{gnus-topic-sort-groups-by-unread}).
4024 @kindex T S l (Topic)
4025 @findex gnus-topic-sort-groups-by-level
4026 Sort the current topic by group level
4027 (@code{gnus-topic-sort-groups-by-level}).
4030 @kindex T S v (Topic)
4031 @findex gnus-topic-sort-groups-by-score
4032 Sort the current topic by group score
4033 (@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}.
4036 @kindex T S r (Topic)
4037 @findex gnus-topic-sort-groups-by-rank
4038 Sort the current topic by group rank
4039 (@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}.
4042 @kindex T S m (Topic)
4043 @findex gnus-topic-sort-groups-by-method
4044 Sort the current topic alphabetically by back end name
4045 (@code{gnus-topic-sort-groups-by-method}).
4048 @kindex T S e (Topic)
4049 @findex gnus-topic-sort-groups-by-server
4050 Sort the current topic alphabetically by server name
4051 (@code{gnus-topic-sort-groups-by-server}).
4054 @kindex T S s (Topic)
4055 @findex gnus-topic-sort-groups
4056 Sort the current topic according to the function(s) given by the
4057 @code{gnus-group-sort-function} variable
4058 (@code{gnus-topic-sort-groups}).
4062 When given a prefix argument, all these commands will sort in reverse
4063 order. @xref{Sorting Groups}, for more information about group
4067 @node Topic Topology
4068 @subsection Topic Topology
4069 @cindex topic topology
4072 So, let's have a look at an example group buffer:
4079 2: alt.religion.emacs
4082 0: comp.talk.emacs.recovery
4084 8: comp.binaries.fractals
4085 13: comp.sources.unix
4089 So, here we have one top-level topic (@samp{Gnus}), two topics under
4090 that, and one sub-topic under one of the sub-topics. (There is always
4091 just one (1) top-level topic). This topology can be expressed as
4096 (("Emacs -- I wuw it!" visible)
4097 (("Naughty Emacs" visible)))
4101 @vindex gnus-topic-topology
4102 This is in fact how the variable @code{gnus-topic-topology} would look
4103 for the display above. That variable is saved in the @file{.newsrc.eld}
4104 file, and shouldn't be messed with manually---unless you really want
4105 to. Since this variable is read from the @file{.newsrc.eld} file,
4106 setting it in any other startup files will have no effect.
4108 This topology shows what topics are sub-topics of what topics (right),
4109 and which topics are visible. Two settings are currently
4110 allowed---@code{visible} and @code{invisible}.
4113 @node Topic Parameters
4114 @subsection Topic Parameters
4115 @cindex topic parameters
4117 All groups in a topic will inherit group parameters from the parent
4118 (and ancestor) topic parameters. All valid group parameters are valid
4119 topic parameters (@pxref{Group Parameters}). When the agent is
4120 enabled, all agent parameters (See Agent Parameters in @ref{Category
4121 Syntax}) are also valid topic parameters.
4123 In addition, the following parameters are only valid as topic
4128 When subscribing new groups by topic (@pxref{Subscription Methods}), the
4129 @code{subscribe} topic parameter says what groups go in what topic. Its
4130 value should be a regexp to match the groups that should go in that
4133 @item subscribe-level
4134 When subscribing new groups by topic (see the @code{subscribe} parameter),
4135 the group will be subscribed with the level specified in the
4136 @code{subscribe-level} instead of @code{gnus-level-default-subscribed}.
4140 Group parameters (of course) override topic parameters, and topic
4141 parameters in sub-topics override topic parameters in super-topics. You
4142 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
4143 verb, although you may feel free to disagree with me here.)
4150 2: alt.religion.emacs
4154 0: comp.talk.emacs.recovery
4156 8: comp.binaries.fractals
4157 13: comp.sources.unix
4162 The @samp{Emacs} topic has the topic parameter @code{(score-file
4163 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
4164 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
4165 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
4166 @* @samp{alt.religion.emacs} has the group parameter @code{(score-file
4167 . "religion.SCORE")}.
4169 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
4170 will get the @file{relief.SCORE} home score file. If you enter the same
4171 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
4172 score file. If you enter the group @samp{alt.religion.emacs}, you'll
4173 get the @file{religion.SCORE} home score file.
4175 This seems rather simple and self-evident, doesn't it? Well, yes. But
4176 there are some problems, especially with the @code{total-expiry}
4177 parameter. Say you have a mail group in two topics; one with
4178 @code{total-expiry} and one without. What happens when you do @kbd{M-x
4179 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
4180 of these topics you mean to expire articles from, so anything may
4181 happen. In fact, I hereby declare that it is @dfn{undefined} what
4182 happens. You just have to be careful if you do stuff like that.
4185 @node Non-ASCII Group Names
4186 @section Accessing groups of non-English names
4187 @cindex non-ascii group names
4189 There are some news servers that provide groups of which the names are
4190 expressed with their native languages in the world. For instance, in a
4191 certain news server there are some newsgroups of which the names are
4192 spelled in Chinese, where people are talking in Chinese. You can, of
4193 course, subscribe to such news groups using Gnus. Currently Gnus
4194 supports non-@acronym{ASCII} group names not only with the @code{nntp}
4195 back end but also with the @code{nnml} back end and the @code{nnrss}
4198 Every such group name is encoded by a certain charset in the server
4199 side (in an @acronym{NNTP} server its administrator determines the
4200 charset, but for groups in the other back ends it is determined by you).
4201 Gnus has to display the decoded ones for you in the group buffer and the
4202 article buffer, and needs to use the encoded ones when communicating
4203 with servers. However, Gnus doesn't know what charset is used for each
4204 non-@acronym{ASCII} group name. The following two variables are just
4205 the ones for telling Gnus what charset should be used for each group:
4208 @item gnus-group-name-charset-method-alist
4209 @vindex gnus-group-name-charset-method-alist
4210 An alist of select methods and charsets. The default value is
4211 @code{nil}. The names of groups in the server specified by that select
4212 method are all supposed to use the corresponding charset. For example:
4215 (setq gnus-group-name-charset-method-alist
4216 '(((nntp "news.com.cn") . cn-gb-2312)))
4219 Charsets specified for groups with this variable are preferred to the
4220 ones specified for the same groups with the
4221 @code{gnus-group-name-charset-group-alist} variable (see below).
4223 A select method can be very long, like:
4227 (nntp-address "news.gmane.org")
4228 (nntp-end-of-line "\n")
4229 (nntp-open-connection-function
4230 nntp-open-via-rlogin-and-telnet)
4231 (nntp-via-rlogin-command "ssh")
4232 (nntp-via-rlogin-command-switches
4233 ("-C" "-t" "-e" "none"))
4234 (nntp-via-address @dots{}))
4237 In that case, you can truncate it into @code{(nntp "gmane")} in this
4238 variable. That is, it is enough to contain only the back end name and
4241 @item gnus-group-name-charset-group-alist
4242 @cindex UTF-8 group names
4243 @vindex gnus-group-name-charset-group-alist
4244 An alist of regexp of group name and the charset for group names.
4245 @code{((".*" . utf-8))} is the default value if UTF-8 is supported,
4246 otherwise the default is @code{nil}. For example:
4249 (setq gnus-group-name-charset-group-alist
4250 '(("\\.com\\.cn:" . cn-gb-2312)
4254 Note that this variable is ignored if the match is made with
4255 @code{gnus-group-name-charset-method-alist}.
4258 Those two variables are used also to determine the charset for encoding
4259 and decoding non-@acronym{ASCII} group names that are in the back ends
4260 other than @code{nntp}. It means that it is you who determine it. If
4261 you do nothing, the charset used for group names in those back ends will
4262 all be @code{utf-8} because of the last element of
4263 @code{gnus-group-name-charset-group-alist}.
4265 There is one more important variable for non-@acronym{ASCII} group
4269 @item nnmail-pathname-coding-system
4270 @vindex nnmail-pathname-coding-system
4271 The value of this variable should be a coding system or @code{nil}. The
4272 default is @code{nil} in Emacs, or is the aliasee of the coding system
4273 named @code{file-name} (a certain coding system of which an alias is
4274 @code{file-name}) in XEmacs.
4276 The @code{nnml} back end, the @code{nnrss} back end, the @acronym{NNTP}
4277 marks feature (@pxref{NNTP marks}), the agent, and the cache use
4278 non-@acronym{ASCII} group names in those files and directories. This
4279 variable overrides the value of @code{file-name-coding-system} which
4280 specifies the coding system used when encoding and decoding those file
4281 names and directory names.
4283 In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
4284 is the only means to specify the coding system used to encode and decode
4285 file names. On the other hand, Emacs uses the value of
4286 @code{default-file-name-coding-system} if @code{file-name-coding-system}
4287 is @code{nil} or it is bound to the value of
4288 @code{nnmail-pathname-coding-system} which is @code{nil}.
4290 Normally the value of @code{default-file-name-coding-system} in Emacs or
4291 @code{nnmail-pathname-coding-system} in XEmacs is initialized according
4292 to the locale, so you will need to do nothing if the value is suitable
4293 to encode and decode non-@acronym{ASCII} group names.
4295 The value of this variable (or @code{default-file-name-coding-system})
4296 does not necessarily need to be the same value that is determined by
4297 @code{gnus-group-name-charset-method-alist} and
4298 @code{gnus-group-name-charset-group-alist}.
4300 If @code{default-file-name-coding-system} or this variable is
4301 initialized by default to @code{iso-latin-1} for example, although you
4302 want to subscribe to the groups spelled in Chinese, that is the most
4303 typical case where you have to customize
4304 @code{nnmail-pathname-coding-system}. The @code{utf-8} coding system is
4305 a good candidate for it. Otherwise, you may change the locale in your
4306 system so that @code{default-file-name-coding-system} or this variable
4307 may be initialized to an appropriate value.
4310 Note that when you copy or move articles from a non-@acronym{ASCII}
4311 group to another group, the charset used to encode and decode group
4312 names should be the same in both groups. Otherwise the Newsgroups
4313 header will be displayed incorrectly in the article buffer.
4316 @node Misc Group Stuff
4317 @section Misc Group Stuff
4320 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
4321 * Group Information:: Information and help on groups and Gnus.
4322 * Group Timestamp:: Making Gnus keep track of when you last read a group.
4323 * File Commands:: Reading and writing the Gnus files.
4324 * Sieve Commands:: Managing Sieve scripts.
4331 @cindex keys, reserved for users (Group)
4332 The key @kbd{v} is reserved for users. You can bind it to some
4333 command or better use it as a prefix key. For example:
4336 (define-key gnus-group-mode-map (kbd "v j d")
4339 (gnus-group-jump-to-group "nndraft:drafts")))
4342 On keys reserved for users in Emacs and on keybindings in general
4343 @xref{Keymaps, Keymaps, , emacs, The Emacs Editor}.
4347 @findex gnus-group-enter-server-mode
4348 Enter the server buffer (@code{gnus-group-enter-server-mode}).
4349 @xref{Server Buffer}.
4353 @findex gnus-group-post-news
4354 Start composing a message (a news by default)
4355 (@code{gnus-group-post-news}). If given a prefix, post to the group
4356 under the point. If the prefix is 1, prompt for a group to post to.
4357 Contrary to what the name of this function suggests, the prepared
4358 article might be a mail instead of a news, if a mail group is specified
4359 with the prefix argument. @xref{Composing Messages}.
4363 @findex gnus-group-mail
4364 Mail a message somewhere (@code{gnus-group-mail}). If given a prefix,
4365 use the posting style of the group under the point. If the prefix is 1,
4366 prompt for a group name to find the posting style.
4367 @xref{Composing Messages}.
4371 @findex gnus-group-news
4372 Start composing a news (@code{gnus-group-news}). If given a prefix,
4373 post to the group under the point. If the prefix is 1, prompt
4374 for group to post to. @xref{Composing Messages}.
4376 This function actually prepares a news even when using mail groups.
4377 This is useful for ``posting'' messages to mail groups without actually
4378 sending them over the network: they're just saved directly to the group
4379 in question. The corresponding back end must have a request-post method
4380 for this to work though.
4384 @findex gnus-group-compact-group
4386 Compact the group under point (@code{gnus-group-compact-group}).
4387 Currently implemented only in nnml (@pxref{Mail Spool}). This removes
4388 gaps between article numbers, hence getting a correct total article
4393 Variables for the group buffer:
4397 @item gnus-group-mode-hook
4398 @vindex gnus-group-mode-hook
4399 is called after the group buffer has been
4402 @item gnus-group-prepare-hook
4403 @vindex gnus-group-prepare-hook
4404 is called after the group buffer is
4405 generated. It may be used to modify the buffer in some strange,
4408 @item gnus-group-prepared-hook
4409 @vindex gnus-group-prepare-hook
4410 is called as the very last thing after the group buffer has been
4411 generated. It may be used to move point around, for instance.
4413 @item gnus-permanently-visible-groups
4414 @vindex gnus-permanently-visible-groups
4415 Groups matching this regexp will always be listed in the group buffer,
4416 whether they are empty or not.
4420 @node Scanning New Messages
4421 @subsection Scanning New Messages
4422 @cindex new messages
4423 @cindex scanning new news
4429 @findex gnus-group-get-new-news
4430 @c @icon{gnus-group-get-new-news}
4431 Check the server(s) for new articles. If the numerical prefix is used,
4432 this command will check only groups of level @var{arg} and lower
4433 (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this
4434 command will force a total re-reading of the active file(s) from the
4439 @findex gnus-group-get-new-news-this-group
4440 @vindex gnus-goto-next-group-when-activating
4441 @c @icon{gnus-group-get-new-news-this-group}
4442 Check whether new articles have arrived in the current group
4443 (@code{gnus-group-get-new-news-this-group}).
4444 @code{gnus-goto-next-group-when-activating} says whether this command is
4445 to move point to the next group or not. It is @code{t} by default.
4447 @findex gnus-activate-all-groups
4448 @cindex activating groups
4450 @kindex C-c M-g (Group)
4451 Activate absolutely all groups (@code{gnus-activate-all-groups}).
4456 @findex gnus-group-restart
4457 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
4458 file(s), closes the connection to all servers, clears up all run-time
4459 Gnus variables, and then starts Gnus all over again.
4463 @vindex gnus-get-new-news-hook
4464 @code{gnus-get-new-news-hook} is run just before checking for new news.
4466 @vindex gnus-after-getting-new-news-hook
4467 @code{gnus-after-getting-new-news-hook} is run after checking for new
4471 @node Group Information
4472 @subsection Group Information
4473 @cindex group information
4474 @cindex information on groups
4481 @findex gnus-group-fetch-faq
4482 @vindex gnus-group-faq-directory
4485 Try to fetch the @acronym{FAQ} for the current group
4486 (@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ}
4487 from @code{gnus-group-faq-directory}, which is usually a directory on
4488 a remote machine. This variable can also be a list of directories.
4489 In that case, giving a prefix to this command will allow you to choose
4490 between the various sites. @code{ange-ftp} (or @code{efs}) will be
4491 used for fetching the file.
4493 If fetching from the first site is unsuccessful, Gnus will attempt to go
4494 through @code{gnus-group-faq-directory} and try to open them one by one.
4498 @c @icon{gnus-group-describe-group}
4500 @kindex C-c C-d (Group)
4501 @cindex describing groups
4502 @cindex group description
4503 @findex gnus-group-describe-group
4504 Describe the current group (@code{gnus-group-describe-group}). If given
4505 a prefix, force Gnus to re-read the description from the server.
4509 @findex gnus-group-describe-all-groups
4510 Describe all groups (@code{gnus-group-describe-all-groups}). If given a
4511 prefix, force Gnus to re-read the description file from the server.
4518 @findex gnus-version
4519 Display current Gnus version numbers (@code{gnus-version}).
4523 @findex gnus-group-describe-briefly
4524 Give a very short help message (@code{gnus-group-describe-briefly}).
4527 @kindex C-c C-i (Group)
4530 @findex gnus-info-find-node
4531 Go to the Gnus info node (@code{gnus-info-find-node}).
4535 @node Group Timestamp
4536 @subsection Group Timestamp
4538 @cindex group timestamps
4540 It can be convenient to let Gnus keep track of when you last read a
4541 group. To set the ball rolling, you should add
4542 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
4545 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
4548 After doing this, each time you enter a group, it'll be recorded.
4550 This information can be displayed in various ways---the easiest is to
4551 use the @samp{%d} spec in the group line format:
4554 (setq gnus-group-line-format
4555 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
4558 This will result in lines looking like:
4561 * 0: mail.ding 19961002T012943
4562 0: custom 19961002T012713
4565 As you can see, the date is displayed in compact ISO 8601 format. This
4566 may be a bit too much, so to just display the date, you could say
4570 (setq gnus-group-line-format
4571 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
4574 If you would like greater control of the time format, you can use a
4575 user-defined format spec. Something like the following should do the
4579 (setq gnus-group-line-format
4580 "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n")
4581 (defun gnus-user-format-function-d (headers)
4582 (let ((time (gnus-group-timestamp gnus-tmp-group)))
4584 (format-time-string "%b %d %H:%M" time)
4590 @subsection File Commands
4591 @cindex file commands
4597 @findex gnus-group-read-init-file
4598 @vindex gnus-init-file
4599 @cindex reading init file
4600 Re-read the init file (@code{gnus-init-file}, which defaults to
4601 @file{~/.gnus.el}) (@code{gnus-group-read-init-file}).
4605 @findex gnus-group-save-newsrc
4606 @cindex saving .newsrc
4607 Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted)
4608 (@code{gnus-group-save-newsrc}). If given a prefix, force saving the
4609 file(s) whether Gnus thinks it is necessary or not.
4612 @c @kindex Z (Group)
4613 @c @findex gnus-group-clear-dribble
4614 @c Clear the dribble buffer (@code{gnus-group-clear-dribble}).
4619 @node Sieve Commands
4620 @subsection Sieve Commands
4621 @cindex group sieve commands
4623 Sieve is a server-side mail filtering language. In Gnus you can use
4624 the @code{sieve} group parameter (@pxref{Group Parameters}) to specify
4625 sieve rules that should apply to each group. Gnus provides two
4626 commands to translate all these group parameters into a proper Sieve
4627 script that can be transfered to the server somehow.
4629 @vindex gnus-sieve-file
4630 @vindex gnus-sieve-region-start
4631 @vindex gnus-sieve-region-end
4632 The generated Sieve script is placed in @code{gnus-sieve-file} (by
4633 default @file{~/.sieve}). The Sieve code that Gnus generate is placed
4634 between two delimiters, @code{gnus-sieve-region-start} and
4635 @code{gnus-sieve-region-end}, so you may write additional Sieve code
4636 outside these delimiters that will not be removed the next time you
4637 regenerate the Sieve script.
4639 @vindex gnus-sieve-crosspost
4640 The variable @code{gnus-sieve-crosspost} controls how the Sieve script
4641 is generated. If it is non-@code{nil} (the default) articles is
4642 placed in all groups that have matching rules, otherwise the article
4643 is only placed in the group with the first matching rule. For
4644 example, the group parameter @samp{(sieve address "sender"
4645 "owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve
4646 code if @code{gnus-sieve-crosspost} is @code{nil}. (When
4647 @code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same
4648 except that the line containing the call to @code{stop} is removed.)
4651 if address "sender" "owner-ding@@hpc.uh.edu" @{
4652 fileinto "INBOX.ding";
4657 @xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}.
4663 @findex gnus-sieve-generate
4664 @vindex gnus-sieve-file
4665 @cindex generating sieve script
4666 Regenerate a Sieve script from the @code{sieve} group parameters and
4667 put you into the @code{gnus-sieve-file} without saving it.
4671 @findex gnus-sieve-update
4672 @vindex gnus-sieve-file
4673 @cindex updating sieve script
4674 Regenerates the Gnus managed part of @code{gnus-sieve-file} using the
4675 @code{sieve} group parameters, save the file and upload it to the
4676 server using the @code{sieveshell} program.
4681 @node Summary Buffer
4682 @chapter Summary Buffer
4683 @cindex summary buffer
4685 A line for each article is displayed in the summary buffer. You can
4686 move around, read articles, post articles and reply to articles.
4688 The most common way to a summary buffer is to select a group from the
4689 group buffer (@pxref{Selecting a Group}).
4691 You can have as many summary buffers open as you wish.
4693 You can customize the Summary Mode tool bar, see @kbd{M-x
4694 customize-apropos RET gnus-summary-tool-bar}. This feature is only
4698 @cindex keys, reserved for users (Summary)
4699 The key @kbd{v} is reserved for users. You can bind it to some
4700 command or better use it as a prefix key. For example:
4702 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
4706 * Summary Buffer Format:: Deciding how the summary buffer is to look.
4707 * Summary Maneuvering:: Moving around the summary buffer.
4708 * Choosing Articles:: Reading articles.
4709 * Paging the Article:: Scrolling the current article.
4710 * Reply Followup and Post:: Posting articles.
4711 * Delayed Articles:: Send articles at a later time.
4712 * Marking Articles:: Marking articles as read, expirable, etc.
4713 * Limiting:: You can limit the summary buffer.
4714 * Threading:: How threads are made.
4715 * Sorting the Summary Buffer:: How articles and threads are sorted.
4716 * Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
4717 * Article Caching:: You may store articles in a cache.
4718 * Persistent Articles:: Making articles expiry-resistant.
4719 * Sticky Articles:: Article buffers that are not reused.
4720 * Article Backlog:: Having already read articles hang around.
4721 * Saving Articles:: Ways of customizing article saving.
4722 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
4723 * Article Treatment:: The article buffer can be mangled at will.
4724 * MIME Commands:: Doing MIMEy things with the articles.
4725 * Charsets:: Character set issues.
4726 * Article Commands:: Doing various things with the article buffer.
4727 * Summary Sorting:: Sorting the summary buffer in various ways.
4728 * Finding the Parent:: No child support? Get the parent.
4729 * Alternative Approaches:: Reading using non-default summaries.
4730 * Tree Display:: A more visual display of threads.
4731 * Mail Group Commands:: Some commands can only be used in mail groups.
4732 * Various Summary Stuff:: What didn't fit anywhere else.
4733 * Exiting the Summary Buffer:: Returning to the Group buffer,
4734 or reselecting the current group.
4735 * Crosspost Handling:: How crossposted articles are dealt with.
4736 * Duplicate Suppression:: An alternative when crosspost handling fails.
4737 * Security:: Decrypt and Verify.
4738 * Mailing List:: Mailing list minor mode.
4742 @node Summary Buffer Format
4743 @section Summary Buffer Format
4744 @cindex summary buffer format
4748 \gnusfigure{The Summary Buffer}{180}{
4749 \put(0,0){\epsfig{figure=ps/summary,width=7.5cm}}
4750 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}}
4756 * Summary Buffer Lines:: You can specify how summary lines should look.
4757 * To From Newsgroups:: How to not display your own name.
4758 * Summary Buffer Mode Line:: You can say how the mode line should look.
4759 * Summary Highlighting:: Making the summary buffer all pretty and nice.
4762 @findex mail-extract-address-components
4763 @findex gnus-extract-address-components
4764 @vindex gnus-extract-address-components
4765 Gnus will use the value of the @code{gnus-extract-address-components}
4766 variable as a function for getting the name and address parts of a
4767 @code{From} header. Two pre-defined functions exist:
4768 @code{gnus-extract-address-components}, which is the default, quite
4769 fast, and too simplistic solution; and
4770 @code{mail-extract-address-components}, which works very nicely, but is
4771 slower. The default function will return the wrong answer in 5% of the
4772 cases. If this is unacceptable to you, use the other function instead:
4775 (setq gnus-extract-address-components
4776 'mail-extract-address-components)
4779 @vindex gnus-summary-same-subject
4780 @code{gnus-summary-same-subject} is a string indicating that the current
4781 article has the same subject as the previous. This string will be used
4782 with those specs that require it. The default is @code{""}.
4785 @node Summary Buffer Lines
4786 @subsection Summary Buffer Lines
4788 @vindex gnus-summary-line-format
4789 You can change the format of the lines in the summary buffer by changing
4790 the @code{gnus-summary-line-format} variable. It works along the same
4791 lines as a normal @code{format} string, with some extensions
4792 (@pxref{Formatting Variables}).
4794 There should always be a colon or a point position marker on the line;
4795 the cursor always moves to the point position marker or the colon after
4796 performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't
4797 possible to change this. Just write a new function
4798 @code{gnus-goto-colon} which does whatever you like with the cursor.)
4799 @xref{Positioning Point}.
4801 The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}.
4803 The following format specification characters and extended format
4804 specification(s) are understood:
4810 Subject string. List identifiers stripped,
4811 @code{gnus-list-identifiers}. @xref{Article Hiding}.
4813 Subject if the article is the root of the thread or the previous article
4814 had a different subject, @code{gnus-summary-same-subject} otherwise.
4815 (@code{gnus-summary-same-subject} defaults to @code{""}.)
4817 Full @code{From} header.
4819 The name (from the @code{From} header).
4821 The name, @code{To} header or the @code{Newsgroups} header (@pxref{To
4824 The name (from the @code{From} header). This differs from the @code{n}
4825 spec in that it uses the function designated by the
4826 @code{gnus-extract-address-components} variable, which is slower, but
4827 may be more thorough.
4829 The address (from the @code{From} header). This works the same way as
4832 Number of lines in the article.
4834 Number of characters in the article. This specifier is not supported
4835 in some methods (like nnfolder).
4837 Pretty-printed version of the number of characters in the article;
4838 for example, @samp{1.2k} or @samp{0.4M}.
4840 Indentation based on thread level (@pxref{Customizing Threading}).
4842 A complex trn-style thread tree, showing response-connecting trace
4843 lines. A thread could be drawn like this:
4856 You can customize the appearance with the following options. Note
4857 that it is possible to make the thread display look really neat by
4858 replacing the default @acronym{ASCII} characters with graphic
4859 line-drawing glyphs.
4861 @item gnus-sum-thread-tree-root
4862 @vindex gnus-sum-thread-tree-root
4863 Used for the root of a thread. If @code{nil}, use subject
4864 instead. The default is @samp{> }.
4866 @item gnus-sum-thread-tree-false-root
4867 @vindex gnus-sum-thread-tree-false-root
4868 Used for the false root of a thread (@pxref{Loose Threads}). If
4869 @code{nil}, use subject instead. The default is @samp{> }.
4871 @item gnus-sum-thread-tree-single-indent
4872 @vindex gnus-sum-thread-tree-single-indent
4873 Used for a thread with just one message. If @code{nil}, use subject
4874 instead. The default is @samp{}.
4876 @item gnus-sum-thread-tree-vertical
4877 @vindex gnus-sum-thread-tree-vertical
4878 Used for drawing a vertical line. The default is @samp{| }.
4880 @item gnus-sum-thread-tree-indent
4881 @vindex gnus-sum-thread-tree-indent
4882 Used for indenting. The default is @samp{ }.
4884 @item gnus-sum-thread-tree-leaf-with-other
4885 @vindex gnus-sum-thread-tree-leaf-with-other
4886 Used for a leaf with brothers. The default is @samp{+-> }.
4888 @item gnus-sum-thread-tree-single-leaf
4889 @vindex gnus-sum-thread-tree-single-leaf
4890 Used for a leaf without brothers. The default is @samp{\-> }
4895 Nothing if the article is a root and lots of spaces if it isn't (it
4896 pushes everything after it off the screen).
4898 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
4899 for adopted articles (@pxref{Customizing Threading}).
4901 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
4902 for adopted articles.
4904 One space for each thread level.
4906 Twenty minus thread level spaces.
4908 Unread. @xref{Read Articles}.
4911 This misleadingly named specifier is the @dfn{secondary mark}. This
4912 mark will say whether the article has been replied to, has been cached,
4913 or has been saved. @xref{Other Marks}.
4916 Score as a number (@pxref{Scoring}).
4918 @vindex gnus-summary-zcore-fuzz
4919 Zcore, @samp{+} if above the default level and @samp{-} if below the
4920 default level. If the difference between
4921 @code{gnus-summary-default-score} and the score is less than
4922 @code{gnus-summary-zcore-fuzz}, this spec will not be used.
4930 The @code{Date} in @code{DD-MMM} format.
4932 The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format.
4938 Number of articles in the current sub-thread. Using this spec will slow
4939 down summary buffer generation somewhat.
4941 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
4942 article has any children.
4948 Desired cursor position (instead of after first colon).
4950 Age sensitive date format. Various date format is defined in
4951 @code{gnus-summary-user-date-format-alist}.
4953 User defined specifier. The next character in the format string should
4954 be a letter. Gnus will call the function
4955 @code{gnus-user-format-function-@var{x}}, where @var{x} is the letter
4956 following @samp{%u}. The function will be passed the current header as
4957 argument. The function should return a string, which will be inserted
4958 into the summary just like information from any other summary specifier.
4961 Text between @samp{%(} and @samp{%)} will be highlighted with
4962 @code{gnus-mouse-face} when the mouse point is placed inside the area.
4963 There can only be one such area.
4965 The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs
4966 have to be handled with care. For reasons of efficiency, Gnus will
4967 compute what column these characters will end up in, and ``hard-code''
4968 that. This means that it is invalid to have these specs after a
4969 variable-length spec. Well, you might not be arrested, but your summary
4970 buffer will look strange, which is bad enough.
4972 The smart choice is to have these specs as far to the left as possible.
4973 (Isn't that the case with everything, though? But I digress.)
4975 This restriction may disappear in later versions of Gnus.
4978 @node To From Newsgroups
4979 @subsection To From Newsgroups
4983 In some groups (particularly in archive groups), the @code{From} header
4984 isn't very interesting, since all the articles there are written by
4985 you. To display the information in the @code{To} or @code{Newsgroups}
4986 headers instead, you need to decide three things: What information to
4987 gather; where to display it; and when to display it.
4991 @vindex gnus-extra-headers
4992 The reading of extra header information is controlled by the
4993 @code{gnus-extra-headers}. This is a list of header symbols. For
4997 (setq gnus-extra-headers
4998 '(To Newsgroups X-Newsreader))
5001 This will result in Gnus trying to obtain these three headers, and
5002 storing it in header structures for later easy retrieval.
5005 @findex gnus-extra-header
5006 The value of these extra headers can be accessed via the
5007 @code{gnus-extra-header} function. Here's a format line spec that will
5008 access the @code{X-Newsreader} header:
5011 "%~(form (gnus-extra-header 'X-Newsreader))@@"
5015 @vindex gnus-ignored-from-addresses
5016 The @code{gnus-ignored-from-addresses} variable says when the @samp{%f}
5017 summary line spec returns the @code{To}, @code{Newsreader} or
5018 @code{From} header. If this regexp matches the contents of the
5019 @code{From} header, the value of the @code{To} or @code{Newsreader}
5020 headers are used instead.
5022 To distinguish regular articles from those where the @code{From} field
5023 has been swapped, a string is prefixed to the @code{To} or
5024 @code{Newsgroups} header in the summary line. By default the string is
5025 @samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
5026 customize these strings with @code{gnus-summary-to-prefix} and
5027 @code{gnus-summary-newsgroup-prefix}.
5031 @vindex nnmail-extra-headers
5032 A related variable is @code{nnmail-extra-headers}, which controls when
5033 to include extra headers when generating overview (@acronym{NOV}) files.
5034 If you have old overview files, you should regenerate them after
5035 changing this variable, by entering the server buffer using @kbd{^},
5036 and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause
5039 @vindex gnus-summary-line-format
5040 You also have to instruct Gnus to display the data by changing the
5041 @code{%n} spec to the @code{%f} spec in the
5042 @code{gnus-summary-line-format} variable.
5044 In summary, you'd typically put something like the following in
5048 (setq gnus-extra-headers
5050 (setq nnmail-extra-headers gnus-extra-headers)
5051 (setq gnus-summary-line-format
5052 "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
5053 (setq gnus-ignored-from-addresses
5057 (The values listed above are the default values in Gnus. Alter them
5060 A note for news server administrators, or for users who wish to try to
5061 convince their news server administrator to provide some additional
5064 The above is mostly useful for mail groups, where you have control over
5065 the @acronym{NOV} files that are created. However, if you can persuade your
5066 nntp admin to add (in the usual implementation, notably INN):
5072 to the end of her @file{overview.fmt} file, then you can use that just
5073 as you would the extra headers from the mail groups.
5076 @node Summary Buffer Mode Line
5077 @subsection Summary Buffer Mode Line
5079 @vindex gnus-summary-mode-line-format
5080 You can also change the format of the summary mode bar (@pxref{Mode Line
5081 Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you
5082 like. The default is @samp{Gnus: %%b [%A] %Z}.
5084 Here are the elements you can play with:
5090 Unprefixed group name.
5092 Current article number.
5094 Current article score.
5098 Number of unread articles in this group.
5100 Number of unread articles in this group that aren't displayed in the
5103 A string with the number of unread and unselected articles represented
5104 either as @samp{<%U(+%e) more>} if there are both unread and unselected
5105 articles, and just as @samp{<%U more>} if there are just unread articles
5106 and no unselected ones.
5108 Shortish group name. For instance, @samp{rec.arts.anime} will be
5109 shortened to @samp{r.a.anime}.
5111 Subject of the current article.
5113 User-defined spec (@pxref{User-Defined Specs}).
5115 Name of the current score file (@pxref{Scoring}).
5117 Number of dormant articles (@pxref{Unread Articles}).
5119 Number of ticked articles (@pxref{Unread Articles}).
5121 Number of articles that have been marked as read in this session.
5123 Number of articles expunged by the score files.
5127 @node Summary Highlighting
5128 @subsection Summary Highlighting
5132 @item gnus-visual-mark-article-hook
5133 @vindex gnus-visual-mark-article-hook
5134 This hook is run after selecting an article. It is meant to be used for
5135 highlighting the article in some way. It is not run if
5136 @code{gnus-visual} is @code{nil}.
5138 @item gnus-summary-update-hook
5139 @vindex gnus-summary-update-hook
5140 This hook is called when a summary line is changed. It is not run if
5141 @code{gnus-visual} is @code{nil}.
5143 @item gnus-summary-selected-face
5144 @vindex gnus-summary-selected-face
5145 This is the face (or @dfn{font} as some people call it) used to
5146 highlight the current article in the summary buffer.
5148 @item gnus-summary-highlight
5149 @vindex gnus-summary-highlight
5150 Summary lines are highlighted according to this variable, which is a
5151 list where the elements are of the format @code{(@var{form}
5152 . @var{face})}. If you would, for instance, like ticked articles to be
5153 italic and high-scored articles to be bold, you could set this variable
5156 (((eq mark gnus-ticked-mark) . italic)
5157 ((> score default) . bold))
5159 As you may have guessed, if @var{form} returns a non-@code{nil} value,
5160 @var{face} will be applied to the line.
5164 @node Summary Maneuvering
5165 @section Summary Maneuvering
5166 @cindex summary movement
5168 All the straight movement commands understand the numeric prefix and
5169 behave pretty much as you'd expect.
5171 None of these commands select articles.
5176 @kindex M-n (Summary)
5177 @kindex G M-n (Summary)
5178 @findex gnus-summary-next-unread-subject
5179 Go to the next summary line of an unread article
5180 (@code{gnus-summary-next-unread-subject}).
5184 @kindex M-p (Summary)
5185 @kindex G M-p (Summary)
5186 @findex gnus-summary-prev-unread-subject
5187 Go to the previous summary line of an unread article
5188 (@code{gnus-summary-prev-unread-subject}).
5191 @kindex G g (Summary)
5192 @findex gnus-summary-goto-subject
5193 Ask for an article number and then go to the summary line of that article
5194 without displaying the article (@code{gnus-summary-goto-subject}).
5197 If Gnus asks you to press a key to confirm going to the next group, you
5198 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
5199 buffer, searching for the next group to read without actually returning
5200 to the group buffer.
5202 Variables related to summary movement:
5206 @vindex gnus-auto-select-next
5207 @item gnus-auto-select-next
5208 If you issue one of the movement commands (like @kbd{n}) and there are
5209 no more unread articles after the current one, Gnus will offer to go to
5210 the next group. If this variable is @code{t} and the next group is
5211 empty, Gnus will exit summary mode and return to the group buffer. If
5212 this variable is neither @code{t} nor @code{nil}, Gnus will select the
5213 next group with unread articles. As a special case, if this variable
5214 is @code{quietly}, Gnus will select the next group without asking for
5215 confirmation. If this variable is @code{almost-quietly}, the same
5216 will happen only if you are located on the last article in the group.
5217 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n}
5218 command will go to the next group without confirmation. Also
5219 @pxref{Group Levels}.
5221 @item gnus-auto-select-same
5222 @vindex gnus-auto-select-same
5223 If non-@code{nil}, all the movement commands will try to go to the next
5224 article with the same subject as the current. (@dfn{Same} here might
5225 mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit}
5226 for details (@pxref{Customizing Threading}).) If there are no more
5227 articles with the same subject, go to the first unread article.
5229 This variable is not particularly useful if you use a threaded display.
5231 @item gnus-summary-check-current
5232 @vindex gnus-summary-check-current
5233 If non-@code{nil}, all the ``unread'' movement commands will not proceed
5234 to the next (or previous) article if the current article is unread.
5235 Instead, they will choose the current article.
5237 @item gnus-auto-center-summary
5238 @vindex gnus-auto-center-summary
5239 If non-@code{nil}, Gnus will keep the point in the summary buffer
5240 centered at all times. This makes things quite tidy, but if you have a
5241 slow network connection, or simply do not like this un-Emacsism, you can
5242 set this variable to @code{nil} to get the normal Emacs scrolling
5243 action. This will also inhibit horizontal re-centering of the summary
5244 buffer, which might make it more inconvenient to read extremely long
5247 This variable can also be a number. In that case, center the window at
5248 the given number of lines from the top.
5250 @item gnus-summary-stop-at-end-of-message
5251 @vindex gnus-summary-stop-at-end-of-message
5252 If non-@code{nil}, don't go to the next article when hitting
5253 @kbd{SPC}, and you're at the end of the article.
5258 @node Choosing Articles
5259 @section Choosing Articles
5260 @cindex selecting articles
5263 * Choosing Commands:: Commands for choosing articles.
5264 * Choosing Variables:: Variables that influence these commands.
5268 @node Choosing Commands
5269 @subsection Choosing Commands
5271 None of the following movement commands understand the numeric prefix,
5272 and they all select and display an article.
5274 If you want to fetch new articles or redisplay the group, see
5275 @ref{Exiting the Summary Buffer}.
5279 @kindex SPACE (Summary)
5280 @findex gnus-summary-next-page
5281 Select the current article, or, if that one's read already, the next
5282 unread article (@code{gnus-summary-next-page}).
5284 If you have an article window open already and you press @kbd{SPACE}
5285 again, the article will be scrolled. This lets you conveniently
5286 @kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}.
5291 @kindex G n (Summary)
5292 @findex gnus-summary-next-unread-article
5293 @c @icon{gnus-summary-next-unread}
5294 Go to next unread article (@code{gnus-summary-next-unread-article}).
5299 @findex gnus-summary-prev-unread-article
5300 @c @icon{gnus-summary-prev-unread}
5301 Go to previous unread article (@code{gnus-summary-prev-unread-article}).
5306 @kindex G N (Summary)
5307 @findex gnus-summary-next-article
5308 Go to the next article (@code{gnus-summary-next-article}).
5313 @kindex G P (Summary)
5314 @findex gnus-summary-prev-article
5315 Go to the previous article (@code{gnus-summary-prev-article}).
5318 @kindex G C-n (Summary)
5319 @findex gnus-summary-next-same-subject
5320 Go to the next article with the same subject
5321 (@code{gnus-summary-next-same-subject}).
5324 @kindex G C-p (Summary)
5325 @findex gnus-summary-prev-same-subject
5326 Go to the previous article with the same subject
5327 (@code{gnus-summary-prev-same-subject}).
5331 @kindex G f (Summary)
5333 @findex gnus-summary-first-unread-article
5334 Go to the first unread article
5335 (@code{gnus-summary-first-unread-article}).
5339 @kindex G b (Summary)
5341 @findex gnus-summary-best-unread-article
5342 Go to the unread article with the highest score
5343 (@code{gnus-summary-best-unread-article}). If given a prefix argument,
5344 go to the first unread article that has a score over the default score.
5349 @kindex G l (Summary)
5350 @findex gnus-summary-goto-last-article
5351 Go to the previous article read (@code{gnus-summary-goto-last-article}).
5354 @kindex G o (Summary)
5355 @findex gnus-summary-pop-article
5357 @cindex article history
5358 Pop an article off the summary history and go to this article
5359 (@code{gnus-summary-pop-article}). This command differs from the
5360 command above in that you can pop as many previous articles off the
5361 history as you like, while @kbd{l} toggles the two last read articles.
5362 For a somewhat related issue (if you use these commands a lot),
5363 @pxref{Article Backlog}.
5368 @kindex G j (Summary)
5369 @findex gnus-summary-goto-article
5370 Ask for an article number or @code{Message-ID}, and then go to that
5371 article (@code{gnus-summary-goto-article}).
5376 @node Choosing Variables
5377 @subsection Choosing Variables
5379 Some variables relevant for moving and selecting articles:
5382 @item gnus-auto-extend-newsgroup
5383 @vindex gnus-auto-extend-newsgroup
5384 All the movement commands will try to go to the previous (or next)
5385 article, even if that article isn't displayed in the Summary buffer if
5386 this variable is non-@code{nil}. Gnus will then fetch the article from
5387 the server and display it in the article buffer.
5389 @item gnus-select-article-hook
5390 @vindex gnus-select-article-hook
5391 This hook is called whenever an article is selected. The default is
5392 @code{nil}. If you would like each article to be saved in the Agent as
5393 you read it, putting @code{gnus-agent-fetch-selected-article} on this
5396 @item gnus-mark-article-hook
5397 @vindex gnus-mark-article-hook
5398 @findex gnus-summary-mark-unread-as-read
5399 @findex gnus-summary-mark-read-and-unread-as-read
5400 @findex gnus-unread-mark
5401 This hook is called whenever an article is selected. It is intended to
5402 be used for marking articles as read. The default value is
5403 @code{gnus-summary-mark-read-and-unread-as-read}, and will change the
5404 mark of almost any article you read to @code{gnus-read-mark}. The only
5405 articles not affected by this function are ticked, dormant, and
5406 expirable articles. If you'd instead like to just have unread articles
5407 marked as read, you can use @code{gnus-summary-mark-unread-as-read}
5408 instead. It will leave marks like @code{gnus-low-score-mark},
5409 @code{gnus-del-mark} (and so on) alone.
5414 @node Paging the Article
5415 @section Scrolling the Article
5416 @cindex article scrolling
5421 @kindex SPACE (Summary)
5422 @findex gnus-summary-next-page
5423 Pressing @kbd{SPACE} will scroll the current article forward one page,
5424 or, if you have come to the end of the current article, will choose the
5425 next article (@code{gnus-summary-next-page}).
5427 @vindex gnus-article-boring-faces
5428 @vindex gnus-article-skip-boring
5429 If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of
5430 the article consists only of citations and signature, then it will be
5431 skipped; the next article will be shown instead. You can customize
5432 what is considered uninteresting with
5433 @code{gnus-article-boring-faces}. You can manually view the article's
5434 pages, no matter how boring, using @kbd{C-M-v}.
5437 @kindex DEL (Summary)
5438 @findex gnus-summary-prev-page
5439 Scroll the current article back one page (@code{gnus-summary-prev-page}).
5442 @kindex RET (Summary)
5443 @findex gnus-summary-scroll-up
5444 Scroll the current article one line forward
5445 (@code{gnus-summary-scroll-up}).
5448 @kindex M-RET (Summary)
5449 @findex gnus-summary-scroll-down
5450 Scroll the current article one line backward
5451 (@code{gnus-summary-scroll-down}).
5455 @kindex A g (Summary)
5457 @findex gnus-summary-show-article
5458 @vindex gnus-summary-show-article-charset-alist
5459 (Re)fetch the current article (@code{gnus-summary-show-article}). If
5460 given a prefix, show a completely ``raw'' article, just the way it
5461 came from the server. If given a prefix twice (i.e., @kbd{C-u C-u
5462 g'}), fetch the current article, but don't run any of the article
5463 treatment functions.
5465 @cindex charset, view article with different charset
5466 If given a numerical prefix, you can do semi-manual charset stuff.
5467 @kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
5468 encoded in the @code{cn-gb-2312} charset. If you have
5471 (setq gnus-summary-show-article-charset-alist
5476 then you can say @kbd{C-u 1 g} to get the same effect.
5481 @kindex A < (Summary)
5482 @findex gnus-summary-beginning-of-article
5483 Scroll to the beginning of the article
5484 (@code{gnus-summary-beginning-of-article}).
5489 @kindex A > (Summary)
5490 @findex gnus-summary-end-of-article
5491 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
5495 @kindex A s (Summary)
5497 @findex gnus-summary-isearch-article
5498 Perform an isearch in the article buffer
5499 (@code{gnus-summary-isearch-article}).
5503 @findex gnus-summary-select-article-buffer
5504 Select the article buffer (@code{gnus-summary-select-article-buffer}).
5509 @node Reply Followup and Post
5510 @section Reply, Followup and Post
5513 * Summary Mail Commands:: Sending mail.
5514 * Summary Post Commands:: Sending news.
5515 * Summary Message Commands:: Other Message-related commands.
5516 * Canceling and Superseding::
5520 @node Summary Mail Commands
5521 @subsection Summary Mail Commands
5523 @cindex composing mail
5525 Commands for composing a mail message:
5531 @kindex S r (Summary)
5533 @findex gnus-summary-reply
5534 @c @icon{gnus-summary-mail-reply}
5535 @c @icon{gnus-summary-reply}
5536 Mail a reply to the author of the current article
5537 (@code{gnus-summary-reply}).
5542 @kindex S R (Summary)
5543 @findex gnus-summary-reply-with-original
5544 @c @icon{gnus-summary-reply-with-original}
5545 Mail a reply to the author of the current article and include the
5546 original message (@code{gnus-summary-reply-with-original}). This
5547 command uses the process/prefix convention.
5550 @kindex S w (Summary)
5551 @findex gnus-summary-wide-reply
5552 Mail a wide reply to the author of the current article
5553 (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that
5554 goes out to all people listed in the @code{To}, @code{From} (or
5555 @code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is
5556 present, that's used instead.
5559 @kindex S W (Summary)
5560 @findex gnus-summary-wide-reply-with-original
5561 Mail a wide reply to the current article and include the original
5562 message (@code{gnus-summary-wide-reply-with-original}). This command uses
5563 the process/prefix convention, but only uses the headers from the
5564 first article to determine the recipients.
5567 @kindex S v (Summary)
5568 @findex gnus-summary-very-wide-reply
5569 Mail a very wide reply to the author of the current article
5570 (@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply
5571 that goes out to all people listed in the @code{To}, @code{From} (or
5572 @code{Reply-to}) and @code{Cc} headers in all the process/prefixed
5573 articles. This command uses the process/prefix convention.
5576 @kindex S V (Summary)
5577 @findex gnus-summary-very-wide-reply-with-original
5578 Mail a very wide reply to the author of the current article and include the
5579 original message (@code{gnus-summary-very-wide-reply-with-original}). This
5580 command uses the process/prefix convention.
5583 @kindex S B r (Summary)
5584 @findex gnus-summary-reply-broken-reply-to
5585 Mail a reply to the author of the current article but ignore the
5586 @code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}).
5587 If you need this because a mailing list incorrectly sets a
5588 @code{Reply-To} header pointing to the list, you probably want to set
5589 the @code{broken-reply-to} group parameter instead, so things will work
5590 correctly. @xref{Group Parameters}.
5593 @kindex S B R (Summary)
5594 @findex gnus-summary-reply-broken-reply-to-with-original
5595 Mail a reply to the author of the current article and include the
5596 original message but ignore the @code{Reply-To} field
5597 (@code{gnus-summary-reply-broken-reply-to-with-original}).
5601 @kindex S o m (Summary)
5602 @kindex C-c C-f (Summary)
5603 @findex gnus-summary-mail-forward
5604 @c @icon{gnus-summary-mail-forward}
5605 Forward the current article to some other person
5606 (@code{gnus-summary-mail-forward}). If no prefix is given, the message
5607 is forwarded according to the value of (@code{message-forward-as-mime})
5608 and (@code{message-forward-show-mml}); if the prefix is 1, decode the
5609 message and forward directly inline; if the prefix is 2, forward message
5610 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5611 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5612 directly inline; otherwise, the message is forwarded as no prefix given
5613 but use the flipped value of (@code{message-forward-as-mime}). By
5614 default, the message is decoded and forwarded as an rfc822 @acronym{MIME}
5620 @kindex S m (Summary)
5621 @findex gnus-summary-mail-other-window
5622 @c @icon{gnus-summary-mail-originate}
5623 Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use
5624 the posting style of the current group. If given a prefix, disable that.
5625 If the prefix is 1, prompt for a group name to find the posting style.
5628 @kindex S i (Summary)
5629 @findex gnus-summary-news-other-window
5630 Prepare a news (@code{gnus-summary-news-other-window}). By default,
5631 post to the current group. If given a prefix, disable that. If the
5632 prefix is 1, prompt for a group to post to.
5634 This function actually prepares a news even when using mail groups.
5635 This is useful for ``posting'' messages to mail groups without actually
5636 sending them over the network: they're just saved directly to the group
5637 in question. The corresponding back end must have a request-post method
5638 for this to work though.
5641 @kindex S D b (Summary)
5642 @findex gnus-summary-resend-bounced-mail
5643 @cindex bouncing mail
5644 If you have sent a mail, but the mail was bounced back to you for some
5645 reason (wrong address, transient failure), you can use this command to
5646 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You
5647 will be popped into a mail buffer where you can edit the headers before
5648 sending the mail off again. If you give a prefix to this command, and
5649 the bounced mail is a reply to some other mail, Gnus will try to fetch
5650 that mail and display it for easy perusal of its headers. This might
5651 very well fail, though.
5654 @kindex S D r (Summary)
5655 @findex gnus-summary-resend-message
5656 Not to be confused with the previous command,
5657 @code{gnus-summary-resend-message} will prompt you for an address to
5658 send the current message off to, and then send it to that place. The
5659 headers of the message won't be altered---but lots of headers that say
5660 @code{Resent-To}, @code{Resent-From} and so on will be added. This
5661 means that you actually send a mail to someone that has a @code{To}
5662 header that (probably) points to yourself. This will confuse people.
5663 So, natcherly you'll only do that if you're really eVIl.
5665 This command is mainly used if you have several accounts and want to
5666 ship a mail to a different account of yours. (If you're both
5667 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
5668 to the @code{root} account, you may want to resend it to
5669 @code{postmaster}. Ordnung muss sein!
5671 This command understands the process/prefix convention
5672 (@pxref{Process/Prefix}).
5675 @kindex S D e (Summary)
5676 @findex gnus-summary-resend-message-edit
5678 Like the previous command, but will allow you to edit the message as
5679 if it were a new message before resending.
5682 @kindex S O m (Summary)
5683 @findex gnus-uu-digest-mail-forward
5684 Digest the current series (@pxref{Decoding Articles}) and forward the
5685 result using mail (@code{gnus-uu-digest-mail-forward}). This command
5686 uses the process/prefix convention (@pxref{Process/Prefix}).
5689 @kindex S M-c (Summary)
5690 @findex gnus-summary-mail-crosspost-complaint
5691 @cindex crossposting
5692 @cindex excessive crossposting
5693 Send a complaint about excessive crossposting to the author of the
5694 current article (@code{gnus-summary-mail-crosspost-complaint}).
5696 @findex gnus-crosspost-complaint
5697 This command is provided as a way to fight back against the current
5698 crossposting pandemic that's sweeping Usenet. It will compose a reply
5699 using the @code{gnus-crosspost-complaint} variable as a preamble. This
5700 command understands the process/prefix convention
5701 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
5705 Also @xref{Header Commands, ,Header Commands, message, The Message
5706 Manual}, for more information.
5709 @node Summary Post Commands
5710 @subsection Summary Post Commands
5712 @cindex composing news
5714 Commands for posting a news article:
5720 @kindex S p (Summary)
5721 @findex gnus-summary-post-news
5722 @c @icon{gnus-summary-post-news}
5723 Prepare for posting an article (@code{gnus-summary-post-news}). By
5724 default, post to the current group. If given a prefix, disable that.
5725 If the prefix is 1, prompt for another group instead.
5730 @kindex S f (Summary)
5731 @findex gnus-summary-followup
5732 @c @icon{gnus-summary-followup}
5733 Post a followup to the current article (@code{gnus-summary-followup}).
5737 @kindex S F (Summary)
5739 @c @icon{gnus-summary-followup-with-original}
5740 @findex gnus-summary-followup-with-original
5741 Post a followup to the current article and include the original message
5742 (@code{gnus-summary-followup-with-original}). This command uses the
5743 process/prefix convention.
5746 @kindex S n (Summary)
5747 @findex gnus-summary-followup-to-mail
5748 Post a followup to the current article via news, even if you got the
5749 message through mail (@code{gnus-summary-followup-to-mail}).
5752 @kindex S N (Summary)
5753 @findex gnus-summary-followup-to-mail-with-original
5754 Post a followup to the current article via news, even if you got the
5755 message through mail and include the original message
5756 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
5757 the process/prefix convention.
5760 @kindex S o p (Summary)
5761 @findex gnus-summary-post-forward
5762 Forward the current article to a newsgroup
5763 (@code{gnus-summary-post-forward}).
5764 If no prefix is given, the message is forwarded according to the value
5765 of (@code{message-forward-as-mime}) and
5766 (@code{message-forward-show-mml}); if the prefix is 1, decode the
5767 message and forward directly inline; if the prefix is 2, forward message
5768 as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and
5769 forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message
5770 directly inline; otherwise, the message is forwarded as no prefix given
5771 but use the flipped value of (@code{message-forward-as-mime}). By
5772 default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section.
5775 @kindex S O p (Summary)
5776 @findex gnus-uu-digest-post-forward
5778 @cindex making digests
5779 Digest the current series and forward the result to a newsgroup
5780 (@code{gnus-uu-digest-post-forward}). This command uses the
5781 process/prefix convention.
5784 @kindex S u (Summary)
5785 @findex gnus-uu-post-news
5786 @c @icon{gnus-uu-post-news}
5787 Uuencode a file, split it into parts, and post it as a series
5788 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
5791 Also @xref{Header Commands, ,Header Commands, message, The Message
5792 Manual}, for more information.
5795 @node Summary Message Commands
5796 @subsection Summary Message Commands
5800 @kindex S y (Summary)
5801 @findex gnus-summary-yank-message
5802 Yank the current article into an already existing Message composition
5803 buffer (@code{gnus-summary-yank-message}). This command prompts for
5804 what message buffer you want to yank into, and understands the
5805 process/prefix convention (@pxref{Process/Prefix}).
5810 @node Canceling and Superseding
5811 @subsection Canceling Articles
5812 @cindex canceling articles
5813 @cindex superseding articles
5815 Have you ever written something, and then decided that you really,
5816 really, really wish you hadn't posted that?
5818 Well, you can't cancel mail, but you can cancel posts.
5820 @findex gnus-summary-cancel-article
5822 @c @icon{gnus-summary-cancel-article}
5823 Find the article you wish to cancel (you can only cancel your own
5824 articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S
5825 c} (@code{gnus-summary-cancel-article}). Your article will be
5826 canceled---machines all over the world will be deleting your article.
5827 This command uses the process/prefix convention (@pxref{Process/Prefix}).
5829 Be aware, however, that not all sites honor cancels, so your article may
5830 live on here and there, while most sites will delete the article in
5833 Gnus will use the ``current'' select method when canceling. If you
5834 want to use the standard posting method, use the @samp{a} symbolic
5835 prefix (@pxref{Symbolic Prefixes}).
5837 Gnus ensures that only you can cancel your own messages using a
5838 @code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, ,
5839 message, Message Manual}).
5841 If you discover that you have made some mistakes and want to do some
5842 corrections, you can post a @dfn{superseding} article that will replace
5843 your original article.
5845 @findex gnus-summary-supersede-article
5847 Go to the original article and press @kbd{S s}
5848 (@code{gnus-summary-supersede-article}). You will be put in a buffer
5849 where you can edit the article all you want before sending it off the
5852 The same goes for superseding as for canceling, only more so: Some
5853 sites do not honor superseding. On those sites, it will appear that you
5854 have posted almost the same article twice.
5856 If you have just posted the article, and change your mind right away,
5857 there is a trick you can use to cancel/supersede the article without
5858 waiting for the article to appear on your site first. You simply return
5859 to the post buffer (which is called @code{*sent ...*}). There you will
5860 find the article you just posted, with all the headers intact. Change
5861 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
5862 header by substituting one of those words for the word
5863 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
5864 you would do normally. The previous article will be
5865 canceled/superseded.
5867 Just remember, kids: There is no 'c' in 'supersede'.
5869 @node Delayed Articles
5870 @section Delayed Articles
5871 @cindex delayed sending
5872 @cindex send delayed
5874 Sometimes, you might wish to delay the sending of a message. For
5875 example, you might wish to arrange for a message to turn up just in time
5876 to remind your about the birthday of your Significant Other. For this,
5877 there is the @code{gnus-delay} package. Setup is simple:
5880 (gnus-delay-initialize)
5883 @findex gnus-delay-article
5884 Normally, to send a message you use the @kbd{C-c C-c} command from
5885 Message mode. To delay a message, use @kbd{C-c C-j}
5886 (@code{gnus-delay-article}) instead. This will ask you for how long the
5887 message should be delayed. Possible answers are:
5891 A time span. Consists of an integer and a letter. For example,
5892 @code{42d} means to delay for 42 days. Available letters are @code{m}
5893 (minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
5894 (months) and @code{Y} (years).
5897 A specific date. Looks like @code{YYYY-MM-DD}. The message will be
5898 delayed until that day, at a specific time (eight o'clock by default).
5899 See also @code{gnus-delay-default-hour}.
5902 A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm
5903 stuff. The deadline will be at that time today, except if that time has
5904 already passed, then it's at the given time tomorrow. So if it's ten
5905 o'clock in the morning and you specify @code{11:15}, then the deadline
5906 is one hour and fifteen minutes hence. But if you specify @code{9:20},
5907 that means a time tomorrow.
5910 The action of the @code{gnus-delay-article} command is influenced by a
5911 couple of variables:
5914 @item gnus-delay-default-hour
5915 @vindex gnus-delay-default-hour
5916 When you specify a specific date, the message will be due on that hour
5917 on the given date. Possible values are integers 0 through 23.
5919 @item gnus-delay-default-delay
5920 @vindex gnus-delay-default-delay
5921 This is a string and gives the default delay. It can be of any of the
5922 formats described above.
5924 @item gnus-delay-group
5925 @vindex gnus-delay-group
5926 Delayed articles will be kept in this group on the drafts server until
5927 they are due. You probably don't need to change this. The default
5928 value is @code{"delayed"}.
5930 @item gnus-delay-header
5931 @vindex gnus-delay-header
5932 The deadline for each article will be stored in a header. This variable
5933 is a string and gives the header name. You probably don't need to
5934 change this. The default value is @code{"X-Gnus-Delayed"}.
5937 The way delaying works is like this: when you use the
5938 @code{gnus-delay-article} command, you give a certain delay. Gnus
5939 calculates the deadline of the message and stores it in the
5940 @code{X-Gnus-Delayed} header and puts the message in the
5941 @code{nndraft:delayed} group.
5943 @findex gnus-delay-send-queue
5944 And whenever you get new news, Gnus looks through the group for articles
5945 which are due and sends them. It uses the @code{gnus-delay-send-queue}
5946 function for this. By default, this function is added to the hook
5947 @code{gnus-get-new-news-hook}. But of course, you can change this.
5948 Maybe you want to use the demon to send drafts? Just tell the demon to
5949 execute the @code{gnus-delay-send-queue} function.
5952 @item gnus-delay-initialize
5953 @findex gnus-delay-initialize
5954 By default, this function installs @code{gnus-delay-send-queue} in
5955 @code{gnus-get-new-news-hook}. But it accepts the optional second
5956 argument @code{no-check}. If it is non-@code{nil},
5957 @code{gnus-get-new-news-hook} is not changed. The optional first
5958 argument is ignored.
5960 For example, @code{(gnus-delay-initialize nil t)} means to do nothing.
5961 Presumably, you want to use the demon for sending due delayed articles.
5962 Just don't forget to set that up :-)
5965 When delaying an article with @kbd{C-c C-j}, Message mode will
5966 automatically add a @code{"Date"} header with the current time. In
5967 many cases you probably want the @code{"Date"} header to reflect the
5968 time the message is sent instead. To do this, you have to delete
5969 @code{Date} from @code{message-draft-headers}.
5972 @node Marking Articles
5973 @section Marking Articles
5974 @cindex article marking
5975 @cindex article ticking
5978 There are several marks you can set on an article.
5980 You have marks that decide the @dfn{readedness} (whoo, neato-keano
5981 neologism ohoy!) of the article. Alphabetic marks generally mean
5982 @dfn{read}, while non-alphabetic characters generally mean @dfn{unread}.
5984 In addition, you also have marks that do not affect readedness.
5987 There's a plethora of commands for manipulating these marks.
5991 * Unread Articles:: Marks for unread articles.
5992 * Read Articles:: Marks for read articles.
5993 * Other Marks:: Marks that do not affect readedness.
5994 * Setting Marks:: How to set and remove marks.
5995 * Generic Marking Commands:: How to customize the marking.
5996 * Setting Process Marks:: How to mark articles for later processing.
6000 @node Unread Articles
6001 @subsection Unread Articles
6003 The following marks mark articles as (kinda) unread, in one form or
6008 @vindex gnus-ticked-mark
6009 Marked as ticked (@code{gnus-ticked-mark}).
6011 @dfn{Ticked articles} are articles that will remain visible always. If
6012 you see an article that you find interesting, or you want to put off
6013 reading it, or replying to it, until sometime later, you'd typically
6014 tick it. However, articles can be expired (from news servers by the
6015 news server software, Gnus itself never expires ticked messages), so if
6016 you want to keep an article forever, you'll have to make it persistent
6017 (@pxref{Persistent Articles}).
6020 @vindex gnus-dormant-mark
6021 Marked as dormant (@code{gnus-dormant-mark}).
6023 @dfn{Dormant articles} will only appear in the summary buffer if there
6024 are followups to it. If you want to see them even if they don't have
6025 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
6026 Otherwise (except for the visibility issue), they are just like ticked
6030 @vindex gnus-unread-mark
6031 Marked as unread (@code{gnus-unread-mark}).
6033 @dfn{Unread articles} are articles that haven't been read at all yet.
6038 @subsection Read Articles
6039 @cindex expirable mark
6041 All the following marks mark articles as read.
6046 @vindex gnus-del-mark
6047 These are articles that the user has marked as read with the @kbd{d}
6048 command manually, more or less (@code{gnus-del-mark}).
6051 @vindex gnus-read-mark
6052 Articles that have actually been read (@code{gnus-read-mark}).
6055 @vindex gnus-ancient-mark
6056 Articles that were marked as read in previous sessions and are now
6057 @dfn{old} (@code{gnus-ancient-mark}).
6060 @vindex gnus-killed-mark
6061 Marked as killed (@code{gnus-killed-mark}).
6064 @vindex gnus-kill-file-mark
6065 Marked as killed by kill files (@code{gnus-kill-file-mark}).
6068 @vindex gnus-low-score-mark
6069 Marked as read by having too low a score (@code{gnus-low-score-mark}).
6072 @vindex gnus-catchup-mark
6073 Marked as read by a catchup (@code{gnus-catchup-mark}).
6076 @vindex gnus-canceled-mark
6077 Canceled article (@code{gnus-canceled-mark})
6080 @vindex gnus-sparse-mark
6081 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
6085 @vindex gnus-duplicate-mark
6086 Article marked as read by duplicate suppression
6087 (@code{gnus-duplicate-mark}). @xref{Duplicate Suppression}.
6091 All these marks just mean that the article is marked as read, really.
6092 They are interpreted differently when doing adaptive scoring, though.
6094 One more special mark, though:
6098 @vindex gnus-expirable-mark
6099 Marked as expirable (@code{gnus-expirable-mark}).
6101 Marking articles as @dfn{expirable} (or have them marked as such
6102 automatically) doesn't make much sense in normal groups---a user doesn't
6103 control expiring of news articles, but in mail groups, for instance,
6104 articles marked as @dfn{expirable} can be deleted by Gnus at
6110 @subsection Other Marks
6111 @cindex process mark
6114 There are some marks that have nothing to do with whether the article is
6120 You can set a bookmark in the current article. Say you are reading a
6121 long thesis on cats' urinary tracts, and have to go home for dinner
6122 before you've finished reading the thesis. You can then set a bookmark
6123 in the article, and Gnus will jump to this bookmark the next time it
6124 encounters the article. @xref{Setting Marks}.
6127 @vindex gnus-replied-mark
6128 All articles that you have replied to or made a followup to (i.e., have
6129 answered) will be marked with an @samp{A} in the second column
6130 (@code{gnus-replied-mark}).
6133 @vindex gnus-forwarded-mark
6134 All articles that you have forwarded will be marked with an @samp{F} in
6135 the second column (@code{gnus-forwarded-mark}).
6138 @vindex gnus-cached-mark
6139 Articles stored in the article cache will be marked with an @samp{*} in
6140 the second column (@code{gnus-cached-mark}). @xref{Article Caching}.
6143 @vindex gnus-saved-mark
6144 Articles ``saved'' (in some manner or other; not necessarily
6145 religiously) are marked with an @samp{S} in the second column
6146 (@code{gnus-saved-mark}).
6149 @vindex gnus-recent-mark
6150 Articles that according to the server haven't been shown to the user
6151 before are marked with a @samp{N} in the second column
6152 (@code{gnus-recent-mark}). Note that not all servers support this
6153 mark, in which case it simply never appears. Compare with
6154 @code{gnus-unseen-mark}.
6157 @vindex gnus-unseen-mark
6158 Articles that haven't been seen before in Gnus by the user are marked
6159 with a @samp{.} in the second column (@code{gnus-unseen-mark}).
6160 Compare with @code{gnus-recent-mark}.
6163 @vindex gnus-downloaded-mark
6164 When using the Gnus agent (@pxref{Agent Basics}), articles may be
6165 downloaded for unplugged (offline) viewing. If you are using the
6166 @samp{%O} spec, these articles get the @samp{+} mark in that spec.
6167 (The variable @code{gnus-downloaded-mark} controls which character to
6171 @vindex gnus-undownloaded-mark
6172 When using the Gnus agent (@pxref{Agent Basics}), some articles might
6173 not have been downloaded. Such articles cannot be viewed while you
6174 are unplugged (offline). If you are using the @samp{%O} spec, these
6175 articles get the @samp{-} mark in that spec. (The variable
6176 @code{gnus-undownloaded-mark} controls which character to use.)
6179 @vindex gnus-downloadable-mark
6180 The Gnus agent (@pxref{Agent Basics}) downloads some articles
6181 automatically, but it is also possible to explicitly mark articles for
6182 download, even if they would not be downloaded automatically. Such
6183 explicitly-marked articles get the @samp{%} mark in the first column.
6184 (The variable @code{gnus-downloadable-mark} controls which character to
6188 @vindex gnus-not-empty-thread-mark
6189 @vindex gnus-empty-thread-mark
6190 If the @samp{%e} spec is used, the presence of threads or not will be
6191 marked with @code{gnus-not-empty-thread-mark} and
6192 @code{gnus-empty-thread-mark} in the third column, respectively.
6195 @vindex gnus-process-mark
6196 Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A
6197 variety of commands react to the presence of the process mark. For
6198 instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view
6199 all articles that have been marked with the process mark. Articles
6200 marked with the process mark have a @samp{#} in the second column.
6204 You might have noticed that most of these ``non-readedness'' marks
6205 appear in the second column by default. So if you have a cached, saved,
6206 replied article that you have process-marked, what will that look like?
6208 Nothing much. The precedence rules go as follows: process -> cache ->
6209 replied -> saved. So if the article is in the cache and is replied,
6210 you'll only see the cache mark and not the replied mark.
6214 @subsection Setting Marks
6215 @cindex setting marks
6217 All the marking commands understand the numeric prefix.
6222 @kindex M c (Summary)
6223 @kindex M-u (Summary)
6224 @findex gnus-summary-clear-mark-forward
6225 @cindex mark as unread
6226 Clear all readedness-marks from the current article
6227 (@code{gnus-summary-clear-mark-forward}). In other words, mark the
6233 @kindex M t (Summary)
6234 @findex gnus-summary-tick-article-forward
6235 Tick the current article (@code{gnus-summary-tick-article-forward}).
6236 @xref{Article Caching}.
6241 @kindex M ? (Summary)
6242 @findex gnus-summary-mark-as-dormant
6243 Mark the current article as dormant
6244 (@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}.
6248 @kindex M d (Summary)
6250 @findex gnus-summary-mark-as-read-forward
6251 Mark the current article as read
6252 (@code{gnus-summary-mark-as-read-forward}).
6256 @findex gnus-summary-mark-as-read-backward
6257 Mark the current article as read and move point to the previous line
6258 (@code{gnus-summary-mark-as-read-backward}).
6263 @kindex M k (Summary)
6264 @findex gnus-summary-kill-same-subject-and-select
6265 Mark all articles that have the same subject as the current one as read,
6266 and then select the next unread article
6267 (@code{gnus-summary-kill-same-subject-and-select}).
6271 @kindex M K (Summary)
6272 @kindex C-k (Summary)
6273 @findex gnus-summary-kill-same-subject
6274 Mark all articles that have the same subject as the current one as read
6275 (@code{gnus-summary-kill-same-subject}).
6278 @kindex M C (Summary)
6279 @findex gnus-summary-catchup
6280 @c @icon{gnus-summary-catchup}
6281 Mark all unread articles as read (@code{gnus-summary-catchup}).
6284 @kindex M C-c (Summary)
6285 @findex gnus-summary-catchup-all
6286 Mark all articles in the group as read---even the ticked and dormant
6287 articles (@code{gnus-summary-catchup-all}).
6290 @kindex M H (Summary)
6291 @findex gnus-summary-catchup-to-here
6292 Catchup the current group to point (before the point)
6293 (@code{gnus-summary-catchup-to-here}).
6296 @kindex M h (Summary)
6297 @findex gnus-summary-catchup-from-here
6298 Catchup the current group from point (after the point)
6299 (@code{gnus-summary-catchup-from-here}).
6302 @kindex C-w (Summary)
6303 @findex gnus-summary-mark-region-as-read
6304 Mark all articles between point and mark as read
6305 (@code{gnus-summary-mark-region-as-read}).
6308 @kindex M V k (Summary)
6309 @findex gnus-summary-kill-below
6310 Kill all articles with scores below the default score (or below the
6311 numeric prefix) (@code{gnus-summary-kill-below}).
6315 @kindex M e (Summary)
6317 @findex gnus-summary-mark-as-expirable
6318 Mark the current article as expirable
6319 (@code{gnus-summary-mark-as-expirable}).
6322 @kindex M b (Summary)
6323 @findex gnus-summary-set-bookmark
6324 Set a bookmark in the current article
6325 (@code{gnus-summary-set-bookmark}).
6328 @kindex M B (Summary)
6329 @findex gnus-summary-remove-bookmark
6330 Remove the bookmark from the current article
6331 (@code{gnus-summary-remove-bookmark}).
6334 @kindex M V c (Summary)
6335 @findex gnus-summary-clear-above
6336 Clear all marks from articles with scores over the default score (or
6337 over the numeric prefix) (@code{gnus-summary-clear-above}).
6340 @kindex M V u (Summary)
6341 @findex gnus-summary-tick-above
6342 Tick all articles with scores over the default score (or over the
6343 numeric prefix) (@code{gnus-summary-tick-above}).
6346 @kindex M V m (Summary)
6347 @findex gnus-summary-mark-above
6348 Prompt for a mark, and mark all articles with scores over the default
6349 score (or over the numeric prefix) with this mark
6350 (@code{gnus-summary-clear-above}).
6353 @vindex gnus-summary-goto-unread
6354 The @code{gnus-summary-goto-unread} variable controls what action should
6355 be taken after setting a mark. If non-@code{nil}, point will move to
6356 the next/previous unread article. If @code{nil}, point will just move
6357 one line up or down. As a special case, if this variable is
6358 @code{never}, all the marking commands as well as other commands (like
6359 @kbd{SPACE}) will move to the next article, whether it is unread or not.
6360 The default is @code{t}.
6363 @node Generic Marking Commands
6364 @subsection Generic Marking Commands
6366 Some people would like the command that ticks an article (@kbd{!}) go to
6367 the next article. Others would like it to go to the next unread
6368 article. Yet others would like it to stay on the current article. And
6369 even though I haven't heard of anybody wanting it to go to the
6370 previous (unread) article, I'm sure there are people that want that as
6373 Multiply these five behaviors with five different marking commands, and
6374 you get a potentially complex set of variable to control what each
6377 To sidestep that mess, Gnus provides commands that do all these
6378 different things. They can be found on the @kbd{M M} map in the summary
6379 buffer. Type @kbd{M M C-h} to see them all---there are too many of them
6380 to list in this manual.
6382 While you can use these commands directly, most users would prefer
6383 altering the summary mode keymap. For instance, if you would like the
6384 @kbd{!} command to go to the next article instead of the next unread
6385 article, you could say something like:
6389 (add-hook 'gnus-summary-mode-hook 'my-alter-summary-map)
6390 (defun my-alter-summary-map ()
6391 (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next))
6399 (defun my-alter-summary-map ()
6400 (local-set-key "!" "MM!n"))
6404 @node Setting Process Marks
6405 @subsection Setting Process Marks
6406 @cindex setting process marks
6408 Process marks are displayed as @code{#} in the summary buffer, and are
6409 used for marking articles in such a way that other commands will
6410 process these articles. For instance, if you process mark four
6411 articles and then use the @kbd{*} command, Gnus will enter these four
6412 articles into the cache. For more information,
6413 @pxref{Process/Prefix}.
6420 @kindex M P p (Summary)
6421 @findex gnus-summary-mark-as-processable
6422 Mark the current article with the process mark
6423 (@code{gnus-summary-mark-as-processable}).
6424 @findex gnus-summary-unmark-as-processable
6428 @kindex M P u (Summary)
6429 @kindex M-# (Summary)
6430 Remove the process mark, if any, from the current article
6431 (@code{gnus-summary-unmark-as-processable}).
6434 @kindex M P U (Summary)
6435 @findex gnus-summary-unmark-all-processable
6436 Remove the process mark from all articles
6437 (@code{gnus-summary-unmark-all-processable}).
6440 @kindex M P i (Summary)
6441 @findex gnus-uu-invert-processable
6442 Invert the list of process marked articles
6443 (@code{gnus-uu-invert-processable}).
6446 @kindex M P R (Summary)
6447 @findex gnus-uu-mark-by-regexp
6448 Mark articles that have a @code{Subject} header that matches a regular
6449 expression (@code{gnus-uu-mark-by-regexp}).
6452 @kindex M P G (Summary)
6453 @findex gnus-uu-unmark-by-regexp
6454 Unmark articles that have a @code{Subject} header that matches a regular
6455 expression (@code{gnus-uu-unmark-by-regexp}).
6458 @kindex M P r (Summary)
6459 @findex gnus-uu-mark-region
6460 Mark articles in region (@code{gnus-uu-mark-region}).
6463 @kindex M P g (Summary)
6464 @findex gnus-uu-unmark-region
6465 Unmark articles in region (@code{gnus-uu-unmark-region}).
6468 @kindex M P t (Summary)
6469 @findex gnus-uu-mark-thread
6470 Mark all articles in the current (sub)thread
6471 (@code{gnus-uu-mark-thread}).
6474 @kindex M P T (Summary)
6475 @findex gnus-uu-unmark-thread
6476 Unmark all articles in the current (sub)thread
6477 (@code{gnus-uu-unmark-thread}).
6480 @kindex M P v (Summary)
6481 @findex gnus-uu-mark-over
6482 Mark all articles that have a score above the prefix argument
6483 (@code{gnus-uu-mark-over}).
6486 @kindex M P s (Summary)
6487 @findex gnus-uu-mark-series
6488 Mark all articles in the current series (@code{gnus-uu-mark-series}).
6491 @kindex M P S (Summary)
6492 @findex gnus-uu-mark-sparse
6493 Mark all series that have already had some articles marked
6494 (@code{gnus-uu-mark-sparse}).
6497 @kindex M P a (Summary)
6498 @findex gnus-uu-mark-all
6499 Mark all articles in series order (@code{gnus-uu-mark-all}).
6502 @kindex M P b (Summary)
6503 @findex gnus-uu-mark-buffer
6504 Mark all articles in the buffer in the order they appear
6505 (@code{gnus-uu-mark-buffer}).
6508 @kindex M P k (Summary)
6509 @findex gnus-summary-kill-process-mark
6510 Push the current process mark set onto the stack and unmark all articles
6511 (@code{gnus-summary-kill-process-mark}).
6514 @kindex M P y (Summary)
6515 @findex gnus-summary-yank-process-mark
6516 Pop the previous process mark set from the stack and restore it
6517 (@code{gnus-summary-yank-process-mark}).
6520 @kindex M P w (Summary)
6521 @findex gnus-summary-save-process-mark
6522 Push the current process mark set onto the stack
6523 (@code{gnus-summary-save-process-mark}).
6527 Also see the @kbd{&} command in @ref{Searching for Articles}, for how to
6528 set process marks based on article body contents.
6535 It can be convenient to limit the summary buffer to just show some
6536 subset of the articles currently in the group. The effect most limit
6537 commands have is to remove a few (or many) articles from the summary
6540 Limiting commands work on subsets of the articles already fetched from
6541 the servers. These commands don't query the server for additional
6548 @kindex / / (Summary)
6549 @findex gnus-summary-limit-to-subject
6550 Limit the summary buffer to articles that match some subject
6551 (@code{gnus-summary-limit-to-subject}). If given a prefix, exclude
6555 @kindex / a (Summary)
6556 @findex gnus-summary-limit-to-author
6557 Limit the summary buffer to articles that match some author
6558 (@code{gnus-summary-limit-to-author}). If given a prefix, exclude
6562 @kindex / R (Summary)
6563 @findex gnus-summary-limit-to-recipient
6564 Limit the summary buffer to articles that match some recipient
6565 (@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
6569 @kindex / A (Summary)
6570 @findex gnus-summary-limit-to-address
6571 Limit the summary buffer to articles in which contents of From, To or Cc
6572 header match a given address (@code{gnus-summary-limit-to-address}). If
6573 given a prefix, exclude matching articles.
6576 @kindex / S (Summary)
6577 @findex gnus-summary-limit-to-singletons
6578 Limit the summary buffer to articles that aren't part of any displayed
6579 threads (@code{gnus-summary-limit-to-singletons}). If given a prefix,
6580 limit to articles that are part of displayed threads.
6583 @kindex / x (Summary)
6584 @findex gnus-summary-limit-to-extra
6585 Limit the summary buffer to articles that match one of the ``extra''
6586 headers (@pxref{To From Newsgroups})
6587 (@code{gnus-summary-limit-to-extra}). If given a prefix, exclude
6592 @kindex / u (Summary)
6594 @findex gnus-summary-limit-to-unread
6595 Limit the summary buffer to articles not marked as read
6596 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
6597 buffer to articles strictly unread. This means that ticked and
6598 dormant articles will also be excluded.
6601 @kindex / m (Summary)
6602 @findex gnus-summary-limit-to-marks
6603 Ask for a mark and then limit to all articles that have been marked
6604 with that mark (@code{gnus-summary-limit-to-marks}).
6607 @kindex / t (Summary)
6608 @findex gnus-summary-limit-to-age
6609 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
6610 (@code{gnus-summary-limit-to-age}). If given a prefix, limit to
6611 articles younger than that number of days.
6614 @kindex / n (Summary)
6615 @findex gnus-summary-limit-to-articles
6616 With prefix @samp{n}, limit the summary buffer to the next @samp{n}
6617 articles. If not given a prefix, use the process marked articles
6618 instead. (@code{gnus-summary-limit-to-articles}).
6621 @kindex / w (Summary)
6622 @findex gnus-summary-pop-limit
6623 Pop the previous limit off the stack and restore it
6624 (@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off
6628 @kindex / . (Summary)
6629 @findex gnus-summary-limit-to-unseen
6630 Limit the summary buffer to the unseen articles
6631 (@code{gnus-summary-limit-to-unseen}).
6634 @kindex / v (Summary)
6635 @findex gnus-summary-limit-to-score
6636 Limit the summary buffer to articles that have a score at or above some
6637 score (@code{gnus-summary-limit-to-score}).
6640 @kindex / p (Summary)
6641 @findex gnus-summary-limit-to-display-predicate
6642 Limit the summary buffer to articles that satisfy the @code{display}
6643 group parameter predicate
6644 (@code{gnus-summary-limit-to-display-predicate}). @xref{Group
6645 Parameters}, for more on this predicate.
6648 @kindex / r (Summary)
6649 @findex gnus-summary-limit-to-replied
6650 Limit the summary buffer to replied articles
6651 (@code{gnus-summary-limit-to-replied}). If given a prefix, exclude
6656 @kindex M S (Summary)
6657 @kindex / E (Summary)
6658 @findex gnus-summary-limit-include-expunged
6659 Include all expunged articles in the limit
6660 (@code{gnus-summary-limit-include-expunged}).
6663 @kindex / D (Summary)
6664 @findex gnus-summary-limit-include-dormant
6665 Include all dormant articles in the limit
6666 (@code{gnus-summary-limit-include-dormant}).
6669 @kindex / * (Summary)
6670 @findex gnus-summary-limit-include-cached
6671 Include all cached articles in the limit
6672 (@code{gnus-summary-limit-include-cached}).
6675 @kindex / d (Summary)
6676 @findex gnus-summary-limit-exclude-dormant
6677 Exclude all dormant articles from the limit
6678 (@code{gnus-summary-limit-exclude-dormant}).
6681 @kindex / M (Summary)
6682 @findex gnus-summary-limit-exclude-marks
6683 Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
6686 @kindex / T (Summary)
6687 @findex gnus-summary-limit-include-thread
6688 Include all the articles in the current thread in the limit.
6691 @kindex / c (Summary)
6692 @findex gnus-summary-limit-exclude-childless-dormant
6693 Exclude all dormant articles that have no children from the limit@*
6694 (@code{gnus-summary-limit-exclude-childless-dormant}).
6697 @kindex / C (Summary)
6698 @findex gnus-summary-limit-mark-excluded-as-read
6699 Mark all excluded unread articles as read
6700 (@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix,
6701 also mark excluded ticked and dormant articles as read.
6704 @kindex / b (Summary)
6705 @findex gnus-summary-limit-to-bodies
6706 Limit the summary buffer to articles that have bodies that match a
6707 certain regexp (@code{gnus-summary-limit-to-bodies}). If given a
6708 prefix, reverse the limit. This command is quite slow since it
6709 requires selecting each article to find the matches.
6712 @kindex / h (Summary)
6713 @findex gnus-summary-limit-to-headers
6714 Like the previous command, only limit to headers instead
6715 (@code{gnus-summary-limit-to-headers}).
6720 The following commands aren't limiting commands, but use the @kbd{/}
6725 @kindex / N (Summary)
6726 @findex gnus-summary-insert-new-articles
6727 Insert all new articles in the summary buffer. It scans for new emails
6728 if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6731 @kindex / o (Summary)
6732 @findex gnus-summary-insert-old-articles
6733 Insert all old articles in the summary buffer. If given a numbered
6734 prefix, fetch this number of articles.
6742 @cindex article threading
6744 Gnus threads articles by default. @dfn{To thread} is to put responses
6745 to articles directly after the articles they respond to---in a
6746 hierarchical fashion.
6748 Threading is done by looking at the @code{References} headers of the
6749 articles. In a perfect world, this would be enough to build pretty
6750 trees, but unfortunately, the @code{References} header is often broken
6751 or simply missing. Weird news propagation exacerbates the problem,
6752 so one has to employ other heuristics to get pleasing results. A
6753 plethora of approaches exists, as detailed in horrible detail in
6754 @ref{Customizing Threading}.
6756 First, a quick overview of the concepts:
6760 The top-most article in a thread; the first article in the thread.
6763 A tree-like article structure.
6766 A small(er) section of this tree-like structure.
6769 Threads often lose their roots due to article expiry, or due to the root
6770 already having been read in a previous session, and not displayed in the
6771 summary buffer. We then typically have many sub-threads that really
6772 belong to one thread, but are without connecting roots. These are
6773 called loose threads.
6775 @item thread gathering
6776 An attempt to gather loose threads into bigger threads.
6778 @item sparse threads
6779 A thread where the missing articles have been ``guessed'' at, and are
6780 displayed as empty lines in the summary buffer.
6786 * Customizing Threading:: Variables you can change to affect the threading.
6787 * Thread Commands:: Thread based commands in the summary buffer.
6791 @node Customizing Threading
6792 @subsection Customizing Threading
6793 @cindex customizing threading
6796 * Loose Threads:: How Gnus gathers loose threads into bigger threads.
6797 * Filling In Threads:: Making the threads displayed look fuller.
6798 * More Threading:: Even more variables for fiddling with threads.
6799 * Low-Level Threading:: You thought it was over@dots{} but you were wrong!
6804 @subsubsection Loose Threads
6807 @cindex loose threads
6810 @item gnus-summary-make-false-root
6811 @vindex gnus-summary-make-false-root
6812 If non-@code{nil}, Gnus will gather all loose subtrees into one big tree
6813 and create a dummy root at the top. (Wait a minute. Root at the top?
6814 Yup.) Loose subtrees occur when the real root has expired, or you've
6815 read or killed the root in a previous session.
6817 When there is no real root of a thread, Gnus will have to fudge
6818 something. This variable says what fudging method Gnus should use.
6819 There are four possible values:
6823 \gnusfigure{The Summary Buffer}{390}{
6824 \put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}}
6825 \put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}}
6826 \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}}
6827 \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}}
6832 @cindex adopting articles
6837 Gnus will make the first of the orphaned articles the parent. This
6838 parent will adopt all the other articles. The adopted articles will be
6839 marked as such by pointy brackets (@samp{<>}) instead of the standard
6840 square brackets (@samp{[]}). This is the default method.
6843 @vindex gnus-summary-dummy-line-format
6844 @vindex gnus-summary-make-false-root-always
6845 Gnus will create a dummy summary line that will pretend to be the
6846 parent. This dummy line does not correspond to any real article, so
6847 selecting it will just select the first real article after the dummy
6848 article. @code{gnus-summary-dummy-line-format} is used to specify the
6849 format of the dummy roots. It accepts only one format spec: @samp{S},
6850 which is the subject of the article. @xref{Formatting Variables}.
6851 If you want all threads to have a dummy root, even the non-gathered
6852 ones, set @code{gnus-summary-make-false-root-always} to @code{t}.
6855 Gnus won't actually make any article the parent, but simply leave the
6856 subject field of all orphans except the first empty. (Actually, it will
6857 use @code{gnus-summary-same-subject} as the subject (@pxref{Summary
6861 Don't make any article parent at all. Just gather the threads and
6862 display them after one another.
6865 Don't gather loose threads.
6868 @item gnus-summary-gather-subject-limit
6869 @vindex gnus-summary-gather-subject-limit
6870 Loose threads are gathered by comparing subjects of articles. If this
6871 variable is @code{nil}, Gnus requires an exact match between the
6872 subjects of the loose threads before gathering them into one big
6873 super-thread. This might be too strict a requirement, what with the
6874 presence of stupid newsreaders that chop off long subject lines. If
6875 you think so, set this variable to, say, 20 to require that only the
6876 first 20 characters of the subjects have to match. If you set this
6877 variable to a really low number, you'll find that Gnus will gather
6878 everything in sight into one thread, which isn't very helpful.
6880 @cindex fuzzy article gathering
6881 If you set this variable to the special value @code{fuzzy}, Gnus will
6882 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy
6885 @item gnus-simplify-subject-fuzzy-regexp
6886 @vindex gnus-simplify-subject-fuzzy-regexp
6887 This can either be a regular expression or list of regular expressions
6888 that match strings that will be removed from subjects if fuzzy subject
6889 simplification is used.
6891 @item gnus-simplify-ignored-prefixes
6892 @vindex gnus-simplify-ignored-prefixes
6893 If you set @code{gnus-summary-gather-subject-limit} to something as low
6894 as 10, you might consider setting this variable to something sensible:
6896 @c Written by Michael Ernst <mernst@cs.rice.edu>
6898 (setq gnus-simplify-ignored-prefixes
6904 "wanted" "followup" "summary\\( of\\)?"
6905 "help" "query" "problem" "question"
6906 "answer" "reference" "announce"
6907 "How can I" "How to" "Comparison of"
6912 (mapconcat 'identity
6913 '("for" "for reference" "with" "about")
6915 "\\)?\\]?:?[ \t]*"))
6918 All words that match this regexp will be removed before comparing two
6921 @item gnus-simplify-subject-functions
6922 @vindex gnus-simplify-subject-functions
6923 If non-@code{nil}, this variable overrides
6924 @code{gnus-summary-gather-subject-limit}. This variable should be a
6925 list of functions to apply to the @code{Subject} string iteratively to
6926 arrive at the simplified version of the string.
6928 Useful functions to put in this list include:
6931 @item gnus-simplify-subject-re
6932 @findex gnus-simplify-subject-re
6933 Strip the leading @samp{Re:}.
6935 @item gnus-simplify-subject-fuzzy
6936 @findex gnus-simplify-subject-fuzzy
6939 @item gnus-simplify-whitespace
6940 @findex gnus-simplify-whitespace
6941 Remove excessive whitespace.
6943 @item gnus-simplify-all-whitespace
6944 @findex gnus-simplify-all-whitespace
6945 Remove all whitespace.
6948 You may also write your own functions, of course.
6951 @item gnus-summary-gather-exclude-subject
6952 @vindex gnus-summary-gather-exclude-subject
6953 Since loose thread gathering is done on subjects only, that might lead
6954 to many false hits, especially with certain common subjects like
6955 @samp{} and @samp{(none)}. To make the situation slightly better,
6956 you can use the regexp @code{gnus-summary-gather-exclude-subject} to say
6957 what subjects should be excluded from the gathering process.@*
6958 The default is @samp{^ *$\\|^(none)$}.
6960 @item gnus-summary-thread-gathering-function
6961 @vindex gnus-summary-thread-gathering-function
6962 Gnus gathers threads by looking at @code{Subject} headers. This means
6963 that totally unrelated articles may end up in the same ``thread'', which
6964 is confusing. An alternate approach is to look at all the
6965 @code{Message-ID}s in all the @code{References} headers to find matches.
6966 This will ensure that no gathered threads ever include unrelated
6967 articles, but it also means that people who have posted with broken
6968 newsreaders won't be gathered properly. The choice is yours---plague or
6972 @item gnus-gather-threads-by-subject
6973 @findex gnus-gather-threads-by-subject
6974 This function is the default gathering function and looks at
6975 @code{Subject}s exclusively.
6977 @item gnus-gather-threads-by-references
6978 @findex gnus-gather-threads-by-references
6979 This function looks at @code{References} headers exclusively.
6982 If you want to test gathering by @code{References}, you could say
6986 (setq gnus-summary-thread-gathering-function
6987 'gnus-gather-threads-by-references)
6993 @node Filling In Threads
6994 @subsubsection Filling In Threads
6997 @item gnus-fetch-old-headers
6998 @vindex gnus-fetch-old-headers
6999 If non-@code{nil}, Gnus will attempt to build old threads by fetching
7000 more old headers---headers to articles marked as read. If you would
7001 like to display as few summary lines as possible, but still connect as
7002 many loose threads as possible, you should set this variable to
7003 @code{some} or a number. If you set it to a number, no more than that
7004 number of extra old headers will be fetched. In either case, fetching
7005 old headers only works if the back end you are using carries overview
7006 files---this would normally be @code{nntp}, @code{nnspool},
7007 @code{nnml}, and @code{nnmaildir}. Also remember that if the root of
7008 the thread has been expired by the server, there's not much Gnus can
7011 This variable can also be set to @code{invisible}. This won't have any
7012 visible effects, but is useful if you use the @kbd{A T} command a lot
7013 (@pxref{Finding the Parent}).
7015 The server has to support @acronym{NOV} for any of this to work.
7017 @cindex Gmane, gnus-fetch-old-headers
7018 This feature can seriously impact performance it ignores all locally
7019 cached header entries. Setting it to @code{t} for groups for a server
7020 that doesn't expire articles (such as news.gmane.org), leads to very
7021 slow summary generation.
7023 @item gnus-fetch-old-ephemeral-headers
7024 @vindex gnus-fetch-old-ephemeral-headers
7025 Same as @code{gnus-fetch-old-headers}, but only used for ephemeral
7028 @item gnus-build-sparse-threads
7029 @vindex gnus-build-sparse-threads
7030 Fetching old headers can be slow. A low-rent similar effect can be
7031 gotten by setting this variable to @code{some}. Gnus will then look at
7032 the complete @code{References} headers of all articles and try to string
7033 together articles that belong in the same thread. This will leave
7034 @dfn{gaps} in the threading display where Gnus guesses that an article
7035 is missing from the thread. (These gaps appear like normal summary
7036 lines. If you select a gap, Gnus will try to fetch the article in
7037 question.) If this variable is @code{t}, Gnus will display all these
7038 ``gaps'' without regard for whether they are useful for completing the
7039 thread or not. Finally, if this variable is @code{more}, Gnus won't cut
7040 off sparse leaf nodes that don't lead anywhere. This variable is
7041 @code{nil} by default.
7043 @item gnus-read-all-available-headers
7044 @vindex gnus-read-all-available-headers
7045 This is a rather obscure variable that few will find useful. It's
7046 intended for those non-news newsgroups where the back end has to fetch
7047 quite a lot to present the summary buffer, and where it's impossible to
7048 go back to parents of articles. This is mostly the case in the
7051 If you don't use those, then it's safe to leave this as the default
7052 @code{nil}. If you want to use this variable, it should be a regexp
7053 that matches the group name, or @code{t} for all groups.
7058 @node More Threading
7059 @subsubsection More Threading
7062 @item gnus-show-threads
7063 @vindex gnus-show-threads
7064 If this variable is @code{nil}, no threading will be done, and all of
7065 the rest of the variables here will have no effect. Turning threading
7066 off will speed group selection up a bit, but it is sure to make reading
7067 slower and more awkward.
7069 @item gnus-thread-hide-subtree
7070 @vindex gnus-thread-hide-subtree
7071 If non-@code{nil}, all threads will be hidden when the summary buffer is
7074 This can also be a predicate specifier (@pxref{Predicate Specifiers}).
7075 Available predicates are @code{gnus-article-unread-p} and
7076 @code{gnus-article-unseen-p}.
7081 (setq gnus-thread-hide-subtree
7082 '(or gnus-article-unread-p
7083 gnus-article-unseen-p))
7086 (It's a pretty nonsensical example, since all unseen articles are also
7087 unread, but you get my drift.)
7090 @item gnus-thread-expunge-below
7091 @vindex gnus-thread-expunge-below
7092 All threads that have a total score (as defined by
7093 @code{gnus-thread-score-function}) less than this number will be
7094 expunged. This variable is @code{nil} by default, which means that no
7095 threads are expunged.
7097 @item gnus-thread-hide-killed
7098 @vindex gnus-thread-hide-killed
7099 if you kill a thread and this variable is non-@code{nil}, the subtree
7102 @item gnus-thread-ignore-subject
7103 @vindex gnus-thread-ignore-subject
7104 Sometimes somebody changes the subject in the middle of a thread. If
7105 this variable is non-@code{nil}, which is the default, the subject
7106 change is ignored. If it is @code{nil}, a change in the subject will
7107 result in a new thread.
7109 @item gnus-thread-indent-level
7110 @vindex gnus-thread-indent-level
7111 This is a number that says how much each sub-thread should be indented.
7114 @item gnus-sort-gathered-threads-function
7115 @vindex gnus-sort-gathered-threads-function
7116 Sometimes, particularly with mailing lists, the order in which mails
7117 arrive locally is not necessarily the same as the order in which they
7118 arrived on the mailing list. Consequently, when sorting sub-threads
7119 using the default @code{gnus-thread-sort-by-number}, responses can end
7120 up appearing before the article to which they are responding to.
7121 Setting this variable to an alternate value
7122 (e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an
7123 appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a
7124 more logical sub-thread ordering in such instances.
7129 @node Low-Level Threading
7130 @subsubsection Low-Level Threading
7134 @item gnus-parse-headers-hook
7135 @vindex gnus-parse-headers-hook
7136 Hook run before parsing any headers.
7138 @item gnus-alter-header-function
7139 @vindex gnus-alter-header-function
7140 If non-@code{nil}, this function will be called to allow alteration of
7141 article header structures. The function is called with one parameter,
7142 the article header vector, which it may alter in any way. For instance,
7143 if you have a mail-to-news gateway which alters the @code{Message-ID}s
7144 in systematic ways (by adding prefixes and such), you can use this
7145 variable to un-scramble the @code{Message-ID}s so that they are more
7146 meaningful. Here's one example:
7149 (setq gnus-alter-header-function 'my-alter-message-id)
7151 (defun my-alter-message-id (header)
7152 (let ((id (mail-header-id header)))
7154 "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id)
7156 (concat (match-string 1 id) "@@" (match-string 2 id))
7163 @node Thread Commands
7164 @subsection Thread Commands
7165 @cindex thread commands
7171 @kindex T k (Summary)
7172 @kindex C-M-k (Summary)
7173 @findex gnus-summary-kill-thread
7174 Mark all articles in the current (sub-)thread as read
7175 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
7176 remove all marks instead. If the prefix argument is negative, tick
7181 @kindex T l (Summary)
7182 @kindex C-M-l (Summary)
7183 @findex gnus-summary-lower-thread
7184 Lower the score of the current (sub-)thread
7185 (@code{gnus-summary-lower-thread}).
7188 @kindex T i (Summary)
7189 @findex gnus-summary-raise-thread
7190 Increase the score of the current (sub-)thread
7191 (@code{gnus-summary-raise-thread}).
7194 @kindex T # (Summary)
7195 @findex gnus-uu-mark-thread
7196 Set the process mark on the current (sub-)thread
7197 (@code{gnus-uu-mark-thread}).
7200 @kindex T M-# (Summary)
7201 @findex gnus-uu-unmark-thread
7202 Remove the process mark from the current (sub-)thread
7203 (@code{gnus-uu-unmark-thread}).
7206 @kindex T T (Summary)
7207 @findex gnus-summary-toggle-threads
7208 Toggle threading (@code{gnus-summary-toggle-threads}).
7211 @kindex T s (Summary)
7212 @findex gnus-summary-show-thread
7213 Expose the (sub-)thread hidden under the current article, if any@*
7214 (@code{gnus-summary-show-thread}).
7217 @kindex T h (Summary)
7218 @findex gnus-summary-hide-thread
7219 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
7222 @kindex T S (Summary)
7223 @findex gnus-summary-show-all-threads
7224 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
7227 @kindex T H (Summary)
7228 @findex gnus-summary-hide-all-threads
7229 Hide all threads (@code{gnus-summary-hide-all-threads}).
7232 @kindex T t (Summary)
7233 @findex gnus-summary-rethread-current
7234 Re-thread the current article's thread
7235 (@code{gnus-summary-rethread-current}). This works even when the
7236 summary buffer is otherwise unthreaded.
7239 @kindex T ^ (Summary)
7240 @findex gnus-summary-reparent-thread
7241 Make the current article the child of the marked (or previous) article
7242 (@code{gnus-summary-reparent-thread}).
7245 @kindex T M-^ (Summary)