1This is gnus.info, produced by makeinfo version 6.7 from gnus.texi. 2 3Copyright © 1995–2021 Free Software Foundation, Inc. 4 5 Permission is granted to copy, distribute and/or modify this 6 document under the terms of the GNU Free Documentation License, 7 Version 1.3 or any later version published by the Free Software 8 Foundation; with no Invariant Sections, with the Front-Cover Texts 9 being “A GNU Manual”, and with the Back-Cover Texts as in (a) 10 below. A copy of the license is included in the section entitled 11 “GNU Free Documentation License”. 12 13 (a) The FSF’s Back-Cover Text is: “You have the freedom to copy and 14 modify this GNU manual.” 15INFO-DIR-SECTION Emacs network features 16START-INFO-DIR-ENTRY 17* Gnus: (gnus). The newsreader Gnus. 18END-INFO-DIR-ENTRY 19 20 21File: gnus.info, Node: Top, Next: Starting Up, Up: (dir) 22 23The Gnus Newsreader 24******************* 25 26You can read news (and mail) from within Emacs by using Gnus. The news 27can be gotten by any nefarious means you can think of—NNTP, local spool 28or your mbox file. All at the same time, if you want to push your luck. 29 30 This manual corresponds to Gnus v5.13 31 32 Copyright © 1995–2021 Free Software Foundation, Inc. 33 34 Permission is granted to copy, distribute and/or modify this 35 document under the terms of the GNU Free Documentation License, 36 Version 1.3 or any later version published by the Free Software 37 Foundation; with no Invariant Sections, with the Front-Cover Texts 38 being “A GNU Manual”, and with the Back-Cover Texts as in (a) 39 below. A copy of the license is included in the section entitled 40 “GNU Free Documentation License”. 41 42 (a) The FSF’s Back-Cover Text is: “You have the freedom to copy and 43 modify this GNU manual.” 44 45* Menu: 46 47* Starting Up:: Finding news can be a pain. 48* Group Buffer:: Selecting, subscribing and killing groups. 49* Summary Buffer:: Reading, saving and posting articles. 50* Article Buffer:: Displaying and handling articles. 51* Composing Messages:: Information on sending mail and news. 52* Select Methods:: Gnus reads all messages from various select methods. 53* Scoring:: Assigning values to articles. 54* Searching:: Mail and News search engines. 55* Various:: General purpose settings. 56* The End:: Farewell and goodbye. 57* Appendices:: Terminology, Emacs intro, FAQ, History, Internals. 58* GNU Free Documentation License:: The license for this documentation. 59* Index:: Variable, function and concept index. 60* Key Index:: Key Index. 61 62Other related manuals 63 64* Message:(message). Composing messages. 65* Emacs-MIME:(emacs-mime). Composing messages; MIME-specific parts. 66* Sieve:(sieve). Managing Sieve scripts in Emacs. 67* EasyPG:(epa). PGP/MIME with Gnus. 68* SASL:(sasl). SASL authentication in Emacs. 69 70 — The Detailed Node Listing — 71 72Starting Gnus 73 74* Finding the News:: Choosing a method for getting news. 75* The Server is Down:: How can I read my mail then? 76* Slave Gnusae:: You can have more than one Gnus active at a time. 77* Fetching a Group:: Starting Gnus just to read a group. 78* New Groups:: What is Gnus supposed to do with new groups? 79* Changing Servers:: You may want to move from one server to another. 80* Startup Files:: Those pesky startup files—‘.newsrc’. 81* Auto Save:: Recovering from a crash. 82* The Active File:: Reading the active file over a slow line Takes Time. 83* Startup Variables:: Other variables you might change. 84 85New Groups 86 87* Checking New Groups:: Determining what groups are new. 88* Subscription Methods:: What Gnus should do with new groups. 89* Filtering New Groups:: Making Gnus ignore certain new groups. 90 91Group Buffer 92 93* Group Buffer Format:: Information listed and how you can change it. 94* Group Maneuvering:: Commands for moving in the group buffer. 95* Selecting a Group:: Actually reading news. 96* Subscription Commands:: Unsubscribing, killing, subscribing. 97* Group Data:: Changing the info for a group. 98* Group Levels:: Levels? What are those, then? 99* Group Score:: A mechanism for finding out what groups you like. 100* Marking Groups:: You can mark groups for later processing. 101* Foreign Groups:: Creating and editing groups. 102* Group Parameters:: Each group may have different parameters set. 103* Listing Groups:: Gnus can list various subsets of the groups. 104* Sorting Groups:: Re-arrange the group order. 105* Group Maintenance:: Maintaining a tidy ‘.newsrc’ file. 106* Browse Foreign Server:: You can browse a server. See what it has to offer. 107* Exiting Gnus:: Stop reading news and get some work done. 108* Group Topics:: A folding group mode divided into topics. 109* Non-ASCII Group Names:: Accessing groups of non-English names. 110* Misc Group Stuff:: Other stuff that you can to do. 111 112Group Buffer Format 113 114* Group Line Specification:: Deciding how the group buffer is to look. 115* Group Mode Line Specification:: The group buffer mode line. 116* Group Highlighting:: Having nice colors in the group buffer. 117 118Group Topics 119 120* Topic Commands:: Interactive E-Z commands. 121* Topic Variables:: How to customize the topics the Lisp Way. 122* Topic Sorting:: Sorting each topic individually. 123* Topic Topology:: A map of the world. 124* Topic Parameters:: Parameters that apply to all groups in a topic. 125 126Misc Group Stuff 127 128* Scanning New Messages:: Asking Gnus to see whether new messages have arrived. 129* Group Information:: Information and help on groups and Gnus. 130* Group Timestamp:: Making Gnus keep track of when you last read a group. 131* File Commands:: Reading and writing the Gnus files. 132* Sieve Commands:: Managing Sieve scripts. 133 134Summary Buffer 135 136* Summary Buffer Format:: Deciding how the summary buffer is to look. 137* Summary Maneuvering:: Moving around the summary buffer. 138* Choosing Articles:: Reading articles. 139* Paging the Article:: Scrolling the current article. 140* Reply Followup and Post:: Posting articles. 141* Delayed Articles:: Send articles at a later time. 142* Marking Articles:: Marking articles as read, expirable, etc. 143* Limiting:: You can limit the summary buffer. 144* Threading:: How threads are made. 145* Sorting the Summary Buffer:: How articles and threads are sorted. 146* Asynchronous Fetching:: Gnus might be able to pre-fetch articles. 147* Article Caching:: You may store articles in a cache. 148* Persistent Articles:: Making articles expiry-resistant. 149* Sticky Articles:: Article buffers that are not reused. 150* Article Backlog:: Having already read articles hang around. 151* Saving Articles:: Ways of customizing article saving. 152* Decoding Articles:: Gnus can treat series of (uu)encoded articles. 153* Article Treatment:: The article buffer can be mangled at will. 154* MIME Commands:: Doing MIMEy things with the articles. 155* Charsets:: Character set issues. 156* Article Commands:: Doing various things with the article buffer. 157* Summary Sorting:: Sorting the summary buffer in various ways. 158* Finding the Parent:: No child support? Get the parent. 159* Alternative Approaches:: Reading using non-default summaries. 160* Tree Display:: A more visual display of threads. 161* Mail Group Commands:: Some commands can only be used in mail groups. 162* Various Summary Stuff:: What didn’t fit anywhere else. 163* Exiting the Summary Buffer:: Returning to the Group buffer, 164 or reselecting the current group. 165* Crosspost Handling:: How crossposted articles are dealt with. 166* Duplicate Suppression:: An alternative when crosspost handling fails. 167* Security:: Decrypt and Verify. 168* Mailing List:: Mailing list minor mode. 169 170Summary Buffer Format 171 172* Summary Buffer Lines:: You can specify how summary lines should look. 173* To From Newsgroups:: How to not display your own name. 174* Summary Buffer Mode Line:: You can say how the mode line should look. 175* Summary Highlighting:: Making the summary buffer all pretty and nice. 176 177Choosing Articles 178 179* Choosing Commands:: Commands for choosing articles. 180* Choosing Variables:: Variables that influence these commands. 181 182Reply, Followup and Post 183 184* Summary Mail Commands:: Sending mail. 185* Summary Post Commands:: Sending news. 186* Summary Message Commands:: Other Message-related commands. 187* Canceling and Superseding:: 188 189Marking Articles 190 191* Unread Articles:: Marks for unread articles. 192* Read Articles:: Marks for read articles. 193* Other Marks:: Marks that do not affect readedness. 194* Setting Marks:: How to set and remove marks. 195* Generic Marking Commands:: How to customize the marking. 196* Setting Process Marks:: How to mark articles for later processing. 197 198Threading 199 200* Customizing Threading:: Variables you can change to affect the threading. 201* Thread Commands:: Thread based commands in the summary buffer. 202 203Customizing Threading 204 205* Loose Threads:: How Gnus gathers loose threads into bigger threads. 206* Filling In Threads:: Making the threads displayed look fuller. 207* More Threading:: Even more variables for fiddling with threads. 208* Low-Level Threading:: You thought it was over... but you were wrong! 209 210Decoding Articles 211 212* Uuencoded Articles:: Uudecode articles. 213* Shell Archives:: Unshar articles. 214* PostScript Files:: Split PostScript. 215* Other Files:: Plain save and binhex. 216* Decoding Variables:: Variables for a happy decoding. 217* Viewing Files:: You want to look at the result of the decoding? 218 219Decoding Variables 220 221* Rule Variables:: Variables that say how a file is to be viewed. 222* Other Decode Variables:: Other decode variables. 223* Uuencoding and Posting:: Variables for customizing uuencoding. 224 225Article Treatment 226 227* Article Highlighting:: You want to make the article look like fruit salad. 228* Article Fontisizing:: Making emphasized text look nice. 229* Article Hiding:: You also want to make certain info go away. 230* Article Washing:: Lots of way-neat functions to make life better. 231* Article Header:: Doing various header transformations. 232* Article Buttons:: Click on URLs, Message-IDs, addresses and the like. 233* Article Button Levels:: Controlling appearance of buttons. 234* Article Date:: Grumble, UT! 235* Article Display:: Display various stuff—X-Face, Picons, Smileys, Gravatars 236* Article Signature:: What is a signature? 237* Article Miscellanea:: Various other stuff. 238 239Alternative Approaches 240 241* Pick and Read:: First mark articles and then read them. 242* Binary Groups:: Auto-decode all articles. 243 244Various Summary Stuff 245 246* Summary Group Information:: Information oriented commands. 247* Searching for Articles:: Multiple article commands. 248* Summary Generation Commands:: 249* Really Various Summary Commands:: Those pesky non-conformant commands. 250 251Article Buffer 252 253* Hiding Headers:: Deciding what headers should be displayed. 254* Using MIME:: Pushing articles through MIME before reading them. 255* HTML:: Reading HTML messages. 256* Customizing Articles:: Tailoring the look of the articles. 257* Article Keymap:: Keystrokes available in the article buffer. 258* Misc Article:: Other stuff. 259 260Composing Messages 261 262* Mail:: Mailing and replying. 263* Posting Server:: What server should you post and mail via? 264* POP before SMTP:: You cannot send a mail unless you read a mail. 265* Mail and Post:: Mailing and posting at the same time. 266* Archived Messages:: Where Gnus stores the messages you’ve sent. 267* Posting Styles:: An easier way to specify who you are. 268* Drafts:: Postponing messages and rejected messages. 269* Rejected Articles:: What happens if the server doesn’t like your article? 270* Signing and encrypting:: How to compose secure messages. 271 272Select Methods 273 274* Server Buffer:: Making and editing virtual servers. 275* Getting News:: Reading USENET news with Gnus. 276* Using IMAP:: Reading mail from IMAP. 277* Getting Mail:: Reading your personal mail with Gnus. 278* Browsing the Web:: Getting messages from a plethora of Web sources. 279* Other Sources:: Reading directories, files. 280* Combined Groups:: Combining groups into one group. 281* Email Based Diary:: Using mails to manage diary events in Gnus. 282* Gnus Unplugged:: Reading news and mail offline. 283 284Server Buffer 285 286* Server Buffer Format:: You can customize the look of this buffer. 287* Server Commands:: Commands to manipulate servers. 288* Example Methods:: Examples server specifications. 289* Creating a Virtual Server:: An example session. 290* Server Variables:: Which variables to set. 291* Servers and Methods:: You can use server names as select methods. 292* Unavailable Servers:: Some servers you try to contact may be down. 293 294Getting News 295 296* NNTP:: Reading news from an NNTP server. 297* News Spool:: Reading news from the local spool. 298 299NNTP 300 301* Direct Functions:: Connecting directly to the server. 302* Indirect Functions:: Connecting indirectly to the server. 303* Common Variables:: Understood by several connection functions. 304 305Getting Mail 306 307* Mail in a Newsreader:: Important introductory notes. 308* Getting Started Reading Mail:: A simple cookbook example. 309* Splitting Mail:: How to create mail groups. 310* Mail Sources:: How to tell Gnus where to get mail from. 311* Mail Back End Variables:: Variables for customizing mail handling. 312* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. 313* Group Mail Splitting:: Use group customize to drive mail splitting. 314* Incorporating Old Mail:: What about the old mail you have? 315* Expiring Mail:: Getting rid of unwanted mail. 316* Washing Mail:: Removing cruft from the mail you get. 317* Duplicates:: Dealing with duplicated mail. 318* Not Reading Mail:: Using mail back ends for reading other files. 319* Choosing a Mail Back End:: Gnus can read a variety of mail formats. 320 321Mail Sources 322 323* Mail Source Specifiers:: How to specify what a mail source is. 324* Mail Source Customization:: Some variables that influence things. 325* Fetching Mail:: Using the mail source specifiers. 326 327Choosing a Mail Back End 328 329* Unix Mail Box:: Using the (quite) standard Un*x mbox. 330* Babyl:: Babyl was used by older versions of Rmail. 331* Mail Spool:: Store your mail in a private spool? 332* MH Spool:: An mhspool-like back end. 333* Maildir:: Another one-file-per-message format. 334* Mail Folders:: Having one file for each group. 335* Comparing Mail Back Ends:: An in-depth looks at pros and cons. 336 337Browsing the Web 338 339* Archiving Mail:: 340* Web Searches:: Creating groups from articles that match a string. 341* RSS:: Reading RDF site summary. 342 343Other Sources 344 345* Directory Groups:: You can read a directory as if it was a newsgroup. 346* Anything Groups:: Dired? Who needs dired? 347* Document Groups:: Single files can be the basis of a group. 348* Mail-To-News Gateways:: Posting articles via mail-to-news gateways. 349* The Empty Backend:: The backend that never has any news. 350 351Document Groups 352 353* Document Server Internals:: How to add your own document types. 354 355Combined Groups 356 357* Virtual Groups:: Combining articles from many groups. 358 359Email Based Diary 360 361* The NNDiary Back End:: Basic setup and usage. 362* The Gnus Diary Library:: Utility toolkit on top of nndiary. 363 364The NNDiary Back End 365 366* Diary Messages:: What makes a message valid for nndiary. 367* Running NNDiary:: NNDiary has two modes of operation. 368* Customizing NNDiary:: Bells and whistles. 369 370The Gnus Diary Library 371 372* Diary Summary Line Format:: A nicer summary buffer line format. 373* Diary Articles Sorting:: A nicer way to sort messages. 374* Diary Headers Generation:: Not doing it manually. 375* Diary Group Parameters:: Not handling them manually. 376 377Gnus Unplugged 378 379* Agent Basics:: How it all is supposed to work. 380* Agent Categories:: How to tell the Gnus Agent what to download. 381* Agent Commands:: New commands for all the buffers. 382* Agent Visuals:: Ways that the agent may effect your summary buffer. 383* Agent as Cache:: The Agent is a big cache too. 384* Agent Expiry:: How to make old articles go away. 385* Agent Regeneration:: How to recover from lost connections and other accidents. 386* Agent and flags:: How the Agent maintains flags. 387* Agent and IMAP:: How to use the Agent with IMAP. 388* Outgoing Messages:: What happens when you post/mail something? 389* Agent Variables:: Customizing is fun. 390* Example Setup:: An example ‘~/.gnus.el’ file for offline people. 391* Batching Agents:: How to fetch news from a ‘cron’ job. 392* Agent Caveats:: What you think it’ll do and what it does. 393 394Agent Categories 395 396* Category Syntax:: What a category looks like. 397* Category Buffer:: A buffer for maintaining categories. 398* Category Variables:: Customize’r’Us. 399 400Agent Commands 401 402* Group Agent Commands:: Configure groups and fetch their contents. 403* Summary Agent Commands:: Manually select then fetch specific articles. 404* Server Agent Commands:: Select the servers that are supported by the agent. 405 406Scoring 407 408* Summary Score Commands:: Adding score entries for the current group. 409* Group Score Commands:: General score commands. 410* Score Variables:: Customize your scoring. (My, what terminology). 411* Score File Format:: What a score file may contain. 412* Score File Editing:: You can edit score files by hand as well. 413* Adaptive Scoring:: Big Sister Gnus knows what you read. 414* Home Score File:: How to say where new score entries are to go. 415* Followups To Yourself:: Having Gnus notice when people answer you. 416* Scoring On Other Headers:: Scoring on non-standard headers. 417* Scoring Tips:: How to score effectively. 418* Reverse Scoring:: That problem child of old is not problem. 419* Global Score Files:: Earth-spanning, ear-splitting score files. 420* Kill Files:: They are still here, but they can be ignored. 421* Converting Kill Files:: Translating kill files to score files. 422* Advanced Scoring:: Using logical expressions to build score rules. 423* Score Decays:: It can be useful to let scores wither away. 424 425Advanced Scoring 426 427* Advanced Scoring Syntax:: A definition. 428* Advanced Scoring Examples:: What they look like. 429* Advanced Scoring Tips:: Getting the most out of it. 430 431Searching 432 433* nnir:: Searching with various engines. 434* nnmairix:: Searching with Mairix. 435 436nnir 437 438* What is nnir?:: What does nnir do. 439* Basic Usage:: How to perform simple searches. 440* Setting up nnir:: How to set up nnir. 441 442Setting up nnir 443 444* Associating Engines:: How to associate engines. 445 446Various 447 448* Process/Prefix:: A convention used by many treatment commands. 449* Interactive:: Making Gnus ask you many questions. 450* Symbolic Prefixes:: How to supply some Gnus functions with options. 451* Formatting Variables:: You can specify what buffers should look like. 452* Window Layout:: Configuring the Gnus buffer windows. 453* Tabbed Interface:: Configuring the Gnus tabs. 454* Faces and Fonts:: How to change how faces look. 455* Mode Lines:: Displaying information in the mode lines. 456* Highlighting and Menus:: Making buffers look all nice and cozy. 457* Daemons:: Gnus can do things behind your back. 458* Undo:: Some actions can be undone. 459* Predicate Specifiers:: Specifying predicates. 460* Moderation:: What to do if you’re a moderator. 461* Image Enhancements:: Modern versions of Emacs can display images. 462* Fuzzy Matching:: What’s the big fuzz? 463* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email. 464* Spam Package:: A package for filtering and processing spam. 465* The Gnus Registry:: A package for tracking messages by Message-ID. 466* The Gnus Cloud:: A package for synchronizing Gnus marks. 467* Other modes:: Interaction with other modes. 468* Various Various:: Things that are really various. 469 470Formatting Variables 471 472* Formatting Basics:: A formatting variable is basically a format string. 473* Mode Line Formatting:: Some rules about mode line formatting variables. 474* Advanced Formatting:: Modifying output in various ways. 475* User-Defined Specs:: Having Gnus call your own functions. 476* Formatting Fonts:: Making the formatting look colorful and nice. 477* Positioning Point:: Moving point to a position after an operation. 478* Tabulation:: Tabulating your output. 479 480Image Enhancements 481 482* X-Face:: Display a funky, teensy black-and-white image. 483* Face:: Display a funkier, teensier colored image. 484* Smileys:: Show all those happy faces the way they were 485 meant to be shown. 486* Picons:: How to display pictures of what you’re reading. 487* Gravatars:: Display the avatar of people you read. 488 489Thwarting Email Spam 490 491* The problem of spam:: Some background, and some solutions 492* Anti-Spam Basics:: Simple steps to reduce the amount of spam. 493* SpamAssassin:: How to use external anti-spam tools. 494* Hashcash:: Reduce spam by burning CPU time. 495 496Spam Package 497 498* Spam Package Introduction:: 499* Filtering Incoming Mail:: 500* Detecting Spam in Groups:: 501* Spam and Ham Processors:: 502* Spam Package Configuration Examples:: 503* Spam Back Ends:: 504* Extending the Spam package:: 505* Spam Statistics Package:: 506 507Spam Statistics Package 508 509* Creating a spam-stat dictionary:: 510* Splitting mail using spam-stat:: 511* Low-level interface to the spam-stat dictionary:: 512 513Appendices 514 515* History:: How Gnus got where it is today. 516* On Writing Manuals:: Why this is not a beginner’s guide. 517* Terminology:: We use really difficult, like, words here. 518* Customization:: Tailoring Gnus to your needs. 519* Troubleshooting:: What you might try if things do not work. 520* Gnus Reference Guide:: Rilly, rilly technical stuff. 521* Emacs for Heathens:: A short introduction to Emacsian terms. 522* Frequently Asked Questions:: The Gnus FAQ 523 524History 525 526* Gnus Versions:: What Gnus versions have been released. 527* Why?:: What’s the point of Gnus? 528* Compatibility:: Just how compatible is Gnus with GNUS? 529* Conformity:: Gnus tries to conform to all standards. 530* Emacsen:: Gnus can be run on a few modern Emacsen. 531* Gnus Development:: How Gnus is developed. 532* Contributors:: Oodles of people. 533* New Features:: Pointers to some of the new stuff in Gnus. 534 535New Features 536 537* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. 538* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3. 539* Red Gnus:: Third time best—Gnus 5.4/5.5. 540* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. 541* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. 542* Oort Gnus:: It’s big. It’s far out. Gnus 5.10/5.11. 543* No Gnus:: Very punny. Gnus 5.12/5.13 544* Ma Gnus:: Celebrating 25 years of Gnus. 545 546Customization 547 548* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere. 549* Slow Terminal Connection:: You run a remote Emacs. 550* Little Disk Space:: You feel that having large setup files is icky. 551* Slow Machine:: You feel like buying a faster machine. 552 553Gnus Reference Guide 554 555* Gnus Utility Functions:: Common functions and variable to use. 556* Back End Interface:: How Gnus communicates with the servers. 557* Score File Syntax:: A BNF definition of the score file standard. 558* Headers:: How Gnus stores headers internally. 559* Ranges:: A handy format for storing mucho numbers. 560* Group Info:: The group info format. 561* Extended Interactive:: Symbolic prefixes and stuff. 562* Various File Formats:: Formats of files that Gnus use. 563 564Back End Interface 565 566* Required Back End Functions:: Functions that must be implemented. 567* Optional Back End Functions:: Functions that need not be implemented. 568* Error Messaging:: How to get messages and report errors. 569* Writing New Back Ends:: Extending old back ends. 570* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end. 571* Mail-like Back Ends:: Some tips on mail back ends. 572 573Various File Formats 574 575* Active File Format:: Information on articles and groups available. 576* Newsgroups File Format:: Group descriptions. 577 578Emacs for Heathens 579 580* Keystrokes:: Entering text and executing commands. 581* Emacs Lisp:: The built-in Emacs programming language. 582 583 584 585File: gnus.info, Node: Starting Up, Next: Group Buffer, Prev: Top, Up: Top 586 5871 Starting Gnus 588*************** 589 590If you haven’t used Emacs much before using Gnus, read *note Emacs for 591Heathens:: first. 592 593 If your system administrator has set things up properly, starting 594Gnus and reading news is extremely easy—you just type ‘M-x gnus’ in your 595Emacs. If not, you should customize the variable ‘gnus-select-method’ 596as described in *note Finding the News::. For a minimal setup for 597posting should also customize the variables ‘user-full-name’ and 598‘user-mail-address’. 599 600 If you want to start Gnus in a different frame, you can use the 601command ‘M-x gnus-other-frame’ instead. 602 603 If things do not go smoothly at startup, you have to twiddle some 604variables in your ‘~/.gnus.el’ file. This file is similar to 605‘~/.emacs’, but is read when Gnus starts. 606 607 If you puzzle at any terms used in this manual, please refer to the 608terminology section (*note Terminology::). 609 610* Menu: 611 612* Finding the News:: Choosing a method for getting news. 613* The Server is Down:: How can I read my mail then? 614* Slave Gnusae:: You can have more than one Gnus active at a time. 615* New Groups:: What is Gnus supposed to do with new groups? 616* Changing Servers:: You may want to move from one server to another. 617* Startup Files:: Those pesky startup files—‘.newsrc’. 618* Auto Save:: Recovering from a crash. 619* The Active File:: Reading the active file over a slow line Takes Time. 620* Startup Variables:: Other variables you might change. 621 622 623File: gnus.info, Node: Finding the News, Next: The Server is Down, Up: Starting Up 624 6251.1 Finding the News 626==================== 627 628First of all, you should know that there is a special buffer called 629‘*Server*’ that lists all the servers Gnus knows about. You can press 630‘^’ from the Group buffer to see it. In the Server buffer, you can 631press ‘<RET>’ on a defined server to see all the groups it serves 632(subscribed or not!). You can also add or delete servers, edit a 633foreign server’s definition, agentize or de-agentize a server, and do 634many other neat things. *Note Server Buffer::. *Note Foreign Groups::. 635*Note Agent Basics::. 636 637 The ‘gnus-select-method’ variable says where Gnus should look for 638news. This variable should be a list where the first element says “how” 639and the second element says “where”. This method is your native method. 640All groups not fetched with this method are secondary or foreign groups. 641 642 For instance, if the ‘news.somewhere.edu’ NNTP server is where you 643want to get your daily dosage of news from, you’d say: 644 645 (setq gnus-select-method '(nntp "news.somewhere.edu")) 646 647 If you want to read directly from the local spool, say: 648 649 (setq gnus-select-method '(nnspool "")) 650 651 If you can use a local spool, you probably should, as it will almost 652certainly be much faster. But do not use the local spool if your server 653is running Leafnode (which is a simple, standalone private news server); 654in this case, use ‘(nntp "localhost")’. 655 656 If this variable is not set, Gnus will take a look at the 657‘NNTPSERVER’ environment variable. If that variable isn’t set, Gnus 658will see whether ‘gnus-nntpserver-file’ (‘/etc/nntpserver’ by default) 659has any opinions on the matter. If that fails as well, Gnus will try to 660use the machine running Emacs as an NNTP server. That’s a long shot, 661though. 662 663 However, if you use one NNTP server regularly and are just interested 664in a couple of groups from a different server, you would be better 665served by using the ‘B’ command in the group buffer. It will let you 666have a look at what groups are available, and you can subscribe to any 667of the groups you want to. This also makes ‘.newsrc’ maintenance much 668tidier. *Note Foreign Groups::. 669 670 A slightly different approach to foreign groups is to set the 671‘gnus-secondary-select-methods’ variable. The select methods listed in 672this variable are in many ways just as native as the 673‘gnus-select-method’ server. They will also be queried for active files 674during startup (if that’s required), and new newsgroups that appear on 675these servers will be subscribed (or not) just as native groups are. 676 677 For instance, if you use the ‘nnmbox’ back end to read your mail, you 678would typically set this variable to 679 680 (setq gnus-secondary-select-methods '((nnmbox ""))) 681 682 683File: gnus.info, Node: The Server is Down, Next: Slave Gnusae, Prev: Finding the News, Up: Starting Up 684 6851.2 The Server is Down 686====================== 687 688If the default server is down, Gnus will understandably have some 689problems starting. However, if you have some mail groups in addition to 690the news groups, you may want to start Gnus anyway. 691 692 Gnus, being the trusting sort of program, will ask whether to proceed 693without a native select method if that server can’t be contacted. This 694will happen whether the server doesn’t actually exist (i.e., you have 695given the wrong address) or the server has just momentarily taken ill 696for some reason or other. If you decide to continue and have no foreign 697groups, you’ll find it difficult to actually do anything in the group 698buffer. But, hey, that’s your problem. Blllrph! 699 700 If you know that the server is definitely down, or you just want to 701read your mail without bothering with the server at all, you can use the 702‘gnus-no-server’ command to start Gnus. That might come in handy if 703you’re in a hurry as well. This command will not attempt to contact 704your primary server—instead, it will just activate all groups on level 1 705and 2. (You should preferably keep no native groups on those two 706levels.) Also *note Group Levels::. 707 708 709File: gnus.info, Node: Slave Gnusae, Next: New Groups, Prev: The Server is Down, Up: Starting Up 710 7111.3 Slave Gnusae 712================ 713 714You might want to run more than one Emacs with more than one Gnus at the 715same time. If you are using different ‘.newsrc’ files (e.g., if you are 716using the two different Gnusae to read from two different servers), that 717is no problem whatsoever. You just do it. 718 719 The problem appears when you want to run two Gnusae that use the same 720‘.newsrc’ file. 721 722 To work around that problem some, we here at the Think-Tank at the 723Gnus Towers have come up with a new concept: “Masters” and “slaves”. 724(We have applied for a patent on this concept, and have taken out a 725copyright on those words. If you wish to use those words in conjunction 726with each other, you have to send $1 per usage instance to me. Usage of 727the patent (“Master/Slave Relationships In Computer Applications”) will 728be much more expensive, of course.) 729 730 Anyway, you start one Gnus up the normal way with ‘M-x gnus’ (or 731however you do it). Each subsequent slave Gnusae should be started with 732‘M-x gnus-slave’. These slaves won’t save normal ‘.newsrc’ files, but 733instead save “slave files” that contain information only on what groups 734have been read in the slave session. When a master Gnus starts, it will 735read (and delete) these slave files, incorporating all information from 736them. (The slave files will be read in the sequence they were created, 737so the latest changes will have precedence.) 738 739 Information from the slave files has, of course, precedence over the 740information in the normal (i.e., master) ‘.newsrc’ file. 741 742 If the ‘.newsrc*’ files have not been saved in the master when the 743slave starts, you may be prompted as to whether to read an auto-save 744file. If you answer “yes”, the unsaved changes to the master will be 745incorporated into the slave. If you answer “no”, the slave may see some 746messages as unread that have been read in the master. 747 748 749File: gnus.info, Node: New Groups, Next: Changing Servers, Prev: Slave Gnusae, Up: Starting Up 750 7511.4 New Groups 752============== 753 754If you are satisfied that you really never want to see any new groups, 755you can set ‘gnus-check-new-newsgroups’ to ‘nil’. This will also save 756you some time at startup. Even if this variable is ‘nil’, you can 757always subscribe to the new groups just by pressing ‘U’ in the group 758buffer (*note Group Maintenance::). This variable is ‘ask-server’ by 759default. If you set this variable to ‘always’, then Gnus will query the 760back ends for new groups even when you do the ‘g’ command (*note 761Scanning New Messages::). 762 763* Menu: 764 765* Checking New Groups:: Determining what groups are new. 766* Subscription Methods:: What Gnus should do with new groups. 767* Filtering New Groups:: Making Gnus ignore certain new groups. 768 769 770File: gnus.info, Node: Checking New Groups, Next: Subscription Methods, Up: New Groups 771 7721.4.1 Checking New Groups 773------------------------- 774 775Gnus normally determines whether a group is new or not by comparing the 776list of groups from the active file(s) with the lists of subscribed and 777dead groups. This isn’t a particularly fast method. If 778‘gnus-check-new-newsgroups’ is ‘ask-server’, Gnus will ask the server 779for new groups since the last time. This is both faster and cheaper. 780This also means that you can get rid of the list of killed groups (*note 781Group Levels::) altogether, so you may set ‘gnus-save-killed-list’ to 782‘nil’, which will save time both at startup, at exit, and all over. 783Saves disk space, too. Why isn’t this the default, then? 784Unfortunately, not all servers support this command. 785 786 I bet I know what you’re thinking now: How do I find out whether my 787server supports ‘ask-server’? No? Good, because I don’t have a 788fail-safe answer. I would suggest just setting this variable to 789‘ask-server’ and see whether any new groups appear within the next few 790days. If any do, then it works. If none do, then it doesn’t work. I 791could write a function to make Gnus guess whether the server supports 792‘ask-server’, but it would just be a guess. So I won’t. You could 793‘telnet’ to the server and say ‘HELP’ and see whether it lists 794‘NEWGROUPS’ among the commands it understands. If it does, then it 795might work. (But there are servers that lists ‘NEWGROUPS’ without 796supporting the function properly.) 797 798 This variable can also be a list of select methods. If so, Gnus will 799issue an ‘ask-server’ command to each of the select methods, and 800subscribe them (or not) using the normal methods. This might be handy 801if you are monitoring a few servers for new groups. A side effect is 802that startup will take much longer, so you can meditate while waiting. 803Use the mantra “dingnusdingnusdingnus” to achieve permanent bliss. 804 805 806File: gnus.info, Node: Subscription Methods, Next: Filtering New Groups, Prev: Checking New Groups, Up: New Groups 807 8081.4.2 Subscription Methods 809-------------------------- 810 811What Gnus does when it encounters a new group is determined by the 812‘gnus-subscribe-newsgroup-method’ variable. 813 814 This variable should contain a function. This function will be 815called with the name of the new group as the only parameter. 816 817 Some handy pre-fab functions are: 818 819‘gnus-subscribe-zombies’ 820 Make all new groups zombies (*note Group Levels::). This is the 821 default. You can browse the zombies later (with ‘A z’) and either 822 kill them all off properly (with ‘S z’), or subscribe to them (with 823 ‘u’). 824 825‘gnus-subscribe-randomly’ 826 Subscribe all new groups in arbitrary order. This really means 827 that all new groups will be added at “the top” of the group buffer. 828 829‘gnus-subscribe-alphabetically’ 830 Subscribe all new groups in alphabetical order. 831 832‘gnus-subscribe-hierarchically’ 833 Subscribe all new groups hierarchically. The difference between 834 this function and ‘gnus-subscribe-alphabetically’ is slight. 835 ‘gnus-subscribe-alphabetically’ will subscribe new groups in a 836 strictly alphabetical fashion, while this function will enter 837 groups into its hierarchy. So if you want to have the ‘rec’ 838 hierarchy before the ‘comp’ hierarchy, this function will not mess 839 that configuration up. Or something like that. 840 841‘gnus-subscribe-interactively’ 842 Subscribe new groups interactively. This means that Gnus will ask 843 you about *all* new groups. The groups you choose to subscribe to 844 will be subscribed hierarchically. 845 846‘gnus-subscribe-killed’ 847 Kill all new groups. 848 849‘gnus-subscribe-topics’ 850 Put the groups into the topic that has a matching ‘subscribe’ topic 851 parameter (*note Topic Parameters::). For instance, a ‘subscribe’ 852 topic parameter that looks like 853 854 "nnml" 855 856 will mean that all groups that match that regex will be subscribed 857 under that topic. 858 859 If no topics match the groups, the groups will be subscribed in the 860 top-level topic. 861 862 A closely related variable is 863‘gnus-subscribe-hierarchical-interactive’. (That’s quite a mouthful.) 864If this variable is non-‘nil’, Gnus will ask you in a hierarchical 865fashion whether to subscribe to new groups or not. Gnus will ask you 866for each sub-hierarchy whether you want to descend the hierarchy or not. 867 868 One common mistake is to set the variable a few paragraphs above 869(‘gnus-subscribe-newsgroup-method’) to 870‘gnus-subscribe-hierarchical-interactive’. This is an error. This will 871not work. This is ga-ga. So don’t do it. 872 873 874File: gnus.info, Node: Filtering New Groups, Prev: Subscription Methods, Up: New Groups 875 8761.4.3 Filtering New Groups 877-------------------------- 878 879A nice and portable way to control which new newsgroups should be 880subscribed (or ignored) is to put an “options” line at the start of the 881‘.newsrc’ file. Here’s an example: 882 883 options -n !alt.all !rec.all sci.all 884 885 This line obviously belongs to a serious-minded intellectual 886scientific person (or she may just be plain old boring), because it says 887that all groups that have names beginning with ‘alt’ and ‘rec’ should be 888ignored, and all groups with names beginning with ‘sci’ should be 889subscribed. Gnus will not use the normal subscription method for 890subscribing these groups. ‘gnus-subscribe-options-newsgroup-method’ is 891used instead. This variable defaults to 892‘gnus-subscribe-alphabetically’. 893 894 The “options -n” format is very simplistic. The syntax above is all 895that is supports: you can force-subscribe hierarchies, or you can deny 896hierarchies, and that’s it. 897 898 If you don’t want to mess with your ‘.newsrc’ file, you can just set 899the two variables ‘gnus-options-subscribe’ and 900‘gnus-options-not-subscribe’. These two variables do exactly the same 901as the ‘.newsrc’ ‘options -n’ trick. Both are regexps, and if the new 902group matches the former, it will be unconditionally subscribed, and if 903it matches the latter, it will be ignored. 904 905 Yet another variable that meddles here is 906‘gnus-auto-subscribed-groups’. It works exactly like 907‘gnus-options-subscribe’, and is therefore really superfluous, but I 908thought it would be nice to have two of these. This variable is more 909meant for setting some ground rules, while the other variable is used 910more for user fiddling. By default this variable makes all new groups 911that come from mail back ends (‘nnml’, ‘nnbabyl’, ‘nnfolder’, ‘nnmbox’, 912‘nnmh’, ‘nnimap’, and ‘nnmaildir’) subscribed. If you don’t like that, 913just set this variable to ‘nil’. 914 915 As if that wasn’t enough, ‘gnus-auto-subscribed-categories’ also 916allows you to specify that new groups should be subscribed based on the 917category their select methods belong to. The default is ‘(mail 918post-mail)’, meaning that all new groups from mail-like backends should 919be subscribed automatically. 920 921 New groups that match these variables are subscribed using 922‘gnus-subscribe-options-newsgroup-method’. 923 924 925File: gnus.info, Node: Changing Servers, Next: Startup Files, Prev: New Groups, Up: Starting Up 926 9271.5 Changing Servers 928==================== 929 930Sometimes it is necessary to move from one NNTP server to another. This 931happens very rarely, but perhaps you change jobs, or one server is very 932flaky and you want to use another. 933 934 Changing the server is pretty easy, right? You just change 935‘gnus-select-method’ to point to the new server? 936 937 _Wrong!_ 938 939 Article numbers are not (in any way) kept synchronized between 940different NNTP servers, and the only way Gnus keeps track of what 941articles you have read is by keeping track of article numbers. So when 942you change ‘gnus-select-method’, your ‘.newsrc’ file becomes worthless. 943 944 You can use the ‘M-x gnus-group-clear-data-on-native-groups’ command 945to clear out all data that you have on your native groups. Use with 946caution. 947 948 Clear the data from the current group only—nix out marks and the list 949of read articles (‘gnus-group-clear-data’). 950 951 After changing servers, you *must* move the cache hierarchy away, 952since the cached articles will have wrong article numbers, which will 953affect which articles Gnus thinks are read. 954‘gnus-group-clear-data-on-native-groups’ will ask you if you want to 955have it done automatically; for ‘gnus-group-clear-data’, you can use 956‘M-x gnus-cache-move-cache’ (but beware, it will move the cache for all 957groups). 958 959 960File: gnus.info, Node: Startup Files, Next: Auto Save, Prev: Changing Servers, Up: Starting Up 961 9621.6 Startup Files 963================= 964 965Most common Unix news readers use a shared startup file called 966‘.newsrc’. This file contains all the information about what groups are 967subscribed, and which articles in these groups have been read. 968 969 Things got a bit more complicated with GNUS. In addition to keeping 970the ‘.newsrc’ file updated, it also used a file called ‘.newsrc.el’ for 971storing all the information that didn’t fit into the ‘.newsrc’ file. 972(Actually, it also duplicated everything in the ‘.newsrc’ file.) GNUS 973would read whichever one of these files was the most recently saved, 974which enabled people to swap between GNUS and other newsreaders. 975 976 That was kinda silly, so Gnus went one better: In addition to the 977‘.newsrc’ and ‘.newsrc.el’ files, Gnus also has a file called 978‘.newsrc.eld’. It will read whichever of these files that are most 979recent, but it will never write a ‘.newsrc.el’ file. You should never 980delete the ‘.newsrc.eld’ file—it contains much information not stored in 981the ‘.newsrc’ file. 982 983 You can turn off writing the ‘.newsrc’ file by setting 984‘gnus-save-newsrc-file’ to ‘nil’, which means you can delete the file 985and save some space, as well as exiting from Gnus faster. However, this 986will make it impossible to use other newsreaders than Gnus. But hey, 987who would want to, right? Similarly, setting ‘gnus-read-newsrc-file’ to 988‘nil’ makes Gnus ignore the ‘.newsrc’ file and any ‘.newsrc-SERVER’ 989files, which can be convenient if you use a different news reader 990occasionally, and you want to read a different subset of the available 991groups with that news reader. 992 993 If ‘gnus-save-killed-list’ (default ‘t’) is ‘nil’, Gnus will not save 994the list of killed groups to the startup file. This will save both time 995(when starting and quitting) and space (on disk). It will also mean 996that Gnus has no record of what groups are new or old, so the automatic 997new groups subscription methods become meaningless. You should always 998set ‘gnus-check-new-newsgroups’ to ‘nil’ or ‘ask-server’ if you set this 999variable to ‘nil’ (*note New Groups::). This variable can also be a 1000regular expression. If that’s the case, remove all groups that do not 1001match this regexp before saving. This can be useful in certain obscure 1002situations that involve several servers where not all servers support 1003‘ask-server’. 1004 1005 The ‘gnus-startup-file’ variable says where the startup files are. 1006The default value is ‘~/.newsrc’, with the Gnus (El Dingo) startup file 1007being whatever that one is, with a ‘.eld’ appended. If you want to keep 1008multiple numbered backups of this file, set ‘gnus-backup-startup-file’. 1009It respects the same values as the ‘version-control’ variable. 1010 1011 ‘gnus-save-newsrc-hook’ is called before saving any of the newsrc 1012files, while ‘gnus-save-quick-newsrc-hook’ is called just before saving 1013the ‘.newsrc.eld’ file, and ‘gnus-save-standard-newsrc-hook’ is called 1014just before saving the ‘.newsrc’ file. The latter two are commonly used 1015to turn version control on or off. Version control is on by default 1016when saving the startup files. If you want to turn backup creation off, 1017say something like: 1018 1019 (defun turn-off-backup () 1020 (set (make-local-variable 'backup-inhibited) t)) 1021 1022 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup) 1023 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup) 1024 1025 When Gnus starts, it will read the ‘gnus-site-init-file’ 1026(‘.../site-lisp/gnus-init’ by default) and ‘gnus-init-file’ (‘~/.gnus’ 1027by default) files. These are normal Emacs Lisp files and can be used to 1028avoid cluttering your ‘~/.emacs’ and ‘site-init’ files with Gnus stuff. 1029Gnus will also check for files with the same names as these, but with 1030‘.elc’ and ‘.el’ suffixes. In other words, if you have set 1031‘gnus-init-file’ to ‘~/.gnus’, it will look for ‘~/.gnus.elc’, 1032‘~/.gnus.el’, and finally ‘~/.gnus’ (in this order). If Emacs was 1033invoked with the ‘-q’ or ‘--no-init-file’ options (*note Initial 1034Options: (emacs)Initial Options.), Gnus doesn’t read ‘gnus-init-file’. 1035 1036 1037File: gnus.info, Node: Auto Save, Next: The Active File, Prev: Startup Files, Up: Starting Up 1038 10391.7 Auto Save 1040============= 1041 1042Whenever you do something that changes the Gnus data (reading articles, 1043catching up, killing/subscribing groups), the change is added to a 1044special “dribble buffer”. This buffer is auto-saved the normal Emacs 1045way. If your Emacs should crash before you have saved the ‘.newsrc’ 1046files, all changes you have made can be recovered from this file. 1047 1048 If Gnus detects this file at startup, it will ask the user whether to 1049read it. The auto save file is deleted whenever the real startup file 1050is saved. 1051 1052 If ‘gnus-use-dribble-file’ is ‘nil’, Gnus won’t create and maintain a 1053dribble buffer. The default is ‘t’. 1054 1055 Gnus will put the dribble file(s) in ‘gnus-dribble-directory’. If 1056this variable is ‘nil’, which it is by default, Gnus will dribble into 1057the directory where the ‘.newsrc’ file is located. (This is normally 1058the user’s home directory.) The dribble file will get the same file 1059permissions as the ‘.newsrc’ file. 1060 1061 If ‘gnus-always-read-dribble-file’ is non-‘nil’, Gnus will read the 1062dribble file on startup without querying the user. 1063 1064 1065File: gnus.info, Node: The Active File, Next: Startup Variables, Prev: Auto Save, Up: Starting Up 1066 10671.8 The Active File 1068=================== 1069 1070When Gnus starts, or indeed whenever it tries to determine whether new 1071articles have arrived, it reads the active file. This is a very large 1072file that lists all the active groups and articles on the server. 1073 1074 Before examining the active file, Gnus deletes all lines that match 1075the regexp ‘gnus-ignored-newsgroups’. This is done primarily to reject 1076any groups with bogus names, but you can use this variable to make Gnus 1077ignore hierarchies you aren’t ever interested in. However, this is not 1078recommended. In fact, it’s highly discouraged. Instead, *note New 1079Groups:: for an overview of other variables that can be used instead. 1080 1081 The active file can be rather Huge, so if you have a slow network, 1082you can set ‘gnus-read-active-file’ to ‘nil’ to prevent Gnus from 1083reading the active file. This variable is ‘some’ by default. 1084 1085 Gnus will try to make do by getting information just on the groups 1086that you actually subscribe to. 1087 1088 Note that if you subscribe to lots and lots of groups, setting this 1089variable to ‘nil’ will probably make Gnus slower, not faster. At 1090present, having this variable ‘nil’ will slow Gnus down considerably, 1091unless you read news over a 2400 baud modem. 1092 1093 This variable can also have the value ‘some’. Gnus will then attempt 1094to read active info only on the subscribed groups. On some servers this 1095is quite fast (on sparkling, brand new INN servers that support the 1096‘LIST ACTIVE group’ command), on others this isn’t fast at all. In any 1097case, ‘some’ should be faster than ‘nil’, and is certainly faster than 1098‘t’ over slow lines. 1099 1100 Some news servers (old versions of Leafnode and old versions of INN, 1101for instance) do not support the ‘LIST ACTIVE group’. For these 1102servers, ‘nil’ is probably the most efficient value for this variable. 1103 1104 If this variable is ‘nil’, Gnus will ask for group info in total 1105lock-step, which isn’t very fast. If it is ‘some’ and you use an NNTP 1106server, Gnus will pump out commands as fast as it can, and read all the 1107replies in one swoop. This will normally result in better performance, 1108but if the server does not support the aforementioned ‘LIST ACTIVE 1109group’ command, this isn’t very nice to the server. 1110 1111 If you think that starting up Gnus takes too long, try all the three 1112different values for this variable and see what works best for you. 1113 1114 In any case, if you use ‘some’ or ‘nil’, you should definitely kill 1115all groups that you aren’t interested in to speed things up. 1116 1117 Note that this variable also affects active file retrieval from 1118secondary select methods. 1119 1120 1121File: gnus.info, Node: Startup Variables, Prev: The Active File, Up: Starting Up 1122 11231.9 Startup Variables 1124===================== 1125 1126‘gnus-load-hook’ 1127 A hook run while Gnus is being loaded. Note that this hook will 1128 normally be run just once in each Emacs session, no matter how many 1129 times you start Gnus. 1130 1131‘gnus-before-startup-hook’ 1132 A hook called as the first thing when Gnus is started. 1133 1134‘gnus-before-resume-hook’ 1135 A hook called as the first thing when Gnus is resumed after a 1136 suspend. 1137 1138‘gnus-startup-hook’ 1139 A hook run as the very last thing after starting up Gnus 1140 1141‘gnus-started-hook’ 1142 A hook that is run as the very last thing after starting up Gnus 1143 successfully. 1144 1145‘gnus-setup-news-hook’ 1146 A hook that is run after reading the ‘.newsrc’ file(s), but before 1147 generating the group buffer. 1148 1149‘gnus-check-bogus-newsgroups’ 1150 If non-‘nil’, Gnus will check for and delete all bogus groups at 1151 startup. A “bogus group” is a group that you have in your 1152 ‘.newsrc’ file, but doesn’t exist on the news server. Checking for 1153 bogus groups can take quite a while, so to save time and resources 1154 it’s best to leave this option off, and do the checking for bogus 1155 groups once in a while from the group buffer instead (*note Group 1156 Maintenance::). 1157 1158‘gnus-inhibit-startup-message’ 1159 If non-‘nil’, the startup message won’t be displayed. That way, 1160 your boss might not notice as easily that you are reading news 1161 instead of doing your job. Note that this variable is used before 1162 ‘~/.gnus.el’ is loaded, so it should be set in ‘.emacs’ instead. 1163 1164‘gnus-no-groups-message’ 1165 Message displayed by Gnus when no groups are available. 1166 1167‘gnus-use-backend-marks’ 1168 If non-‘nil’, Gnus will store article marks both in the 1169 ‘.newsrc.eld’ file and in the backends. This will slow down group 1170 operation some. 1171 1172 1173File: gnus.info, Node: Group Buffer, Next: Summary Buffer, Prev: Starting Up, Up: Top 1174 11752 Group Buffer 1176************** 1177 1178The “group buffer” lists all (or parts) of the available groups. It is 1179the first buffer shown when Gnus starts, and will never be killed as 1180long as Gnus is active. 1181 1182* Menu: 1183 1184* Group Buffer Format:: Information listed and how you can change it. 1185* Group Maneuvering:: Commands for moving in the group buffer. 1186* Selecting a Group:: Actually reading news. 1187* Subscription Commands:: Unsubscribing, killing, subscribing. 1188* Group Data:: Changing the info for a group. 1189* Group Levels:: Levels? What are those, then? 1190* Group Score:: A mechanism for finding out what groups you like. 1191* Marking Groups:: You can mark groups for later processing. 1192* Foreign Groups:: Creating and editing groups. 1193* Group Parameters:: Each group may have different parameters set. 1194* Listing Groups:: Gnus can list various subsets of the groups. 1195* Sorting Groups:: Re-arrange the group order. 1196* Group Maintenance:: Maintaining a tidy ‘.newsrc’ file. 1197* Browse Foreign Server:: You can browse a server. See what it has to offer. 1198* Exiting Gnus:: Stop reading news and get some work done. 1199* Group Topics:: A folding group mode divided into topics. 1200* Non-ASCII Group Names:: Accessing groups of non-English names. 1201* Misc Group Stuff:: Other stuff that you can to do. 1202 1203 1204File: gnus.info, Node: Group Buffer Format, Next: Group Maneuvering, Up: Group Buffer 1205 12062.1 Group Buffer Format 1207======================= 1208 1209* Menu: 1210 1211* Group Line Specification:: Deciding how the group buffer is to look. 1212* Group Mode Line Specification:: The group buffer mode line. 1213* Group Highlighting:: Having nice colors in the group buffer. 1214 1215You can customize the Group Mode tool bar, see ‘M-x customize-apropos 1216<RET> gnus-group-tool-bar’. This feature is only available in Emacs. 1217 1218 The tool bar icons are now (de)activated correctly depending on the 1219cursor position. Therefore, moving around in the Group Buffer is 1220slower. You can disable this via the variable 1221‘gnus-group-update-tool-bar’. Its default value depends on your Emacs 1222version. 1223 1224 1225File: gnus.info, Node: Group Line Specification, Next: Group Mode Line Specification, Up: Group Buffer Format 1226 12272.1.1 Group Line Specification 1228------------------------------ 1229 1230The default format of the group buffer is nice and dull, but you can 1231make it as exciting and ugly as you feel like. 1232 1233 Here’s a couple of example group lines: 1234 1235 25: news.announce.newusers 1236 * 0: alt.fan.andrea-dworkin 1237 1238 Quite simple, huh? 1239 1240 You can see that there are 25 unread articles in 1241‘news.announce.newusers’. There are no unread articles, but some ticked 1242articles, in ‘alt.fan.andrea-dworkin’ (see that little asterisk at the 1243beginning of the line?). 1244 1245 You can change that format to whatever you want by fiddling with the 1246‘gnus-group-line-format’ variable. This variable works along the lines 1247of a ‘format’ specification, which is pretty much the same as a ‘printf’ 1248specifications, for those of you who use (feh!) C. *Note Formatting 1249Variables::. 1250 1251 ‘%M%S%5y:%B%(%g%)\n’ is the value that produced those lines above. 1252 1253 There should always be a colon on the line; the cursor always moves 1254to the colon after performing an operation. *Note Positioning Point::. 1255Nothing else is required—not even the group name. All displayed text is 1256just window dressing, and is never examined by Gnus. Gnus stores all 1257real information it needs using text properties. 1258 1259 (Note that if you make a really strange, wonderful, spreadsheet-like 1260layout, everybody will believe you are hard at work with the accounting 1261instead of wasting time reading news.) 1262 1263 Here’s a list of all available format characters: 1264 1265‘M’ 1266 An asterisk if the group only has marked articles. 1267 1268‘S’ 1269 Whether the group is subscribed. 1270 1271‘L’ 1272 Level of subscribedness. 1273 1274‘N’ 1275 Number of unread articles. 1276 1277‘I’ 1278 Number of dormant articles. 1279 1280‘T’ 1281 Number of ticked articles. 1282 1283‘R’ 1284 Number of read articles. 1285 1286‘U’ 1287 Number of unseen articles. 1288 1289‘t’ 1290 Estimated total number of articles. (This is really MAX-NUMBER 1291 minus MIN-NUMBER plus 1.) 1292 1293 Gnus uses this estimation because the NNTP protocol provides 1294 efficient access to MAX-NUMBER and MIN-NUMBER but getting the true 1295 unread message count is not possible efficiently. For hysterical 1296 raisins, even the mail back ends, where the true number of unread 1297 messages might be available efficiently, use the same limited 1298 interface. To remove this restriction from Gnus means that the 1299 back end interface has to be changed, which is not an easy job. 1300 1301 The nnml backend (*note Mail Spool::) has a feature called “group 1302 compaction” which circumvents this deficiency: the idea is to 1303 renumber all articles from 1, removing all gaps between numbers, 1304 hence getting a correct total count. Other backends may support 1305 this in the future. In order to keep your total article count 1306 relatively up to date, you might want to compact your groups (or 1307 even directly your server) from time to time. *Note Misc Group 1308 Stuff::, *Note Server Commands::. 1309 1310‘y’ 1311 Number of unread, unticked, non-dormant articles. 1312 1313‘i’ 1314 Number of ticked and dormant articles. 1315 1316‘g’ 1317 Full group name. 1318 1319‘G’ 1320 Group name. 1321 1322‘C’ 1323 Group comment (*note Group Parameters::) or group name if there is 1324 no comment element in the group parameters. 1325 1326‘D’ 1327 Newsgroup description. You need to read the group descriptions 1328 before these will appear, and to do that, you either have to set 1329 ‘gnus-read-active-file’ or use the group buffer ‘M-d’ command. 1330 1331‘o’ 1332 ‘m’ if moderated. 1333 1334‘O’ 1335 ‘(m)’ if moderated. 1336 1337‘s’ 1338 Select method. 1339 1340‘B’ 1341 If the summary buffer for the group is open or not. 1342 1343‘n’ 1344 Select from where. 1345 1346‘z’ 1347 A string that looks like ‘<%s:%n>’ if a foreign select method is 1348 used. 1349 1350‘P’ 1351 Indentation based on the level of the topic (*note Group Topics::). 1352 1353‘c’ 1354 Short (collapsed) group name. The ‘gnus-group-uncollapsed-levels’ 1355 variable says how many levels to leave at the end of the group 1356 name. The default is 1—this will mean that group names like 1357 ‘gnu.emacs.gnus’ will be shortened to ‘g.e.gnus’. 1358 1359‘m’ 1360 ‘%’ (‘gnus-new-mail-mark’) if there has arrived new mail to the 1361 group lately. 1362 1363‘p’ 1364 ‘#’ (‘gnus-process-mark’) if the group is process marked. 1365 1366‘d’ 1367 A string that says when you last read the group (*note Group 1368 Timestamp::). 1369 1370‘F’ 1371 The disk space used by the articles fetched by both the cache and 1372 agent. The value is automatically scaled to bytes(B), 1373 kilobytes(K), megabytes(M), or gigabytes(G) to minimize the column 1374 width. A format of %7F is sufficient for a fixed-width column. 1375 1376‘u’ 1377 User defined specifier. The next character in the format string 1378 should be a letter. Gnus will call the function 1379 ‘gnus-user-format-function-’‘X’, where ‘X’ is the letter following 1380 ‘%u’. The function will be passed a single dummy parameter as 1381 argument. The function should return a string, which will be 1382 inserted into the buffer just like information from any other 1383 specifier. 1384 1385 All the “number-of” specs will be filled with an asterisk (‘*’) if no 1386info is available—for instance, if it is a non-activated foreign group, 1387or a bogus native group. 1388 1389 1390File: gnus.info, Node: Group Mode Line Specification, Next: Group Highlighting, Prev: Group Line Specification, Up: Group Buffer Format 1391 13922.1.2 Group Mode Line Specification 1393----------------------------------- 1394 1395The mode line can be changed by setting ‘gnus-group-mode-line-format’ 1396(*note Mode Line Formatting::). It doesn’t understand that many format 1397specifiers: 1398 1399‘S’ 1400 The native news server. 1401‘M’ 1402 The native select method. 1403 1404 1405File: gnus.info, Node: Group Highlighting, Prev: Group Mode Line Specification, Up: Group Buffer Format 1406 14072.1.3 Group Highlighting 1408------------------------ 1409 1410Highlighting in the group buffer is controlled by the 1411‘gnus-group-highlight’ variable. This is an alist with elements that 1412look like ‘(FORM . FACE)’. If FORM evaluates to something non-‘nil’, 1413the FACE will be used on the line. 1414 1415 Here’s an example value for this variable that might look nice if the 1416background is dark: 1417 1418 (cond (window-system 1419 (setq custom-background-mode 'light) 1420 (defface my-group-face-1 1421 '((t (:foreground "Red" :bold t))) "First group face") 1422 (defface my-group-face-2 1423 '((t (:foreground "DarkSeaGreen4" :bold t))) 1424 "Second group face") 1425 (defface my-group-face-3 1426 '((t (:foreground "Green4" :bold t))) "Third group face") 1427 (defface my-group-face-4 1428 '((t (:foreground "SteelBlue" :bold t))) "Fourth group face") 1429 (defface my-group-face-5 1430 '((t (:foreground "Blue" :bold t))) "Fifth group face"))) 1431 1432 (setq gnus-group-highlight 1433 '(((> unread 200) . my-group-face-1) 1434 ((and (< level 3) (zerop unread)) . my-group-face-2) 1435 ((< level 3) . my-group-face-3) 1436 ((zerop unread) . my-group-face-4) 1437 (t . my-group-face-5))) 1438 1439 Also *note Faces and Fonts::. 1440 1441 Variables that are dynamically bound when the forms are evaluated 1442include: 1443 1444‘group’ 1445 The group name. 1446‘unread’ 1447 The number of unread articles in the group. 1448‘method’ 1449 The select method. 1450‘mailp’ 1451 Whether the group is a mail group. 1452‘level’ 1453 The level of the group. 1454‘score’ 1455 The score of the group. 1456‘ticked’ 1457 The number of ticked articles in the group. 1458‘total’ 1459 The total number of articles in the group. Or rather, MAX-NUMBER 1460 minus MIN-NUMBER plus one. 1461‘topic’ 1462 When using the topic minor mode, this variable is bound to the 1463 current topic being inserted. 1464 1465 When the forms are ‘eval’ed, point is at the beginning of the line of 1466the group in question, so you can use many of the normal Gnus functions 1467for snarfing info on the group. 1468 1469 ‘gnus-group-update-hook’ is called when a group line is changed. It 1470will not be called when ‘gnus-visual’ is ‘nil’. 1471 1472 1473File: gnus.info, Node: Group Maneuvering, Next: Selecting a Group, Prev: Group Buffer Format, Up: Group Buffer 1474 14752.2 Group Maneuvering 1476===================== 1477 1478All movement commands understand the numeric prefix and will behave as 1479expected, hopefully. 1480 1481‘n’ 1482 Go to the next group that has unread articles 1483 (‘gnus-group-next-unread-group’). 1484 1485‘p’ 1486‘<DEL>’ 1487 Go to the previous group that has unread articles 1488 (‘gnus-group-prev-unread-group’). 1489 1490‘N’ 1491 Go to the next group (‘gnus-group-next-group’). 1492 1493‘P’ 1494 Go to the previous group (‘gnus-group-prev-group’). 1495 1496‘M-n’ 1497 Go to the next unread group on the same (or lower) level 1498 (‘gnus-group-next-unread-group-same-level’). 1499 1500‘M-p’ 1501 Go to the previous unread group on the same (or lower) level 1502 (‘gnus-group-prev-unread-group-same-level’). 1503 1504 Three commands for jumping to groups: 1505 1506‘j’ 1507 Jump to a group (and make it visible if it isn’t already) 1508 (‘gnus-group-jump-to-group’). Killed groups can be jumped to, just 1509 like living groups. 1510 1511‘,’ 1512 Jump to the unread group with the lowest level 1513 (‘gnus-group-best-unread-group’). 1514 1515‘.’ 1516 Jump to the first group with unread articles 1517 (‘gnus-group-first-unread-group’). 1518 1519 If ‘gnus-group-goto-unread’ is ‘nil’, all the movement commands will 1520move to the next group, not the next unread group. Even the commands 1521that say they move to the next unread group. The default is ‘t’. 1522 1523 If ‘gnus-summary-next-group-on-exit’ is ‘t’, when a summary is 1524exited, the point in the group buffer is moved to the next unread group. 1525Otherwise, the point is set to the group just exited. The default is 1526‘t’. 1527 1528 1529File: gnus.info, Node: Selecting a Group, Next: Subscription Commands, Prev: Group Maneuvering, Up: Group Buffer 1530 15312.3 Selecting a Group 1532===================== 1533 1534‘<SPC>’ 1535 Select the current group, switch to the summary buffer and display 1536 the first unread article (‘gnus-group-read-group’). If there are 1537 no unread articles in the group, or if you give a non-numerical 1538 prefix to this command, Gnus will offer to fetch all the old 1539 articles in this group from the server. If you give a numerical 1540 prefix N, N determines the number of articles Gnus will fetch. If 1541 N is positive, Gnus fetches the N newest articles, if N is 1542 negative, Gnus fetches the ‘abs(N)’ oldest articles. 1543 1544 Thus, ‘<SPC>’ enters the group normally, ‘C-u <SPC>’ offers old 1545 articles, ‘C-u 4 2 <SPC>’ fetches the 42 newest articles, and ‘C-u 1546 - 4 2 <SPC>’ fetches the 42 oldest ones. 1547 1548 When you are in the group (in the Summary buffer), you can type 1549 ‘M-g’ to fetch new articles, or ‘C-u M-g’ to also show the old 1550 ones. 1551 1552‘<RET>’ 1553 Select the current group and switch to the summary buffer 1554 (‘gnus-group-select-group’). Takes the same arguments as 1555 ‘gnus-group-read-group’—the only difference is that this command 1556 does not display the first unread article automatically upon group 1557 entry. 1558 1559‘M-<RET>’ 1560 This does the same as the command above, but tries to do it with 1561 the minimum amount of fuzz (‘gnus-group-quick-select-group’). No 1562 scoring/killing will be performed, there will be no highlights and 1563 no expunging. This might be useful if you’re in a real hurry and 1564 have to enter some humongous group. If you give a 0 prefix to this 1565 command (i.e., ‘0 M-<RET>’), Gnus won’t even generate the summary 1566 buffer, which is useful if you want to toggle threading before 1567 generating the summary buffer (*note Summary Generation 1568 Commands::). 1569 1570‘M-<SPC>’ 1571 This is yet one more command that does the same as the ‘<RET>’ 1572 command, but this one does it without expunging and hiding dormants 1573 (‘gnus-group-visible-select-group’). 1574 1575‘C-M-<RET>’ 1576 Finally, this command selects the current group ephemerally without 1577 doing any processing of its contents 1578 (‘gnus-group-select-group-ephemerally’). Even threading has been 1579 turned off. Everything you do in the group after selecting it in 1580 this manner will have no permanent effects. 1581 1582 The ‘gnus-large-newsgroup’ variable says what Gnus should consider to 1583be a big group. If it is ‘nil’, no groups are considered big. The 1584default value is 200. If the group has more (unread and/or ticked) 1585articles than this, Gnus will query the user before entering the group. 1586The user can then specify how many articles should be fetched from the 1587server. If the user specifies a negative number (−N), the N oldest 1588articles will be fetched. If it is positive, the N articles that have 1589arrived most recently will be fetched. 1590 1591 ‘gnus-large-ephemeral-newsgroup’ is the same as 1592‘gnus-large-newsgroup’, but is only used for ephemeral newsgroups. 1593 1594 In groups in some news servers, there might be a big gap between a 1595few very old articles that will never be expired and the recent ones. 1596In such a case, the server will return the data like ‘(1 . 30000000)’ 1597for the ‘LIST ACTIVE group’ command, for example. Even if there are 1598actually only the articles 1–10 and 29999900–30000000, Gnus doesn’t know 1599it at first and prepares for getting 30000000 articles. However, it 1600will consume hundreds megabytes of memories and might make Emacs get 1601stuck as the case may be. If you use such news servers, set the 1602variable ‘gnus-newsgroup-maximum-articles’ to a positive number. The 1603value means that Gnus ignores articles other than this number of the 1604latest ones in every group. For instance, the value 10000 makes Gnus 1605get only the articles 29990001–30000000 (if the latest article number is 160630000000 in a group). Note that setting this variable to a number might 1607prevent you from reading very old articles. The default value of the 1608variable ‘gnus-newsgroup-maximum-articles’ is ‘nil’, which means Gnus 1609never ignores old articles. 1610 1611 If ‘gnus-auto-select-first’ is non-‘nil’, select an article 1612automatically when entering a group with the ‘<SPC>’ command. Which 1613article this is controlled by the ‘gnus-auto-select-subject’ variable. 1614Valid values for this variable are: 1615 1616‘unread’ 1617 Place point on the subject line of the first unread article. 1618 1619‘first’ 1620 Place point on the subject line of the first article. 1621 1622‘unseen’ 1623 Place point on the subject line of the first unseen article. 1624 1625‘unseen-or-unread’ 1626 Place point on the subject line of the first unseen article, and if 1627 there is no such article, place point on the subject line of the 1628 first unread article. 1629 1630‘best’ 1631 Place point on the subject line of the highest-scored unread 1632 article. 1633 1634 This variable can also be a function. In that case, that function 1635will be called to place point on a subject line. 1636 1637 If you want to prevent automatic selection in some group (say, in a 1638binary group with Huge articles) you can set the 1639‘gnus-auto-select-first’ variable to ‘nil’ in ‘gnus-select-group-hook’, 1640which is called when a group is selected. 1641 1642 1643File: gnus.info, Node: Subscription Commands, Next: Group Data, Prev: Selecting a Group, Up: Group Buffer 1644 16452.4 Subscription Commands 1646========================= 1647 1648The following commands allow for managing your subscriptions in the 1649Group buffer. If you want to subscribe to many groups, it’s probably 1650more convenient to go to the *note Server Buffer::, and choose the 1651server there using ‘<RET>’ or ‘<SPC>’. Then you’ll have the commands 1652listed in *note Browse Foreign Server:: at hand. 1653 1654‘S t’ 1655‘u’ 1656 Toggle subscription to the current group 1657 (‘gnus-group-unsubscribe-current-group’). 1658 1659‘S s’ 1660‘U’ 1661 Prompt for a group to subscribe, and then subscribe it. If it was 1662 subscribed already, unsubscribe it instead 1663 (‘gnus-group-unsubscribe-group’). 1664 1665‘S k’ 1666‘C-k’ 1667 Kill the current group (‘gnus-group-kill-group’). 1668 1669‘S y’ 1670‘C-y’ 1671 Yank the last killed group (‘gnus-group-yank-group’). 1672 1673‘C-x C-t’ 1674 Transpose two groups (‘gnus-group-transpose-groups’). This isn’t 1675 really a subscription command, but you can use it instead of a 1676 kill-and-yank sequence sometimes. 1677 1678‘S w’ 1679‘C-w’ 1680 Kill all groups in the region (‘gnus-group-kill-region’). 1681 1682‘S z’ 1683 Kill all zombie groups (‘gnus-group-kill-all-zombies’). 1684 1685‘S C-k’ 1686 Kill all groups on a certain level (‘gnus-group-kill-level’). 1687 These groups can’t be yanked back after killing, so this command 1688 should be used with some caution. The only time where this command 1689 comes in really handy is when you have a ‘.newsrc’ with lots of 1690 unsubscribed groups that you want to get rid off. ‘S C-k’ on level 1691 7 will kill off all unsubscribed groups that do not have message 1692 numbers in the ‘.newsrc’ file. 1693 1694 Also *note Group Levels::. 1695 1696 1697File: gnus.info, Node: Group Data, Next: Group Levels, Prev: Subscription Commands, Up: Group Buffer 1698 16992.5 Group Data 1700============== 1701 1702‘c’ 1703 Mark all unticked articles in this group as read 1704 (‘gnus-group-catchup-current’). ‘gnus-group-catchup-group-hook’ is 1705 called when catching up a group from the group buffer. 1706 1707‘C’ 1708 Mark all articles in this group, even the ticked ones, as read 1709 (‘gnus-group-catchup-current-all’). 1710 1711‘M-c’ 1712 Clear the data from the current group—nix out marks and the list of 1713 read articles (‘gnus-group-clear-data’). 1714 1715‘M-x gnus-group-clear-data-on-native-groups’ 1716 If you have switched from one NNTP server to another, all your 1717 marks and read ranges have become worthless. You can use this 1718 command to clear out all data that you have on your native groups. 1719 Use with caution. 1720 1721 1722File: gnus.info, Node: Group Levels, Next: Group Score, Prev: Group Data, Up: Group Buffer 1723 17242.6 Group Levels 1725================ 1726 1727All groups have a level of “subscribedness”. For instance, if a group 1728is on level 2, it is more subscribed than a group on level 5. You can 1729ask Gnus to just list groups on a given level or lower (*note Listing 1730Groups::), or to just check for new articles in groups on a given level 1731or lower (*note Scanning New Messages::). 1732 1733 Remember: The higher the level of the group, the less important it 1734is. 1735 1736‘S l’ 1737 Set the level of the current group. If a numeric prefix is given, 1738 the next N groups will have their levels set. The user will be 1739 prompted for a level. 1740 1741 Gnus considers groups from levels 1 to ‘gnus-level-subscribed’ 1742(inclusive) (default 5) to be subscribed, ‘gnus-level-subscribed’ 1743(exclusive) and ‘gnus-level-unsubscribed’ (inclusive) (default 7) to be 1744unsubscribed, ‘gnus-level-zombie’ to be zombies (walking dead) (default 17458) and ‘gnus-level-killed’ to be killed (completely dead) (default 9). 1746Gnus treats subscribed and unsubscribed groups exactly the same, but 1747zombie and killed groups store no information on what articles you have 1748read, etc. This distinction between dead and living groups isn’t done 1749because it is nice or clever, it is done purely for reasons of 1750efficiency. 1751 1752 It is recommended that you keep all your mail groups (if any) on 1753quite low levels (e.g., 1 or 2). 1754 1755 Maybe the following description of the default behavior of Gnus helps 1756to understand what these levels are all about. By default, Gnus shows 1757you subscribed nonempty groups, but by hitting ‘L’ you can have it show 1758empty subscribed groups and unsubscribed groups, too. Type ‘l’ to go 1759back to showing nonempty subscribed groups again. Thus, unsubscribed 1760groups are hidden, in a way. 1761 1762 Zombie and killed groups are similar to unsubscribed groups in that 1763they are hidden by default. But they are different from subscribed and 1764unsubscribed groups in that Gnus doesn’t ask the news server for 1765information (number of messages, number of unread messages) on zombie 1766and killed groups. Normally, you use ‘C-k’ to kill the groups you 1767aren’t interested in. If most groups are killed, Gnus is faster. 1768 1769 Why does Gnus distinguish between zombie and killed groups? Well, 1770when a new group arrives on the server, Gnus by default makes it a 1771zombie group. This means that you are normally not bothered with new 1772groups, but you can type ‘A z’ to get a list of all new groups. 1773Subscribe the ones you like and kill the ones you don’t want. (‘A k’ 1774shows a list of killed groups.) 1775 1776 If you want to play with the level variables, you should show some 1777care. Set them once, and don’t touch them ever again. Better yet, 1778don’t touch them at all unless you know exactly what you’re doing. 1779 1780 Two closely related variables are ‘gnus-level-default-subscribed’ 1781(default 3) and ‘gnus-level-default-unsubscribed’ (default 6), which are 1782the levels that new groups will be put on if they are (un)subscribed. 1783These two variables should, of course, be inside the relevant valid 1784ranges. 1785 1786 If ‘gnus-keep-same-level’ is non-‘nil’, some movement commands will 1787only move to groups of the same level (or lower). In particular, going 1788from the last article in one group to the next group will go to the next 1789group of the same level (or lower). This might be handy if you want to 1790read the most important groups before you read the rest. 1791 1792 If this variable is ‘best’, Gnus will make the next newsgroup the one 1793with the best level. 1794 1795 All groups with a level less than or equal to 1796‘gnus-group-default-list-level’ will be listed in the group buffer by 1797default. This variable can also be a function. In that case, that 1798function will be called and the result will be used as value. 1799 1800 If ‘gnus-group-list-inactive-groups’ is non-‘nil’, non-active groups 1801will be listed along with the unread groups. This variable is ‘t’ by 1802default. If it is ‘nil’, inactive groups won’t be listed. 1803 1804 If ‘gnus-group-use-permanent-levels’ is non-‘nil’, once you give a 1805level prefix to ‘g’ or ‘l’, all subsequent commands will use this level 1806as the “work” level. 1807 1808 Gnus will normally just activate (i.e., query the server about) 1809groups on level ‘gnus-activate-level’ or less. If you don’t want to 1810activate unsubscribed groups, for instance, you might set this variable 1811to 5. The default is 6. 1812 1813 1814File: gnus.info, Node: Group Score, Next: Marking Groups, Prev: Group Levels, Up: Group Buffer 1815 18162.7 Group Score 1817=============== 1818 1819You would normally keep important groups on high levels, but that scheme 1820is somewhat restrictive. Don’t you wish you could have Gnus sort the 1821group buffer according to how often you read groups, perhaps? Within 1822reason? 1823 1824 This is what “group score” is for. You can have Gnus assign a score 1825to each group through the mechanism described below. You can then sort 1826the group buffer based on this score. Alternatively, you can sort on 1827score and then level. (Taken together, the level and the score is 1828called the “rank” of the group. A group that is on level 4 and has a 1829score of 1 has a higher rank than a group on level 5 that has a score of 1830300. (The level is the most significant part and the score is the least 1831significant part.)) 1832 1833 If you want groups you read often to get higher scores than groups 1834you read seldom you can add the ‘gnus-summary-bubble-group’ function to 1835the ‘gnus-summary-exit-hook’ hook. This will result (after sorting) in 1836a bubbling sort of action. If you want to see that in action after each 1837summary exit, you can add ‘gnus-group-sort-groups-by-rank’ or 1838‘gnus-group-sort-groups-by-score’ to the same hook, but that will slow 1839things down somewhat. 1840 1841 1842File: gnus.info, Node: Marking Groups, Next: Foreign Groups, Prev: Group Score, Up: Group Buffer 1843 18442.8 Marking Groups 1845================== 1846 1847If you want to perform some command on several groups, and they appear 1848subsequently in the group buffer, you would normally just give a 1849numerical prefix to the command. Most group commands will then do your 1850bidding on those groups. 1851 1852 However, if the groups are not in sequential order, you can still 1853perform a command on several groups. You simply mark the groups first 1854with the process mark and then execute the command. 1855 1856‘#’ 1857‘M m’ 1858 Set the mark on the current group (‘gnus-group-mark-group’). 1859 1860‘M-#’ 1861‘M u’ 1862 Remove the mark from the current group (‘gnus-group-unmark-group’). 1863 1864‘M U’ 1865 Remove the mark from all groups (‘gnus-group-unmark-all-groups’). 1866 1867‘M w’ 1868 Mark all groups between point and mark (‘gnus-group-mark-region’). 1869 1870‘M b’ 1871 Mark all groups in the buffer (‘gnus-group-mark-buffer’). 1872 1873‘M r’ 1874 Mark all groups that match some regular expression 1875 (‘gnus-group-mark-regexp’). 1876 1877 Also *note Process/Prefix::. 1878 1879 If you want to execute some command on all groups that have been 1880marked with the process mark, you can use the ‘M-&’ 1881(‘gnus-group-universal-argument’) command. It will prompt you for the 1882command to be executed. 1883 1884 1885File: gnus.info, Node: Foreign Groups, Next: Group Parameters, Prev: Marking Groups, Up: Group Buffer 1886 18872.9 Foreign Groups 1888================== 1889 1890If you recall how to subscribe to servers (*note Finding the News::) you 1891will remember that ‘gnus-secondary-select-methods’ and 1892‘gnus-select-method’ let you write a definition in Emacs Lisp of what 1893servers you want to see when you start up. The alternate approach is to 1894use foreign servers and groups. “Foreign” here means they are not 1895coming from the select methods. All foreign server configuration and 1896subscriptions are stored only in the ‘~/.newsrc.eld’ file. 1897 1898 Below are some group mode commands for making and editing general 1899foreign groups, as well as commands to ease the creation of a few 1900special-purpose groups. All these commands insert the newly created 1901groups under point—‘gnus-subscribe-newsgroup-method’ is not consulted. 1902 1903 Changes from the group editing commands are stored in ‘~/.newsrc.eld’ 1904(‘gnus-startup-file’). An alternative is the variable 1905‘gnus-parameters’, *Note Group Parameters::. 1906 1907‘G m’ 1908 Make a new group (‘gnus-group-make-group’). Gnus will prompt you 1909 for a name, a method and possibly an “address”. For an easier way 1910 to subscribe to NNTP groups (*note Browse Foreign Server::). 1911 1912‘G M’ 1913 Make an ephemeral group (‘gnus-group-read-ephemeral-group’). Gnus 1914 will prompt you for a name, a method and an “address”. 1915 1916‘G r’ 1917 Rename the current group to something else 1918 (‘gnus-group-rename-group’). This is valid only on some 1919 groups—mail groups mostly. This command might very well be quite 1920 slow on some back ends. 1921 1922‘G c’ 1923 Customize the group parameters (‘gnus-group-customize’). 1924 1925‘G e’ 1926 Enter a buffer where you can edit the select method of the current 1927 group (‘gnus-group-edit-group-method’). 1928 1929‘G p’ 1930 Enter a buffer where you can edit the group parameters 1931 (‘gnus-group-edit-group-parameters’). 1932 1933‘G E’ 1934 Enter a buffer where you can edit the group info 1935 (‘gnus-group-edit-group’). 1936 1937‘G d’ 1938 Make a directory group (*note Directory Groups::). You will be 1939 prompted for the directory’s name 1940 (‘gnus-group-make-directory-group’). 1941 1942‘G h’ 1943 Make the Gnus help group (‘gnus-group-make-help-group’). 1944 1945‘G D’ 1946 Read an arbitrary directory as if it were a newsgroup with the 1947 ‘nneething’ back end (‘gnus-group-enter-directory’). *Note 1948 Anything Groups::. 1949 1950‘G f’ 1951 Make a group based on some file or other 1952 (‘gnus-group-make-doc-group’). If you give a prefix to this 1953 command, you will be prompted for a file name and a file type. 1954 Currently supported types are ‘mbox’, ‘babyl’, ‘digest’, ‘news’, 1955 ‘rnews’, ‘mmdf’, ‘forward’, ‘rfc934’, ‘rfc822-forward’, 1956 ‘mime-parts’, ‘standard-digest’, ‘slack-digest’, ‘clari-briefs’, 1957 ‘nsmail’, ‘outlook’, ‘oe-dbx’, and ‘mailman’. If you run this 1958 command without a prefix, Gnus will guess at the file type. *Note 1959 Document Groups::. 1960 1961‘G u’ 1962 Create one of the groups mentioned in ‘gnus-useful-groups’ 1963 (‘gnus-group-make-useful-group’). 1964 1965‘G w’ 1966 Make an ephemeral group based on a web search 1967 (‘gnus-group-make-web-group’). If you give a prefix to this 1968 command, make a solid group instead. You will be prompted for the 1969 search engine type and the search string. Valid search engine 1970 types include ‘google’ and ‘dejanews’. *Note Web Searches::. 1971 1972 If you use the ‘google’ search engine, you can limit the search to 1973 a particular group by using a match string like ‘shaving 1974 group:alt.sysadmin.recovery’. 1975 1976‘G R’ 1977 Make a group based on an RSS feed (‘gnus-group-make-rss-group’). 1978 You will be prompted for an URL. *Note RSS::. 1979 1980‘G <DEL>’ 1981 This function will delete the current group 1982 (‘gnus-group-delete-group’). If given a prefix, this function will 1983 actually delete all the articles in the group, and forcibly remove 1984 the group itself from the face of the Earth. Use a prefix only if 1985 you are absolutely sure of what you are doing. This command can’t 1986 be used on read-only groups (like ‘nntp’ groups), though. 1987 1988‘G V’ 1989 Make a new, fresh, empty ‘nnvirtual’ group 1990 (‘gnus-group-make-empty-virtual’). *Note Virtual Groups::. 1991 1992‘G v’ 1993 Add the current group to an ‘nnvirtual’ group 1994 (‘gnus-group-add-to-virtual’). Uses the process/prefix convention. 1995 1996 *Note Select Methods::, for more information on the various select 1997methods. 1998 1999 If ‘gnus-activate-foreign-newsgroups’ is a positive number, Gnus will 2000check all foreign groups with this level or lower at startup. This 2001might take quite a while, especially if you subscribe to lots of groups 2002from different NNTP servers. Also *note Group Levels::; 2003‘gnus-activate-level’ also affects activation of foreign newsgroups. 2004 2005 The following commands create ephemeral groups. They can be called 2006not only from the Group buffer, but in any Gnus buffer. 2007 2008‘gnus-read-ephemeral-emacs-bug-group’ 2009 Read an Emacs bug report in an ephemeral group. Gnus will prompt 2010 for multiple bug numbers. The default is the number at point. The 2011 URL template is specified in 2012 ‘gnus-bug-group-download-format-alist’. 2013 2014‘gnus-read-ephemeral-debian-bug-group’ 2015 Read a Debian bug report in an ephemeral group. Analog to 2016 ‘gnus-read-ephemeral-emacs-bug-group’. 2017 2018 Some of these command are also useful for article buttons, *Note 2019Article Buttons::. 2020 2021 Here is an example: 2022 (require 'gnus-art) 2023 (add-to-list 2024 'gnus-button-alist 2025 '("#\\([0-9]+\\)\\>" 1 2026 (string-match "\\<emacs\\>" (or gnus-newsgroup-name "")) 2027 gnus-read-ephemeral-emacs-bug-group 1)) 2028 2029 2030File: gnus.info, Node: Group Parameters, Next: Listing Groups, Prev: Foreign Groups, Up: Group Buffer 2031 20322.10 Group Parameters 2033===================== 2034 2035The group parameters store information local to a particular group. 2036 2037 Use the ‘G p’ or the ‘G c’ command to edit group parameters of a 2038group. (‘G p’ presents you with a Lisp-based interface, ‘G c’ presents 2039you with a Customize-like interface. The latter helps avoid silly Lisp 2040errors.) You might also be interested in reading about topic parameters 2041(*note Topic Parameters::). Additionally, you can set group parameters 2042via the ‘gnus-parameters’ variable, see below. 2043 2044 Here’s an example group parameter list: 2045 2046 ((to-address . "ding@gnus.org") 2047 (auto-expire . t)) 2048 2049 We see that each element consists of a “dotted pair”—the thing before 2050the dot is the key, while the thing after the dot is the value. All the 2051parameters have this form _except_ local variable specs, which are not 2052dotted pairs, but proper lists. 2053 2054 Some parameters have correspondent customizable variables, each of 2055which is an alist of regexps and values. 2056 2057 The following group parameters can be used: 2058 2059‘to-address’ 2060 Address used by when doing followups and new posts. 2061 2062 (to-address . "some@where.com") 2063 2064 This is primarily useful in mail groups that represent closed 2065 mailing lists—mailing lists where it’s expected that everybody that 2066 writes to the mailing list is subscribed to it. Since using this 2067 parameter ensures that the mail only goes to the mailing list 2068 itself, it means that members won’t receive two copies of your 2069 followups. 2070 2071 Using ‘to-address’ will actually work whether the group is foreign 2072 or not. Let’s say there’s a group on the server that is called 2073 ‘fa.4ad-l’. This is a real newsgroup, but the server has gotten 2074 the articles from a mail-to-news gateway. Posting directly to this 2075 group is therefore impossible—you have to send mail to the mailing 2076 list address instead. 2077 2078 See also ‘gnus-parameter-to-address-alist’. 2079 2080‘to-list’ 2081 Address used when doing ‘a’ in that group. 2082 2083 (to-list . "some@where.com") 2084 2085 It is totally ignored when doing a followup—except that if it is 2086 present in a news group, you’ll get mail group semantics when doing 2087 ‘f’. 2088 2089 If you do an ‘a’ command in a mail group and you have neither a 2090 ‘to-list’ group parameter nor a ‘to-address’ group parameter, then 2091 a ‘to-list’ group parameter will be added automatically upon 2092 sending the message if ‘gnus-add-to-list’ is set to ‘t’. 2093 2094 If this variable is set, ‘gnus-mailing-list-mode’ is turned on when 2095 entering summary buffer. 2096 2097 See also ‘gnus-parameter-to-list-alist’. 2098 2099‘subscribed’ 2100 If this parameter is set to ‘t’, Gnus will consider the to-address 2101 and to-list parameters for this group as addresses of mailing lists 2102 you are subscribed to. Giving Gnus this information is (only) a 2103 first step in getting it to generate correct Mail-Followup-To 2104 headers for your posts to these lists. The second step is to put 2105 the following in your ‘.gnus.el’ 2106 2107 (setq message-subscribed-address-functions 2108 '(gnus-find-subscribed-addresses)) 2109 2110 *Note Mailing Lists: (message)Mailing Lists, for a complete 2111 treatment of available MFT support. 2112 2113‘visible’ 2114 If the group parameter list has the element ‘(visible . t)’, that 2115 group will always be visible in the Group buffer, regardless of 2116 whether it has any unread articles. 2117 2118 This parameter cannot be set via ‘gnus-parameters’. See 2119 ‘gnus-permanently-visible-groups’ as an alternative. 2120 2121‘broken-reply-to’ 2122 Elements like ‘(broken-reply-to . t)’ signals that ‘Reply-To’ 2123 headers in this group are to be ignored, and for the header to be 2124 hidden if ‘reply-to’ is part of ‘gnus-boring-article-headers’. 2125 This can be useful if you’re reading a mailing list group where the 2126 listserv has inserted ‘Reply-To’ headers that point back to the 2127 listserv itself. That is broken behavior. So there! 2128 2129‘to-group’ 2130 Elements like ‘(to-group . "some.group.name")’ means that all posts 2131 in that group will be sent to ‘some.group.name’. 2132 2133‘newsgroup’ 2134 If you have ‘(newsgroup . t)’ in the group parameter list, Gnus 2135 will treat all responses as if they were responses to news 2136 articles. This can be useful if you have a mail group that’s 2137 really a mirror of a news group. 2138 2139‘gcc-self’ 2140 If ‘(gcc-self . t)’ is present in the group parameter list, newly 2141 composed messages will be ‘gcc’d to the current group. If 2142 ‘(gcc-self . none)’ is present, no ‘Gcc:’ header will be generated, 2143 if ‘(gcc-self . "group")’ is present, this string will be inserted 2144 literally as a ‘Gcc:’ header. It should be a group name. The 2145 ‘gcc-self’ value may also be a list of strings and ‘t’, e.g., 2146 ‘(gcc-self "group1" "group2" t)’ means to ‘gcc’ the newly composed 2147 message into the groups ‘"group1"’ and ‘"group2"’, and into the 2148 current group. The ‘gcc-self’ parameter takes precedence over any 2149 default ‘Gcc’ rules as described later (*note Archived Messages::), 2150 with the exception for messages to resend. 2151 2152 *Caveat*: Adding ‘(gcc-self . t)’ to the parameter list of ‘nntp’ 2153 groups (or the like) isn’t valid. An ‘nntp’ server doesn’t accept 2154 articles. 2155 2156‘auto-expire’ 2157 If the group parameter has an element that looks like ‘(auto-expire 2158 . t)’, all articles read will be marked as expirable. For an 2159 alternative approach, *note Expiring Mail::. 2160 2161 See also ‘gnus-auto-expirable-newsgroups’. 2162 2163‘total-expire’ 2164 If the group parameter has an element that looks like 2165 ‘(total-expire . t)’, all read articles will be put through the 2166 expiry process, even if they are not marked as expirable. Use with 2167 caution. Unread, ticked and dormant articles are not eligible for 2168 expiry. 2169 2170 See also ‘gnus-total-expirable-newsgroups’. 2171 2172‘expiry-wait’ 2173 If the group parameter has an element that looks like ‘(expiry-wait 2174 . 10)’, this value will override any ‘nnmail-expiry-wait’ and 2175 ‘nnmail-expiry-wait-function’ settings (*note Expiring Mail::) when 2176 expiring expirable messages. The value can be either a number of 2177 days (not necessarily an integer), or one of the symbols ‘never’ or 2178 ‘immediate’. 2179 2180‘expiry-target’ 2181 Where expired messages end up. This parameter overrides 2182 ‘nnmail-expiry-target’. 2183 2184‘score-file’ 2185 Elements that look like ‘(score-file . "file")’ will make ‘file’ 2186 into the current score file for the group in question. All 2187 interactive score entries will be put into this file. 2188 2189‘adapt-file’ 2190 Elements that look like ‘(adapt-file . "file")’ will make ‘file’ 2191 into the current adaptive file for the group in question. All 2192 adaptive score entries will be put into this file. 2193 2194‘admin-address’ 2195 When unsubscribing from a mailing list you should never send the 2196 unsubscription notice to the mailing list itself. Instead, you’d 2197 send messages to the administrative address. This parameter allows 2198 you to put the admin address somewhere convenient. 2199 2200‘display’ 2201 Elements that look like ‘(display . MODE)’ say which articles to 2202 display on entering the group. Valid values are: 2203 2204 ‘all’ 2205 Display all articles, both read and unread. 2206 2207 ‘an integer’ 2208 Display the last INTEGER articles in the group. This is the 2209 same as entering the group with ‘C-u INTEGER’. 2210 2211 ‘default’ 2212 Display the default visible articles, which normally includes 2213 unread and ticked articles. 2214 2215 ‘an array’ 2216 Display articles that satisfy a predicate. 2217 2218 Here are some examples: 2219 2220 ‘[unread]’ 2221 Display only unread articles. 2222 2223 ‘[not expire]’ 2224 Display everything except expirable articles. 2225 2226 ‘[and (not reply) (not expire)]’ 2227 Display everything except expirable and articles you’ve 2228 already responded to. 2229 2230 The available operators are ‘not’, ‘and’ and ‘or’. Predicates 2231 include ‘tick’, ‘unsend’, ‘undownload’, ‘unread’, ‘dormant’, 2232 ‘expire’, ‘reply’, ‘killed’, ‘bookmark’, ‘score’, ‘save’, 2233 ‘cache’, ‘forward’, and ‘unseen’. 2234 2235 The ‘display’ parameter works by limiting the summary buffer to the 2236 subset specified. You can pop the limit by using the ‘/ w’ command 2237 (*note Limiting::). 2238 2239‘comment’ 2240 Elements that look like ‘(comment . "This is a comment")’ are 2241 arbitrary comments on the group. You can display comments in the 2242 group line (*note Group Line Specification::). 2243 2244‘charset’ 2245 Elements that look like ‘(charset . iso-8859-1)’ will make 2246 ‘iso-8859-1’ the default charset; that is, the charset that will be 2247 used for all articles that do not specify a charset. 2248 2249 See also ‘gnus-group-charset-alist’. 2250 2251‘ignored-charsets’ 2252 Elements that look like ‘(ignored-charsets x-unknown iso-8859-1)’ 2253 will make ‘iso-8859-1’ and ‘x-unknown’ ignored; that is, the 2254 default charset will be used for decoding articles. 2255 2256 See also ‘gnus-group-ignored-charsets-alist’. 2257 2258‘posting-style’ 2259 You can store additional posting style information for this group 2260 here (*note Posting Styles::). The format is that of an entry in 2261 the ‘gnus-posting-styles’ alist, except that there’s no regexp 2262 matching the group name (of course). Style elements in this group 2263 parameter will take precedence over the ones found in 2264 ‘gnus-posting-styles’. 2265 2266 For instance, if you want a funky name and signature in this group 2267 only, instead of hacking ‘gnus-posting-styles’, you could put 2268 something like this in the group parameters: 2269 2270 (posting-style 2271 (name "Funky Name") 2272 ("X-Message-SMTP-Method" "smtp smtp.example.org 587") 2273 ("X-My-Header" "Funky Value") 2274 (signature "Funky Signature")) 2275 2276 If you’re using topics to organize your group buffer (*note Group 2277 Topics::), note that posting styles can also be set in the topics 2278 parameters. Posting styles in topic parameters apply to all groups 2279 in this topic. More precisely, the posting-style settings for a 2280 group result from the hierarchical merging of all posting-style 2281 entries in the parameters of this group and all the topics it 2282 belongs to. 2283 2284‘post-method’ 2285 If it is set, the value is used as the method for posting message 2286 instead of ‘gnus-post-method’. 2287 2288‘mail-source’ 2289 If it is set, and the setting of ‘mail-sources’ includes a ‘group’ 2290 mail source (*note Mail Sources::), the value is a mail source for 2291 this group. 2292 2293‘banner’ 2294 An item like ‘(banner . REGEXP)’ causes any part of an article that 2295 matches the regular expression REGEXP to be stripped. Instead of 2296 REGEXP, you can also use the symbol ‘signature’ which strips the 2297 last signature or any of the elements of the alist 2298 ‘gnus-article-banner-alist’. 2299 2300‘sieve’ 2301 This parameter contains a Sieve test that should match incoming 2302 mail that should be placed in this group. From this group 2303 parameter, a Sieve ‘IF’ control structure is generated, having the 2304 test as the condition and ‘fileinto "group.name";’ as the body. 2305 2306 For example, if the ‘INBOX.list.sieve’ group has the ‘(sieve 2307 address "sender" "sieve-admin@extundo.com")’ group parameter, when 2308 translating the group parameter into a Sieve script (*note Sieve 2309 Commands::) the following Sieve code is generated: 2310 2311 if address "sender" "sieve-admin@extundo.com" { 2312 fileinto "INBOX.list.sieve"; 2313 } 2314 2315 To generate tests for multiple email-addresses use a group 2316 parameter like ‘(sieve address "sender" ("name@one.org" 2317 else@two.org"))’. When generating a sieve script (*note Sieve 2318 Commands::) Sieve code like the following is generated: 2319 2320 if address "sender" ["name@one.org", "else@two.org"] { 2321 fileinto "INBOX.list.sieve"; 2322 } 2323 2324 You can also use regexp expansions in the rules: 2325 2326 (sieve header :regex "list-id" "<c++std-\\1.accu.org>") 2327 2328 *Note Sieve Commands::, for commands and variables that might be of 2329 interest in relation to the sieve parameter. 2330 2331 The Sieve language is described in RFC 3028. *Note Emacs Sieve: 2332 (sieve)Top. 2333 2334‘match-list’ 2335 If this parameter is set to ‘t’ and ‘nnmail-split-method’ is set to 2336 ‘gnus-group-split’, Gnus will match ‘to-address’, ‘to-list’, 2337 ‘extra-aliases’ and ‘split-regexp’ against the ‘list’ split 2338 abbreviation. The split regexp is modified to match either a ‘@’ 2339 or a dot ‘.’ in mail addresses to conform to RFC2919 ‘List-ID’. 2340 2341 See ‘nnmail-split-abbrev-alist’ for the regular expression matching 2342 mailing-list headers. 2343 2344 *Note Group Mail Splitting::, for details on how to automatically 2345 split on group parameters. 2346 2347‘(agent parameters)’ 2348 If the agent has been enabled, you can set any of its parameters to 2349 control the behavior of the agent in individual groups. See Agent 2350 Parameters in *note Category Syntax::. Most users will choose to 2351 set agent parameters in either an agent category or group topic to 2352 minimize the configuration effort. 2353 2354‘(VARIABLE FORM)’ 2355 You can use the group parameters to set variables local to the 2356 group you are entering. If you want to turn threading off in 2357 ‘news.answers’, you could put ‘(gnus-show-threads nil)’ in the 2358 group parameters of that group. ‘gnus-show-threads’ will be made 2359 into a local variable in the summary buffer you enter, and the form 2360 ‘nil’ will be ‘eval’ed there. 2361 2362 Note that this feature sets the variable locally to the summary 2363 buffer if and only if VARIABLE has been bound as a variable. 2364 Otherwise, only evaluating the form will take place. So, you may 2365 want to bind the variable in advance using ‘defvar’ or other if the 2366 result of the form needs to be set to it. 2367 2368 But some variables are evaluated in the article buffer, or in the 2369 message buffer (of a reply or followup or otherwise newly created 2370 message). As a workaround, it might help to add the variable in 2371 question to ‘gnus-newsgroup-variables’. *Note Various Summary 2372 Stuff::. So if you want to set ‘message-from-style’ via the group 2373 parameters, then you may need the following statement elsewhere in 2374 your ‘~/.gnus.el’ file: 2375 2376 (add-to-list 'gnus-newsgroup-variables 'message-from-style) 2377 2378 A use for this feature is to remove a mailing list identifier tag 2379 in the subject fields of articles. E.g., if the news group 2380 2381 nntp+news.gnus.org:gmane.text.docbook.apps 2382 2383 has the tag ‘DOC-BOOK-APPS:’ in the subject of all articles, this 2384 tag can be removed from the article subjects in the summary buffer 2385 for the group by putting ‘(gnus-list-identifiers "DOCBOOK-APPS:")’ 2386 into the group parameters for the group. 2387 2388 This can also be used as a group-specific hook function. If you 2389 want to hear a beep when you enter a group, you could put something 2390 like ‘(dummy-variable (ding))’ in the parameters of that group. If 2391 ‘dummy-variable’ has been bound (see above), it will be set to the 2392 (meaningless) result of the ‘(ding)’ form. 2393 2394 Alternatively, since the VARIABLE becomes local to the group, this 2395 pattern can be used to temporarily change a hook. For example, if 2396 the following is added to a group parameter 2397 2398 (gnus-summary-prepared-hook 2399 (lambda nil (local-set-key "d" (local-key-binding "n")))) 2400 2401 when the group is entered, the ’d’ key will not mark the article as 2402 expired. 2403 2404 Group parameters can be set via the ‘gnus-parameters’ variable too. 2405But some variables, such as ‘visible’, have no effect (For this case see 2406‘gnus-permanently-visible-groups’ as an alternative.). For example: 2407 2408 (setq gnus-parameters 2409 '(("mail\\..*" 2410 (gnus-show-threads nil) 2411 (gnus-use-scoring nil) 2412 (gnus-summary-line-format 2413 "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n") 2414 (gcc-self . t) 2415 (display . all)) 2416 2417 ("^nnimap:\\(foo.bar\\)$" 2418 (to-group . "\\1")) 2419 2420 ("mail\\.me" 2421 (gnus-use-scoring t)) 2422 2423 ("list\\..*" 2424 (total-expire . t) 2425 (broken-reply-to . t)))) 2426 2427 All clauses that match the group name will be used, but the last 2428setting “wins”. So if you have two clauses that both match the group 2429name, and both set, say ‘display’, the last setting will override the 2430first. 2431 2432 Parameters that are strings will be subjected to regexp substitution, 2433as the ‘to-group’ example shows. 2434 2435 By default, whether comparing the group name and one of those regexps 2436specified in ‘gnus-parameters’ is done in a case-sensitive manner or a 2437case-insensitive manner depends on the value of ‘case-fold-search’ at 2438the time when the comparison is done. The value of ‘case-fold-search’ 2439is typically ‘t’; it means, for example, the element ‘("INBOX\\.FOO" 2440(total-expire . t))’ might be applied to both the ‘INBOX.FOO’ group and 2441the ‘INBOX.foo’ group. If you want to make those regexps always 2442case-sensitive, set the value of the ‘gnus-parameters-case-fold-search’ 2443variable to ‘nil’. Otherwise, set it to ‘t’ if you want to compare them 2444always in a case-insensitive manner. 2445 2446 You can define different sorting to different groups via 2447‘gnus-parameters’. Here is an example to sort an NNTP group by reverse 2448date to see the latest news at the top and an RSS group by subject. In 2449this example, the first group is the Debian daily news group 2450‘gmane.linux.debian.user.news’ from news.gmane.org. The RSS group 2451corresponds to the Debian weekly news RSS feed 2452<https://packages.debian.org/unstable/newpkg_main.en.rdf>, *Note RSS::. 2453 2454 (setq 2455 gnus-parameters 2456 '(("nntp.*gmane\\.debian\\.user\\.news" 2457 (gnus-show-threads nil) 2458 (gnus-article-sort-functions '((not gnus-article-sort-by-date))) 2459 (gnus-use-adaptive-scoring nil) 2460 (gnus-use-scoring nil)) 2461 ("nnrss.*debian" 2462 (gnus-show-threads nil) 2463 (gnus-article-sort-functions 'gnus-article-sort-by-subject) 2464 (gnus-use-adaptive-scoring nil) 2465 (gnus-use-scoring t) 2466 (gnus-score-find-score-files-function 'gnus-score-find-single) 2467 (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n")))) 2468 2469 2470File: gnus.info, Node: Listing Groups, Next: Sorting Groups, Prev: Group Parameters, Up: Group Buffer 2471 24722.11 Listing Groups 2473=================== 2474 2475These commands all list various slices of the groups available. 2476 2477‘l’ 2478‘A s’ 2479 List all groups that have unread articles 2480 (‘gnus-group-list-groups’). If the numeric prefix is used, this 2481 command will list only groups of level ARG and lower. By default, 2482 it only lists groups of level five (i.e., 2483 ‘gnus-group-default-list-level’) or lower (i.e., just subscribed 2484 groups). 2485 2486‘L’ 2487‘A u’ 2488 List all groups, whether they have unread articles or not 2489 (‘gnus-group-list-all-groups’). If the numeric prefix is used, 2490 this command will list only groups of level ARG and lower. By 2491 default, it lists groups of level seven or lower (i.e., just 2492 subscribed and unsubscribed groups). 2493 2494‘A l’ 2495 List all unread groups on a specific level 2496 (‘gnus-group-list-level’). If given a prefix, also list the groups 2497 with no unread articles. 2498 2499‘A k’ 2500 List all killed groups (‘gnus-group-list-killed’). If given a 2501 prefix argument, really list all groups that are available, but 2502 aren’t currently (un)subscribed. This could entail reading the 2503 active file from the server. 2504 2505‘A z’ 2506 List all zombie groups (‘gnus-group-list-zombies’). 2507 2508‘A m’ 2509 List all unread, subscribed groups with names that match a regexp 2510 (‘gnus-group-list-matching’). 2511 2512‘A M’ 2513 List groups that match a regexp (‘gnus-group-list-all-matching’). 2514 2515‘A A’ 2516 List absolutely all groups in the active file(s) of the server(s) 2517 you are connected to (‘gnus-group-list-active’). This might very 2518 well take quite a while. It might actually be a better idea to do 2519 a ‘A M’ to list all matching, and just give ‘.’ as the thing to 2520 match on. Also note that this command may list groups that don’t 2521 exist (yet)—these will be listed as if they were killed groups. 2522 Take the output with some grains of salt. 2523 2524‘A a’ 2525 List all groups that have names that match a regexp 2526 (‘gnus-group-apropos’). 2527 2528‘A d’ 2529 List all groups that have names or descriptions that match a regexp 2530 (‘gnus-group-description-apropos’). 2531 2532‘A c’ 2533 List all groups with cached articles (‘gnus-group-list-cached’). 2534 2535‘A ?’ 2536 List all groups with dormant articles (‘gnus-group-list-dormant’). 2537 2538‘A !’ 2539 List all groups with ticked articles (‘gnus-group-list-ticked’). 2540 2541‘A /’ 2542 Further limit groups within the current selection 2543 (‘gnus-group-list-limit’). If you’ve first limited to groups with 2544 dormant articles with ‘A ?’, you can then further limit with ‘A / 2545 c’, which will then limit to groups with cached articles, giving 2546 you the groups that have both dormant articles and cached articles. 2547 2548‘A f’ 2549 Flush groups from the current selection (‘gnus-group-list-flush’). 2550 2551‘A p’ 2552 List groups plus the current selection (‘gnus-group-list-plus’). 2553 2554 Groups that match the ‘gnus-permanently-visible-groups’ regexp will 2555always be shown, whether they have unread articles or not. You can also 2556add the ‘visible’ element to the group parameters in question to get the 2557same effect. 2558 2559 Groups that have just ticked articles in it are normally listed in 2560the group buffer. If ‘gnus-list-groups-with-ticked-articles’ is ‘nil’, 2561these groups will be treated just like totally empty groups. It is ‘t’ 2562by default. 2563 2564 2565File: gnus.info, Node: Sorting Groups, Next: Group Maintenance, Prev: Listing Groups, Up: Group Buffer 2566 25672.12 Sorting Groups 2568=================== 2569 2570The ‘C-c C-s’ (‘gnus-group-sort-groups’) command sorts the group buffer 2571according to the function(s) given by the ‘gnus-group-sort-function’ 2572variable. Available sorting functions include: 2573 2574‘gnus-group-sort-by-alphabet’ 2575 Sort the group names alphabetically. This is the default. 2576 2577‘gnus-group-sort-by-real-name’ 2578 Sort the group alphabetically on the real (unprefixed) group names. 2579 2580‘gnus-group-sort-by-level’ 2581 Sort by group level. 2582 2583‘gnus-group-sort-by-score’ 2584 Sort by group score. *Note Group Score::. 2585 2586‘gnus-group-sort-by-rank’ 2587 Sort by group score and then the group level. The level and the 2588 score are, when taken together, the group’s “rank”. *Note Group 2589 Score::. 2590 2591‘gnus-group-sort-by-unread’ 2592 Sort by number of unread articles. 2593 2594‘gnus-group-sort-by-method’ 2595 Sort alphabetically on the select method. 2596 2597‘gnus-group-sort-by-server’ 2598 Sort alphabetically on the Gnus server name. 2599 2600 ‘gnus-group-sort-function’ can also be a list of sorting functions. 2601In that case, the most significant sort key function must be the last 2602one. 2603 2604 There are also a number of commands for sorting directly according to 2605some sorting criteria: 2606 2607‘G S a’ 2608 Sort the group buffer alphabetically by group name 2609 (‘gnus-group-sort-groups-by-alphabet’). 2610 2611‘G S u’ 2612 Sort the group buffer by the number of unread articles 2613 (‘gnus-group-sort-groups-by-unread’). 2614 2615‘G S l’ 2616 Sort the group buffer by group level 2617 (‘gnus-group-sort-groups-by-level’). 2618 2619‘G S v’ 2620 Sort the group buffer by group score 2621 (‘gnus-group-sort-groups-by-score’). *Note Group Score::. 2622 2623‘G S r’ 2624 Sort the group buffer by group rank 2625 (‘gnus-group-sort-groups-by-rank’). *Note Group Score::. 2626 2627‘G S m’ 2628 Sort the group buffer alphabetically by back end name 2629 (‘gnus-group-sort-groups-by-method’). 2630 2631‘G S n’ 2632 Sort the group buffer alphabetically by real (unprefixed) group 2633 name (‘gnus-group-sort-groups-by-real-name’). 2634 2635 All the commands below obey the process/prefix convention (*note 2636Process/Prefix::). 2637 2638 When given a symbolic prefix (*note Symbolic Prefixes::), all these 2639commands will sort in reverse order. 2640 2641 You can also sort a subset of the groups: 2642 2643‘G P a’ 2644 Sort the groups alphabetically by group name 2645 (‘gnus-group-sort-selected-groups-by-alphabet’). 2646 2647‘G P u’ 2648 Sort the groups by the number of unread articles 2649 (‘gnus-group-sort-selected-groups-by-unread’). 2650 2651‘G P l’ 2652 Sort the groups by group level 2653 (‘gnus-group-sort-selected-groups-by-level’). 2654 2655‘G P v’ 2656 Sort the groups by group score 2657 (‘gnus-group-sort-selected-groups-by-score’). *Note Group Score::. 2658 2659‘G P r’ 2660 Sort the groups by group rank 2661 (‘gnus-group-sort-selected-groups-by-rank’). *Note Group Score::. 2662 2663‘G P m’ 2664 Sort the groups alphabetically by back end name 2665 (‘gnus-group-sort-selected-groups-by-method’). 2666 2667‘G P n’ 2668 Sort the groups alphabetically by real (unprefixed) group name 2669 (‘gnus-group-sort-selected-groups-by-real-name’). 2670 2671‘G P s’ 2672 Sort the groups according to ‘gnus-group-sort-function’. 2673 2674 And finally, note that you can use ‘C-k’ and ‘C-y’ to manually move 2675groups around. 2676 2677 2678File: gnus.info, Node: Group Maintenance, Next: Browse Foreign Server, Prev: Sorting Groups, Up: Group Buffer 2679 26802.13 Group Maintenance 2681====================== 2682 2683‘b’ 2684 Find bogus groups and delete them 2685 (‘gnus-group-check-bogus-groups’). 2686 2687‘F’ 2688 Find new groups and process them (‘gnus-group-find-new-groups’). 2689 With 1 ‘C-u’, use the ‘ask-server’ method to query the server for 2690 new groups. With 2 ‘C-u’’s, use most complete method possible to 2691 query the server for new groups, and subscribe the new groups as 2692 zombies. 2693 2694‘C-c C-x’ 2695 Run all expirable articles in the current group through the expiry 2696 process (if any) (‘gnus-group-expire-articles’). That is, delete 2697 all expirable articles in the group that have been around for a 2698 while. (*note Expiring Mail::). 2699 2700‘C-c C-M-x’ 2701 Run all expirable articles in all groups through the expiry process 2702 (‘gnus-group-expire-all-groups’). 2703 2704 2705File: gnus.info, Node: Browse Foreign Server, Next: Exiting Gnus, Prev: Group Maintenance, Up: Group Buffer 2706 27072.14 Browse Foreign Server 2708========================== 2709 2710‘B’ 2711 You will be queried for a select method and a server name. Gnus 2712 will then attempt to contact this server and let you browse the 2713 groups there (‘gnus-group-browse-foreign-server’). 2714 2715 A new buffer with a list of available groups will appear. This 2716buffer will use the ‘gnus-browse-mode’. This buffer looks a bit (well, 2717a lot) like a normal group buffer. 2718 2719 Here’s a list of keystrokes available in the browse mode: 2720 2721‘n’ 2722 Go to the next group (‘gnus-group-next-group’). 2723 2724‘p’ 2725 Go to the previous group (‘gnus-group-prev-group’). 2726 2727‘<SPC>’ 2728 Enter the current group and display the first article 2729 (‘gnus-browse-read-group’). 2730 2731‘<RET>’ 2732 Enter the current group (‘gnus-browse-select-group’). 2733 2734‘u’ 2735 Unsubscribe to the current group, or, as will be the case here, 2736 subscribe to it (‘gnus-browse-unsubscribe-current-group’). You can 2737 affect the way the new group is entered into the Group buffer using 2738 the variable ‘gnus-browse-subscribe-newsgroup-method’. See *note 2739 Subscription Methods:: for available options. 2740 2741‘l’ 2742‘q’ 2743 Exit browse mode (‘gnus-browse-exit’). 2744 2745‘d’ 2746 Describe the current group (‘gnus-browse-describe-group’). 2747 2748‘?’ 2749 Describe browse mode briefly (well, there’s not much to describe, 2750 is there) (‘gnus-browse-describe-briefly’). 2751 2752‘<DEL>’ 2753 This function will delete the current group 2754 (‘gnus-browse-delete-group’). If given a prefix, this function 2755 will actually delete all the articles in the group, and forcibly 2756 remove the group itself from the face of the Earth. Use a prefix 2757 only if you are absolutely sure of what you are doing. 2758 2759 2760File: gnus.info, Node: Exiting Gnus, Next: Group Topics, Prev: Browse Foreign Server, Up: Group Buffer 2761 27622.15 Exiting Gnus 2763================= 2764 2765Yes, Gnus is ex(c)iting. 2766 2767‘z’ 2768 Suspend Gnus (‘gnus-group-suspend’). This doesn’t really exit 2769 Gnus, but it kills all buffers except the Group buffer. I’m not 2770 sure why this is a gain, but then who am I to judge? 2771 2772‘q’ 2773 Quit Gnus (‘gnus-group-exit’). 2774 2775‘Q’ 2776 Quit Gnus without saving the ‘.newsrc’ files (‘gnus-group-quit’). 2777 The dribble file will be saved, though (*note Auto Save::). 2778 2779 ‘gnus-suspend-gnus-hook’ is called when you suspend Gnus and 2780‘gnus-exit-gnus-hook’ is called when you quit Gnus, while 2781‘gnus-after-exiting-gnus-hook’ is called as the final item when exiting 2782Gnus. 2783 2784 Note: 2785 2786 Miss Lisa Cannifax, while sitting in English class, felt her feet 2787 go numbly heavy and herself fall into a hazy trance as the boy 2788 sitting behind her drew repeated lines with his pencil across the 2789 back of her plastic chair. 2790 2791 2792File: gnus.info, Node: Group Topics, Next: Non-ASCII Group Names, Prev: Exiting Gnus, Up: Group Buffer 2793 27942.16 Group Topics 2795================= 2796 2797If you read lots and lots of groups, it might be convenient to group 2798them hierarchically according to topics. You put your Emacs groups over 2799here, your sex groups over there, and the rest (what, two groups or so?) 2800you put in some misc section that you never bother with anyway. You can 2801even group the Emacs sex groups as a sub-topic to either the Emacs 2802groups or the sex groups—or both! Go wild! 2803 2804 Here’s an example: 2805 2806 Gnus 2807 Emacs -- I wuw it! 2808 3: comp.emacs 2809 2: alt.religion.emacs 2810 Naughty Emacs 2811 452: alt.sex.emacs 2812 0: comp.talk.emacs.recovery 2813 Misc 2814 8: comp.binaries.fractals 2815 13: comp.sources.unix 2816 2817 To get this _fab_ functionality you simply turn on (ooh!) the 2818‘gnus-topic’ minor mode—type ‘t’ in the group buffer. (This is a 2819toggling command.) 2820 2821 Go ahead, just try it. I’ll still be here when you get back. La de 2822dum... Nice tune, that... la la la... What, you’re back? Yes, and now 2823press ‘l’. There. All your groups are now listed under ‘misc’. 2824Doesn’t that make you feel all warm and fuzzy? Hot and bothered? 2825 2826 If you want this permanently enabled, you should add that minor mode 2827to the hook for the group mode. Put the following line in your 2828‘~/.gnus.el’ file: 2829 2830 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) 2831 2832* Menu: 2833 2834* Topic Commands:: Interactive E-Z commands. 2835* Topic Variables:: How to customize the topics the Lisp Way. 2836* Topic Sorting:: Sorting each topic individually. 2837* Topic Topology:: A map of the world. 2838* Topic Parameters:: Parameters that apply to all groups in a topic. 2839 2840 2841File: gnus.info, Node: Topic Commands, Next: Topic Variables, Up: Group Topics 2842 28432.16.1 Topic Commands 2844--------------------- 2845 2846When the topic minor mode is turned on, a new ‘T’ submap will be 2847available. In addition, a few of the standard keys change their 2848definitions slightly. 2849 2850 In general, the following kinds of operations are possible on topics. 2851First of all, you want to create topics. Secondly, you want to put 2852groups in topics and to move them around until you have an order you 2853like. The third kind of operation is to show/hide parts of the whole 2854shebang. You might want to hide a topic including its subtopics and 2855groups, to get a better overview of the other groups. 2856 2857 Here is a list of the basic keys that you might need to set up topics 2858the way you like. 2859 2860‘T n’ 2861 Prompt for a new topic name and create it 2862 (‘gnus-topic-create-topic’). 2863 2864‘T <TAB>’ 2865‘<TAB>’ 2866 “Indent” the current topic so that it becomes a sub-topic of the 2867 previous topic (‘gnus-topic-indent’). If given a prefix, 2868 “un-indent” the topic instead. 2869 2870‘M-<TAB>’ 2871 “Un-indent” the current topic so that it becomes a sub-topic of the 2872 parent of its current parent (‘gnus-topic-unindent’). 2873 2874 The following two keys can be used to move groups and topics around. 2875They work like the well-known cut and paste. ‘C-k’ is like cut and 2876‘C-y’ is like paste. Of course, this being Emacs, we use the terms kill 2877and yank rather than cut and paste. 2878 2879‘C-k’ 2880 Kill a group or topic (‘gnus-topic-kill-group’). All groups in the 2881 topic will be removed along with the topic. 2882 2883‘C-y’ 2884 Yank the previously killed group or topic 2885 (‘gnus-topic-yank-group’). Note that all topics will be yanked 2886 before all groups. 2887 2888 So, to move a topic to the beginning of the list of topics, just 2889 hit ‘C-k’ on it. This is like the “cut” part of cut and paste. 2890 Then, move the cursor to the beginning of the buffer (just below 2891 the “Gnus” topic) and hit ‘C-y’. This is like the “paste” part of 2892 cut and paste. Like I said—E-Z. 2893 2894 You can use ‘C-k’ and ‘C-y’ on groups as well as on topics. So you 2895 can move topics around as well as groups. 2896 2897 After setting up the topics the way you like them, you might wish to 2898hide a topic, or to show it again. That’s why we have the following 2899key. 2900 2901‘<RET>’ 2902‘<SPC>’ 2903 Either select a group or fold a topic (‘gnus-topic-select-group’). 2904 When you perform this command on a group, you’ll enter the group, 2905 as usual. When done on a topic line, the topic will be folded (if 2906 it was visible) or unfolded (if it was folded already). So it’s 2907 basically a toggling command on topics. In addition, if you give a 2908 numerical prefix, group on that level (and lower) will be 2909 displayed. 2910 2911 Now for a list of other commands, in no particular order. 2912 2913‘T m’ 2914 Move the current group to some other topic 2915 (‘gnus-topic-move-group’). This command uses the process/prefix 2916 convention (*note Process/Prefix::). 2917 2918‘T j’ 2919 Go to a topic (‘gnus-topic-jump-to-topic’). 2920 2921‘T c’ 2922 Copy the current group to some other topic 2923 (‘gnus-topic-copy-group’). This command uses the process/prefix 2924 convention (*note Process/Prefix::). 2925 2926‘T h’ 2927 Hide the current topic (‘gnus-topic-hide-topic’). If given a 2928 prefix, hide the topic permanently. 2929 2930‘T s’ 2931 Show the current topic (‘gnus-topic-show-topic’). If given a 2932 prefix, show the topic permanently. 2933 2934‘T D’ 2935 Remove a group from the current topic (‘gnus-topic-remove-group’). 2936 This command is mainly useful if you have the same group in several 2937 topics and wish to remove it from one of the topics. You may also 2938 remove a group from all topics, but in that case, Gnus will add it 2939 to the root topic the next time you start Gnus. In fact, all new 2940 groups (which, naturally, don’t belong to any topic) will show up 2941 in the root topic. 2942 2943 This command uses the process/prefix convention (*note 2944 Process/Prefix::). 2945 2946‘T M’ 2947 Move all groups that match some regular expression to a topic 2948 (‘gnus-topic-move-matching’). 2949 2950‘T C’ 2951 Copy all groups that match some regular expression to a topic 2952 (‘gnus-topic-copy-matching’). 2953 2954‘T H’ 2955 Toggle hiding empty topics 2956 (‘gnus-topic-toggle-display-empty-topics’). 2957 2958‘T #’ 2959 Mark all groups in the current topic with the process mark 2960 (‘gnus-topic-mark-topic’). This command works recursively on 2961 sub-topics unless given a prefix. 2962 2963‘T M-#’ 2964 Remove the process mark from all groups in the current topic 2965 (‘gnus-topic-unmark-topic’). This command works recursively on 2966 sub-topics unless given a prefix. 2967 2968‘C-c C-x’ 2969 Run all expirable articles in the current group or topic through 2970 the expiry process (if any) (‘gnus-topic-expire-articles’). (*note 2971 Expiring Mail::). 2972 2973‘T r’ 2974 Rename a topic (‘gnus-topic-rename’). 2975 2976‘T <DEL>’ 2977 Delete an empty topic (‘gnus-topic-delete’). 2978 2979‘A T’ 2980 List all groups that Gnus knows about in a topics-ified way 2981 (‘gnus-topic-list-active’). 2982 2983‘T M-n’ 2984 Go to the next topic (‘gnus-topic-goto-next-topic’). 2985 2986‘T M-p’ 2987 Go to the previous topic (‘gnus-topic-goto-previous-topic’). 2988 2989‘G p’ 2990 Edit the topic parameters (‘gnus-topic-edit-parameters’). *Note 2991 Topic Parameters::. 2992 2993 2994File: gnus.info, Node: Topic Variables, Next: Topic Sorting, Prev: Topic Commands, Up: Group Topics 2995 29962.16.2 Topic Variables 2997---------------------- 2998 2999The previous section told you how to tell Gnus which topics to display. 3000This section explains how to tell Gnus what to display about each topic. 3001 3002 The topic lines themselves are created according to the 3003‘gnus-topic-line-format’ variable (*note Formatting Variables::). Valid 3004elements are: 3005 3006‘i’ 3007 Indentation. 3008‘n’ 3009 Topic name. 3010‘v’ 3011 Visibility. 3012‘l’ 3013 Level. 3014‘g’ 3015 Number of groups in the topic. 3016‘a’ 3017 Number of unread articles in the topic. 3018‘A’ 3019 Number of unread articles in the topic and all its subtopics. 3020 3021 Each sub-topic (and the groups in the sub-topics) will be indented 3022with ‘gnus-topic-indent-level’ times the topic level number of spaces. 3023The default is 2. 3024 3025 ‘gnus-topic-mode-hook’ is called in topic minor mode buffers. 3026 3027 The ‘gnus-topic-display-empty-topics’ says whether to display even 3028topics that have no unread articles in them. The default is ‘t’. 3029 3030 3031File: gnus.info, Node: Topic Sorting, Next: Topic Topology, Prev: Topic Variables, Up: Group Topics 3032 30332.16.3 Topic Sorting 3034-------------------- 3035 3036You can sort the groups in each topic individually with the following 3037commands: 3038 3039‘T S a’ 3040 Sort the current topic alphabetically by group name 3041 (‘gnus-topic-sort-groups-by-alphabet’). 3042 3043‘T S u’ 3044 Sort the current topic by the number of unread articles 3045 (‘gnus-topic-sort-groups-by-unread’). 3046 3047‘T S l’ 3048 Sort the current topic by group level 3049 (‘gnus-topic-sort-groups-by-level’). 3050 3051‘T S v’ 3052 Sort the current topic by group score 3053 (‘gnus-topic-sort-groups-by-score’). *Note Group Score::. 3054 3055‘T S r’ 3056 Sort the current topic by group rank 3057 (‘gnus-topic-sort-groups-by-rank’). *Note Group Score::. 3058 3059‘T S m’ 3060 Sort the current topic alphabetically by back end name 3061 (‘gnus-topic-sort-groups-by-method’). 3062 3063‘T S e’ 3064 Sort the current topic alphabetically by server name 3065 (‘gnus-topic-sort-groups-by-server’). 3066 3067‘T S s’ 3068 Sort the current topic according to the function(s) given by the 3069 ‘gnus-group-sort-function’ variable (‘gnus-topic-sort-groups’). 3070 3071 When given a prefix argument, all these commands will sort in reverse 3072order. *Note Sorting Groups::, for more information about group 3073sorting. 3074 3075 3076File: gnus.info, Node: Topic Topology, Next: Topic Parameters, Prev: Topic Sorting, Up: Group Topics 3077 30782.16.4 Topic Topology 3079--------------------- 3080 3081So, let’s have a look at an example group buffer: 3082 3083 Gnus 3084 Emacs -- I wuw it! 3085 3: comp.emacs 3086 2: alt.religion.emacs 3087 Naughty Emacs 3088 452: alt.sex.emacs 3089 0: comp.talk.emacs.recovery 3090 Misc 3091 8: comp.binaries.fractals 3092 13: comp.sources.unix 3093 3094 So, here we have one top-level topic (‘Gnus’), two topics under that, 3095and one sub-topic under one of the sub-topics. (There is always just 3096one (1) top-level topic). This topology can be expressed as follows: 3097 3098 (("Gnus" visible) 3099 (("Emacs -- I wuw it!" visible) 3100 (("Naughty Emacs" visible))) 3101 (("Misc" visible))) 3102 3103 This is in fact how the variable ‘gnus-topic-topology’ would look for 3104the display above. That variable is saved in the ‘.newsrc.eld’ file, 3105and shouldn’t be messed with manually—unless you really want to. Since 3106this variable is read from the ‘.newsrc.eld’ file, setting it in any 3107other startup files will have no effect. 3108 3109 This topology shows what topics are sub-topics of what topics 3110(right), and which topics are visible. Two settings are currently 3111allowed—‘visible’ and ‘invisible’. 3112 3113 3114File: gnus.info, Node: Topic Parameters, Prev: Topic Topology, Up: Group Topics 3115 31162.16.5 Topic Parameters 3117----------------------- 3118 3119All groups in a topic will inherit group parameters from the parent (and 3120ancestor) topic parameters. All valid group parameters are valid topic 3121parameters (*note Group Parameters::). When the agent is enabled, all 3122agent parameters (See Agent Parameters in *note Category Syntax::) are 3123also valid topic parameters. 3124 3125 In addition, the following parameters are only valid as topic 3126parameters: 3127 3128‘subscribe’ 3129 When subscribing new groups by topic (*note Subscription 3130 Methods::), the ‘subscribe’ topic parameter says what groups go in 3131 what topic. Its value should be a regexp to match the groups that 3132 should go in that topic. 3133 3134‘subscribe-level’ 3135 When subscribing new groups by topic (see the ‘subscribe’ 3136 parameter), the group will be subscribed with the level specified 3137 in the ‘subscribe-level’ instead of 3138 ‘gnus-level-default-subscribed’. 3139 3140 Group parameters (of course) override topic parameters, and topic 3141parameters in sub-topics override topic parameters in super-topics. You 3142know. Normal inheritance rules. (“Rules” is here a noun, not a verb, 3143although you may feel free to disagree with me here.) 3144 3145 Gnus 3146 Emacs 3147 3: comp.emacs 3148 2: alt.religion.emacs 3149 452: alt.sex.emacs 3150 Relief 3151 452: alt.sex.emacs 3152 0: comp.talk.emacs.recovery 3153 Misc 3154 8: comp.binaries.fractals 3155 13: comp.sources.unix 3156 452: alt.sex.emacs 3157 3158 The ‘Emacs’ topic has the topic parameter ‘(score-file . 3159"emacs.SCORE")’; the ‘Relief’ topic has the topic parameter ‘(score-file 3160. "relief.SCORE")’; and the ‘Misc’ topic has the topic parameter 3161‘(score-file . "emacs.SCORE")’. In addition, 3162‘alt.religion.emacs’ has the group parameter ‘(score-file . 3163"religion.SCORE")’. 3164 3165 Now, when you enter ‘alt.sex.emacs’ in the ‘Relief’ topic, you will 3166get the ‘relief.SCORE’ home score file. If you enter the same group in 3167the ‘Emacs’ topic, you’ll get the ‘emacs.SCORE’ home score file. If you 3168enter the group ‘alt.religion.emacs’, you’ll get the ‘religion.SCORE’ 3169home score file. 3170 3171 This seems rather simple and self-evident, doesn’t it? Well, yes. 3172But there are some problems, especially with the ‘total-expiry’ 3173parameter. Say you have a mail group in two topics; one with 3174‘total-expiry’ and one without. What happens when you do ‘M-x 3175gnus-expire-all-expirable-groups’? Gnus has no way of telling which one 3176of these topics you mean to expire articles from, so anything may 3177happen. In fact, I hereby declare that it is “undefined” what happens. 3178You just have to be careful if you do stuff like that. 3179 3180 3181File: gnus.info, Node: Non-ASCII Group Names, Next: Misc Group Stuff, Prev: Group Topics, Up: Group Buffer 3182 31832.17 Accessing groups of non-English names 3184========================================== 3185 3186There are some news servers that provide groups of which the names are 3187expressed with their native languages in the world. For instance, in a 3188certain news server there are some newsgroups of which the names are 3189spelled in Chinese, where people are talking in Chinese. You can, of 3190course, subscribe to such news groups using Gnus. Currently Gnus 3191supports non-ASCII group names not only with the ‘nntp’ back end but 3192also with the ‘nnml’ back end and the ‘nnrss’ back end. 3193 3194 Every such group name is encoded by a certain charset in the server 3195side (in an NNTP server its administrator determines the charset, but 3196for groups in the other back ends it is determined by you). Gnus has to 3197display the decoded ones for you in the group buffer and the article 3198buffer, and needs to use the encoded ones when communicating with 3199servers. However, Gnus doesn’t know what charset is used for each 3200non-ASCII group name. The following two variables are just the ones for 3201telling Gnus what charset should be used for each group: 3202 3203‘gnus-group-name-charset-method-alist’ 3204 An alist of select methods and charsets. The default value is 3205 ‘nil’. The names of groups in the server specified by that select 3206 method are all supposed to use the corresponding charset. For 3207 example: 3208 3209 (setq gnus-group-name-charset-method-alist 3210 '(((nntp "news.com.cn") . cn-gb-2312))) 3211 3212 Charsets specified for groups with this variable are preferred to 3213 the ones specified for the same groups with the 3214 ‘gnus-group-name-charset-group-alist’ variable (see below). 3215 3216 A select method can be very long, like: 3217 3218 (nntp "gmane" 3219 (nntp-address "news.gmane.org") 3220 (nntp-end-of-line "\n") 3221 (nntp-open-connection-function 3222 nntp-open-via-rlogin-and-telnet) 3223 (nntp-via-rlogin-command "ssh") 3224 (nntp-via-rlogin-command-switches 3225 ("-C" "-t" "-e" "none")) 3226 (nntp-via-address ...)) 3227 3228 In that case, you can truncate it into ‘(nntp "gmane")’ in this 3229 variable. That is, it is enough to contain only the back end name 3230 and the server name. 3231 3232‘gnus-group-name-charset-group-alist’ 3233 An alist of regexp of group name and the charset for group names. 3234 ‘((".*" . utf-8))’ is the default value if UTF-8 is supported, 3235 otherwise the default is ‘nil’. For example: 3236 3237 (setq gnus-group-name-charset-group-alist 3238 '(("\\.com\\.cn:" . cn-gb-2312) 3239 (".*" . utf-8))) 3240 3241 Note that this variable is ignored if the match is made with 3242 ‘gnus-group-name-charset-method-alist’. 3243 3244 Those two variables are used also to determine the charset for 3245encoding and decoding non-ASCII group names that are in the back ends 3246other than ‘nntp’. It means that it is you who determine it. If you do 3247nothing, the charset used for group names in those back ends will all be 3248‘utf-8’ because of the last element of 3249‘gnus-group-name-charset-group-alist’. 3250 3251 There is one more important variable for non-ASCII group names: 3252 3253‘nnmail-pathname-coding-system’ 3254 The value of this variable should be a coding system or ‘nil’. The 3255 default is ‘nil’ in Emacs. 3256 3257 The ‘nnml’ back end, the ‘nnrss’ back end, the agent, and the cache 3258 use non-ASCII group names in those files and directories. This 3259 variable overrides the value of ‘file-name-coding-system’ which 3260 specifies the coding system used when encoding and decoding those 3261 file names and directory names. 3262 3263 Emacs uses the value of ‘default-file-name-coding-system’ if 3264 ‘file-name-coding-system’ is ‘nil’ or it is bound to the value of 3265 ‘nnmail-pathname-coding-system’ which is ‘nil’. 3266 3267 Normally the value of ‘default-file-name-coding-system’ is 3268 initialized according to the locale, so you will need to do nothing 3269 if the value is suitable to encode and decode non-ASCII group 3270 names. 3271 3272 The value of this variable (or ‘default-file-name-coding-system’) 3273 does not necessarily need to be the same value that is determined 3274 by ‘gnus-group-name-charset-method-alist’ and 3275 ‘gnus-group-name-charset-group-alist’. 3276 3277 If ‘default-file-name-coding-system’ or this variable is 3278 initialized by default to ‘iso-latin-1-unix’ for example, although 3279 you want to subscribe to the groups spelled in Chinese, that is the 3280 most typical case where you have to customize 3281 ‘nnmail-pathname-coding-system’. The ‘utf-8-unix’ coding system is 3282 a good candidate for it. Otherwise, you may change the locale in 3283 your system so that ‘default-file-name-coding-system’ or this 3284 variable may be initialized to an appropriate value. 3285 3286 Note that when you copy or move articles from a non-ASCII group to 3287another group, the charset used to encode and decode group names should 3288be the same in both groups. Otherwise the Newsgroups header will be 3289displayed incorrectly in the article buffer. 3290 3291 3292File: gnus.info, Node: Misc Group Stuff, Prev: Non-ASCII Group Names, Up: Group Buffer 3293 32942.18 Misc Group Stuff 3295===================== 3296 3297* Menu: 3298 3299* Scanning New Messages:: Asking Gnus to see whether new messages have arrived. 3300* Group Information:: Information and help on groups and Gnus. 3301* Group Timestamp:: Making Gnus keep track of when you last read a group. 3302* File Commands:: Reading and writing the Gnus files. 3303* Sieve Commands:: Managing Sieve scripts. 3304 3305‘v’ 3306 The key ‘v’ is reserved for users. You can bind it to some command 3307 or better use it as a prefix key. For example: 3308 3309 (define-key gnus-group-mode-map (kbd "v j d") 3310 (lambda () 3311 (interactive) 3312 (gnus-group-jump-to-group "nndraft:drafts"))) 3313 3314 On keys reserved for users in Emacs and on keybindings in general 3315 *Note Keymaps: (emacs)Keymaps. 3316 3317‘^’ 3318 Enter the server buffer (‘gnus-group-enter-server-mode’). *Note 3319 Server Buffer::. 3320 3321‘a’ 3322 Start composing a message (a news by default) 3323 (‘gnus-group-post-news’). If given a prefix, post to the group 3324 under the point. If the prefix is 1, prompt for a group to post 3325 to. Contrary to what the name of this function suggests, the 3326 prepared article might be a mail instead of a news, if a mail group 3327 is specified with the prefix argument. *Note Composing Messages::. 3328 3329‘m’ 3330 Mail a message somewhere (‘gnus-group-mail’). If given a prefix, 3331 use the posting style of the group under the point. If the prefix 3332 is 1, prompt for a group name to find the posting style. *Note 3333 Composing Messages::. 3334 3335‘i’ 3336 Start composing a news (‘gnus-group-news’). If given a prefix, 3337 post to the group under the point. If the prefix is 1, prompt for 3338 group to post to. *Note Composing Messages::. 3339 3340 This function actually prepares a news even when using mail groups. 3341 This is useful for “posting” messages to mail groups without 3342 actually sending them over the network: they’re just saved directly 3343 to the group in question. The corresponding back end must have a 3344 request-post method for this to work though. 3345 3346‘G z’ 3347 3348 Compact the group under point (‘gnus-group-compact-group’). 3349 Currently implemented only in nnml (*note Mail Spool::). This 3350 removes gaps between article numbers, hence getting a correct total 3351 article count. 3352 3353 Variables for the group buffer: 3354 3355‘gnus-group-mode-hook’ 3356 is called after the group buffer has been created. 3357 3358‘gnus-group-prepare-hook’ 3359 is called after the group buffer is generated. It may be used to 3360 modify the buffer in some strange, unnatural way. 3361 3362‘gnus-group-prepared-hook’ 3363 is called as the very last thing after the group buffer has been 3364 generated. It may be used to move point around, for instance. 3365 3366‘gnus-permanently-visible-groups’ 3367 Groups matching this regexp will always be listed in the group 3368 buffer, whether they are empty or not. 3369 3370 3371File: gnus.info, Node: Scanning New Messages, Next: Group Information, Up: Misc Group Stuff 3372 33732.18.1 Scanning New Messages 3374---------------------------- 3375 3376‘g’ 3377 Check the server(s) for new articles. If the numerical prefix is 3378 used, this command will check only groups of level ARG and lower 3379 (‘gnus-group-get-new-news’). If given a non-numerical prefix, this 3380 command will force a total re-reading of the active file(s) from 3381 the back end(s). 3382 3383‘M-g’ 3384 Check whether new articles have arrived in the current group 3385 (‘gnus-group-get-new-news-this-group’). 3386 ‘gnus-goto-next-group-when-activating’ says whether this command is 3387 to move point to the next group or not. It is ‘t’ by default. 3388 3389‘C-c M-g’ 3390 Activate absolutely all groups (‘gnus-activate-all-groups’). 3391 3392‘R’ 3393 Restart Gnus (‘gnus-group-restart’). This saves the ‘.newsrc’ 3394 file(s), closes the connection to all servers, clears up all 3395 run-time Gnus variables, and then starts Gnus all over again. 3396 3397 ‘gnus-get-new-news-hook’ is run just before checking for new news. 3398 3399 ‘gnus-after-getting-new-news-hook’ is run after checking for new 3400news. 3401 3402 3403File: gnus.info, Node: Group Information, Next: Group Timestamp, Prev: Scanning New Messages, Up: Misc Group Stuff 3404 34052.18.2 Group Information 3406------------------------ 3407 3408‘H d’ 3409‘C-c C-d’ 3410 Describe the current group (‘gnus-group-describe-group’). If given 3411 a prefix, force Gnus to re-read the description from the server. 3412 3413‘M-d’ 3414 Describe all groups (‘gnus-group-describe-all-groups’). If given a 3415 prefix, force Gnus to re-read the description file from the server. 3416 3417‘H v’ 3418‘V’ 3419 Display current Gnus version numbers (‘gnus-version’). 3420 3421‘?’ 3422 Give a very short help message (‘gnus-group-describe-briefly’). 3423 3424‘C-c C-i’ 3425 Go to the Gnus info node (‘gnus-info-find-node’). 3426 3427 3428File: gnus.info, Node: Group Timestamp, Next: File Commands, Prev: Group Information, Up: Misc Group Stuff 3429 34302.18.3 Group Timestamp 3431---------------------- 3432 3433It can be convenient to let Gnus keep track of when you last read a 3434group. To set the ball rolling, you should add 3435‘gnus-group-set-timestamp’ to ‘gnus-select-group-hook’: 3436 3437 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp) 3438 3439 After doing this, each time you enter a group, it’ll be recorded. 3440 3441 This information can be displayed in various ways—the easiest is to 3442use the ‘%d’ spec in the group line format: 3443 3444 (setq gnus-group-line-format 3445 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n") 3446 3447 This will result in lines looking like: 3448 3449 * 0: mail.ding 19961002T012943 3450 0: custom 19961002T012713 3451 3452 As you can see, the date is displayed in compact ISO 8601 format. 3453This may be a bit too much, so to just display the date, you could say 3454something like: 3455 3456 (setq gnus-group-line-format 3457 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n") 3458 3459 If you would like greater control of the time format, you can use a 3460user-defined format spec. Something like the following should do the 3461trick: 3462 3463 (setq gnus-group-line-format 3464 "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n") 3465 (defun gnus-user-format-function-d (headers) 3466 (let ((time (gnus-group-timestamp gnus-tmp-group))) 3467 (if time 3468 (format-time-string "%b %d %H:%M" time) 3469 ""))) 3470 3471 To see what variables are dynamically bound (like ‘gnus-tmp-group’), 3472you have to look at the source code. The variable names aren’t 3473guaranteed to be stable over Gnus versions, either. 3474 3475 3476File: gnus.info, Node: File Commands, Next: Sieve Commands, Prev: Group Timestamp, Up: Misc Group Stuff 3477 34782.18.4 File Commands 3479-------------------- 3480 3481‘r’ 3482 Re-read the init file (‘gnus-init-file’, which defaults to 3483 ‘~/.gnus.el’) (‘gnus-group-read-init-file’). 3484 3485‘s’ 3486 Save the ‘.newsrc.eld’ file (and ‘.newsrc’ if wanted) 3487 (‘gnus-group-save-newsrc’). If given a prefix, force saving the 3488 file(s) whether Gnus thinks it is necessary or not. 3489 3490 3491File: gnus.info, Node: Sieve Commands, Prev: File Commands, Up: Misc Group Stuff 3492 34932.18.5 Sieve Commands 3494--------------------- 3495 3496Sieve is a server-side mail filtering language. In Gnus you can use the 3497‘sieve’ group parameter (*note Group Parameters::) to specify sieve 3498rules that should apply to each group. Gnus provides two commands to 3499translate all these group parameters into a proper Sieve script that can 3500be transferred to the server somehow. 3501 3502 The generated Sieve script is placed in ‘gnus-sieve-file’ (by default 3503‘~/.sieve’). The Sieve code that Gnus generate is placed between two 3504delimiters, ‘gnus-sieve-region-start’ and ‘gnus-sieve-region-end’, so 3505you may write additional Sieve code outside these delimiters that will 3506not be removed the next time you regenerate the Sieve script. 3507 3508 The variable ‘gnus-sieve-crosspost’ controls how the Sieve script is 3509generated. If it is non-‘nil’ (the default) articles is placed in all 3510groups that have matching rules, otherwise the article is only placed in 3511the group with the first matching rule. For example, the group 3512parameter ‘(sieve address "sender" "owner-ding@hpc.uh.edu")’ will 3513generate the following piece of Sieve code if ‘gnus-sieve-crosspost’ is 3514‘nil’. (When ‘gnus-sieve-crosspost’ is non-‘nil’, it looks the same 3515except that the line containing the call to ‘stop’ is removed.) 3516 3517 if address "sender" "owner-ding@hpc.uh.edu" { 3518 fileinto "INBOX.ding"; 3519 stop; 3520 } 3521 3522 *Note Emacs Sieve: (sieve)Top. 3523 3524‘D g’ 3525 Regenerate a Sieve script from the ‘sieve’ group parameters and put 3526 you into the ‘gnus-sieve-file’ without saving it. 3527 3528‘D u’ 3529 Regenerates the Gnus managed part of ‘gnus-sieve-file’ using the 3530 ‘sieve’ group parameters, save the file and upload it to the server 3531 using the ‘sieveshell’ program. 3532 3533 3534File: gnus.info, Node: Summary Buffer, Next: Article Buffer, Prev: Group Buffer, Up: Top 3535 35363 Summary Buffer 3537**************** 3538 3539A line for each article is displayed in the summary buffer. You can 3540move around, read articles, post articles and reply to articles. 3541 3542 The most common way to a summary buffer is to select a group from the 3543group buffer (*note Selecting a Group::). 3544 3545 You can have as many summary buffers open as you wish. 3546 3547 You can customize the Summary Mode tool bar, see ‘M-x 3548customize-apropos <RET> gnus-summary-tool-bar’. This feature is only 3549available in Emacs. 3550 3551 The key ‘v’ is reserved for users. You can bind it to some command 3552or better use it as a prefix key. For example: 3553 (define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread 3554 3555* Menu: 3556 3557* Summary Buffer Format:: Deciding how the summary buffer is to look. 3558* Summary Maneuvering:: Moving around the summary buffer. 3559* Choosing Articles:: Reading articles. 3560* Paging the Article:: Scrolling the current article. 3561* Reply Followup and Post:: Posting articles. 3562* Delayed Articles:: Send articles at a later time. 3563* Marking Articles:: Marking articles as read, expirable, etc. 3564* Limiting:: You can limit the summary buffer. 3565* Threading:: How threads are made. 3566* Sorting the Summary Buffer:: How articles and threads are sorted. 3567* Asynchronous Fetching:: Gnus might be able to pre-fetch articles. 3568* Article Caching:: You may store articles in a cache. 3569* Persistent Articles:: Making articles expiry-resistant. 3570* Sticky Articles:: Article buffers that are not reused. 3571* Article Backlog:: Having already read articles hang around. 3572* Saving Articles:: Ways of customizing article saving. 3573* Decoding Articles:: Gnus can treat series of (uu)encoded articles. 3574* Article Treatment:: The article buffer can be mangled at will. 3575* MIME Commands:: Doing MIMEy things with the articles. 3576* Charsets:: Character set issues. 3577* Article Commands:: Doing various things with the article buffer. 3578* Summary Sorting:: Sorting the summary buffer in various ways. 3579* Finding the Parent:: No child support? Get the parent. 3580* Alternative Approaches:: Reading using non-default summaries. 3581* Tree Display:: A more visual display of threads. 3582* Mail Group Commands:: Some commands can only be used in mail groups. 3583* Various Summary Stuff:: What didn’t fit anywhere else. 3584* Exiting the Summary Buffer:: Returning to the Group buffer, 3585 or reselecting the current group. 3586* Crosspost Handling:: How crossposted articles are dealt with. 3587* Duplicate Suppression:: An alternative when crosspost handling fails. 3588* Security:: Decrypt and Verify. 3589* Mailing List:: Mailing list minor mode. 3590 3591 3592File: gnus.info, Node: Summary Buffer Format, Next: Summary Maneuvering, Up: Summary Buffer 3593 35943.1 Summary Buffer Format 3595========================= 3596 3597* Menu: 3598 3599* Summary Buffer Lines:: You can specify how summary lines should look. 3600* To From Newsgroups:: How to not display your own name. 3601* Summary Buffer Mode Line:: You can say how the mode line should look. 3602* Summary Highlighting:: Making the summary buffer all pretty and nice. 3603 3604Gnus will use the value of the ‘gnus-extract-address-components’ 3605variable as a function for getting the name and address parts of a 3606‘From’ header. Two pre-defined functions exist: 3607‘gnus-extract-address-components’, which is the default, quite fast, and 3608too simplistic solution; and ‘mail-extract-address-components’, which 3609works very nicely, but is slower. The default function will return the 3610wrong answer in 5% of the cases. If this is unacceptable to you, use 3611the other function instead: 3612 3613 (setq gnus-extract-address-components 3614 'mail-extract-address-components) 3615 3616 ‘gnus-summary-same-subject’ is a string indicating that the current 3617article has the same subject as the previous. This string will be used 3618with those specs that require it. The default is ‘""’. 3619 3620 3621File: gnus.info, Node: Summary Buffer Lines, Next: To From Newsgroups, Up: Summary Buffer Format 3622 36233.1.1 Summary Buffer Lines 3624-------------------------- 3625 3626You can change the format of the lines in the summary buffer by changing 3627the ‘gnus-summary-line-format’ variable. It works along the same lines 3628as a normal ‘format’ string, with some extensions (*note Formatting 3629Variables::). 3630 3631 There should always be a colon or a point position marker on the 3632line; the cursor always moves to the point position marker or the colon 3633after performing an operation. (Of course, Gnus wouldn’t be Gnus if it 3634wasn’t possible to change this. Just write a new function 3635‘gnus-goto-colon’ which does whatever you like with the cursor.) *Note 3636Positioning Point::. 3637 3638 The default string is ‘%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n’. 3639 3640 The following format specification characters and extended format 3641specification(s) are understood: 3642 3643‘N’ 3644 Article number. 3645‘S’ 3646 Subject string. List identifiers stripped, 3647 ‘gnus-list-identifiers’. *Note Article Hiding::. 3648‘s’ 3649 Subject if the article is the root of the thread or the previous 3650 article had a different subject, ‘gnus-summary-same-subject’ 3651 otherwise. (‘gnus-summary-same-subject’ defaults to ‘""’.) 3652‘F’ 3653 Full ‘From’ header. 3654‘n’ 3655 The name (from the ‘From’ header). 3656‘f’ 3657 The name, ‘To’ header or the ‘Newsgroups’ header (*note To From 3658 Newsgroups::). 3659‘a’ 3660 The name (from the ‘From’ header). This differs from the ‘n’ spec 3661 in that it uses the function designated by the 3662 ‘gnus-extract-address-components’ variable, which is slower, but 3663 may be more thorough. 3664‘A’ 3665 The address (from the ‘From’ header). This works the same way as 3666 the ‘a’ spec. 3667‘L’ 3668 Number of lines in the article. 3669‘c’ 3670 Number of characters in the article. This specifier is not 3671 supported in some methods (like nnfolder). 3672‘k’ 3673 Pretty-printed version of the number of characters in the article; 3674 for example, ‘1.2k’ or ‘0.4M’. 3675‘I’ 3676 Indentation based on thread level (*note Customizing Threading::). 3677‘B’ 3678 A complex trn-style thread tree, showing response-connecting trace 3679 lines. A thread could be drawn like this: 3680 3681 > 3682 +-> 3683 | +-> 3684 | | \-> 3685 | | \-> 3686 | \-> 3687 +-> 3688 \-> 3689 3690 You can customize the appearance with the following options. Note 3691 that it is possible to make the thread display look really neat by 3692 replacing the default ASCII characters with graphic line-drawing 3693 glyphs. 3694 ‘gnus-sum-thread-tree-root’ 3695 Used for the root of a thread. If ‘nil’, use subject instead. 3696 The default is ‘> ’. 3697 3698 ‘gnus-sum-thread-tree-false-root’ 3699 Used for the false root of a thread (*note Loose Threads::). 3700 If ‘nil’, use subject instead. The default is ‘> ’. 3701 3702 ‘gnus-sum-thread-tree-single-indent’ 3703 Used for a thread with just one message. If ‘nil’, use 3704 subject instead. The default is ‘’. 3705 3706 ‘gnus-sum-thread-tree-vertical’ 3707 Used for drawing a vertical line. The default is ‘| ’. 3708 3709 ‘gnus-sum-thread-tree-indent’ 3710 Used for indenting. The default is ‘ ’. 3711 3712 ‘gnus-sum-thread-tree-leaf-with-other’ 3713 Used for a leaf with brothers. The default is ‘+-> ’. 3714 3715 ‘gnus-sum-thread-tree-single-leaf’ 3716 Used for a leaf without brothers. The default is ‘\-> ’ 3717 3718‘T’ 3719 Nothing if the article is a root and lots of spaces if it isn’t (it 3720 pushes everything after it off the screen). 3721‘[’ 3722 Opening bracket, which is normally ‘[’, but can also be ‘<’ for 3723 adopted articles (*note Customizing Threading::). 3724‘]’ 3725 Closing bracket, which is normally ‘]’, but can also be ‘>’ for 3726 adopted articles. 3727‘>’ 3728 One space for each thread level. 3729‘<’ 3730 Twenty minus thread level spaces. 3731‘U’ 3732 Unread. *Note Read Articles::. 3733 3734‘R’ 3735 This misleadingly named specifier is the “secondary mark”. This 3736 mark will say whether the article has been replied to, has been 3737 cached, or has been saved. *Note Other Marks::. 3738 3739‘i’ 3740 Score as a number (*note Scoring::). 3741‘z’ 3742 Zcore, ‘+’ if above the default level and ‘-’ if below the default 3743 level. If the difference between ‘gnus-summary-default-score’ and 3744 the score is less than ‘gnus-summary-zcore-fuzz’, this spec will 3745 not be used. 3746‘V’ 3747 Total thread score. 3748‘x’ 3749 ‘Xref’. 3750‘D’ 3751 ‘Date’. 3752‘d’ 3753 The ‘Date’ in ‘DD-MMM’ format. 3754‘o’ 3755 The ‘Date’ in YYYYMMDD‘T’HHMMSS format. 3756‘M’ 3757 ‘Message-ID’. 3758‘r’ 3759 ‘References’. 3760‘t’ 3761 Number of articles in the current sub-thread. Using this spec will 3762 slow down summary buffer generation somewhat. 3763‘e’ 3764 An ‘=’ (‘gnus-not-empty-thread-mark’) will be displayed if the 3765 article has any children. 3766‘P’ 3767 The line number. 3768‘O’ 3769 Download mark. 3770‘*’ 3771 Desired cursor position (instead of after first colon). 3772‘&user-date;’ 3773 Age sensitive date format. Various date format is defined in 3774 ‘gnus-user-date-format-alist’. 3775‘u’ 3776 User defined specifier. The next character in the format string 3777 should be a letter. Gnus will call the function 3778 ‘gnus-user-format-function-X’, where X is the letter following 3779 ‘%u’. The function will be passed the current header as argument. 3780 The function should return a string, which will be inserted into 3781 the summary just like information from any other summary specifier. 3782 3783 Text between ‘%(’ and ‘%)’ will be highlighted with ‘gnus-mouse-face’ 3784when the mouse point is placed inside the area. There can only be one 3785such area. 3786 3787 The ‘%U’ (status), ‘%R’ (replied) and ‘%z’ (zcore) specs have to be 3788handled with care. For reasons of efficiency, Gnus will compute what 3789column these characters will end up in, and “hard-code” that. This 3790means that it is invalid to have these specs after a variable-length 3791spec. Well, you might not be arrested, but your summary buffer will 3792look strange, which is bad enough. 3793 3794 The smart choice is to have these specs as far to the left as 3795possible. (Isn’t that the case with everything, though? But I 3796digress.) 3797 3798 This restriction may disappear in later versions of Gnus. 3799 3800 3801File: gnus.info, Node: To From Newsgroups, Next: Summary Buffer Mode Line, Prev: Summary Buffer Lines, Up: Summary Buffer Format 3802 38033.1.2 To From Newsgroups 3804------------------------ 3805 3806In some groups (particularly in archive groups), the ‘From’ header isn’t 3807very interesting, since all the articles there are written by you. To 3808display the information in the ‘To’ or ‘Newsgroups’ headers instead, you 3809need to decide three things: What information to gather; where to 3810display it; and when to display it. 3811 3812 1. The reading of extra header information is controlled by the 3813 ‘gnus-extra-headers’. This is a list of header symbols. For 3814 instance: 3815 3816 (setq gnus-extra-headers 3817 '(To Newsgroups X-Newsreader)) 3818 3819 This will result in Gnus trying to obtain these three headers, and 3820 storing it in header structures for later easy retrieval. 3821 3822 2. The value of these extra headers can be accessed via the 3823 ‘gnus-extra-header’ function. Here’s a format line spec that will 3824 access the ‘X-Newsreader’ header: 3825 3826 "%~(form (gnus-extra-header 'X-Newsreader))@" 3827 3828 3. The ‘gnus-ignored-from-addresses’ variable says when the ‘%f’ 3829 summary line spec returns the ‘To’, ‘Newsreader’ or ‘From’ header. 3830 The variable may be a regexp or a predicate function. If this 3831 matches the contents of the ‘From’ header, the value of the ‘To’ or 3832 ‘Newsreader’ headers are used instead. 3833 3834 To distinguish regular articles from those where the ‘From’ field 3835 has been swapped, a string is prefixed to the ‘To’ or ‘Newsgroups’ 3836 header in the summary line. By default the string is ‘-> ’ for 3837 ‘To’ and ‘=> ’ for ‘Newsgroups’, you can customize these strings 3838 with ‘gnus-summary-to-prefix’ and ‘gnus-summary-newsgroup-prefix’. 3839 3840 A related variable is ‘nnmail-extra-headers’, which controls when to 3841include extra headers when generating overview (NOV) files. If you have 3842old overview files, you should regenerate them after changing this 3843variable, by entering the server buffer using ‘^’, and then ‘g’ on the 3844appropriate mail server (e.g., nnml) to cause regeneration. 3845 3846 You also have to instruct Gnus to display the data by changing the 3847‘%n’ spec to the ‘%f’ spec in the ‘gnus-summary-line-format’ variable. 3848 3849 In summary, you’d typically put something like the following in 3850‘~/.gnus.el’: 3851 3852 (setq gnus-extra-headers 3853 '(To Newsgroups)) 3854 (setq nnmail-extra-headers gnus-extra-headers) 3855 (setq gnus-summary-line-format 3856 "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n") 3857 (setq gnus-ignored-from-addresses 3858 "Your Name Here") 3859 3860 (The values listed above are the default values in Gnus. Alter them 3861to fit your needs.) 3862 3863 A note for news server administrators, or for users who wish to try 3864to convince their news server administrator to provide some additional 3865support: 3866 3867 The above is mostly useful for mail groups, where you have control 3868over the NOV files that are created. However, if you can persuade your 3869nntp admin to add (in the usual implementation, notably INN): 3870 3871 Newsgroups:full 3872 3873 to the end of her ‘overview.fmt’ file, then you can use that just as 3874you would the extra headers from the mail groups. 3875 3876 3877File: gnus.info, Node: Summary Buffer Mode Line, Next: Summary Highlighting, Prev: To From Newsgroups, Up: Summary Buffer Format 3878 38793.1.3 Summary Buffer Mode Line 3880------------------------------ 3881 3882You can also change the format of the summary mode bar (*note Mode Line 3883Formatting::). Set ‘gnus-summary-mode-line-format’ to whatever you 3884like. The default is ‘Gnus: %%b [%A] %Z’. 3885 3886 Here are the elements you can play with: 3887 3888‘G’ 3889 Group name. 3890‘p’ 3891 Unprefixed group name. 3892‘A’ 3893 Current article number. 3894‘z’ 3895 Current article score. 3896‘V’ 3897 Gnus version. 3898‘U’ 3899 Number of unread articles in this group. 3900‘e’ 3901 Number of unread articles in this group that aren’t displayed in 3902 the summary buffer. 3903‘Z’ 3904 A string with the number of unread and unselected articles 3905 represented either as ‘<%U(+%e) more>’ if there are both unread and 3906 unselected articles, and just as ‘<%U more>’ if there are just 3907 unread articles and no unselected ones. 3908‘g’ 3909 Shortish group name. For instance, ‘rec.arts.anime’ will be 3910 shortened to ‘r.a.anime’. 3911‘S’ 3912 Subject of the current article. 3913‘u’ 3914 User-defined spec (*note User-Defined Specs::). 3915‘s’ 3916 Name of the current score file (*note Scoring::). 3917‘d’ 3918 Number of dormant articles (*note Unread Articles::). 3919‘t’ 3920 Number of ticked articles (*note Unread Articles::). 3921‘r’ 3922 Number of articles that have been marked as read in this session. 3923‘E’ 3924 Number of articles expunged by the score files. 3925 3926 3927File: gnus.info, Node: Summary Highlighting, Prev: Summary Buffer Mode Line, Up: Summary Buffer Format 3928 39293.1.4 Summary Highlighting 3930-------------------------- 3931 3932‘gnus-visual-mark-article-hook’ 3933 This hook is run after selecting an article. It is meant to be 3934 used for highlighting the article in some way. It is not run if 3935 ‘gnus-visual’ is ‘nil’. 3936 3937‘gnus-summary-update-hook’ 3938 This hook is called when a summary line is changed. It is not run 3939 if ‘gnus-visual’ is ‘nil’. 3940 3941‘gnus-summary-selected-face’ 3942 This is the face (or “font” as some people call it) used to 3943 highlight the current article in the summary buffer. 3944 3945‘gnus-summary-highlight’ 3946 Summary lines are highlighted according to this variable, which is 3947 a list where the elements are of the format ‘(FORM . FACE)’. If 3948 you would, for instance, like ticked articles to be italic and 3949 high-scored articles to be bold, you could set this variable to 3950 something like 3951 (((eq mark gnus-ticked-mark) . italic) 3952 ((> score default) . bold)) 3953 As you may have guessed, if FORM returns a non-‘nil’ value, FACE 3954 will be applied to the line. 3955 3956 3957File: gnus.info, Node: Summary Maneuvering, Next: Choosing Articles, Prev: Summary Buffer Format, Up: Summary Buffer 3958 39593.2 Summary Maneuvering 3960======================= 3961 3962All the straight movement commands understand the numeric prefix and 3963behave pretty much as you’d expect. 3964 3965 None of these commands select articles. 3966 3967‘G M-n’ 3968‘M-n’ 3969 Go to the next summary line of an unread article 3970 (‘gnus-summary-next-unread-subject’). 3971 3972‘G M-p’ 3973‘M-p’ 3974 Go to the previous summary line of an unread article 3975 (‘gnus-summary-prev-unread-subject’). 3976 3977‘G g’ 3978 Ask for an article number and then go to the summary line of that 3979 article without displaying the article 3980 (‘gnus-summary-goto-subject’). 3981 3982 If Gnus asks you to press a key to confirm going to the next group, 3983you can use the ‘C-n’ and ‘C-p’ keys to move around the group buffer, 3984searching for the next group to read without actually returning to the 3985group buffer. 3986 3987 Variables related to summary movement: 3988 3989‘gnus-auto-select-next’ 3990 If you issue one of the movement commands (like ‘n’) and there are 3991 no more unread articles after the current one, Gnus will offer to 3992 go to the next group. If this variable is ‘t’ and the next group 3993 is empty, Gnus will exit summary mode and return to the group 3994 buffer. If this variable is neither ‘t’ nor ‘nil’, Gnus will 3995 select the next group with unread articles. As a special case, if 3996 this variable is ‘quietly’, Gnus will select the next group without 3997 asking for confirmation. If this variable is ‘almost-quietly’, the 3998 same will happen only if you are located on the last article in the 3999 group. Finally, if this variable is ‘slightly-quietly’, the ‘Z n’ 4000 command will go to the next group without confirmation. Also *note 4001 Group Levels::. 4002 4003‘gnus-auto-select-same’ 4004 If non-‘nil’, all the movement commands will try to go to the next 4005 article with the same subject as the current. (“Same” here might 4006 mean “roughly equal”. See ‘gnus-summary-gather-subject-limit’ for 4007 details (*note Customizing Threading::).) If there are no more 4008 articles with the same subject, go to the first unread article. 4009 4010 This variable is not particularly useful if you use a threaded 4011 display. 4012 4013‘gnus-summary-check-current’ 4014 If non-‘nil’, all the “unread” movement commands will not proceed 4015 to the next (or previous) article if the current article is unread. 4016 Instead, they will choose the current article. 4017 4018‘gnus-auto-center-summary’ 4019 If non-‘nil’, Gnus will keep the point in the summary buffer 4020 centered at all times. This makes things quite tidy, but if you 4021 have a slow network connection, or simply do not like this 4022 un-Emacsism, you can set this variable to ‘nil’ to get the normal 4023 Emacs scrolling action. This will also inhibit horizontal 4024 re-centering of the summary buffer, which might make it more 4025 inconvenient to read extremely long threads. 4026 4027 This variable can also be a number. In that case, center the 4028 window at the given number of lines from the top. 4029 4030‘gnus-summary-stop-at-end-of-message’ 4031 If non-‘nil’, don’t go to the next article when hitting ‘<SPC>’, 4032 and you’re at the end of the article. 4033 4034 4035File: gnus.info, Node: Choosing Articles, Next: Paging the Article, Prev: Summary Maneuvering, Up: Summary Buffer 4036 40373.3 Choosing Articles 4038===================== 4039 4040* Menu: 4041 4042* Choosing Commands:: Commands for choosing articles. 4043* Choosing Variables:: Variables that influence these commands. 4044 4045 4046File: gnus.info, Node: Choosing Commands, Next: Choosing Variables, Up: Choosing Articles 4047 40483.3.1 Choosing Commands 4049----------------------- 4050 4051None of the following movement commands understand the numeric prefix, 4052and they all select and display an article. 4053 4054 If you want to fetch new articles or redisplay the group, see *note 4055Exiting the Summary Buffer::. 4056 4057‘<SPC>’ 4058 Select the current article, or, if that one’s read already, the 4059 next unread article (‘gnus-summary-next-page’). 4060 4061 If you have an article window open already and you press ‘<SPC>’ 4062 again, the article will be scrolled. This lets you conveniently 4063 ‘<SPC>’ through an entire newsgroup. *Note Paging the Article::. 4064 4065‘G n’ 4066‘n’ 4067 Go to next unread article (‘gnus-summary-next-unread-article’). 4068 4069‘G p’ 4070‘p’ 4071 Go to previous unread article (‘gnus-summary-prev-unread-article’). 4072 4073‘G N’ 4074‘N’ 4075 Go to the next article (‘gnus-summary-next-article’). 4076 4077‘G P’ 4078‘P’ 4079 Go to the previous article (‘gnus-summary-prev-article’). 4080 4081‘G u’ 4082‘]’ 4083 Go to the next unseen article (‘gnus-summary-next-unseen-article’). 4084 4085‘G U’ 4086‘[’ 4087 Go to the previous unseen article 4088 (‘gnus-summary-prev-unseen-article’). 4089 4090‘G C-n’ 4091 Go to the next article with the same subject 4092 (‘gnus-summary-next-same-subject’). 4093 4094‘G C-p’ 4095 Go to the previous article with the same subject 4096 (‘gnus-summary-prev-same-subject’). 4097 4098‘G f’ 4099‘.’ 4100 Go to the first unread article 4101 (‘gnus-summary-first-unread-article’). 4102 4103‘G b’ 4104‘,’ 4105 Go to the unread article with the highest score 4106 (‘gnus-summary-best-unread-article’). If given a prefix argument, 4107 go to the first unread article that has a score over the default 4108 score. 4109 4110‘G l’ 4111‘l’ 4112 Go to the previous article read (‘gnus-summary-goto-last-article’). 4113 4114‘G o’ 4115 Pop an article off the summary history and go to this article 4116 (‘gnus-summary-pop-article’). This command differs from the 4117 command above in that you can pop as many previous articles off the 4118 history as you like, while ‘l’ toggles the two last read articles. 4119 For a somewhat related issue (if you use these commands a lot), 4120 *note Article Backlog::. 4121 4122‘G j’ 4123‘j’ 4124 Ask for an article number or ‘Message-ID’, and then go to that 4125 article (‘gnus-summary-goto-article’). 4126 4127 4128File: gnus.info, Node: Choosing Variables, Prev: Choosing Commands, Up: Choosing Articles 4129 41303.3.2 Choosing Variables 4131------------------------ 4132 4133Some variables relevant for moving and selecting articles: 4134 4135‘gnus-auto-extend-newsgroup’ 4136 All the movement commands will try to go to the previous (or next) 4137 article, even if that article isn’t displayed in the Summary buffer 4138 if this variable is non-‘nil’. Gnus will then fetch the article 4139 from the server and display it in the article buffer. 4140 4141‘gnus-select-article-hook’ 4142 This hook is called whenever an article is selected. The default 4143 is ‘nil’. If you would like each article to be saved in the Agent 4144 as you read it, putting ‘gnus-agent-fetch-selected-article’ on this 4145 hook will do so. 4146 4147‘gnus-mark-article-hook’ 4148 This hook is called whenever an article is selected. It is 4149 intended to be used for marking articles as read. The default 4150 value is ‘gnus-summary-mark-read-and-unread-as-read’, and will 4151 change the mark of almost any article you read to ‘gnus-read-mark’. 4152 The only articles not affected by this function are ticked, 4153 dormant, and expirable articles. If you’d instead like to just 4154 have unread articles marked as read, you can use 4155 ‘gnus-summary-mark-unread-as-read’ instead. It will leave marks 4156 like ‘gnus-low-score-mark’, ‘gnus-del-mark’ (and so on) alone. 4157 4158 4159File: gnus.info, Node: Paging the Article, Next: Reply Followup and Post, Prev: Choosing Articles, Up: Summary Buffer 4160 41613.4 Scrolling the Article 4162========================= 4163 4164‘<SPC>’ 4165 Pressing ‘<SPC>’ will scroll the current article forward one page, 4166 or, if you have come to the end of the current article, will choose 4167 the next article (‘gnus-summary-next-page’). 4168 4169 If ‘gnus-article-skip-boring’ is non-‘nil’ and the rest of the 4170 article consists only of citations and signature, then it will be 4171 skipped; the next article will be shown instead. You can customize 4172 what is considered uninteresting with ‘gnus-article-boring-faces’. 4173 You can manually view the article’s pages, no matter how boring, 4174 using ‘C-M-v’. 4175 4176‘<DEL>’ 4177 Scroll the current article back one page 4178 (‘gnus-summary-prev-page’). 4179 4180‘<RET>’ 4181 Scroll the current article one line forward 4182 (‘gnus-summary-scroll-up’). 4183 4184‘M-<RET>’ 4185 Scroll the current article one line backward 4186 (‘gnus-summary-scroll-down’). 4187 4188‘A g’ 4189‘g’ 4190 (Re)fetch the current article (‘gnus-summary-show-article’). If 4191 given a prefix, show a completely “raw” article, just the way it 4192 came from the server. If given a prefix twice (i.e., ‘C-u C-u 4193 g'’), fetch the current article, but don’t run any of the article 4194 treatment functions. 4195 4196 If given a numerical prefix, you can do semi-manual charset stuff. 4197 ‘C-u 0 g cn-gb-2312 <RET>’ will decode the message as if it were 4198 encoded in the ‘cn-gb-2312’ charset. If you have 4199 4200 (setq gnus-summary-show-article-charset-alist 4201 '((1 . cn-gb-2312) 4202 (2 . big5))) 4203 4204 then you can say ‘C-u 1 g’ to get the same effect. 4205 4206‘A <’ 4207‘<’ 4208 Scroll to the beginning of the article 4209 (‘gnus-summary-beginning-of-article’). 4210 4211‘A >’ 4212‘>’ 4213 Scroll to the end of the article (‘gnus-summary-end-of-article’). 4214 4215‘A s’ 4216‘s’ 4217 Perform an isearch in the article buffer 4218 (‘gnus-summary-isearch-article’). 4219 4220‘h’ 4221 Select the article buffer (‘gnus-summary-select-article-buffer’). 4222 4223 4224File: gnus.info, Node: Reply Followup and Post, Next: Delayed Articles, Prev: Paging the Article, Up: Summary Buffer 4225 42263.5 Reply, Followup and Post 4227============================ 4228 4229* Menu: 4230 4231* Summary Mail Commands:: Sending mail. 4232* Summary Post Commands:: Sending news. 4233* Summary Message Commands:: Other Message-related commands. 4234* Canceling and Superseding:: 4235 4236 4237File: gnus.info, Node: Summary Mail Commands, Next: Summary Post Commands, Up: Reply Followup and Post 4238 42393.5.1 Summary Mail Commands 4240--------------------------- 4241 4242Commands for composing a mail message: 4243 4244‘S r’ 4245‘r’ 4246 Mail a reply to the author of the current article 4247 (‘gnus-summary-reply’). 4248 4249‘S R’ 4250‘R’ 4251 Mail a reply to the author of the current article and include the 4252 original message (‘gnus-summary-reply-with-original’). This 4253 command uses the process/prefix convention. 4254 4255‘S w’ 4256 Mail a wide reply to the author of the current article 4257 (‘gnus-summary-wide-reply’). A “wide reply” is a reply that goes 4258 out to all people listed in the ‘To’, ‘From’ (or ‘Reply-To’) and 4259 ‘Cc’ headers. If ‘Mail-Followup-To’ is present, that’s used 4260 instead. 4261 4262‘S W’ 4263 Mail a wide reply to the current article and include the original 4264 message (‘gnus-summary-wide-reply-with-original’). This command 4265 uses the process/prefix convention, but only uses the headers from 4266 the first article to determine the recipients. 4267 4268‘S L’ 4269 When replying to a message from a mailing list, send a reply to 4270 that message to the mailing list, and include the original message 4271 (‘gnus-summary-reply-to-list-with-original’). 4272 4273‘S v’ 4274 Mail a very wide reply to the author of the current article 4275 (‘gnus-summary-wide-reply’). A “very wide reply” is a reply that 4276 goes out to all people listed in the ‘To’, ‘From’ (or ‘Reply-To’) 4277 and ‘Cc’ headers in all the process/prefixed articles. This 4278 command uses the process/prefix convention. 4279 4280‘S V’ 4281 Mail a very wide reply to the author of the current article and 4282 include the original message 4283 (‘gnus-summary-very-wide-reply-with-original’). This command uses 4284 the process/prefix convention. 4285 4286‘S B r’ 4287 Mail a reply to the author of the current article but ignore the 4288 ‘Reply-To’ field (‘gnus-summary-reply-broken-reply-to’). If you 4289 need this because a mailing list incorrectly sets a ‘Reply-To’ 4290 header pointing to the list, you probably want to set the 4291 ‘broken-reply-to’ group parameter instead, so things will work 4292 correctly. *Note Group Parameters::. 4293 4294‘S B R’ 4295 Mail a reply to the author of the current article and include the 4296 original message but ignore the ‘Reply-To’ field 4297 (‘gnus-summary-reply-broken-reply-to-with-original’). 4298 4299‘S o m’ 4300‘C-c C-f’ 4301 Forward the current article to some other person 4302 (‘gnus-summary-mail-forward’). If no prefix is given, the message 4303 is forwarded according to the value of (‘message-forward-as-mime’) 4304 and (‘message-forward-show-mml’); if the prefix is 1, decode the 4305 message and forward directly inline; if the prefix is 2, forward 4306 message as an rfc822 MIME section; if the prefix is 3, decode 4307 message and forward as an rfc822 MIME section; if the prefix is 4, 4308 forward message directly inline; otherwise, the message is 4309 forwarded as no prefix given but use the flipped value of 4310 (‘message-forward-as-mime’). By default, the forwarded message is 4311 inlined into the mail. 4312 4313‘S m’ 4314‘m’ 4315 Prepare a mail (‘gnus-summary-mail-other-window’). By default, use 4316 the posting style of the current group. If given a prefix, disable 4317 that. If the prefix is 1, prompt for a group name to find the 4318 posting style. 4319 4320‘S i’ 4321 Prepare a news (‘gnus-summary-news-other-window’). By default, 4322 post to the current group. If given a prefix, disable that. If 4323 the prefix is 1, prompt for a group to post to. 4324 4325 This function actually prepares a news even when using mail groups. 4326 This is useful for “posting” messages to mail groups without 4327 actually sending them over the network: they’re just saved directly 4328 to the group in question. The corresponding back end must have a 4329 request-post method for this to work though. 4330 4331‘S D b’ 4332 If you have sent a mail, but the mail was bounced back to you for 4333 some reason (wrong address, transient failure), you can use this 4334 command to resend that bounced mail 4335 (‘gnus-summary-resend-bounced-mail’). You will be popped into a 4336 mail buffer where you can edit the headers before sending the mail 4337 off again. If you give a prefix to this command, and the bounced 4338 mail is a reply to some other mail, Gnus will try to fetch that 4339 mail and display it for easy perusal of its headers. This might 4340 very well fail, though. 4341 4342‘S D r’ 4343 Not to be confused with the previous command, 4344 ‘gnus-summary-resend-message’ will prompt you for an address to 4345 send the current message off to, and then send it to that place. 4346 The headers of the message won’t be altered—but lots of headers 4347 that say ‘Resent-To’, ‘Resent-From’ and so on will be added. This 4348 means that you actually send a mail to someone that has a ‘To’ 4349 header that (probably) points to yourself. This will confuse 4350 people. So, natcherly you’ll only do that if you’re really eVIl. 4351 4352 This command is mainly used if you have several accounts and want 4353 to ship a mail to a different account of yours. (If you’re both 4354 ‘root’ and ‘postmaster’ and get a mail for ‘postmaster’ to the 4355 ‘root’ account, you may want to resend it to ‘postmaster’. Ordnung 4356 muss sein! 4357 4358 This command understands the process/prefix convention (*note 4359 Process/Prefix::). 4360 4361‘S D e’ 4362 4363 Like the previous command, but will allow you to edit the message 4364 as if it were a new message before resending. 4365 4366‘S O m’ 4367 Digest the current series (*note Decoding Articles::) and forward 4368 the result using mail (‘gnus-uu-digest-mail-forward’). This 4369 command uses the process/prefix convention (*note 4370 Process/Prefix::). 4371 4372‘S M-c’ 4373 Send a complaint about excessive crossposting to the author of the 4374 current article (‘gnus-summary-mail-crosspost-complaint’). 4375 4376 This command is provided as a way to fight back against the current 4377 crossposting pandemic that’s sweeping Usenet. It will compose a 4378 reply using the ‘gnus-crosspost-complaint’ variable as a preamble. 4379 This command understands the process/prefix convention (*note 4380 Process/Prefix::) and will prompt you before sending each mail. 4381 4382 Also *Note Header Commands: (message)Header Commands, for more 4383information. 4384 4385 4386File: gnus.info, Node: Summary Post Commands, Next: Summary Message Commands, Prev: Summary Mail Commands, Up: Reply Followup and Post 4387 43883.5.2 Summary Post Commands 4389--------------------------- 4390 4391Commands for posting a news article: 4392 4393‘S p’ 4394‘a’ 4395 Prepare for posting an article (‘gnus-summary-post-news’). By 4396 default, post to the current group. If given a prefix, disable 4397 that. If the prefix is 1, prompt for another group instead. 4398 4399‘S f’ 4400‘f’ 4401 Post a followup to the current article (‘gnus-summary-followup’). 4402 4403‘S F’ 4404‘F’ 4405 Post a followup to the current article and include the original 4406 message (‘gnus-summary-followup-with-original’). This command uses 4407 the process/prefix convention. 4408 4409‘S n’ 4410 Post a followup to the current article via news, even if you got 4411 the message through mail (‘gnus-summary-followup-to-mail’). 4412 4413‘S N’ 4414 Post a followup to the current article via news, even if you got 4415 the message through mail and include the original message 4416 (‘gnus-summary-followup-to-mail-with-original’). This command uses 4417 the process/prefix convention. 4418 4419‘S o p’ 4420 Forward the current article to a newsgroup 4421 (‘gnus-summary-post-forward’). If no prefix is given, the message 4422 is forwarded according to the value of (‘message-forward-as-mime’) 4423 and (‘message-forward-show-mml’); if the prefix is 1, decode the 4424 message and forward directly inline; if the prefix is 2, forward 4425 message as an rfc822 MIME section; if the prefix is 3, decode 4426 message and forward as an rfc822 MIME section; if the prefix is 4, 4427 forward message directly inline; otherwise, the message is 4428 forwarded as no prefix given but use the flipped value of 4429 (‘message-forward-as-mime’). By default, the message is decoded 4430 and forwarded as an rfc822 MIME section. 4431 4432‘S O p’ 4433 Digest the current series and forward the result to a newsgroup 4434 (‘gnus-uu-digest-post-forward’). This command uses the 4435 process/prefix convention. 4436 4437‘S u’ 4438 Uuencode a file, split it into parts, and post it as a series 4439 (‘gnus-uu-post-news’). (*note Uuencoding and Posting::). 4440 4441 Also *Note Header Commands: (message)Header Commands, for more 4442information. 4443 4444 4445File: gnus.info, Node: Summary Message Commands, Next: Canceling and Superseding, Prev: Summary Post Commands, Up: Reply Followup and Post 4446 44473.5.3 Summary Message Commands 4448------------------------------ 4449 4450‘S y’ 4451 Yank the current article into an already existing Message 4452 composition buffer (‘gnus-summary-yank-message’). This command 4453 prompts for what message buffer you want to yank into, and 4454 understands the process/prefix convention (*note Process/Prefix::). 4455 4456‘S A’ 4457 Attach the current article into an already existing Message 4458 composition buffer (‘gnus-summary-attach-message’). If no such 4459 buffer exists, a new one is created. This command prompts for what 4460 message buffer you want to yank into, and understands the 4461 process/prefix convention (*note Process/Prefix::). 4462 4463 4464File: gnus.info, Node: Canceling and Superseding, Prev: Summary Message Commands, Up: Reply Followup and Post 4465 44663.5.4 Canceling Articles 4467------------------------ 4468 4469Have you ever written something, and then decided that you really, 4470really, really wish you hadn’t posted that? 4471 4472 Well, you can’t cancel mail, but you can cancel posts. 4473 4474 Find the article you wish to cancel (you can only cancel your own 4475articles, so don’t try any funny stuff). Then press ‘C’ or ‘S c’ 4476(‘gnus-summary-cancel-article’). Your article will be canceled—machines 4477all over the world will be deleting your article. This command uses the 4478process/prefix convention (*note Process/Prefix::). 4479 4480 Be aware, however, that not all sites honor cancels, so your article 4481may live on here and there, while most sites will delete the article in 4482question. 4483 4484 Gnus will use the “current” select method when canceling. If you 4485want to use the standard posting method, use the ‘a’ symbolic prefix 4486(*note Symbolic Prefixes::). 4487 4488 Gnus ensures that only you can cancel your own messages using a 4489‘Cancel-Lock’ header (*note Canceling News: (message)Canceling News.). 4490 4491 If you discover that you have made some mistakes and want to do some 4492corrections, you can post a “superseding” article that will replace your 4493original article. 4494 4495 Go to the original article and press ‘S s’ 4496(‘gnus-summary-supersede-article’). You will be put in a buffer where 4497you can edit the article all you want before sending it off the usual 4498way. 4499 4500 The same goes for superseding as for canceling, only more so: Some 4501sites do not honor superseding. On those sites, it will appear that you 4502have posted almost the same article twice. 4503 4504 If you have just posted the article, and change your mind right away, 4505there is a trick you can use to cancel/supersede the article without 4506waiting for the article to appear on your site first. You simply return 4507to the post buffer (which is called ‘*sent ...*’). There you will find 4508the article you just posted, with all the headers intact. Change the 4509‘Message-ID’ header to a ‘Cancel’ or ‘Supersedes’ header by substituting 4510one of those words for the word ‘Message-ID’. Then just press ‘C-c C-c’ 4511to send the article as you would do normally. The previous article will 4512be canceled/superseded. 4513 4514 Just remember, kids: There is no ’c’ in ’supersede’. 4515 4516 4517File: gnus.info, Node: Delayed Articles, Next: Marking Articles, Prev: Reply Followup and Post, Up: Summary Buffer 4518 45193.6 Delayed Articles 4520==================== 4521 4522Sometimes, you might wish to delay the sending of a message. For 4523example, you might wish to arrange for a message to turn up just in time 4524to remind your about the birthday of your Significant Other. For this, 4525there is the ‘gnus-delay’ package. Setup is simple: 4526 4527 (gnus-delay-initialize) 4528 4529 Normally, to send a message you use the ‘C-c C-c’ command from 4530Message mode. To delay a message, use ‘C-c C-j’ (‘gnus-delay-article’) 4531instead. This will ask you for how long the message should be delayed. 4532Possible answers are: 4533 4534 • A time span. Consists of an integer and a letter. For example, 4535 ‘42d’ means to delay for 42 days. Available letters are ‘m’ 4536 (minutes), ‘h’ (hours), ‘d’ (days), ‘w’ (weeks), ‘M’ (months) and 4537 ‘Y’ (years). 4538 4539 • A specific date. Looks like ‘YYYY-MM-DD’. The message will be 4540 delayed until that day, at a specific time (eight o’clock by 4541 default). See also ‘gnus-delay-default-hour’. 4542 4543 • A specific time of day. Given in ‘hh:mm’ format, 24h, no am/pm 4544 stuff. The deadline will be at that time today, except if that 4545 time has already passed, then it’s at the given time tomorrow. So 4546 if it’s ten o’clock in the morning and you specify ‘11:15’, then 4547 the deadline is one hour and fifteen minutes hence. But if you 4548 specify ‘9:20’, that means a time tomorrow. 4549 4550 The action of the ‘gnus-delay-article’ command is influenced by a 4551couple of variables: 4552 4553‘gnus-delay-default-hour’ 4554 When you specify a specific date, the message will be due on that 4555 hour on the given date. Possible values are integers 0 through 23. 4556 4557‘gnus-delay-default-delay’ 4558 This is a string and gives the default delay. It can be of any of 4559 the formats described above. 4560 4561‘gnus-delay-group’ 4562 Delayed articles will be kept in this group on the drafts server 4563 until they are due. You probably don’t need to change this. The 4564 default value is ‘"delayed"’. 4565 4566‘gnus-delay-header’ 4567 The deadline for each article will be stored in a header. This 4568 variable is a string and gives the header name. You probably don’t 4569 need to change this. The default value is ‘"X-Gnus-Delayed"’. 4570 4571 The way delaying works is like this: when you use the 4572‘gnus-delay-article’ command, you give a certain delay. Gnus calculates 4573the deadline of the message and stores it in the ‘X-Gnus-Delayed’ header 4574and puts the message in the ‘nndraft:delayed’ group. 4575 4576 And whenever you get new news, Gnus looks through the group for 4577articles which are due and sends them. It uses the 4578‘gnus-delay-send-queue’ function for this. By default, this function is 4579added to the hook ‘gnus-get-new-news-hook’. But of course, you can 4580change this. Maybe you want to use the demon to send drafts? Just tell 4581the demon to execute the ‘gnus-delay-send-queue’ function. 4582 4583‘gnus-delay-initialize’ 4584 By default, this function installs ‘gnus-delay-send-queue’ in 4585 ‘gnus-get-new-news-hook’. But it accepts the optional second 4586 argument ‘no-check’. If it is non-‘nil’, ‘gnus-get-new-news-hook’ 4587 is not changed. The optional first argument is ignored. 4588 4589 For example, ‘(gnus-delay-initialize nil t)’ means to do nothing. 4590 Presumably, you want to use the demon for sending due delayed 4591 articles. Just don’t forget to set that up :-) 4592 4593 When delaying an article with ‘C-c C-j’, Message mode will 4594automatically add a ‘"Date"’ header with the current time. In many 4595cases you probably want the ‘"Date"’ header to reflect the time the 4596message is sent instead. To do this, you have to delete ‘Date’ from 4597‘message-draft-headers’. 4598 4599 4600File: gnus.info, Node: Marking Articles, Next: Limiting, Prev: Delayed Articles, Up: Summary Buffer 4601 46023.7 Marking Articles 4603==================== 4604 4605There are several marks you can set on an article. 4606 4607 You have marks that decide the “readedness” (whoo, neato-keano 4608neologism ohoy!) of the article. Alphabetic marks generally mean 4609“read”, while non-alphabetic characters generally mean “unread”. 4610 4611 In addition, you also have marks that do not affect readedness. 4612 4613 There’s a plethora of commands for manipulating these marks. 4614 4615* Menu: 4616 4617* Unread Articles:: Marks for unread articles. 4618* Read Articles:: Marks for read articles. 4619* Other Marks:: Marks that do not affect readedness. 4620* Setting Marks:: How to set and remove marks. 4621* Generic Marking Commands:: How to customize the marking. 4622* Setting Process Marks:: How to mark articles for later processing. 4623 4624 4625File: gnus.info, Node: Unread Articles, Next: Read Articles, Up: Marking Articles 4626 46273.7.1 Unread Articles 4628--------------------- 4629 4630The following marks mark articles as (kinda) unread, in one form or 4631other. 4632 4633‘!’ 4634 Marked as ticked (‘gnus-ticked-mark’). 4635 4636 “Ticked articles” are articles that will remain visible always. If 4637 you see an article that you find interesting, or you want to put 4638 off reading it, or replying to it, until sometime later, you’d 4639 typically tick it. However, articles can be expired (from news 4640 servers by the news server software, Gnus itself never expires 4641 ticked messages), so if you want to keep an article forever, you’ll 4642 have to make it persistent (*note Persistent Articles::). 4643 4644‘?’ 4645 Marked as dormant (‘gnus-dormant-mark’). 4646 4647 “Dormant articles” will only appear in the summary buffer if there 4648 are followups to it. If you want to see them even if they don’t 4649 have followups, you can use the ‘/ D’ command (*note Limiting::). 4650 Otherwise (except for the visibility issue), they are just like 4651 ticked messages. 4652 4653‘<SPC>’ 4654 Marked as unread (‘gnus-unread-mark’). 4655 4656 “Unread articles” are articles that haven’t been read at all yet. 4657 4658 4659File: gnus.info, Node: Read Articles, Next: Other Marks, Prev: Unread Articles, Up: Marking Articles 4660 46613.7.2 Read Articles 4662------------------- 4663 4664All the following marks mark articles as read. 4665 4666‘r’ 4667 These are articles that the user has marked as read with the ‘d’ 4668 command manually, more or less (‘gnus-del-mark’). 4669 4670‘R’ 4671 Articles that have actually been read (‘gnus-read-mark’). 4672 4673‘O’ 4674 Articles that were marked as read in previous sessions and are now 4675 “old” (‘gnus-ancient-mark’). 4676 4677‘K’ 4678 Marked as killed (‘gnus-killed-mark’). 4679 4680‘X’ 4681 Marked as killed by kill files (‘gnus-kill-file-mark’). 4682 4683‘Y’ 4684 Marked as read by having too low a score (‘gnus-low-score-mark’). 4685 4686‘C’ 4687 Marked as read by a catchup (‘gnus-catchup-mark’). 4688 4689‘G’ 4690 Canceled article (‘gnus-canceled-mark’) 4691 4692‘Q’ 4693 Sparsely reffed article (‘gnus-sparse-mark’). *Note Customizing 4694 Threading::. 4695 4696‘M’ 4697 Article marked as read by duplicate suppression 4698 (‘gnus-duplicate-mark’). *Note Duplicate Suppression::. 4699 4700 All these marks just mean that the article is marked as read, really. 4701They are interpreted differently when doing adaptive scoring, though. 4702 4703 One more special mark, though: 4704 4705‘E’ 4706 Marked as expirable (‘gnus-expirable-mark’). 4707 4708 Marking articles as “expirable” (or have them marked as such 4709 automatically) doesn’t make much sense in normal groups—a user 4710 doesn’t control expiring of news articles, but in mail groups, for 4711 instance, articles marked as “expirable” can be deleted by Gnus at 4712 any time. 4713 4714 4715File: gnus.info, Node: Other Marks, Next: Setting Marks, Prev: Read Articles, Up: Marking Articles 4716 47173.7.3 Other Marks 4718----------------- 4719 4720There are some marks that have nothing to do with whether the article is 4721read or not. 4722 4723 • You can set a bookmark in the current article. Say you are reading 4724 a long thesis on cats’ urinary tracts, and have to go home for 4725 dinner before you’ve finished reading the thesis. You can then set 4726 a bookmark in the article, and Gnus will jump to this bookmark the 4727 next time it encounters the article. *Note Setting Marks::. 4728 4729 • All articles that you have replied to or made a followup to (i.e., 4730 have answered) will be marked with an ‘A’ in the second column 4731 (‘gnus-replied-mark’). 4732 4733 • All articles that you have forwarded will be marked with an ‘F’ in 4734 the second column (‘gnus-forwarded-mark’). 4735 4736 • Articles stored in the article cache will be marked with an ‘*’ in 4737 the second column (‘gnus-cached-mark’). *Note Article Caching::. 4738 4739 • Articles “saved” (in some manner or other; not necessarily 4740 religiously) are marked with an ‘S’ in the second column 4741 (‘gnus-saved-mark’). 4742 4743 • Articles that haven’t been seen before in Gnus by the user are 4744 marked with a ‘.’ in the second column (‘gnus-unseen-mark’). 4745 4746 • When using the Gnus agent (*note Agent Basics::), articles may be 4747 downloaded for unplugged (offline) viewing. If you are using the 4748 ‘%O’ spec, these articles get the ‘+’ mark in that spec. (The 4749 variable ‘gnus-downloaded-mark’ controls which character to use.) 4750 4751 • When using the Gnus agent (*note Agent Basics::), some articles 4752 might not have been downloaded. Such articles cannot be viewed 4753 while you are unplugged (offline). If you are using the ‘%O’ spec, 4754 these articles get the ‘-’ mark in that spec. (The variable 4755 ‘gnus-undownloaded-mark’ controls which character to use.) 4756 4757 • The Gnus agent (*note Agent Basics::) downloads some articles 4758 automatically, but it is also possible to explicitly mark articles 4759 for download, even if they would not be downloaded automatically. 4760 Such explicitly-marked articles get the ‘%’ mark in the first 4761 column. (The variable ‘gnus-downloadable-mark’ controls which 4762 character to use.) 4763 4764 • If the ‘%e’ spec is used, the presence of threads or not will be 4765 marked with ‘gnus-not-empty-thread-mark’ and 4766 ‘gnus-empty-thread-mark’ in the third column, respectively. 4767 4768 • Finally we have the “process mark” (‘gnus-process-mark’). A 4769 variety of commands react to the presence of the process mark. For 4770 instance, ‘X u’ (‘gnus-uu-decode-uu’) will uudecode and view all 4771 articles that have been marked with the process mark. Articles 4772 marked with the process mark have a ‘#’ in the second column. 4773 4774 You might have noticed that most of these “non-readedness” marks 4775appear in the second column by default. So if you have a cached, saved, 4776replied article that you have process-marked, what will that look like? 4777 4778 Nothing much. The precedence rules go as follows: process -> cache 4779-> replied -> saved. So if the article is in the cache and is replied, 4780you’ll only see the cache mark and not the replied mark. 4781 4782 4783File: gnus.info, Node: Setting Marks, Next: Generic Marking Commands, Prev: Other Marks, Up: Marking Articles 4784 47853.7.4 Setting Marks 4786------------------- 4787 4788All the marking commands understand the numeric prefix. 4789 4790‘M c’ 4791‘M-u’ 4792 Clear all readedness-marks from the current article 4793 (‘gnus-summary-clear-mark-forward’). In other words, mark the 4794 article as unread. 4795 4796‘M t’ 4797‘!’ 4798 Tick the current article (‘gnus-summary-tick-article-forward’). 4799 *Note Article Caching::. 4800 4801‘M ?’ 4802‘?’ 4803 Mark the current article as dormant 4804 (‘gnus-summary-mark-as-dormant’). *Note Article Caching::. 4805 4806‘M d’ 4807‘d’ 4808 Mark the current article as read 4809 (‘gnus-summary-mark-as-read-forward’). 4810 4811‘D’ 4812 Mark the current article as read and move point to the previous 4813 line (‘gnus-summary-mark-as-read-backward’). 4814 4815‘M k’ 4816‘k’ 4817 Mark all articles that have the same subject as the current one as 4818 read, and then select the next unread article 4819 (‘gnus-summary-kill-same-subject-and-select’). 4820 4821‘M K’ 4822‘C-k’ 4823 Mark all articles that have the same subject as the current one as 4824 read (‘gnus-summary-kill-same-subject’). 4825 4826‘M C’ 4827 Mark all unread articles as read (‘gnus-summary-catchup’). 4828 4829‘M C-c’ 4830 Mark all articles in the group as read—even the ticked and dormant 4831 articles (‘gnus-summary-catchup-all’). 4832 4833‘M H’ 4834 Catchup the current group to point (before the point) 4835 (‘gnus-summary-catchup-to-here’). 4836 4837‘M h’ 4838 Catchup the current group from point (after the point) 4839 (‘gnus-summary-catchup-from-here’). 4840 4841‘C-w’ 4842 Mark all articles between point and mark as read 4843 (‘gnus-summary-mark-region-as-read’). 4844 4845‘M V k’ 4846 Kill all articles with scores below the default score (or below the 4847 numeric prefix) (‘gnus-summary-kill-below’). 4848 4849‘M e’ 4850‘E’ 4851 Mark the current article as expirable 4852 (‘gnus-summary-mark-as-expirable’). 4853 4854‘M b’ 4855 Set a bookmark in the current article 4856 (‘gnus-summary-set-bookmark’). 4857 4858‘M B’ 4859 Remove the bookmark from the current article 4860 (‘gnus-summary-remove-bookmark’). 4861 4862‘M V c’ 4863 Clear all marks from articles with scores over the default score 4864 (or over the numeric prefix) (‘gnus-summary-clear-above’). 4865 4866‘M V u’ 4867 Tick all articles with scores over the default score (or over the 4868 numeric prefix) (‘gnus-summary-tick-above’). 4869 4870‘M V m’ 4871 Prompt for a mark, and mark all articles with scores over the 4872 default score (or over the numeric prefix) with this mark 4873 (‘gnus-summary-clear-above’). 4874 4875 The ‘gnus-summary-goto-unread’ variable controls what action should 4876be taken after setting a mark. If non-‘nil’, point will move to the 4877next/previous unread article. If ‘nil’, point will just move one line 4878up or down. As a special case, if this variable is ‘never’, all the 4879marking commands as well as other commands (like ‘<SPC>’) will move to 4880the next article, whether it is unread or not. The default is ‘t’. 4881 4882 4883File: gnus.info, Node: Generic Marking Commands, Next: Setting Process Marks, Prev: Setting Marks, Up: Marking Articles 4884 48853.7.5 Generic Marking Commands 4886------------------------------ 4887 4888Some people would like the command that ticks an article (‘!’) to go to 4889the next article. Others would like it to go to the next unread 4890article. Yet others would like it to stay on the current article. And 4891even though I haven’t heard of anybody wanting it to go to the previous 4892(unread) article, I’m sure there are people that want that as well. 4893 4894 Multiply these five behaviors with five different marking commands, 4895and you get a potentially complex set of variable to control what each 4896command should do. 4897 4898 To sidestep that mess, Gnus provides commands that do all these 4899different things. They can be found on the ‘M M’ map in the summary 4900buffer. Type ‘M M C-h’ to see them all—there are too many of them to 4901list in this manual. 4902 4903 While you can use these commands directly, most users would prefer 4904altering the summary mode keymap. For instance, if you would like the 4905‘!’ command to go to the next article instead of the next unread 4906article, you could say something like: 4907 4908 (add-hook 'gnus-summary-mode-hook 'my-alter-summary-map) 4909 (defun my-alter-summary-map () 4910 (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next)) 4911 4912or 4913 4914 (defun my-alter-summary-map () 4915 (local-set-key "!" "MM!n")) 4916 4917 4918File: gnus.info, Node: Setting Process Marks, Prev: Generic Marking Commands, Up: Marking Articles 4919 49203.7.6 Setting Process Marks 4921--------------------------- 4922 4923Process marks are displayed as ‘#’ in the summary buffer, and are used 4924for marking articles in such a way that other commands will process 4925these articles. For instance, if you process mark four articles and 4926then use the ‘*’ command, Gnus will enter these four articles into the 4927cache. For more information, *note Process/Prefix::. 4928 4929‘M P p’ 4930‘#’ 4931 Mark the current article with the process mark 4932 (‘gnus-summary-mark-as-processable’). 4933 4934‘M P u’ 4935‘M-#’ 4936 Remove the process mark, if any, from the current article 4937 (‘gnus-summary-unmark-as-processable’). 4938 4939‘M P U’ 4940 Remove the process mark from all articles 4941 (‘gnus-summary-unmark-all-processable’). 4942 4943‘M P i’ 4944 Invert the list of process marked articles 4945 (‘gnus-uu-invert-processable’). 4946 4947‘M P R’ 4948 Mark articles that have a ‘Subject’ header that matches a regular 4949 expression (‘gnus-uu-mark-by-regexp’). 4950 4951‘M P G’ 4952 Unmark articles that have a ‘Subject’ header that matches a regular 4953 expression (‘gnus-uu-unmark-by-regexp’). 4954 4955‘M P r’ 4956 Mark articles in region (‘gnus-uu-mark-region’). 4957 4958‘M P g’ 4959 Unmark articles in region (‘gnus-uu-unmark-region’). 4960 4961‘M P t’ 4962 Mark all articles in the current (sub)thread 4963 (‘gnus-uu-mark-thread’). 4964 4965‘M P T’ 4966 Unmark all articles in the current (sub)thread 4967 (‘gnus-uu-unmark-thread’). 4968 4969‘M P v’ 4970 Mark all articles that have a score above the prefix argument 4971 (‘gnus-uu-mark-over’). 4972 4973‘M P s’ 4974 Mark all articles in the current series (‘gnus-uu-mark-series’). 4975 4976‘M P S’ 4977 Mark all series that have already had some articles marked 4978 (‘gnus-uu-mark-sparse’). 4979 4980‘M P a’ 4981 Mark all articles in series order (‘gnus-uu-mark-all’). 4982 4983‘M P b’ 4984 Mark all articles in the buffer in the order they appear 4985 (‘gnus-uu-mark-buffer’). 4986 4987‘M P k’ 4988 Push the current process mark set onto the stack and unmark all 4989 articles (‘gnus-summary-kill-process-mark’). 4990 4991‘M P y’ 4992 Pop the previous process mark set from the stack and restore it 4993 (‘gnus-summary-yank-process-mark’). 4994 4995‘M P w’ 4996 Push the current process mark set onto the stack 4997 (‘gnus-summary-save-process-mark’). 4998 4999 Also see the ‘&’ command in *note Searching for Articles::, for how 5000to set process marks based on article body contents. 5001 5002 5003File: gnus.info, Node: Limiting, Next: Threading, Prev: Marking Articles, Up: Summary Buffer 5004 50053.8 Limiting 5006============ 5007 5008It can be convenient to limit the summary buffer to just show some 5009subset of the articles currently in the group. The effect most limit 5010commands have is to remove a few (or many) articles from the summary 5011buffer. 5012 5013 Limiting commands work on subsets of the articles already fetched 5014from the servers. These commands don’t query the server for additional 5015articles. 5016 5017‘/ /’ 5018‘/ s’ 5019 Limit the summary buffer to articles that match some subject 5020 (‘gnus-summary-limit-to-subject’). If given a prefix, exclude 5021 matching articles. 5022 5023‘/ a’ 5024 Limit the summary buffer to articles that match some author 5025 (‘gnus-summary-limit-to-author’). If given a prefix, exclude 5026 matching articles. 5027 5028‘/ R’ 5029 Limit the summary buffer to articles that match some recipient 5030 (‘gnus-summary-limit-to-recipient’). If given a prefix, exclude 5031 matching articles. 5032 5033‘/ A’ 5034 Limit the summary buffer to articles in which contents of From, To 5035 or Cc header match a given address 5036 (‘gnus-summary-limit-to-address’). If given a prefix, exclude 5037 matching articles. 5038 5039‘/ S’ 5040 Limit the summary buffer to articles that aren’t part of any 5041 displayed threads (‘gnus-summary-limit-to-singletons’). If given a 5042 prefix, limit to articles that are part of displayed threads. 5043 5044‘/ x’ 5045 Limit the summary buffer to articles that match one of the “extra” 5046 headers (*note To From Newsgroups::) 5047 (‘gnus-summary-limit-to-extra’). If given a prefix, exclude 5048 matching articles. 5049 5050‘/ u’ 5051‘x’ 5052 Limit the summary buffer to articles not marked as read 5053 (‘gnus-summary-limit-to-unread’). If given a prefix, limit the 5054 buffer to articles strictly unread. This means that ticked and 5055 dormant articles will also be excluded. 5056 5057‘/ m’ 5058 Ask for a mark and then limit to all articles that have been marked 5059 with that mark (‘gnus-summary-limit-to-marks’). 5060 5061‘/ t’ 5062 Ask for a number and then limit the summary buffer to articles 5063 older than (or equal to) that number of days 5064 (‘gnus-summary-limit-to-age’). If given a prefix, limit to 5065 articles younger than that number of days. 5066 5067‘/ n’ 5068 With prefix ‘n’, limit the summary buffer to the next ‘n’ articles. 5069 If not given a prefix, use the process marked articles instead. 5070 (‘gnus-summary-limit-to-articles’). 5071 5072‘/ w’ 5073 Pop the previous limit off the stack and restore it 5074 (‘gnus-summary-pop-limit’). If given a prefix, pop all limits off 5075 the stack. 5076 5077‘/ .’ 5078 Limit the summary buffer to the unseen articles 5079 (‘gnus-summary-limit-to-unseen’). 5080 5081‘/ v’ 5082 Limit the summary buffer to articles that have a score at or above 5083 some score (‘gnus-summary-limit-to-score’). If given a prefix, 5084 below some score. 5085 5086‘/ p’ 5087 Limit the summary buffer to articles that satisfy the ‘display’ 5088 group parameter predicate 5089 (‘gnus-summary-limit-to-display-predicate’). *Note Group 5090 Parameters::, for more on this predicate. 5091 5092‘/ r’ 5093 Limit the summary buffer to replied articles 5094 (‘gnus-summary-limit-to-replied’). If given a prefix, exclude 5095 replied articles. 5096 5097‘/ E’ 5098‘M S’ 5099 Include all expunged articles in the limit 5100 (‘gnus-summary-limit-include-expunged’). 5101 5102‘/ D’ 5103 Include all dormant articles in the limit 5104 (‘gnus-summary-limit-include-dormant’). 5105 5106‘/ *’ 5107 Include all cached articles in the limit 5108 (‘gnus-summary-limit-include-cached’). 5109 5110‘/ d’ 5111 Exclude all dormant articles from the limit 5112 (‘gnus-summary-limit-exclude-dormant’). 5113 5114‘/ M’ 5115 Exclude all marked articles (‘gnus-summary-limit-exclude-marks’). 5116 5117‘/ T’ 5118 Include all the articles in the current thread in the limit. 5119 5120‘/ c’ 5121 Exclude all dormant articles that have no children from the limit 5122 (‘gnus-summary-limit-exclude-childless-dormant’). 5123 5124‘/ C’ 5125 Mark all excluded unread articles as read 5126 (‘gnus-summary-limit-mark-excluded-as-read’). If given a prefix, 5127 also mark excluded ticked and dormant articles as read. 5128 5129‘/ b’ 5130 Limit the summary buffer to articles that have bodies that match a 5131 certain regexp (‘gnus-summary-limit-to-bodies’). If given a 5132 prefix, reverse the limit. This command is quite slow since it 5133 requires selecting each article to find the matches. 5134 5135‘/ h’ 5136 Like the previous command, only limit to headers instead 5137 (‘gnus-summary-limit-to-headers’). 5138 5139 The following commands aren’t limiting commands, but use the ‘/’ 5140prefix as well. 5141 5142‘/ N’ 5143 Insert all new articles in the summary buffer. It scans for new 5144 emails if BACK-END‘-get-new-mail’ is non-‘nil’. 5145 5146‘/ o’ 5147 Insert all old articles in the summary buffer. If given a numbered 5148 prefix, fetch this number of articles. 5149 5150 5151File: gnus.info, Node: Threading, Next: Sorting the Summary Buffer, Prev: Limiting, Up: Summary Buffer 5152 51533.9 Threading 5154============= 5155 5156Gnus threads articles by default. “To thread” is to put responses to 5157articles directly after the articles they respond to—in a hierarchical 5158fashion. 5159 5160 Threading is done by looking at the ‘References’ headers of the 5161articles. In a perfect world, this would be enough to build pretty 5162trees, but unfortunately, the ‘References’ header is often broken or 5163simply missing. Weird news propagation exacerbates the problem, so one 5164has to employ other heuristics to get pleasing results. A plethora of 5165approaches exists, as detailed in horrible detail in *note Customizing 5166Threading::. 5167 5168 First, a quick overview of the concepts: 5169 5170“root” 5171 The top-most article in a thread; the first article in the thread. 5172 5173“thread” 5174 A tree-like article structure. 5175 5176“sub-thread” 5177 A small(er) section of this tree-like structure. 5178 5179“loose threads” 5180 Threads often lose their roots due to article expiry, or due to the 5181 root already having been read in a previous session, and not 5182 displayed in the summary buffer. We then typically have many 5183 sub-threads that really belong to one thread, but are without 5184 connecting roots. These are called loose threads. 5185 5186“thread gathering” 5187 An attempt to gather loose threads into bigger threads. 5188 5189“sparse threads” 5190 A thread where the missing articles have been “guessed” at, and are 5191 displayed as empty lines in the summary buffer. 5192 5193* Menu: 5194 5195* Customizing Threading:: Variables you can change to affect the threading. 5196* Thread Commands:: Thread based commands in the summary buffer. 5197 5198 5199File: gnus.info, Node: Customizing Threading, Next: Thread Commands, Up: Threading 5200 52013.9.1 Customizing Threading 5202--------------------------- 5203 5204* Menu: 5205 5206* Loose Threads:: How Gnus gathers loose threads into bigger threads. 5207* Filling In Threads:: Making the threads displayed look fuller. 5208* More Threading:: Even more variables for fiddling with threads. 5209* Low-Level Threading:: You thought it was over... but you were wrong! 5210 5211 5212File: gnus.info, Node: Loose Threads, Next: Filling In Threads, Up: Customizing Threading 5213 52143.9.1.1 Loose Threads 5215..................... 5216 5217‘gnus-summary-make-false-root’ 5218 If non-‘nil’, Gnus will gather all loose subtrees into one big tree 5219 and create a dummy root at the top. (Wait a minute. Root at the 5220 top? Yup.) Loose subtrees occur when the real root has expired, 5221 or you’ve read or killed the root in a previous session. 5222 5223 When there is no real root of a thread, Gnus will have to fudge 5224 something. This variable says what fudging method Gnus should use. 5225 There are four possible values: 5226 5227 ‘adopt’ 5228 Gnus will make the first of the orphaned articles the parent. 5229 This parent will adopt all the other articles. The adopted 5230 articles will be marked as such by pointy brackets (‘<>’) 5231 instead of the standard square brackets (‘[]’). This is the 5232 default method. 5233 5234 ‘dummy’ 5235 Gnus will create a dummy summary line that will pretend to be 5236 the parent. This dummy line does not correspond to any real 5237 article, so selecting it will just select the first real 5238 article after the dummy article. 5239 ‘gnus-summary-dummy-line-format’ is used to specify the format 5240 of the dummy roots. It accepts only one format spec: ‘S’, 5241 which is the subject of the article. *Note Formatting 5242 Variables::. If you want all threads to have a dummy root, 5243 even the non-gathered ones, set 5244 ‘gnus-summary-make-false-root-always’ to ‘t’. 5245 5246 ‘empty’ 5247 Gnus won’t actually make any article the parent, but simply 5248 leave the subject field of all orphans except the first empty. 5249 (Actually, it will use ‘gnus-summary-same-subject’ as the 5250 subject (*note Summary Buffer Format::).) 5251 5252 ‘none’ 5253 Don’t make any article parent at all. Just gather the threads 5254 and display them after one another. 5255 5256 ‘nil’ 5257 Don’t gather loose threads. 5258 5259‘gnus-summary-gather-subject-limit’ 5260 Loose threads are gathered by comparing subjects of articles. If 5261 this variable is ‘nil’, Gnus requires an exact match between the 5262 subjects of the loose threads before gathering them into one big 5263 super-thread. This might be too strict a requirement, what with 5264 the presence of stupid newsreaders that chop off long subject 5265 lines. If you think so, set this variable to, say, 20 to require 5266 that only the first 20 characters of the subjects have to match. 5267 If you set this variable to a really low number, you’ll find that 5268 Gnus will gather everything in sight into one thread, which isn’t 5269 very helpful. 5270 5271 If you set this variable to the special value ‘fuzzy’, Gnus will 5272 use a fuzzy string comparison algorithm on the subjects (*note 5273 Fuzzy Matching::). 5274 5275‘gnus-simplify-subject-fuzzy-regexp’ 5276 This can either be a regular expression or list of regular 5277 expressions that match strings that will be removed from subjects 5278 if fuzzy subject simplification is used. 5279 5280‘gnus-simplify-ignored-prefixes’ 5281 If you set ‘gnus-summary-gather-subject-limit’ to something as low 5282 as 10, you might consider setting this variable to something 5283 sensible: 5284 5285 (setq gnus-simplify-ignored-prefixes 5286 (concat 5287 "\\`\\[?\\(" 5288 (mapconcat 5289 'identity 5290 '("looking" 5291 "wanted" "followup" "summary\\( of\\)?" 5292 "help" "query" "problem" "question" 5293 "answer" "reference" "announce" 5294 "How can I" "How to" "Comparison of" 5295 ;; ... 5296 ) 5297 "\\|") 5298 "\\)\\s *\\(" 5299 (mapconcat 'identity 5300 '("for" "for reference" "with" "about") 5301 "\\|") 5302 "\\)?\\]?:?[ \t]*")) 5303 5304 All words that match this regexp will be removed before comparing 5305 two subjects. 5306 5307‘gnus-simplify-subject-functions’ 5308 If non-‘nil’, this variable overrides 5309 ‘gnus-summary-gather-subject-limit’. This variable should be a 5310 list of functions to apply to the ‘Subject’ string iteratively to 5311 arrive at the simplified version of the string. 5312 5313 Useful functions to put in this list include: 5314 5315 ‘gnus-simplify-subject-re’ 5316 Strip the leading ‘Re:’. 5317 5318 ‘gnus-simplify-subject-fuzzy’ 5319 Simplify fuzzily. 5320 5321 ‘gnus-simplify-whitespace’ 5322 Remove excessive whitespace. 5323 5324 ‘gnus-simplify-all-whitespace’ 5325 Remove all whitespace. 5326 5327 You may also write your own functions, of course. 5328 5329‘gnus-summary-gather-exclude-subject’ 5330 Since loose thread gathering is done on subjects only, that might 5331 lead to many false hits, especially with certain common subjects 5332 like ‘’ and ‘(none)’. To make the situation slightly better, you 5333 can use the regexp ‘gnus-summary-gather-exclude-subject’ to say 5334 what subjects should be excluded from the gathering process. 5335 The default is ‘^ *$\\|^(none)$’. 5336 5337‘gnus-summary-thread-gathering-function’ 5338 Gnus gathers threads by looking at ‘Subject’ headers. This means 5339 that totally unrelated articles may end up in the same “thread”, 5340 which is confusing. An alternate approach is to look at all the 5341 ‘Message-ID’s in all the ‘References’ headers to find matches. 5342 This will ensure that no gathered threads ever include unrelated 5343 articles, but it also means that people who have posted with broken 5344 newsreaders won’t be gathered properly. The choice is yours—plague 5345 or cholera: 5346 5347 ‘gnus-gather-threads-by-subject’ 5348 This function is the default gathering function and looks at 5349 ‘Subject’s exclusively. 5350 5351 ‘gnus-gather-threads-by-references’ 5352 This function looks at ‘References’ headers exclusively. 5353 5354 If you want to test gathering by ‘References’, you could say 5355 something like: 5356 5357 (setq gnus-summary-thread-gathering-function 5358 'gnus-gather-threads-by-references) 5359 5360 5361File: gnus.info, Node: Filling In Threads, Next: More Threading, Prev: Loose Threads, Up: Customizing Threading 5362 53633.9.1.2 Filling In Threads 5364.......................... 5365 5366‘gnus-fetch-old-headers’ 5367 If non-‘nil’, Gnus will attempt to build old threads by fetching 5368 more old headers—headers to articles marked as read. If you would 5369 like to display as few summary lines as possible, but still connect 5370 as many loose threads as possible, you should set this variable to 5371 ‘some’ or a number. If you set it to a number, no more than that 5372 number of extra old headers will be fetched. In either case, 5373 fetching old headers only works if the back end you are using 5374 carries overview files—this would normally be ‘nntp’, ‘nnspool’, 5375 ‘nnml’, and ‘nnmaildir’. Also remember that if the root of the 5376 thread has been expired by the server, there’s not much Gnus can do 5377 about that. 5378 5379 This variable can also be set to ‘invisible’. This won’t have any 5380 visible effects, but is useful if you use the ‘A T’ command a lot 5381 (*note Finding the Parent::). 5382 5383 The server has to support NOV for any of this to work. 5384 5385 This feature can seriously impact performance it ignores all 5386 locally cached header entries. Setting it to ‘t’ for groups for a 5387 server that doesn’t expire articles (such as news.gmane.org), leads 5388 to very slow summary generation. 5389 5390‘gnus-fetch-old-ephemeral-headers’ 5391 Same as ‘gnus-fetch-old-headers’, but only used for ephemeral 5392 newsgroups. 5393 5394‘gnus-build-sparse-threads’ 5395 Fetching old headers can be slow. A low-rent similar effect can be 5396 gotten by setting this variable to ‘some’. Gnus will then look at 5397 the complete ‘References’ headers of all articles and try to string 5398 together articles that belong in the same thread. This will leave 5399 “gaps” in the threading display where Gnus guesses that an article 5400 is missing from the thread. (These gaps appear like normal summary 5401 lines. If you select a gap, Gnus will try to fetch the article in 5402 question.) If this variable is ‘t’, Gnus will display all these 5403 “gaps” without regard for whether they are useful for completing 5404 the thread or not. Finally, if this variable is ‘more’, Gnus won’t 5405 cut off sparse leaf nodes that don’t lead anywhere. This variable 5406 is ‘nil’ by default. 5407 5408‘gnus-read-all-available-headers’ 5409 This is a rather obscure variable that few will find useful. It’s 5410 intended for those non-news newsgroups where the back end has to 5411 fetch quite a lot to present the summary buffer, and where it’s 5412 impossible to go back to parents of articles. This is mostly the 5413 case in the web-based groups. 5414 5415 If you don’t use those, then it’s safe to leave this as the default 5416 ‘nil’. If you want to use this variable, it should be a regexp 5417 that matches the group name, or ‘t’ for all groups. 5418 5419 5420File: gnus.info, Node: More Threading, Next: Low-Level Threading, Prev: Filling In Threads, Up: Customizing Threading 5421 54223.9.1.3 More Threading 5423...................... 5424 5425‘gnus-show-threads’ 5426 If this variable is ‘nil’, no threading will be done, and all of 5427 the rest of the variables here will have no effect. Turning 5428 threading off will speed group selection up a bit, but it is sure 5429 to make reading slower and more awkward. 5430 5431‘gnus-thread-hide-subtree’ 5432 If non-‘nil’, all threads will be hidden when the summary buffer is 5433 generated. 5434 5435 This can also be a predicate specifier (*note Predicate 5436 Specifiers::). Available predicates are ‘gnus-article-unread-p’ 5437 and ‘gnus-article-unseen-p’. 5438 5439 Here’s an example: 5440 5441 (setq gnus-thread-hide-subtree 5442 '(or gnus-article-unread-p 5443 gnus-article-unseen-p)) 5444 5445 (It’s a pretty nonsensical example, since all unseen articles are 5446 also unread, but you get my drift.) 5447 5448‘gnus-thread-expunge-below’ 5449 All threads that have a total score (as defined by 5450 ‘gnus-thread-score-function’) less than this number will be 5451 expunged. This variable is ‘nil’ by default, which means that no 5452 threads are expunged. 5453 5454‘gnus-thread-hide-killed’ 5455 if you kill a thread and this variable is non-‘nil’, the subtree 5456 will be hidden. 5457 5458‘gnus-thread-ignore-subject’ 5459 Sometimes somebody changes the subject in the middle of a thread. 5460 If this variable is non-‘nil’, which is the default, the subject 5461 change is ignored. If it is ‘nil’, a change in the subject will 5462 result in a new thread. 5463 5464‘gnus-thread-indent-level’ 5465 This is a number that says how much each sub-thread should be 5466 indented. The default is 4. 5467 5468‘gnus-sort-gathered-threads-function’ 5469 Sometimes, particularly with mailing lists, the order in which 5470 mails arrive locally is not necessarily the same as the order in 5471 which they arrived on the mailing list. Consequently, when sorting 5472 sub-threads using the default ‘gnus-thread-sort-by-number’, 5473 responses can end up appearing before the article to which they are 5474 responding to. Setting this variable to an alternate value (e.g., 5475 ‘gnus-thread-sort-by-date’), in a group’s parameters or in an 5476 appropriate hook (e.g., ‘gnus-summary-generate-hook’) can produce a 5477 more logical sub-thread ordering in such instances. 5478 5479 5480File: gnus.info, Node: Low-Level Threading, Prev: More Threading, Up: Customizing Threading 5481 54823.9.1.4 Low-Level Threading 5483........................... 5484 5485‘gnus-parse-headers-hook’ 5486 Hook run before parsing any headers. 5487 5488‘gnus-alter-header-function’ 5489 If non-‘nil’, this function will be called to allow alteration of 5490 article header structures. The function is called with one 5491 parameter, the article header vector, which it may alter in any 5492 way. For instance, if you have a mail-to-news gateway which alters 5493 the ‘Message-ID’s in systematic ways (by adding prefixes and such), 5494 you can use this variable to un-scramble the ‘Message-ID’s so that 5495 they are more meaningful. Here’s one example: 5496 5497 (setq gnus-alter-header-function 'my-alter-message-id) 5498 5499 (defun my-alter-message-id (header) 5500 (let ((id (mail-header-id header))) 5501 (when (string-match 5502 "\\(<[^<>@]*\\)\\.?cygnus\\..*@\\([^<>@]*>\\)" id) 5503 (mail-header-set-id 5504 (concat (match-string 1 id) "@" (match-string 2 id)) 5505 header)))) 5506 5507 5508File: gnus.info, Node: Thread Commands, Prev: Customizing Threading, Up: Threading 5509 55103.9.2 Thread Commands 5511--------------------- 5512 5513‘T k’ 5514‘C-M-k’ 5515 Mark all articles in the current (sub-)thread as read 5516 (‘gnus-summary-kill-thread’). If the prefix argument is positive, 5517 remove all marks instead. If the prefix argument is negative, tick 5518 articles instead. 5519 5520‘T l’ 5521‘C-M-l’ 5522 Lower the score of the current (sub-)thread 5523 (‘gnus-summary-lower-thread’). 5524 5525‘T i’ 5526 Increase the score of the current (sub-)thread 5527 (‘gnus-summary-raise-thread’). 5528 5529‘T #’ 5530 Set the process mark on the current (sub-)thread 5531 (‘gnus-uu-mark-thread’). 5532 5533‘T M-#’ 5534 Remove the process mark from the current (sub-)thread 5535 (‘gnus-uu-unmark-thread’). 5536 5537‘T T’ 5538 Toggle threading (‘gnus-summary-toggle-threads’). 5539 5540‘T s’ 5541 Expose the (sub-)thread hidden under the current article, if any 5542 (‘gnus-summary-show-thread’). 5543 5544‘T h’ 5545 Hide the current (sub-)thread (‘gnus-summary-hide-thread’). 5546 5547‘T S’ 5548 Expose all hidden threads (‘gnus-summary-show-all-threads’). 5549 5550‘T H’ 5551 Hide all threads (‘gnus-summary-hide-all-threads’). 5552 5553‘T t’ 5554 Re-thread the current article’s thread 5555 (‘gnus-summary-rethread-current’). This works even when the 5556 summary buffer is otherwise unthreaded. 5557 5558‘T ^’ 5559 Make the current article the child of the marked (or previous) 5560 article (‘gnus-summary-reparent-thread’). 5561 5562‘T M-^’ 5563 Make the current article the parent of the marked articles 5564 (‘gnus-summary-reparent-children’). 5565 5566 The following commands are thread movement commands. They all 5567understand the numeric prefix. 5568 5569‘T n’ 5570‘C-M-f’ 5571‘M-<DOWN>’ 5572 Go to the next thread (‘gnus-summary-next-thread’). 5573 5574‘T p’ 5575‘C-M-b’ 5576‘M-<UP>’ 5577 Go to the previous thread (‘gnus-summary-prev-thread’). 5578 5579‘T d’ 5580 Descend the thread (‘gnus-summary-down-thread’). 5581 5582‘T u’ 5583 Ascend the thread (‘gnus-summary-up-thread’). 5584 5585‘T o’ 5586 Go to the top of the thread (‘gnus-summary-top-thread’). 5587 5588 If you ignore subject while threading, you’ll naturally end up with 5589threads that have several different subjects in them. If you then issue 5590a command like ‘T k’ (‘gnus-summary-kill-thread’) you might not wish to 5591kill the entire thread, but just those parts of the thread that have the 5592same subject as the current article. If you like this idea, you can 5593fiddle with ‘gnus-thread-operation-ignore-subject’. If it is non-‘nil’ 5594(which it is by default), subjects will be ignored when doing thread 5595commands. If this variable is ‘nil’, articles in the same thread with 5596different subjects will not be included in the operation in question. 5597If this variable is ‘fuzzy’, only articles that have subjects fuzzily 5598equal will be included (*note Fuzzy Matching::). 5599 5600 5601File: gnus.info, Node: Sorting the Summary Buffer, Next: Asynchronous Fetching, Prev: Threading, Up: Summary Buffer 5602 56033.10 Sorting the Summary Buffer 5604=============================== 5605 5606If you are using a threaded summary display, you can sort the threads by 5607setting ‘gnus-thread-sort-functions’, which can be either a single 5608function, a list of functions, or a list containing functions and ‘(not 5609some-function)’ elements. 5610 5611 By default, sorting is done on article numbers. Ready-made sorting 5612predicate functions include ‘gnus-thread-sort-by-number’, 5613‘gnus-thread-sort-by-author’, ‘gnus-thread-sort-by-recipient’, 5614‘gnus-thread-sort-by-subject’, ‘gnus-thread-sort-by-date’, 5615‘gnus-thread-sort-by-score’, ‘gnus-thread-sort-by-most-recent-number’, 5616‘gnus-thread-sort-by-most-recent-date’, ‘gnus-thread-sort-by-random’ and 5617‘gnus-thread-sort-by-total-score’. 5618 5619 Each function takes two threads and returns non-‘nil’ if the first 5620thread should be sorted before the other. Note that sorting really is 5621normally done by looking only at the roots of each thread. Exceptions 5622to this rule are ‘gnus-thread-sort-by-most-recent-number’ and 5623‘gnus-thread-sort-by-most-recent-date’. 5624 5625 If you use more than one function, the primary sort key should be the 5626last function in the list. You should probably always include 5627‘gnus-thread-sort-by-number’ in the list of sorting functions—preferably 5628first. This will ensure that threads that are equal with respect to the 5629other sort criteria will be displayed in ascending article order. 5630 5631 If you would like to sort by reverse score, then by subject, and 5632finally by number, you could do something like: 5633 5634 (setq gnus-thread-sort-functions 5635 '(gnus-thread-sort-by-number 5636 gnus-thread-sort-by-subject 5637 (not gnus-thread-sort-by-total-score))) 5638 5639 The threads that have highest score will be displayed first in the 5640summary buffer. When threads have the same score, they will be sorted 5641alphabetically. The threads that have the same score and the same 5642subject will be sorted by number, which is (normally) the sequence in 5643which the articles arrived. 5644 5645 If you want to sort by score and then reverse arrival order, you 5646could say something like: 5647 5648 (setq gnus-thread-sort-functions 5649 '((not gnus-thread-sort-by-number) 5650 gnus-thread-sort-by-score)) 5651 5652 By default, threads including their subthreads are sorted according 5653to the value of ‘gnus-thread-sort-functions’. By customizing 5654‘gnus-subthread-sort-functions’ you can define a custom sorting order 5655for subthreads. This allows for example to sort threads from high score 5656to low score in the summary buffer, but to have subthreads still sorted 5657chronologically from old to new without taking their score into account. 5658 5659 The function in the ‘gnus-thread-score-function’ variable (default 5660‘+’) is used for calculating the total score of a thread. Useful 5661functions might be ‘max’, ‘min’, or squared means, or whatever tickles 5662your fancy. 5663 5664 If you are using an unthreaded display for some strange reason or 5665other, you have to fiddle with the ‘gnus-article-sort-functions’ 5666variable. It is very similar to the ‘gnus-thread-sort-functions’, 5667except that it uses slightly different functions for article comparison. 5668Available sorting predicate functions are ‘gnus-article-sort-by-number’, 5669‘gnus-article-sort-by-author’, ‘gnus-article-sort-by-subject’, 5670‘gnus-article-sort-by-date’, ‘gnus-article-sort-by-random’, and 5671‘gnus-article-sort-by-score’. 5672 5673 If you want to sort an unthreaded summary display by subject, you 5674could say something like: 5675 5676 (setq gnus-article-sort-functions 5677 '(gnus-article-sort-by-number 5678 gnus-article-sort-by-subject)) 5679 5680 You can define group specific sorting via ‘gnus-parameters’, *Note 5681Group Parameters::. 5682 5683 5684File: gnus.info, Node: Asynchronous Fetching, Next: Article Caching, Prev: Sorting the Summary Buffer, Up: Summary Buffer 5685 56863.11 Asynchronous Article Fetching 5687================================== 5688 5689If you read your news from an NNTP server that’s far away, the network 5690latencies may make reading articles a chore. You have to wait for a 5691while after pressing ‘n’ to go to the next article before the article 5692appears. Why can’t Gnus just go ahead and fetch the article while you 5693are reading the previous one? Why not, indeed. 5694 5695 First, some caveats. There are some pitfalls to using asynchronous 5696article fetching, especially the way Gnus does it. 5697 5698 Let’s say you are reading article 1, which is short, and article 2 is 5699quite long, and you are not interested in reading that. Gnus does not 5700know this, so it goes ahead and fetches article 2. You decide to read 5701article 3, but since Gnus is in the process of fetching article 2, the 5702connection is blocked. 5703 5704 To avoid these situations, Gnus will open two (count ’em two) 5705connections to the server. Some people may think this isn’t a very nice 5706thing to do, but I don’t see any real alternatives. Setting up that 5707extra connection takes some time, so Gnus startup will be slower. 5708 5709 Gnus will fetch more articles than you will read. This will mean 5710that the link between your machine and the NNTP server will become more 5711loaded than if you didn’t use article pre-fetch. The server itself will 5712also become more loaded—both with the extra article requests, and the 5713extra connection. 5714 5715 Ok, so now you know that you shouldn’t really use this thing... 5716unless you really want to. 5717 5718 Here’s how: Set ‘gnus-asynchronous’ to ‘t’. The rest should happen 5719automatically. 5720 5721 You can control how many articles are to be pre-fetched by setting 5722‘gnus-use-article-prefetch’. This is 30 by default, which means that 5723when you read an article in the group, the back end will pre-fetch the 5724next 30 articles. If this variable is ‘t’, the back end will pre-fetch 5725all the articles it can without bound. If it is ‘nil’, no pre-fetching 5726will be done. 5727 5728 There are probably some articles that you don’t want to 5729pre-fetch—read articles, for instance. The 5730‘gnus-async-prefetch-article-p’ variable controls whether an article is 5731to be pre-fetched. This function should return non-‘nil’ when the 5732article in question is to be pre-fetched. The default is 5733‘gnus-async-unread-p’, which returns ‘nil’ on read articles. The 5734function is called with an article data structure as the only parameter. 5735 5736 If, for instance, you wish to pre-fetch only unread articles shorter 5737than 100 lines, you could say something like: 5738 5739 (defun my-async-short-unread-p (data) 5740 "Return non-nil for short, unread articles." 5741 (and (gnus-data-unread-p data) 5742 (< (mail-header-lines (gnus-data-header data)) 5743 100))) 5744 5745 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p) 5746 5747 These functions will be called many, many times, so they should 5748preferably be short and sweet to avoid slowing down Gnus too much. It’s 5749probably a good idea to byte-compile things like this. 5750 5751 After an article has been prefetched, this 5752‘gnus-async-post-fetch-function’ will be called. The buffer will be 5753narrowed to the region of the article that was fetched. A useful value 5754would be ‘gnus-html-prefetch-images’, which will prefetch and store 5755images referenced in the article, so that you don’t have to wait for 5756them to be fetched when you read the article. This is useful for HTML 5757messages that have external images. 5758 5759 Articles have to be removed from the asynch buffer sooner or later. 5760The ‘gnus-prefetched-article-deletion-strategy’ says when to remove 5761articles. This is a list that may contain the following elements: 5762 5763‘read’ 5764 Remove articles when they are read. 5765 5766‘exit’ 5767 Remove articles when exiting the group. 5768 5769 The default value is ‘(read exit)’. 5770 5771 5772File: gnus.info, Node: Article Caching, Next: Persistent Articles, Prev: Asynchronous Fetching, Up: Summary Buffer 5773 57743.12 Article Caching 5775==================== 5776 5777If you have an _extremely_ slow NNTP connection, you may consider 5778turning article caching on. Each article will then be stored locally 5779under your home directory. As you may surmise, this could potentially 5780use _huge_ amounts of disk space, as well as eat up all your inodes so 5781fast it will make your head swim. In vodka. 5782 5783 Used carefully, though, it could be just an easier way to save 5784articles. 5785 5786 To turn caching on, set ‘gnus-use-cache’ to ‘t’. By default, all 5787articles ticked or marked as dormant will then be copied over to your 5788local cache (‘gnus-cache-directory’). Whether this cache is flat or 5789hierarchical is controlled by the ‘gnus-use-long-file-name’ variable, as 5790usual. 5791 5792 When re-selecting a ticked or dormant article, it will be fetched 5793from the cache instead of from the server. As articles in your cache 5794will never expire, this might serve as a method of saving articles while 5795still keeping them where they belong. Just mark all articles you want 5796to save as dormant, and don’t worry. 5797 5798 When an article is marked as read, is it removed from the cache. 5799 5800 The entering/removal of articles from the cache is controlled by the 5801‘gnus-cache-enter-articles’ and ‘gnus-cache-remove-articles’ variables. 5802Both are lists of symbols. The first is ‘(ticked dormant)’ by default, 5803meaning that ticked and dormant articles will be put in the cache. The 5804latter is ‘(read)’ by default, meaning that articles marked as read are 5805removed from the cache. Possibly symbols in these two lists are 5806‘ticked’, ‘dormant’, ‘unread’ and ‘read’. 5807 5808 So where does the massive article-fetching and storing come into the 5809picture? The ‘gnus-jog-cache’ command will go through all subscribed 5810newsgroups, request all unread articles, score them, and store them in 5811the cache. You should only ever, ever ever ever, use this command if 1) 5812your connection to the NNTP server is really, really, really slow and 2) 5813you have a really, really, really huge disk. Seriously. One way to cut 5814down on the number of articles downloaded is to score unwanted articles 5815down and have them marked as read. They will not then be downloaded by 5816this command. 5817 5818 It is likely that you do not want caching on all groups. For 5819instance, if your ‘nnml’ mail is located under your home directory, it 5820makes no sense to cache it somewhere else under your home directory. 5821Unless you feel that it’s neat to use twice as much space. 5822 5823 To limit the caching, you could set ‘gnus-cacheable-groups’ to a 5824regexp of groups to cache, ‘^nntp’ for instance, or set the 5825‘gnus-uncacheable-groups’ regexp to ‘^nnml’, for instance. Both 5826variables are ‘nil’ by default. If a group matches both variables, the 5827group is not cached. 5828 5829 The cache stores information on what articles it contains in its 5830active file (‘gnus-cache-active-file’). If this file (or any other 5831parts of the cache) becomes all messed up for some reason or other, Gnus 5832offers two functions that will try to set things right. ‘M-x 5833gnus-cache-generate-nov-databases’ will (re)build all the NOV files, and 5834‘gnus-cache-generate-active’ will (re)generate the active file. 5835 5836 ‘gnus-cache-move-cache’ will move your whole ‘gnus-cache-directory’ 5837to some other location. You get asked to where, isn’t that cool? 5838 5839 5840File: gnus.info, Node: Persistent Articles, Next: Sticky Articles, Prev: Article Caching, Up: Summary Buffer 5841 58423.13 Persistent Articles 5843======================== 5844 5845Closely related to article caching, we have “persistent articles”. In 5846fact, it’s just a different way of looking at caching, and much more 5847useful in my opinion. 5848 5849 Say you’re reading a newsgroup, and you happen on to some valuable 5850gem that you want to keep and treasure forever. You’d normally just 5851save it (using one of the many saving commands) in some file. The 5852problem with that is that it’s just, well, yucky. Ideally you’d prefer 5853just having the article remain in the group where you found it forever; 5854untouched by the expiry going on at the news server. 5855 5856 This is what a “persistent article” is—an article that just won’t be 5857deleted. It’s implemented using the normal cache functions, but you use 5858two explicit commands for managing persistent articles: 5859 5860‘*’ 5861 Make the current article persistent (‘gnus-cache-enter-article’). 5862 5863‘M-*’ 5864 Remove the current article from the persistent articles 5865 (‘gnus-cache-remove-article’). This will normally delete the 5866 article. 5867 5868 Both these commands understand the process/prefix convention. 5869 5870 To avoid having all ticked articles (and stuff) entered into the 5871cache, you should set ‘gnus-use-cache’ to ‘passive’ if you’re just 5872interested in persistent articles: 5873 5874 (setq gnus-use-cache 'passive) 5875 5876 5877File: gnus.info, Node: Sticky Articles, Next: Article Backlog, Prev: Persistent Articles, Up: Summary Buffer 5878 58793.14 Sticky Articles 5880==================== 5881 5882When you select an article the current article buffer will be reused 5883according to the value of the variable ‘gnus-single-article-buffer’. If 5884its value is non-‘nil’ (the default) all articles reuse the same article 5885buffer. Else each group has its own article buffer. 5886 5887 This implies that it’s not possible to have more than one article 5888buffer in a group at a time. But sometimes you might want to display 5889all the latest emails from your mother, your father, your aunt, your 5890uncle and your 17 cousins to coordinate the next Christmas party. 5891 5892 That’s where sticky articles come in handy. A sticky article buffer 5893basically is a normal article buffer, but it won’t be reused when you 5894select another article. You can make an article sticky with: 5895 5896‘A S’ 5897 Make the current article sticky. If a prefix arg is given, ask for 5898 a name for this sticky article buffer. 5899 5900 To close a sticky article buffer you can use these commands: 5901 5902‘q’ 5903 Puts this sticky article buffer at the end of the list of all 5904 buffers. 5905 5906‘k’ 5907 Kills this sticky article buffer. 5908 5909 To kill all sticky article buffers you can use: 5910 5911 -- Function: gnus-kill-sticky-article-buffers ARG 5912 Kill all sticky article buffers. If a prefix ARG is given, ask for 5913 confirmation. 5914 5915 5916File: gnus.info, Node: Article Backlog, Next: Saving Articles, Prev: Sticky Articles, Up: Summary Buffer 5917 59183.15 Article Backlog 5919==================== 5920 5921If you have a slow connection, but the idea of using caching seems 5922unappealing to you (and it is, really), you can help the situation some 5923by switching on the “backlog”. This is where Gnus will buffer already 5924read articles so that it doesn’t have to re-fetch articles you’ve 5925already read. This only helps if you are in the habit of re-selecting 5926articles you’ve recently read, of course. If you never do that, turning 5927the backlog on will slow Gnus down a little bit, and increase memory 5928usage some. 5929 5930 If you set ‘gnus-keep-backlog’ to a number N, Gnus will store at most 5931N old articles in a buffer for later re-fetching. If this variable is 5932non-‘nil’ and is not a number, Gnus will store _all_ read articles, 5933which means that your Emacs will grow without bound before exploding and 5934taking your machine down with you. I put that in there just to keep 5935y’all on your toes. 5936 5937 The default value is 20. 5938 5939 5940File: gnus.info, Node: Saving Articles, Next: Decoding Articles, Prev: Article Backlog, Up: Summary Buffer 5941 59423.16 Saving Articles 5943==================== 5944 5945Gnus can save articles in a number of ways. Below is the documentation 5946for saving articles in a fairly straight-forward fashion (i.e., little 5947processing of the article is done before it is saved). For a different 5948approach (uudecoding, unsharing) you should use ‘gnus-uu’ (*note 5949Decoding Articles::). 5950 5951 For the commands listed here, the target is a file. A directory name 5952(ending in ‘/’) causes the target to be a file under that directory. If 5953you want to save to a group, see the ‘B c’ (‘gnus-summary-copy-article’) 5954command (*note Mail Group Commands::). 5955 5956 If ‘gnus-save-all-headers’ is non-‘nil’, Gnus will not delete 5957unwanted headers before saving the article. 5958 5959 If the preceding variable is ‘nil’, all headers that match the 5960‘gnus-saved-headers’ regexp will be kept, while the rest will be deleted 5961before saving. 5962 5963‘O o’ 5964‘o’ 5965 Save the current article using the default article saver 5966 (‘gnus-summary-save-article’). 5967 5968‘O m’ 5969 Save the current article in a Unix mail box (mbox) file 5970 (‘gnus-summary-save-article-mail’). 5971 5972‘O r’ 5973 Save the current article in Rmail format 5974 (‘gnus-summary-save-article-rmail’). This is mbox since Emacs 23, 5975 Babyl in older versions. 5976 5977‘O f’ 5978 Save the current article in plain file format 5979 (‘gnus-summary-save-article-file’). 5980 5981‘O F’ 5982 Write the current article in plain file format, overwriting any 5983 previous file contents (‘gnus-summary-write-article-file’). 5984 5985‘O b’ 5986 Save the current article body in plain file format 5987 (‘gnus-summary-save-article-body-file’). 5988 5989‘O h’ 5990 Save the current article in mh folder format 5991 (‘gnus-summary-save-article-folder’). 5992 5993‘O v’ 5994 Save the current article in a VM folder 5995 (‘gnus-summary-save-article-vm’). 5996 5997‘O p’ 5998‘|’ 5999 Save the current article in a pipe. Uhm, like, what I mean is—Pipe 6000 the current article to a process (‘gnus-summary-pipe-output’). If 6001 given a symbolic prefix (*note Symbolic Prefixes::), include the 6002 complete headers in the piped output. The symbolic prefix ‘r’ is 6003 special; it lets this command pipe a raw article including all 6004 headers. The ‘gnus-summary-pipe-output-default-command’ variable 6005 can be set to a string containing the default command and options 6006 (default ‘nil’). 6007 6008‘O P’ 6009 Save the current article into muttprint. That is, print it using 6010 the external program Muttprint (http://muttprint.sourceforge.net/). 6011 The program name and options to use is controlled by the variable 6012 ‘gnus-summary-muttprint-program’. (‘gnus-summary-muttprint’). 6013 6014 All these commands use the process/prefix convention (*note 6015Process/Prefix::). If you save bunches of articles using these 6016functions, you might get tired of being prompted for files to save each 6017and every article in. The prompting action is controlled by the 6018‘gnus-prompt-before-saving’ variable, which is ‘always’ by default, 6019giving you that excessive prompting action you know and loathe. If you 6020set this variable to ‘t’ instead, you’ll be prompted just once for each 6021series of articles you save. If you like to really have Gnus do all 6022your thinking for you, you can even set this variable to ‘nil’, which 6023means that you will never be prompted for files to save articles in. 6024Gnus will simply save all the articles in the default files. 6025 6026 You can customize the ‘gnus-default-article-saver’ variable to make 6027Gnus do what you want it to. You can use any of the eight ready-made 6028functions below, or you can create your own. 6029 6030‘gnus-summary-save-in-rmail’ 6031 This is the default format, that used by the Rmail package. Since 6032 Emacs 23, Rmail uses standard mbox format. Before this, it used 6033 the “Babyl” format. Accordingly, this command writes mbox format 6034 since Emacs 23, unless appending to an existing Babyl file. In 6035 older versions of Emacs, it always uses Babyl format. Uses the 6036 function in the ‘gnus-rmail-save-name’ variable to get a file name 6037 to save the article in. The default is ‘gnus-plain-save-name’. 6038 6039‘gnus-summary-save-in-mail’ 6040 Save in a Unix mail (mbox) file. Uses the function in the 6041 ‘gnus-mail-save-name’ variable to get a file name to save the 6042 article in. The default is ‘gnus-plain-save-name’. 6043 6044‘gnus-summary-save-in-file’ 6045 Append the article straight to an ordinary file. Uses the function 6046 in the ‘gnus-file-save-name’ variable to get a file name to save 6047 the article in. The default is ‘gnus-numeric-save-name’. 6048 6049‘gnus-summary-write-to-file’ 6050 Write the article straight to an ordinary file. The file is 6051 overwritten if it exists. Uses the function in the 6052 ‘gnus-file-save-name’ variable to get a file name to save the 6053 article in. The default is ‘gnus-numeric-save-name’. 6054 6055‘gnus-summary-save-body-in-file’ 6056 Append the article body to an ordinary file. Uses the function in 6057 the ‘gnus-file-save-name’ variable to get a file name to save the 6058 article in. The default is ‘gnus-numeric-save-name’. 6059 6060‘gnus-summary-write-body-to-file’ 6061 Write the article body straight to an ordinary file. The file is 6062 overwritten if it exists. Uses the function in the 6063 ‘gnus-file-save-name’ variable to get a file name to save the 6064 article in. The default is ‘gnus-numeric-save-name’. 6065 6066‘gnus-summary-save-in-folder’ 6067 Save the article to an MH folder using ‘rcvstore’ from the MH 6068 library. Uses the function in the ‘gnus-folder-save-name’ variable 6069 to get a file name to save the article in. The default is 6070 ‘gnus-folder-save-name’, but you can also use 6071 ‘gnus-Folder-save-name’, which creates capitalized names. 6072 6073‘gnus-summary-save-in-vm’ 6074 Save the article in a VM folder. You have to have the VM mail 6075 reader to use this setting. 6076 6077‘gnus-summary-save-in-pipe’ 6078 Pipe the article to a shell command. This function takes optional 6079 two arguments COMMAND and RAW. Valid values for COMMAND include: 6080 6081 • a string 6082 The executable command name and possibly arguments. 6083 • ‘nil’ 6084 You will be prompted for the command in the minibuffer. 6085 • the symbol ‘default’ 6086 It will be replaced with the command which the variable 6087 ‘gnus-summary-pipe-output-default-command’ holds or the 6088 command last used for saving. 6089 6090 Non-‘nil’ value for RAW overrides ‘:decode’ and ‘:headers’ 6091 properties (see below) and the raw article including all headers 6092 will be piped. 6093 6094 The symbol of each function may have the following properties: 6095 6096‘:decode’ 6097 The value non-‘nil’ means save decoded articles. This is 6098 meaningful only with ‘gnus-summary-save-in-file’, 6099 ‘gnus-summary-save-body-in-file’, ‘gnus-summary-write-to-file’, 6100 ‘gnus-summary-write-body-to-file’, and ‘gnus-summary-save-in-pipe’. 6101 6102‘:function’ 6103 The value specifies an alternative function which appends, not 6104 overwrites, articles to a file. This implies that when saving many 6105 articles at a time, ‘gnus-prompt-before-saving’ is bound to ‘t’ and 6106 all articles are saved in a single file. This is meaningful only 6107 with ‘gnus-summary-write-to-file’ and 6108 ‘gnus-summary-write-body-to-file’. 6109 6110‘:headers’ 6111 The value specifies the symbol of a variable of which the value 6112 specifies headers to be saved. If it is omitted, 6113 ‘gnus-save-all-headers’ and ‘gnus-saved-headers’ control what 6114 headers should be saved. 6115 6116 All of these functions, except for the last one, will save the 6117article in the ‘gnus-article-save-directory’, which is initialized from 6118the ‘SAVEDIR’ environment variable. This is ‘~/News/’ by default. 6119 6120 As you can see above, the functions use different functions to find a 6121suitable name of a file to save the article in. Below is a list of 6122available functions that generate names: 6123 6124‘gnus-Numeric-save-name’ 6125 File names like ‘~/News/Alt.andrea-dworkin/45’. 6126 6127‘gnus-numeric-save-name’ 6128 File names like ‘~/News/alt.andrea-dworkin/45’. 6129 6130‘gnus-Plain-save-name’ 6131 File names like ‘~/News/Alt.andrea-dworkin’. 6132 6133‘gnus-plain-save-name’ 6134 File names like ‘~/News/alt.andrea-dworkin’. 6135 6136‘gnus-sender-save-name’ 6137 File names like ‘~/News/larsi’. 6138 6139 You can have Gnus suggest where to save articles by plonking a regexp 6140into the ‘gnus-split-methods’ alist. For instance, if you would like to 6141save articles related to Gnus in the file ‘gnus-stuff’, and articles 6142related to VM in ‘vm-stuff’, you could set this variable to something 6143like: 6144 6145 (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff") 6146 ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff") 6147 (my-choosing-function "../other-dir/my-stuff") 6148 ((equal gnus-newsgroup-name "mail.misc") "mail-stuff")) 6149 6150 We see that this is a list where each element is a list that has two 6151elements—the “match” and the “file”. The match can either be a string 6152(in which case it is used as a regexp to match on the article head); it 6153can be a symbol (which will be called as a function with the group name 6154as a parameter); or it can be a list (which will be ‘eval’ed). If any 6155of these actions have a non-‘nil’ result, the “file” will be used as a 6156default prompt. In addition, the result of the operation itself will be 6157used if the function or form called returns a string or a list of 6158strings. 6159 6160 You basically end up with a list of file names that might be used 6161when saving the current article. (All “matches” will be used.) You 6162will then be prompted for what you really want to use as a name, with 6163file name completion over the results from applying this variable. 6164 6165 This variable is ‘((gnus-article-archive-name))’ by default, which 6166means that Gnus will look at the articles it saves for an ‘Archive-name’ 6167line and use that as a suggestion for the file name. 6168 6169 Here’s an example function to clean up file names somewhat. If you 6170have lots of mail groups called things like ‘nnml:mail.whatever’, you 6171may want to chop off the beginning of these group names before creating 6172the file name to save to. The following will do just that: 6173 6174 (defun my-save-name (group) 6175 (when (string-match "^nnml:mail." group) 6176 (substring group (match-end 0)))) 6177 6178 (setq gnus-split-methods 6179 '((gnus-article-archive-name) 6180 (my-save-name))) 6181 6182 Finally, you have the ‘gnus-use-long-file-name’ variable. If it is 6183‘nil’, all the preceding functions will replace all periods (‘.’) in the 6184group names with slashes (‘/’)—which means that the functions will 6185generate hierarchies of directories instead of having all the files in 6186the top level directory (‘~/News/alt/andrea-dworkin’ instead of 6187‘~/News/alt.andrea-dworkin’.) This variable is ‘t’ by default on most 6188systems. However, for historical reasons, this is ‘nil’ on Xenix and 6189usg-unix-v machines by default. 6190 6191 This function also affects kill and score file names. If this 6192variable is a list, and the list contains the element ‘not-score’, long 6193file names will not be used for score files, if it contains the element 6194‘not-save’, long file names will not be used for saving, and if it 6195contains the element ‘not-kill’, long file names will not be used for 6196kill files. 6197 6198 If you’d like to save articles in a hierarchy that looks something 6199like a spool, you could 6200 6201 (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy 6202 (setq gnus-default-article-saver 6203 'gnus-summary-save-in-file) ; no encoding 6204 6205 Then just save with ‘o’. You’d then read this hierarchy with 6206ephemeral ‘nneething’ groups—‘G D’ in the group buffer, and the top 6207level directory as the argument (‘~/News/’). Then just walk around to 6208the groups/directories with ‘nneething’. 6209 6210 6211File: gnus.info, Node: Decoding Articles, Next: Article Treatment, Prev: Saving Articles, Up: Summary Buffer 6212 62133.17 Decoding Articles 6214====================== 6215 6216Sometime users post articles (or series of articles) that have been 6217encoded in some way or other. Gnus can decode them for you. 6218 6219* Menu: 6220 6221* Uuencoded Articles:: Uudecode articles. 6222* Shell Archives:: Unshar articles. 6223* PostScript Files:: Split PostScript. 6224* Other Files:: Plain save and binhex. 6225* Decoding Variables:: Variables for a happy decoding. 6226* Viewing Files:: You want to look at the result of the decoding? 6227 6228 All these functions use the process/prefix convention (*note 6229Process/Prefix::) for finding out what articles to work on, with the 6230extension that a “single article” means “a single series”. Gnus can 6231find out by itself what articles belong to a series, decode all the 6232articles and unpack/view/save the resulting file(s). 6233 6234 Gnus guesses what articles are in the series according to the 6235following simplish rule: The subjects must be (nearly) identical, except 6236for the last two numbers of the line. (Spaces are largely ignored, 6237however.) 6238 6239 For example: If you choose a subject called ‘cat.gif (2/3)’, Gnus 6240will find all the articles that match the regexp ‘^cat.gif 6241([0-9]+/[0-9]+).*$’. 6242 6243 Subjects that are non-standard, like ‘cat.gif (2/3) Part 6 of a 6244series’, will not be properly recognized by any of the automatic viewing 6245commands, and you have to mark the articles manually with ‘#’. 6246 6247 6248File: gnus.info, Node: Uuencoded Articles, Next: Shell Archives, Up: Decoding Articles 6249 62503.17.1 Uuencoded Articles 6251------------------------- 6252 6253‘X u’ 6254 Uudecodes the current series (‘gnus-uu-decode-uu’). 6255 6256‘X U’ 6257 Uudecodes and saves the current series 6258 (‘gnus-uu-decode-uu-and-save’). 6259 6260‘X v u’ 6261 Uudecodes and views the current series (‘gnus-uu-decode-uu-view’). 6262 6263‘X v U’ 6264 Uudecodes, views and saves the current series 6265 (‘gnus-uu-decode-uu-and-save-view’). 6266 6267 Remember that these all react to the presence of articles marked with 6268the process mark. If, for instance, you’d like to decode and save an 6269entire newsgroup, you’d typically do ‘M P a’ (‘gnus-uu-mark-all’) and 6270then ‘X U’ (‘gnus-uu-decode-uu-and-save’). 6271 6272 All this is very much different from how ‘gnus-uu’ worked with GNUS 62734.1, where you had explicit keystrokes for everything under the sun. 6274This version of ‘gnus-uu’ generally assumes that you mark articles in 6275some way (*note Setting Process Marks::) and then press ‘X u’. 6276 6277 Note: When trying to decode articles that have names matching 6278‘gnus-uu-notify-files’, which is hard-coded to 6279‘[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)’, ‘gnus-uu’ will 6280automatically post an article on ‘comp.unix.wizards’ saying that you 6281have just viewed the file in question. This feature can’t be turned 6282off. 6283 6284 6285File: gnus.info, Node: Shell Archives, Next: PostScript Files, Prev: Uuencoded Articles, Up: Decoding Articles 6286 62873.17.2 Shell Archives 6288--------------------- 6289 6290Shell archives (“shar files”) used to be a popular way to distribute 6291sources, but it isn’t used all that much today. In any case, we have 6292some commands to deal with these: 6293 6294‘X s’ 6295 Unshars the current series (‘gnus-uu-decode-unshar’). 6296 6297‘X S’ 6298 Unshars and saves the current series 6299 (‘gnus-uu-decode-unshar-and-save’). 6300 6301‘X v s’ 6302 Unshars and views the current series 6303 (‘gnus-uu-decode-unshar-view’). 6304 6305‘X v S’ 6306 Unshars, views and saves the current series 6307 (‘gnus-uu-decode-unshar-and-save-view’). 6308 6309 6310File: gnus.info, Node: PostScript Files, Next: Other Files, Prev: Shell Archives, Up: Decoding Articles 6311 63123.17.3 PostScript Files 6313----------------------- 6314 6315‘X p’ 6316 Unpack the current PostScript series (‘gnus-uu-decode-postscript’). 6317 6318‘X P’ 6319 Unpack and save the current PostScript series 6320 (‘gnus-uu-decode-postscript-and-save’). 6321 6322‘X v p’ 6323 View the current PostScript series 6324 (‘gnus-uu-decode-postscript-view’). 6325 6326‘X v P’ 6327 View and save the current PostScript series 6328 (‘gnus-uu-decode-postscript-and-save-view’). 6329 6330 6331File: gnus.info, Node: Other Files, Next: Decoding Variables, Prev: PostScript Files, Up: Decoding Articles 6332 63333.17.4 Other Files 6334------------------ 6335 6336‘X o’ 6337 Save the current series (‘gnus-uu-decode-save’). 6338 6339‘X b’ 6340 Unbinhex the current series (‘gnus-uu-decode-binhex’). This 6341 doesn’t really work yet. 6342 6343‘X Y’ 6344 yEnc-decode the current series and save it (‘gnus-uu-decode-yenc’). 6345 6346 6347File: gnus.info, Node: Decoding Variables, Next: Viewing Files, Prev: Other Files, Up: Decoding Articles 6348 63493.17.5 Decoding Variables 6350------------------------- 6351 6352Adjective, not verb. 6353 6354* Menu: 6355 6356* Rule Variables:: Variables that say how a file is to be viewed. 6357* Other Decode Variables:: Other decode variables. 6358* Uuencoding and Posting:: Variables for customizing uuencoding. 6359 6360 6361File: gnus.info, Node: Rule Variables, Next: Other Decode Variables, Up: Decoding Variables 6362 63633.17.5.1 Rule Variables 6364....................... 6365 6366Gnus uses “rule variables” to decide how to view a file. All these 6367variables are of the form 6368 6369 (list '(regexp1 command2) 6370 '(regexp2 command2) 6371 ...) 6372 6373‘gnus-uu-user-view-rules’ 6374 This variable is consulted first when viewing files. If you wish 6375 to use, for instance, ‘sox’ to convert an ‘.au’ sound file, you 6376 could say something like: 6377 (setq gnus-uu-user-view-rules 6378 (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio"))) 6379 6380‘gnus-uu-user-view-rules-end’ 6381 This variable is consulted if Gnus couldn’t make any matches from 6382 the user and default view rules. 6383 6384‘gnus-uu-user-archive-rules’ 6385 This variable can be used to say what commands should be used to 6386 unpack archives. 6387 6388 6389File: gnus.info, Node: Other Decode Variables, Next: Uuencoding and Posting, Prev: Rule Variables, Up: Decoding Variables 6390 63913.17.5.2 Other Decode Variables 6392............................... 6393 6394‘gnus-uu-grabbed-file-functions’ 6395 All functions in this list will be called right after each file has 6396 been successfully decoded—so that you can move or view files right 6397 away, and don’t have to wait for all files to be decoded before you 6398 can do anything. Ready-made functions you can put in this list 6399 are: 6400 6401 ‘gnus-uu-grab-view’ 6402 View the file. 6403 6404 ‘gnus-uu-grab-move’ 6405 Move the file (if you’re using a saving function.) 6406 6407‘gnus-uu-be-dangerous’ 6408 Specifies what to do if unusual situations arise during decoding. 6409 If ‘nil’, be as conservative as possible. If ‘t’, ignore things 6410 that didn’t work, and overwrite existing files. Otherwise, ask 6411 each time. 6412 6413‘gnus-uu-ignore-files-by-name’ 6414 Files with name matching this regular expression won’t be viewed. 6415 6416‘gnus-uu-ignore-files-by-type’ 6417 Files with a MIME type matching this variable won’t be viewed. 6418 Note that Gnus tries to guess what type the file is based on the 6419 name. ‘gnus-uu’ is not a MIME package (yet), so this is slightly 6420 kludgy. 6421 6422‘gnus-uu-tmp-dir’ 6423 Where ‘gnus-uu’ does its work. 6424 6425‘gnus-uu-do-not-unpack-archives’ 6426 Non-‘nil’ means that ‘gnus-uu’ won’t peek inside archives looking 6427 for files to display. 6428 6429‘gnus-uu-view-and-save’ 6430 Non-‘nil’ means that the user will always be asked to save a file 6431 after viewing it. 6432 6433‘gnus-uu-ignore-default-view-rules’ 6434 Non-‘nil’ means that ‘gnus-uu’ will ignore the default viewing 6435 rules. 6436 6437‘gnus-uu-ignore-default-archive-rules’ 6438 Non-‘nil’ means that ‘gnus-uu’ will ignore the default archive 6439 unpacking commands. 6440 6441‘gnus-uu-kill-carriage-return’ 6442 Non-‘nil’ means that ‘gnus-uu’ will strip all carriage returns from 6443 articles. 6444 6445‘gnus-uu-unmark-articles-not-decoded’ 6446 Non-‘nil’ means that ‘gnus-uu’ will mark unsuccessfully decoded 6447 articles as unread. 6448 6449‘gnus-uu-correct-stripped-uucode’ 6450 Non-‘nil’ means that ‘gnus-uu’ will _try_ to fix uuencoded files 6451 that have had trailing spaces deleted. 6452 6453‘gnus-uu-pre-uudecode-hook’ 6454 Hook run before sending a message to ‘uudecode’. 6455 6456‘gnus-uu-view-with-metamail’ 6457 Non-‘nil’ means that ‘gnus-uu’ will ignore the viewing commands 6458 defined by the rule variables and just fudge a MIME content type 6459 based on the file name. The result will be fed to ‘metamail’ for 6460 viewing. 6461 6462‘gnus-uu-save-in-digest’ 6463 Non-‘nil’ means that ‘gnus-uu’, when asked to save without 6464 decoding, will save in digests. If this variable is ‘nil’, 6465 ‘gnus-uu’ will just save everything in a file without any 6466 embellishments. The digesting almost conforms to RFC 1153—no easy 6467 way to specify any meaningful volume and issue numbers were found, 6468 so I simply dropped them. 6469 6470 6471File: gnus.info, Node: Uuencoding and Posting, Prev: Other Decode Variables, Up: Decoding Variables 6472 64733.17.5.3 Uuencoding and Posting 6474............................... 6475 6476‘gnus-uu-post-include-before-composing’ 6477 Non-‘nil’ means that ‘gnus-uu’ will ask for a file to encode before 6478 you compose the article. If this variable is ‘t’, you can either 6479 include an encoded file with ‘C-c C-i’ or have one included for you 6480 when you post the article. 6481 6482‘gnus-uu-post-length’ 6483 Maximum length of an article. The encoded file will be split into 6484 how many articles it takes to post the entire file. 6485 6486‘gnus-uu-post-threaded’ 6487 Non-‘nil’ means that ‘gnus-uu’ will post the encoded file in a 6488 thread. This may not be smart, as no other decoder I have seen is 6489 able to follow threads when collecting uuencoded articles. (Well, 6490 I have seen one package that does that—‘gnus-uu’, but somehow, I 6491 don’t think that counts...) Default is ‘nil’. 6492 6493‘gnus-uu-post-separate-description’ 6494 Non-‘nil’ means that the description will be posted in a separate 6495 article. The first article will typically be numbered (0/x). If 6496 this variable is ‘nil’, the description the user enters will be 6497 included at the beginning of the first article, which will be 6498 numbered (1/x). Default is ‘t’. 6499 6500 6501File: gnus.info, Node: Viewing Files, Prev: Decoding Variables, Up: Decoding Articles 6502 65033.17.6 Viewing Files 6504-------------------- 6505 6506After decoding, if the file is some sort of archive, Gnus will attempt 6507to unpack the archive and see if any of the files in the archive can be 6508viewed. For instance, if you have a gzipped tar file ‘pics.tar.gz’ 6509containing the files ‘pic1.jpg’ and ‘pic2.gif’, Gnus will uncompress and 6510de-tar the main file, and then view the two pictures. This unpacking 6511process is recursive, so if the archive contains archives of archives, 6512it’ll all be unpacked. 6513 6514 Finally, Gnus will normally insert a “pseudo-article” for each 6515extracted file into the summary buffer. If you go to these “articles”, 6516you will be prompted for a command to run (usually Gnus will make a 6517suggestion), and then the command will be run. 6518 6519 If ‘gnus-view-pseudo-asynchronously’ is ‘nil’, Emacs will wait until 6520the viewing is done before proceeding. 6521 6522 If ‘gnus-view-pseudos’ is ‘automatic’, Gnus will not insert the 6523pseudo-articles into the summary buffer, but view them immediately. If 6524this variable is ‘not-confirm’, the user won’t even be asked for a 6525confirmation before viewing is done. 6526 6527 If ‘gnus-view-pseudos-separately’ is non-‘nil’, one pseudo-article 6528will be created for each file to be viewed. If ‘nil’, all files that 6529use the same viewing command will be given as a list of parameters to 6530that command. 6531 6532 If ‘gnus-insert-pseudo-articles’ is non-‘nil’, insert pseudo-articles 6533when decoding. It is ‘t’ by default. 6534 6535 So; there you are, reading your _pseudo-articles_ in your _virtual 6536newsgroup_ from the _virtual server_; and you think: Why isn’t anything 6537real anymore? How did we get here? 6538 6539 6540File: gnus.info, Node: Article Treatment, Next: MIME Commands, Prev: Decoding Articles, Up: Summary Buffer 6541 65423.18 Article Treatment 6543====================== 6544 6545Reading through this huge manual, you may have quite forgotten that the 6546object of newsreaders is to actually, like, read what people have 6547written. Reading articles. Unfortunately, people are quite bad at 6548writing, so there are tons of functions and variables to make reading 6549these articles easier. 6550 6551* Menu: 6552 6553* Article Highlighting:: You want to make the article look like fruit salad. 6554* Article Fontisizing:: Making emphasized text look nice. 6555* Article Hiding:: You also want to make certain info go away. 6556* Article Washing:: Lots of way-neat functions to make life better. 6557* Article Header:: Doing various header transformations. 6558* Article Buttons:: Click on URLs, Message-IDs, addresses and the like. 6559* Article Button Levels:: Controlling appearance of buttons. 6560* Article Date:: Grumble, UT! 6561* Article Display:: Display various stuff: 6562 X-Face, Picons, Gravatars, Smileys. 6563* Article Signature:: What is a signature? 6564* Article Miscellanea:: Various other stuff. 6565 6566 6567File: gnus.info, Node: Article Highlighting, Next: Article Fontisizing, Up: Article Treatment 6568 65693.18.1 Article Highlighting 6570--------------------------- 6571 6572Not only do you want your article buffer to look like fruit salad, but 6573you want it to look like technicolor fruit salad. 6574 6575‘W H a’ 6576 Do much highlighting of the current article 6577 (‘gnus-article-highlight’). This function highlights header, cited 6578 text, the signature, and adds buttons to the body and the head. 6579 6580‘W H h’ 6581 Highlight the headers (‘gnus-article-highlight-headers’). The 6582 highlighting will be done according to the ‘gnus-header-face-alist’ 6583 variable, which is a list where each element has the form ‘(REGEXP 6584 NAME CONTENT)’. REGEXP is a regular expression for matching the 6585 header, NAME is the face used for highlighting the header name 6586 (*note Faces and Fonts::) and CONTENT is the face for highlighting 6587 the header value. The first match made will be used. Note that 6588 REGEXP shouldn’t have ‘^’ prepended—Gnus will add one. 6589 6590‘W H c’ 6591 Highlight cited text (‘gnus-article-highlight-citation’). 6592 6593 Some variables to customize the citation highlights: 6594 6595 ‘gnus-cite-parse-max-size’ 6596 If the article size in bytes is bigger than this variable 6597 (which is 25000 by default), no citation highlighting will be 6598 performed. 6599 6600 ‘gnus-cite-max-prefix’ 6601 Maximum possible length for a citation prefix (default 20). 6602 6603 ‘gnus-cite-face-list’ 6604 List of faces used for highlighting citations (*note Faces and 6605 Fonts::). When there are citations from multiple articles in 6606 the same message, Gnus will try to give each citation from 6607 each article its own face. This should make it easier to see 6608 who wrote what. 6609 6610 ‘gnus-supercite-regexp’ 6611 Regexp matching normal Supercite attribution lines. 6612 6613 ‘gnus-supercite-secondary-regexp’ 6614 Regexp matching mangled Supercite attribution lines. 6615 6616 ‘gnus-cite-minimum-match-count’ 6617 Minimum number of identical prefixes we have to see before we 6618 believe that it’s a citation. 6619 6620 ‘gnus-cite-attribution-prefix’ 6621 Regexp matching the beginning of an attribution line. 6622 6623 ‘gnus-cite-attribution-suffix’ 6624 Regexp matching the end of an attribution line. 6625 6626 ‘gnus-cite-attribution-face’ 6627 Face used for attribution lines. It is merged with the face 6628 for the cited text belonging to the attribution. 6629 6630 ‘gnus-cite-ignore-quoted-from’ 6631 If non-‘nil’, no citation highlighting will be performed on 6632 lines beginning with ‘>From ’. Those lines may have been 6633 quoted by MTAs in order not to mix up with the envelope From 6634 line. The default value is ‘t’. 6635 6636‘W H s’ 6637 Highlight the signature (‘gnus-article-highlight-signature’). 6638 Everything after ‘gnus-signature-separator’ (*note Article 6639 Signature::) in an article will be considered a signature and will 6640 be highlighted with ‘gnus-signature-face’, which is ‘italic’ by 6641 default. 6642 6643 *Note Customizing Articles::, for how to highlight articles 6644automatically. 6645 6646 6647File: gnus.info, Node: Article Fontisizing, Next: Article Hiding, Prev: Article Highlighting, Up: Article Treatment 6648 66493.18.2 Article Fontisizing 6650-------------------------- 6651 6652People commonly add emphasis to words in news articles by writing things 6653like ‘_this_’ or ‘*this*’ or ‘/this/’. Gnus can make this look nicer by 6654running the article through the ‘W e’ (‘gnus-article-emphasize’) 6655command. 6656 6657 How the emphasis is computed is controlled by the 6658‘gnus-emphasis-alist’ variable. This is an alist where the first 6659element is a regular expression to be matched. The second is a number 6660that says what regular expression grouping is used to find the entire 6661emphasized word. The third is a number that says what regexp grouping 6662should be displayed and highlighted. (The text between these two 6663groupings will be hidden.) The fourth is the face used for 6664highlighting. 6665 6666 (setq gnus-emphasis-alist 6667 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline) 6668 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold))) 6669 6670 By default, there are seven rules, and they use the following faces: 6671‘gnus-emphasis-bold’, ‘gnus-emphasis-italic’, ‘gnus-emphasis-underline’, 6672‘gnus-emphasis-bold-italic’, ‘gnus-emphasis-underline-italic’, 6673‘gnus-emphasis-underline-bold’, and 6674‘gnus-emphasis-underline-bold-italic’. 6675 6676 If you want to change these faces, you can either use ‘M-x 6677customize’, or you can use ‘copy-face’. For instance, if you want to 6678make ‘gnus-emphasis-italic’ use a red face instead, you could say 6679something like: 6680 6681 (copy-face 'red 'gnus-emphasis-italic) 6682 6683 If you want to highlight arbitrary words, you can use the 6684‘gnus-group-highlight-words-alist’ variable, which uses the same syntax 6685as ‘gnus-emphasis-alist’. The ‘highlight-words’ group parameter (*note 6686Group Parameters::) can also be used. 6687 6688 *Note Customizing Articles::, for how to fontize articles 6689automatically. 6690 6691 6692File: gnus.info, Node: Article Hiding, Next: Article Washing, Prev: Article Fontisizing, Up: Article Treatment 6693 66943.18.3 Article Hiding 6695--------------------- 6696 6697Or rather, hiding certain things in each article. There usually is much 6698too much cruft in most articles. 6699 6700‘W W a’ 6701 Do quite a lot of hiding on the article buffer 6702 (‘gnus-article-hide’). In particular, this function will hide 6703 headers, PGP, cited text and the signature. 6704 6705‘W W h’ 6706 Hide headers (‘gnus-article-hide-headers’). *Note Hiding 6707 Headers::. 6708 6709‘W W b’ 6710 Hide headers that aren’t particularly interesting 6711 (‘gnus-article-hide-boring-headers’). *Note Hiding Headers::. 6712 6713‘W W s’ 6714 Hide signature (‘gnus-article-hide-signature’). *Note Article 6715 Signature::. 6716 6717‘W W l’ 6718 Strip list identifiers specified in ‘gnus-list-identifiers’. These 6719 are strings some mailing list servers add to the beginning of all 6720 ‘Subject’ headers—for example, ‘[zebra 4711]’. Any leading ‘Re: ’ 6721 is skipped before stripping. ‘gnus-list-identifiers’ may not 6722 contain ‘\\(..\\)’. 6723 6724 ‘gnus-list-identifiers’ 6725 A regular expression that matches list identifiers to be 6726 removed from subject. This can also be a list of regular 6727 expressions. 6728 6729‘W W P’ 6730 Hide PEM (privacy enhanced messages) cruft 6731 (‘gnus-article-hide-pem’). 6732 6733‘W W B’ 6734 Strip the banner specified by the ‘banner’ group parameter 6735 (‘gnus-article-strip-banner’). This is mainly used to hide those 6736 annoying banners and/or signatures that some mailing lists and 6737 moderated groups adds to all the messages. The way to use this 6738 function is to add the ‘banner’ group parameter (*note Group 6739 Parameters::) to the group you want banners stripped from. The 6740 parameter either be a string, which will be interpreted as a 6741 regular expression matching text to be removed, or the symbol 6742 ‘signature’, meaning that the (last) signature should be removed, 6743 or other symbol, meaning that the corresponding regular expression 6744 in ‘gnus-article-banner-alist’ is used. 6745 6746 For instance: 6747 6748 (setq gnus-article-banner-alist 6749 ((googleGroups . 6750 "^\n*--~--~---------\\(.+\n\\)+"))) 6751 6752 Regardless of a group, you can hide things like advertisements only 6753 when the sender of an article has a certain mail address specified 6754 in ‘gnus-article-address-banner-alist’. 6755 6756 ‘gnus-article-address-banner-alist’ 6757 Alist of mail addresses and banners. Each element has the 6758 form ‘(ADDRESS . BANNER)’, where ADDRESS is a regexp matching 6759 a mail address in the From header, BANNER is one of a symbol 6760 ‘signature’, an item in ‘gnus-article-banner-alist’, a regexp 6761 and ‘nil’. If ADDRESS matches author’s mail address, it will 6762 remove things like advertisements. For example, if a sender 6763 has the mail address ‘hail@yoo-hoo.co.jp’ and there is a 6764 banner something like ‘Do You Yoo-hoo!?’ in all articles he 6765 sends, you can use the following element to remove them: 6766 6767 ("@yoo-hoo\\.co\\.jp\\'" . 6768 "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n") 6769 6770‘W W c’ 6771 Hide citation (‘gnus-article-hide-citation’). Some variables for 6772 customizing the hiding: 6773 6774 ‘gnus-cited-opened-text-button-line-format’ 6775 ‘gnus-cited-closed-text-button-line-format’ 6776 Gnus adds buttons to show where the cited text has been 6777 hidden, and to allow toggle hiding the text. The format of 6778 the variable is specified by these format-like variable (*note 6779 Formatting Variables::). These specs are valid: 6780 6781 ‘b’ 6782 Starting point of the hidden text. 6783 ‘e’ 6784 Ending point of the hidden text. 6785 ‘l’ 6786 Number of characters in the hidden region. 6787 ‘n’ 6788 Number of lines of hidden text. 6789 6790 ‘gnus-cited-lines-visible’ 6791 The number of lines at the beginning of the cited text to 6792 leave shown. This can also be a cons cell with the number of 6793 lines at the top and bottom of the text, respectively, to 6794 remain visible. 6795 6796‘W W C-c’ 6797 6798 Hide citation (‘gnus-article-hide-citation-maybe’) depending on the 6799 following two variables: 6800 6801 ‘gnus-cite-hide-percentage’ 6802 If the cited text is of a bigger percentage than this variable 6803 (default 50), hide the cited text. 6804 6805 ‘gnus-cite-hide-absolute’ 6806 The cited text must have at least this length (default 10) 6807 before it is hidden. 6808 6809‘W W C’ 6810 Hide cited text in articles that aren’t roots 6811 (‘gnus-article-hide-citation-in-followups’). This isn’t very 6812 useful as an interactive command, but might be a handy function to 6813 stick have happen automatically (*note Customizing Articles::). 6814 6815 All these “hiding” commands are toggles, but if you give a negative 6816prefix to these commands, they will show what they have previously 6817hidden. If you give a positive prefix, they will always hide. 6818 6819 Also *note Article Highlighting:: for further variables for citation 6820customization. 6821 6822 *Note Customizing Articles::, for how to hide article elements 6823automatically. 6824 6825 6826File: gnus.info, Node: Article Washing, Next: Article Header, Prev: Article Hiding, Up: Article Treatment 6827 68283.18.4 Article Washing 6829---------------------- 6830 6831We call this “article washing” for a really good reason. Namely, the 6832‘A’ key was taken, so we had to use the ‘W’ key instead. 6833 6834 “Washing” is defined by us as “changing something from something to 6835something else”, but normally results in something looking better. 6836Cleaner, perhaps. 6837 6838 *Note Customizing Articles::, if you want to change how Gnus displays 6839articles by default. 6840 6841‘C-u g’ 6842 This is not really washing, it’s sort of the opposite of washing. 6843 If you type this, you see the article exactly as it exists on disk 6844 or on the server. 6845 6846‘g’ 6847 Force redisplaying of the current article 6848 (‘gnus-summary-show-article’). This is also not really washing. 6849 If you type this, you see the article without any previously 6850 applied interactive Washing functions but with all default 6851 treatments (*note Customizing Articles::). 6852 6853‘W l’ 6854 Remove page breaks from the current article 6855 (‘gnus-summary-stop-page-breaking’). *Note Misc Article::, for 6856 page delimiters. 6857 6858‘W r’ 6859 Do a Caesar rotate (rot13) on the article buffer 6860 (‘gnus-summary-caesar-message’). Unreadable articles that tell you 6861 to read them with Caesar rotate or rot13. (Typically offensive 6862 jokes and such.) 6863 6864 It’s commonly called “rot13” because each letter is rotated 13 6865 positions in the alphabet, e.g., ‘B’ (letter #2) -> ‘O’ (letter 6866 #15). It is sometimes referred to as “Caesar rotate” because 6867 Caesar is rumored to have employed this form of, uh, somewhat weak 6868 encryption. 6869 6870‘W m’ 6871 Morse decode the article buffer (‘gnus-summary-morse-message’). 6872 6873‘W i’ 6874 Decode IDNA encoded domain names in the current articles. IDNA 6875 encoded domain names looks like ‘xn--bar’. If a string remain 6876 unencoded after running invoking this, it is likely an invalid IDNA 6877 string (‘xn--bar’ is invalid). You must have GNU Libidn 6878 (<https://www.gnu.org/software/libidn/>) installed for this command 6879 to work. 6880 6881‘W t’ 6882‘t’ 6883 Toggle whether to display all headers in the article buffer 6884 (‘gnus-summary-toggle-header’). 6885 6886‘W v’ 6887 Toggle whether to display all headers in the article buffer 6888 permanently (‘gnus-summary-verbose-headers’). 6889 6890‘W o’ 6891 Treat overstrike (‘gnus-article-treat-overstrike’). 6892 6893‘W d’ 6894 Treat “Microsoft smartquotes” according to 6895 ‘gnus-article-smartquotes-map’ (‘gnus-article-treat-smartquotes’). 6896 Note that this function guesses whether a character is a smartquote 6897 or not, so it should only be used interactively. 6898 6899 Smartquotes are Microsoft’s unilateral extension to the character 6900 map in an attempt to provide more quoting characters. If you see 6901 something like ‘\222’ or ‘\264’ where you’re expecting some kind of 6902 apostrophe or quotation mark, then try this wash. 6903 6904‘W U’ 6905 Translate many non-ASCII characters into their ASCII equivalents 6906 (‘gnus-article-treat-non-ascii’). This is mostly useful if you’re 6907 on a terminal that has a limited font and doesn’t show accented 6908 characters, “advanced” punctuation, and the like. For instance, 6909 ‘»’ is translated into ‘>>’, and so on. 6910 6911‘W Y f’ 6912 Full deuglify of broken Outlook (Express) articles: Treat 6913 \"smartquotes\", unwrap lines, repair attribution and rearrange 6914 citation (‘gnus-article-outlook-deuglify-article’). 6915 6916‘W Y u’ 6917 Unwrap lines that appear to be wrapped citation lines. You can 6918 control what lines will be unwrapped by frobbing 6919 ‘gnus-outlook-deuglify-unwrap-min’ and 6920 ‘gnus-outlook-deuglify-unwrap-max’, indicating the minimum and 6921 maximum length of an unwrapped citation line. 6922 (‘gnus-article-outlook-unwrap-lines’). 6923 6924‘W Y a’ 6925 Repair a broken attribution line. 6926 (‘gnus-article-outlook-repair-attribution’). 6927 6928‘W Y c’ 6929 Repair broken citations by rearranging the text. 6930 (‘gnus-article-outlook-rearrange-citation’). 6931 6932‘W w’ 6933 Do word wrap (‘gnus-article-fill-cited-article’). 6934 6935 You can give the command a numerical prefix to specify the width to 6936 use when filling. 6937 6938‘W Q’ 6939 Fill long lines (‘gnus-article-fill-long-lines’). 6940 6941‘W C’ 6942 Capitalize the first word in each sentence 6943 (‘gnus-article-capitalize-sentences’). 6944 6945‘W c’ 6946 Translate CRLF pairs (i.e., ‘^M’s on the end of the lines) into LF 6947 (this takes care of DOS line endings), and then translate any 6948 remaining CRs into LF (this takes care of Mac line endings) 6949 (‘gnus-article-remove-cr’). 6950 6951‘W q’ 6952 Treat quoted-printable (‘gnus-article-de-quoted-unreadable’). 6953 Quoted-Printable is one common MIME encoding employed when sending 6954 non-ASCII (i.e., 8-bit) articles. It typically makes strings like 6955 ‘déjà vu’ look like ‘d=E9j=E0 vu’, which doesn’t look very readable 6956 to me. Note that this is usually done automatically by Gnus if the 6957 message in question has a ‘Content-Transfer-Encoding’ header that 6958 says that this encoding has been done. If a prefix is given, a 6959 charset will be asked for. 6960 6961‘W 6’ 6962 Treat base64 (‘gnus-article-de-base64-unreadable’). Base64 is one 6963 common MIME encoding employed when sending non-ASCII (i.e., 8-bit) 6964 articles. Note that this is usually done automatically by Gnus if 6965 the message in question has a ‘Content-Transfer-Encoding’ header 6966 that says that this encoding has been done. If a prefix is given, 6967 a charset will be asked for. 6968 6969‘W Z’ 6970 Treat HZ or HZP (‘gnus-article-decode-HZ’). HZ (or HZP) is one 6971 common encoding employed when sending Chinese articles. It 6972 typically makes strings look like ‘~{<:Ky2;S{#,NpJ)l6HK!#~}’. 6973 6974‘W A’ 6975 Translate ANSI SGR control sequences into overlays or extents 6976 (‘gnus-article-treat-ansi-sequences’). ANSI sequences are used in 6977 some Chinese hierarchies for highlighting. 6978 6979‘W u’ 6980 Remove newlines from within URLs. Some mailers insert newlines 6981 into outgoing email messages to keep lines short. This 6982 reformatting can split long URLs onto multiple lines. Repair those 6983 URLs by removing the newlines (‘gnus-article-unsplit-urls’). 6984 6985‘W h’ 6986 Treat HTML (‘gnus-article-wash-html’). Note that this is usually 6987 done automatically by Gnus if the message in question has a 6988 ‘Content-Type’ header that says that the message is HTML. 6989 6990 If a prefix is given, a charset will be asked for. If it is a 6991 number, the charset defined in 6992 ‘gnus-summary-show-article-charset-alist’ (*note Paging the 6993 Article::) will be used. 6994 6995 The default is to use the function specified by 6996 ‘mm-text-html-renderer’ (*note Display Customization: 6997 (emacs-mime)Display Customization.) to convert the HTML. 6998 Pre-defined functions you can use include: 6999 7000 ‘shr’ 7001 Use Gnus simple html renderer. 7002 7003 ‘gnus-w3m’ 7004 Use Gnus rendered based on w3m. 7005 7006 ‘w3m’ 7007 Use emacs-w3m (http://emacs-w3m.namazu.org/). 7008 7009 ‘w3m-standalone’ 7010 Use w3m (http://w3m.sourceforge.net/). 7011 7012 ‘links’ 7013 Use CHAP Links 7014 (https://almende.github.io/chap-links-library/). 7015 7016 ‘lynx’ 7017 Use Lynx (https://lynx.browser.org/). 7018 7019 ‘html2text’ 7020 Use html2text—a simple HTML converter included with Gnus. 7021 7022‘W b’ 7023 Add clickable buttons to the article (‘gnus-article-add-buttons’). 7024 *Note Article Buttons::. 7025 7026‘W B’ 7027 Add clickable buttons to the article headers 7028 (‘gnus-article-add-buttons-to-head’). 7029 7030‘W p’ 7031 Verify a signed control message (‘gnus-article-verify-x-pgp-sig’). 7032 Control messages such as ‘newgroup’ and ‘checkgroups’ are usually 7033 signed by the hierarchy maintainer. You need to add the PGP public 7034 key of the maintainer to your keyring to verify the message.(1) 7035 7036‘W s’ 7037 Verify a signed (PGP, PGP/MIME or S/MIME) message 7038 (‘gnus-summary-force-verify-and-decrypt’). *Note Security::. 7039 7040‘W a’ 7041 Strip headers like the ‘X-No-Archive’ header from the beginning of 7042 article bodies (‘gnus-article-strip-headers-in-body’). 7043 7044‘W E l’ 7045 Remove all blank lines from the beginning of the article 7046 (‘gnus-article-strip-leading-blank-lines’). 7047 7048‘W E m’ 7049 Replace all blank lines with empty lines and then all multiple 7050 empty lines with a single empty line. 7051 (‘gnus-article-strip-multiple-blank-lines’). 7052 7053‘W E t’ 7054 Remove all blank lines at the end of the article 7055 (‘gnus-article-remove-trailing-blank-lines’). 7056 7057‘W E a’ 7058 Do all the three commands above (‘gnus-article-strip-blank-lines’). 7059 7060‘W E A’ 7061 Remove all blank lines (‘gnus-article-strip-all-blank-lines’). 7062 7063‘W E s’ 7064 Remove all white space from the beginning of all lines of the 7065 article body (‘gnus-article-strip-leading-space’). 7066 7067‘W E e’ 7068 Remove all white space from the end of all lines of the article 7069 body (‘gnus-article-strip-trailing-space’). 7070 7071 *Note Customizing Articles::, for how to wash articles automatically. 7072 7073 ---------- Footnotes ---------- 7074 7075 (1) PGP keys for many hierarchies are available at 7076<https://ftp.isc.org/pub/pgpcontrol/README.html> 7077 7078 7079File: gnus.info, Node: Article Header, Next: Article Buttons, Prev: Article Washing, Up: Article Treatment 7080 70813.18.5 Article Header 7082--------------------- 7083 7084These commands perform various transformations of article header. 7085 7086‘W G u’ 7087 Unfold folded header lines (‘gnus-article-treat-unfold-headers’). 7088 7089‘W G n’ 7090 Fold the ‘Newsgroups’ and ‘Followup-To’ headers 7091 (‘gnus-article-treat-fold-newsgroups’). 7092 7093‘W G f’ 7094 Fold all the message headers (‘gnus-article-treat-fold-headers’). 7095 7096‘W E w’ 7097 Remove excessive whitespace from all headers 7098 (‘gnus-article-remove-leading-whitespace’). 7099 7100 7101File: gnus.info, Node: Article Buttons, Next: Article Button Levels, Prev: Article Header, Up: Article Treatment 7102 71033.18.6 Article Buttons 7104---------------------- 7105 7106People often include references to other stuff in articles, and it would 7107be nice if Gnus could just fetch whatever it is that people talk about 7108with the minimum of fuzz when you hit ‘<RET>’ or use the middle mouse 7109button on these references. 7110 7111 Gnus adds “buttons” to certain standard references by default: 7112Well-formed URLs, mail addresses, Message-IDs, Info links, man pages and 7113Emacs or Gnus related references. This is controlled by two variables, 7114one that handles article bodies and one that handles article heads: 7115 7116‘gnus-button-alist’ 7117 This is an alist where each entry has this form: 7118 7119 (REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) 7120 7121 REGEXP 7122 All text that match this regular expression (case insensitive) 7123 will be considered an external reference. Here’s a typical 7124 regexp that matches embedded URLs: ‘<URL:\\([^\n\r>]*\\)>’. 7125 This can also be a variable containing a regexp, useful 7126 variables to use include ‘gnus-button-url-regexp’ and 7127 ‘gnus-button-mid-or-mail-regexp’. 7128 7129 BUTTON-PAR 7130 Gnus has to know which parts of the matches is to be 7131 highlighted. This is a number that says what sub-expression 7132 of the regexp is to be highlighted. If you want it all 7133 highlighted, you use 0 here. 7134 7135 USE-P 7136 This form will be ‘eval’ed, and if the result is non-‘nil’, 7137 this is considered a match. This is useful if you want extra 7138 sifting to avoid false matches. Often variables named 7139 ‘gnus-button-*-level’ are used here, *Note Article Button 7140 Levels::, but any other form may be used too. 7141 7142 FUNCTION 7143 This function will be called when you click on this button. 7144 7145 DATA-PAR 7146 As with BUTTON-PAR, this is a sub-expression number, but this 7147 one says which part of the match is to be sent as data to 7148 FUNCTION. 7149 7150 So the full entry for buttonizing URLs is then 7151 7152 ("<URL:\\([^\n\r>]*\\)>" 0 t gnus-button-url 1) 7153 7154‘gnus-header-button-alist’ 7155 This is just like the other alist, except that it is applied to the 7156 article head only, and that each entry has an additional element 7157 that is used to say what headers to apply the buttonize coding to: 7158 7159 (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) 7160 7161 HEADER is a regular expression. 7162 71633.18.6.1 Related variables and functions 7164........................................ 7165 7166‘gnus-button-*-level’ 7167 *Note Article Button Levels::. 7168 7169‘gnus-button-url-regexp’ 7170 A regular expression that matches embedded URLs. It is used in the 7171 default values of the variables above. 7172 7173‘gnus-button-man-handler’ 7174 The function to use for displaying man pages. It must take at 7175 least one argument with a string naming the man page. 7176 7177‘gnus-button-mid-or-mail-regexp’ 7178 Regular expression that matches a message ID or a mail address. 7179 7180‘gnus-button-prefer-mid-or-mail’ 7181 This variable determines what to do when the button on a string as 7182 ‘foo123@bar.invalid’ is pushed. Strings like this can be either a 7183 message ID or a mail address. If it is one of the symbols ‘mid’ or 7184 ‘mail’, Gnus will always assume that the string is a message ID or 7185 a mail address, respectively. If this variable is set to the 7186 symbol ‘ask’, always query the user what to do. If it is a 7187 function, this function will be called with the string as its only 7188 argument. The function must return ‘mid’, ‘mail’, ‘invalid’ or 7189 ‘ask’. The default value is the function 7190 ‘gnus-button-mid-or-mail-heuristic’. 7191 7192‘gnus-button-mid-or-mail-heuristic’ 7193 Function that guesses whether its argument is a message ID or a 7194 mail address. Returns ‘mid’ if it’s a message ID, ‘mail’ if it’s a 7195 mail address, ‘ask’ if unsure and ‘invalid’ if the string is 7196 invalid. 7197 7198‘gnus-button-mid-or-mail-heuristic-alist’ 7199 An alist of ‘(RATE . REGEXP)’ pairs used by the function 7200 ‘gnus-button-mid-or-mail-heuristic’. 7201 7202‘gnus-article-button-face’ 7203 Face used on buttons. 7204 7205‘gnus-article-mouse-face’ 7206 Face used when the mouse cursor is over a button. 7207 7208 *Note Customizing Articles::, for how to buttonize articles 7209automatically. 7210 7211 7212File: gnus.info, Node: Article Button Levels, Next: Article Date, Prev: Article Buttons, Up: Article Treatment 7213 72143.18.7 Article button levels 7215---------------------------- 7216 7217The higher the value of the variables ‘gnus-button-*-level’, the more 7218buttons will appear. If the level is zero, no corresponding buttons are 7219displayed. With the default value (which is 5) you should already see 7220quite a lot of buttons. With higher levels, you will see more buttons, 7221but you may also get more false positives. To avoid them, you can set 7222the variables ‘gnus-button-*-level’ local to specific groups (*note 7223Group Parameters::). Here’s an example for the variable 7224‘gnus-parameters’: 7225 7226 ;; increase ‘gnus-button-*-level’ in some groups: 7227 (setq gnus-parameters 7228 '(("\\<\\(emacs\\|gnus\\)\\>" (gnus-button-emacs-level 10)) 7229 ("\\<unix\\>" (gnus-button-man-level 10)) 7230 ("\\<tex\\>" (gnus-button-tex-level 10)))) 7231 7232‘gnus-button-browse-level’ 7233 Controls the display of references to message IDs, mail addresses 7234 and news URLs. Related variables and functions include 7235 ‘gnus-button-url-regexp’, ‘browse-url’, and 7236 ‘browse-url-browser-function’. 7237 7238‘gnus-button-emacs-level’ 7239 Controls the display of Emacs or Gnus references. Related 7240 functions are ‘gnus-button-handle-custom’, 7241 ‘gnus-button-handle-describe-function’, 7242 ‘gnus-button-handle-describe-variable’, 7243 ‘gnus-button-handle-symbol’, ‘gnus-button-handle-describe-key’, 7244 ‘gnus-button-handle-apropos’, ‘gnus-button-handle-apropos-command’, 7245 ‘gnus-button-handle-apropos-variable’, 7246 ‘gnus-button-handle-apropos-documentation’, and 7247 ‘gnus-button-handle-library’. 7248 7249‘gnus-button-man-level’ 7250 Controls the display of references to (Unix) man pages. See 7251 ‘gnus-button-man-handler’. 7252 7253‘gnus-button-message-level’ 7254 Controls the display of message IDs, mail addresses and news URLs. 7255 Related variables and functions include 7256 ‘gnus-button-mid-or-mail-regexp’, ‘gnus-button-prefer-mid-or-mail’, 7257 ‘gnus-button-mid-or-mail-heuristic’, and 7258 ‘gnus-button-mid-or-mail-heuristic-alist’. 7259 7260 7261File: gnus.info, Node: Article Date, Next: Article Display, Prev: Article Button Levels, Up: Article Treatment 7262 72633.18.8 Article Date 7264------------------- 7265 7266The date is most likely generated in some obscure timezone you’ve never 7267heard of, so it’s quite nice to be able to find out what the time was 7268when the article was sent. 7269 7270‘W T u’ 7271 Display the date in UT (aka. GMT, aka ZULU) 7272 (‘gnus-article-date-ut’). 7273 7274‘W T i’ 7275 Display the date in international format, aka. ISO 8601 7276 (‘gnus-article-date-iso8601’). 7277 7278‘W T l’ 7279 Display the date in the local timezone (‘gnus-article-date-local’). 7280 7281‘W T p’ 7282 Display the date in a format that’s easily pronounceable in English 7283 (‘gnus-article-date-english’). 7284 7285‘W T s’ 7286 Display the date using a user-defined format 7287 (‘gnus-article-date-user’). The format is specified by the 7288 ‘gnus-article-time-format’ variable, and is a string that’s passed 7289 to ‘format-time-string’. See the documentation of that variable 7290 for a list of possible format specs. 7291 7292‘W T e’ 7293 Say how much time has elapsed between the article was posted and 7294 now (‘gnus-article-date-lapsed’). It looks something like: 7295 7296 Date: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago 7297 7298 To make this line updated continually, set the 7299 ‘gnus-article-update-date-headers’ variable to the frequency in 7300 seconds (the default is ‘nil’). 7301 7302‘W T o’ 7303 Display the original date (‘gnus-article-date-original’). This can 7304 be useful if you normally use some other conversion function and 7305 are worried that it might be doing something totally wrong. Say, 7306 claiming that the article was posted in 1854. Although something 7307 like that is _totally_ impossible. Don’t you trust me? *titter* 7308 7309 *Note Customizing Articles::, for how to display the date in your 7310preferred format automatically. 7311 7312 7313File: gnus.info, Node: Article Display, Next: Article Signature, Prev: Article Date, Up: Article Treatment 7314 73153.18.9 Article Display 7316---------------------- 7317 7318These commands add various frivolous display gimmicks to the article 7319buffer in Emacs versions that support them. 7320 7321 ‘X-Face’ headers are small black-and-white images supplied by the 7322message headers (*note X-Face::). 7323 7324 ‘Face’ headers are small colored images supplied by the message 7325headers (*note Face::). 7326 7327 Smileys are those little ‘:-)’ symbols that people like to litter 7328their messages with (*note Smileys::). 7329 7330 Picons, on the other hand, reside on your own system, and Gnus will 7331try to match the headers to what you have (*note Picons::). 7332 7333 Gravatars reside on-line and are fetched from 7334<https://en.gravatar.com/> (*note Gravatars::). 7335 7336 All these functions are toggles—if the elements already exist, 7337they’ll be removed. 7338 7339‘W D x’ 7340 Display an ‘X-Face’ in the ‘From’ header. 7341 (‘gnus-article-display-x-face’). 7342 7343‘W D d’ 7344 Display a ‘Face’ in the ‘From’ header. 7345 (‘gnus-article-display-face’). 7346 7347‘W D s’ 7348 Display smileys (‘gnus-treat-smiley’). 7349 7350‘W D f’ 7351 Piconify the ‘From’ header (‘gnus-treat-from-picon’). 7352 7353‘W D m’ 7354 Piconify all mail headers (i.e., ‘Cc’, ‘To’) 7355 (‘gnus-treat-mail-picon’). 7356 7357‘W D n’ 7358 Piconify all news headers (i.e., ‘Newsgroups’ and ‘Followup-To’) 7359 (‘gnus-treat-newsgroups-picon’). 7360 7361‘W D g’ 7362 Gravatarify the ‘From’ header (‘gnus-treat-from-gravatar’). 7363 7364‘W D h’ 7365 Gravatarify all mail headers (i.e., ‘Cc’, ‘To’) 7366 (‘gnus-treat-from-gravatar’). 7367 7368‘W D D’ 7369 Remove all images from the article buffer 7370 (‘gnus-article-remove-images’). 7371 7372‘W D W’ 7373 If you’re reading an HTML article rendered with 7374 ‘gnus-article-html’, then you can insert any blocked images in the 7375 buffer with this command. (‘gnus-html-show-images’). 7376 7377 7378File: gnus.info, Node: Article Signature, Next: Article Miscellanea, Prev: Article Display, Up: Article Treatment 7379 73803.18.10 Article Signature 7381------------------------- 7382 7383Each article is divided into two parts—the head and the body. The body 7384can be divided into a signature part and a text part. The variable that 7385says what is to be considered a signature is ‘gnus-signature-separator’. 7386This is normally the standard ‘^-- $’ as mandated by RFC 5536. However, 7387many people use non-standard signature separators, so this variable can 7388also be a list of regular expressions to be tested, one by one. 7389(Searches are done from the end of the body towards the beginning.) One 7390likely value is: 7391 7392 (setq gnus-signature-separator 7393 '("^-- $" ; The standard 7394 "^-- *$" ; A common mangling 7395 "^-------*$" ; Many people just use a looong 7396 ; line of dashes. Shame! 7397 "^ *--------*$" ; Double-shame! 7398 "^________*$" ; Underscores are also popular 7399 "^========*$")) ; Pervert! 7400 7401 The more permissive you are, the more likely it is that you’ll get 7402false positives. 7403 7404 ‘gnus-signature-limit’ provides a limit to what is considered a 7405signature when displaying articles. 7406 7407 1. If it is an integer, no signature may be longer (in characters) 7408 than that integer. 7409 2. If it is a floating point number, no signature may be longer (in 7410 lines) than that number. 7411 3. If it is a function, the function will be called without any 7412 parameters, and if it returns ‘nil’, there is no signature in the 7413 buffer. 7414 4. If it is a string, it will be used as a regexp. If it matches, the 7415 text in question is not a signature. 7416 7417 This variable can also be a list where the elements may be of the 7418types listed above. Here’s an example: 7419 7420 (setq gnus-signature-limit 7421 '(200.0 "^---*Forwarded article")) 7422 7423 This means that if there are more than 200 lines after the signature 7424separator, or the text after the signature separator is matched by the 7425regular expression ‘^---*Forwarded article’, then it isn’t a signature 7426after all. 7427 7428 7429File: gnus.info, Node: Article Miscellanea, Prev: Article Signature, Up: Article Treatment 7430 74313.18.11 Article Miscellanea 7432--------------------------- 7433 7434‘A t’ 7435 Translate the article from one language to another 7436 (‘gnus-article-babel’). 7437 7438 7439File: gnus.info, Node: MIME Commands, Next: Charsets, Prev: Article Treatment, Up: Summary Buffer 7440 74413.19 MIME Commands 7442================== 7443 7444The following commands all understand the numerical prefix. For 7445instance, ‘3 K v’ means “view the third MIME part”. 7446 7447‘b’ 7448‘K v’ 7449 View the MIME part. 7450 7451‘K o’ 7452 Save the MIME part. 7453 7454‘K O’ 7455 Prompt for a file name, then save the MIME part and strip it from 7456 the article. The stripped MIME object will be referred via the 7457 message/external-body MIME type. 7458 7459‘K r’ 7460 Replace the MIME part with an external body. 7461 7462‘K d’ 7463 Delete the MIME part and add some information about the removed 7464 part. 7465 7466‘K c’ 7467 Copy the MIME part. 7468 7469‘K e’ 7470 View the MIME part externally. 7471 7472‘K i’ 7473 View the MIME part internally. 7474 7475‘K |’ 7476 Pipe the MIME part to an external command. 7477 7478 The rest of these MIME commands do not use the numerical prefix in 7479the same manner: 7480 7481‘K H’ 7482 View ‘text/html’ parts of the current article with a WWW browser. 7483 Inline images embedded in a message using the ‘cid’ scheme, as they 7484 are generally considered to be safe, will be processed properly. 7485 The message header is added to the beginning of every HTML part 7486 unless the prefix argument is given. 7487 7488 Warning: Spammers use links to images (using the ‘http’ scheme) in 7489 HTML articles to verify whether you have read the message. As this 7490 command passes the HTML content to the browser without eliminating 7491 these “web bugs” you should only use it for mails from trusted 7492 senders. 7493 7494 This command creates temporary files to pass HTML contents 7495 including images if any to the browser, and deletes them when 7496 exiting the group (if you want). 7497 7498‘K b’ 7499 Make all the MIME parts have buttons in front of them. This is 7500 mostly useful if you wish to save (or perform other actions) on 7501 inlined parts. 7502 7503‘W M h’ 7504 Display MIME part buttons in the end of the header of an article 7505 (‘gnus-mime-buttonize-attachments-in-header’). This command 7506 toggles the display. Note that buttons to be added to the header 7507 are only the ones that aren’t inlined in the body. If you want 7508 those buttons always to be displayed, set 7509 ‘gnus-mime-display-attachment-buttons-in-header’ to non-‘nil’. The 7510 default is ‘t’. To change the appearance of buttons, customize 7511 ‘gnus-header-face-alist’. 7512 7513‘K m’ 7514 Some multipart messages are transmitted with missing or faulty 7515 headers. This command will attempt to “repair” these messages so 7516 that they can be viewed in a more pleasant manner 7517 (‘gnus-summary-repair-multipart’). 7518 7519‘X m’ 7520 Save all parts matching a MIME type to a directory 7521 (‘gnus-summary-save-parts’). Understands the process/prefix 7522 convention (*note Process/Prefix::). 7523 7524‘M-t’ 7525 Toggle the buttonized display of the article buffer 7526 (‘gnus-summary-toggle-display-buttonized’). 7527 7528‘W M w’ 7529 Decode RFC 2047-encoded words in the article headers 7530 (‘gnus-article-decode-mime-words’). 7531 7532‘W M c’ 7533 Decode encoded article bodies as well as charsets 7534 (‘gnus-article-decode-charset’). 7535 7536 This command looks in the ‘Content-Type’ header to determine the 7537 charset. If there is no such header in the article, you can give 7538 it a prefix, which will prompt for the charset to decode as. In 7539 regional groups where people post using some common encoding (but 7540 do not include MIME headers), you can set the ‘charset’ group/topic 7541 parameter to the required charset (*note Group Parameters::). 7542 7543‘W M v’ 7544 View all the MIME parts in the current article 7545 (‘gnus-mime-view-all-parts’). 7546 7547 Relevant variables: 7548 7549‘gnus-ignored-mime-types’ 7550 This is a list of regexps. MIME types that match a regexp from 7551 this list will be completely ignored by Gnus. The default value is 7552 ‘nil’. 7553 7554 To have all Vcards be ignored, you’d say something like this: 7555 7556 (setq gnus-ignored-mime-types 7557 '("text/x-vcard")) 7558 7559‘gnus-article-loose-mime’ 7560 If non-‘nil’, Gnus won’t require the ‘MIME-Version’ header before 7561 interpreting the message as a MIME message. This helps when 7562 reading messages from certain broken mail user agents. The default 7563 is ‘t’. 7564 7565‘gnus-article-emulate-mime’ 7566 There are other, non-MIME encoding methods used. The most common 7567 is ‘uuencode’, but yEncode is also getting to be popular. If this 7568 variable is non-‘nil’, Gnus will look in message bodies to see if 7569 it finds these encodings, and if so, it’ll run them through the 7570 Gnus MIME machinery. The default is ‘t’. Only single-part yEnc 7571 encoded attachments can be decoded. There’s no support for 7572 encoding in Gnus. 7573 7574‘gnus-unbuttonized-mime-types’ 7575 This is a list of regexps. MIME types that match a regexp from 7576 this list won’t have MIME buttons inserted unless they aren’t 7577 displayed or this variable is overridden by 7578 ‘gnus-buttonized-mime-types’. The default value is ‘(".*/.*")’. 7579 This variable is only used when ‘gnus-inhibit-mime-unbuttonizing’ 7580 is ‘nil’. 7581 7582‘gnus-buttonized-mime-types’ 7583 This is a list of regexps. MIME types that match a regexp from 7584 this list will have MIME buttons inserted unless they aren’t 7585 displayed. This variable overrides ‘gnus-unbuttonized-mime-types’. 7586 The default value is ‘nil’. This variable is only used when 7587 ‘gnus-inhibit-mime-unbuttonizing’ is ‘nil’. 7588 7589 E.g., to see security buttons but no other buttons, you could set 7590 this variable to ‘("multipart/signed")’ and leave 7591 ‘gnus-unbuttonized-mime-types’ at the default value. 7592 7593 You could also add ‘"multipart/alternative"’ to this list to 7594 display radio buttons that allow you to choose one of two media 7595 types those mails include. See also ‘mm-discouraged-alternatives’ 7596 (*note Display Customization: (emacs-mime)Display Customization.). 7597 7598‘gnus-inhibit-mime-unbuttonizing’ 7599 If this is non-‘nil’, then all MIME parts get buttons. The default 7600 value is ‘nil’. 7601 7602‘gnus-article-mime-part-function’ 7603 For each MIME part, this function will be called with the MIME 7604 handle as the parameter. The function is meant to be used to allow 7605 users to gather information from the article (e.g., add Vcard info 7606 to the bbdb database) or to do actions based on parts (e.g., 7607 automatically save all jpegs into some directory). 7608 7609 Here’s an example function the does the latter: 7610 7611 (defun my-save-all-jpeg-parts (handle) 7612 (when (equal (car (mm-handle-type handle)) "image/jpeg") 7613 (with-temp-buffer 7614 (insert (mm-get-part handle)) 7615 (write-region (point-min) (point-max) 7616 (read-file-name "Save jpeg to: "))))) 7617 (setq gnus-article-mime-part-function 7618 'my-save-all-jpeg-parts) 7619 7620‘gnus-mime-multipart-functions’ 7621 Alist of MIME multipart types and functions to handle them. 7622 7623‘gnus-mime-display-multipart-alternative-as-mixed’ 7624 Display "multipart/alternative" parts as "multipart/mixed". 7625 7626‘gnus-mime-display-multipart-related-as-mixed’ 7627 Display "multipart/related" parts as "multipart/mixed". 7628 7629 If displaying ‘text/html’ is discouraged, see 7630 ‘mm-discouraged-alternatives’, images or other material inside a 7631 "multipart/related" part might be overlooked when this variable is 7632 ‘nil’. *note Display Customization: (emacs-mime)Display 7633 Customization. 7634 7635‘gnus-mime-display-multipart-as-mixed’ 7636 Display "multipart" parts as "multipart/mixed". If ‘t’, it 7637 overrides ‘nil’ values of 7638 ‘gnus-mime-display-multipart-alternative-as-mixed’ and 7639 ‘gnus-mime-display-multipart-related-as-mixed’. 7640 7641‘mm-file-name-rewrite-functions’ 7642 List of functions used for rewriting file names of MIME parts. 7643 Each function takes a file name as input and returns a file name. 7644 7645 Ready-made functions include 7646 ‘mm-file-name-delete-whitespace’, ‘mm-file-name-trim-whitespace’, 7647 ‘mm-file-name-collapse-whitespace’, and 7648 ‘mm-file-name-replace-whitespace’. The later uses the value of the 7649 variable ‘mm-file-name-replace-whitespace’ to replace each 7650 whitespace character in a file name with that string; default value 7651 is ‘"_"’ (a single underscore). 7652 7653 The standard functions ‘capitalize’, ‘downcase’, ‘upcase’, and 7654 ‘upcase-initials’ may be useful, too. 7655 7656 Everybody knows that whitespace characters in file names are evil, 7657 except those who don’t know. If you receive lots of attachments 7658 from such unenlightened users, you can make live easier by adding 7659 7660 (setq mm-file-name-rewrite-functions 7661 '(mm-file-name-trim-whitespace 7662 mm-file-name-collapse-whitespace 7663 mm-file-name-replace-whitespace)) 7664 7665 to your ‘~/.gnus.el’ file. 7666 7667 7668File: gnus.info, Node: Charsets, Next: Article Commands, Prev: MIME Commands, Up: Summary Buffer 7669 76703.20 Charsets 7671============= 7672 7673People use different charsets, and we have MIME to let us know what 7674charsets they use. Or rather, we wish we had. Many people use 7675newsreaders and mailers that do not understand or use MIME, and just 7676send out messages without saying what character sets they use. To help 7677a bit with this, some local news hierarchies have policies that say what 7678character set is the default. For instance, the ‘fj’ hierarchy uses 7679‘iso-2022-jp’. 7680 7681 This knowledge is encoded in the ‘gnus-group-charset-alist’ variable, 7682which is an alist of regexps (use the first item to match full group 7683names) and default charsets to be used when reading these groups. 7684 7685 In addition, some people do use soi-disant MIME-aware agents that 7686aren’t. These blithely mark messages as being in ‘iso-8859-1’ even if 7687they really are in ‘koi-8’. To help here, the 7688‘gnus-newsgroup-ignored-charsets’ variable can be used. The charsets 7689that are listed here will be ignored. The variable can be set on a 7690group-by-group basis using the group parameters (*note Group 7691Parameters::). The default value is ‘(unknown-8bit x-unknown)’, which 7692includes values some agents insist on having in there. 7693 7694 When posting, ‘gnus-group-posting-charset-alist’ is used to determine 7695which charsets should not be encoded using the MIME encodings. For 7696instance, some hierarchies discourage using quoted-printable header 7697encoding. 7698 7699 This variable is an alist of regexps and permitted unencoded charsets 7700for posting. Each element of the alist has the form ‘(’TEST HEADER 7701BODY-LIST‘)’, where: 7702 7703TEST 7704 is either a regular expression matching the newsgroup header or a 7705 variable to query, 7706HEADER 7707 is the charset which may be left unencoded in the header (‘nil’ 7708 means encode all charsets), 7709BODY-LIST 7710 is a list of charsets which may be encoded using 8bit 7711 content-transfer encoding in the body, or one of the special values 7712 ‘nil’ (always encode using quoted-printable) or ‘t’ (always use 7713 8bit). 7714 7715 *Note Encoding Customization: (emacs-mime)Encoding Customization, for 7716additional variables that control which MIME charsets are used when 7717sending messages. 7718 7719 Other charset tricks that may be useful, although not Gnus-specific: 7720 7721 If there are several MIME charsets that encode the same Emacs 7722charset, you can choose what charset to use by saying the following: 7723 7724 (put-charset-property 'cyrillic-iso8859-5 7725 'preferred-coding-system 'koi8-r) 7726 7727 This means that Russian will be encoded using ‘koi8-r’ instead of the 7728default ‘iso-8859-5’ MIME charset. 7729 7730 If you want to read messages in ‘koi8-u’, you can cheat and say 7731 7732 (define-coding-system-alias 'koi8-u 'koi8-r) 7733 7734 This will almost do the right thing. 7735 7736 And finally, to read charsets like ‘windows-1251’, you can say 7737something like 7738 7739 (codepage-setup 1251) 7740 (define-coding-system-alias 'windows-1251 'cp1251) 7741 7742 7743File: gnus.info, Node: Article Commands, Next: Summary Sorting, Prev: Charsets, Up: Summary Buffer 7744 77453.21 Article Commands 7746===================== 7747 7748‘A P’ 7749 Generate and print a PostScript image of the article buffer 7750 (‘gnus-summary-print-article’). ‘gnus-ps-print-hook’ will be run 7751 just before printing the buffer. An alternative way to print 7752 article is to use Muttprint (*note Saving Articles::). 7753 7754‘A C’ 7755 If ‘<backend>-fetch-partial-articles’ is non-‘nil’, Gnus will fetch 7756 partial articles, if the backend it fetches them from supports it. 7757 Currently only ‘nnimap’ does. If you’re looking at a partial 7758 article, and want to see the complete article instead, then the ‘A 7759 C’ command (‘gnus-summary-show-complete-article’) will do so. 7760 7761‘w’ 7762‘A w’ 7763 Scan the article buffer for links, and offer them to the user for 7764 browsing with ‘browse-url’. With a prefix argument, browse with 7765 ‘browse-url-secondary-browser-function’ instead. 7766 7767 7768File: gnus.info, Node: Summary Sorting, Next: Finding the Parent, Prev: Article Commands, Up: Summary Buffer 7769 77703.22 Summary Sorting 7771==================== 7772 7773You can have the summary buffer sorted in various ways, even though I 7774can’t really see why you’d want that. 7775 7776‘C-c C-s C-n’ 7777 Sort by article number (‘gnus-summary-sort-by-number’). 7778 7779‘C-c C-s C-m C-n’ 7780 Sort by most recent article number 7781 (‘gnus-summary-sort-by-most-recent-number’). 7782 7783‘C-c C-s C-a’ 7784 Sort by author (‘gnus-summary-sort-by-author’). 7785 7786‘C-c C-s C-t’ 7787 Sort by recipient (‘gnus-summary-sort-by-recipient’). 7788 7789‘C-c C-s C-s’ 7790 Sort by subject (‘gnus-summary-sort-by-subject’). 7791 7792‘C-c C-s C-d’ 7793 Sort by date (‘gnus-summary-sort-by-date’). 7794 7795‘C-c C-s C-m C-d’ 7796 Sort by most recent date (‘gnus-summary-sort-by-most-recent-date’). 7797 7798‘C-c C-s C-l’ 7799 Sort by lines (‘gnus-summary-sort-by-lines’). 7800 7801‘C-c C-s C-c’ 7802 Sort by article length (‘gnus-summary-sort-by-chars’). 7803 7804‘C-c C-s C-m C-m’ 7805 Sort by article “readedness” marks (‘gnus-summary-sort-by-marks’). 7806 7807‘C-c C-s C-i’ 7808 Sort by score (‘gnus-summary-sort-by-score’). 7809 7810‘C-c C-s C-r’ 7811 Randomize (‘gnus-summary-sort-by-random’). 7812 7813‘C-c C-s C-o’ 7814 Sort using the default sorting method 7815 (‘gnus-summary-sort-by-original’). 7816 7817 These functions will work both when you use threading and when you 7818don’t use threading. In the latter case, all summary lines will be 7819sorted, line by line. In the former case, sorting will be done on a 7820root-by-root basis, which might not be what you were looking for. To 7821toggle whether to use threading, type ‘T T’ (*note Thread Commands::). 7822 7823 If a prefix argument if given, the sort order is reversed. 7824 7825 7826File: gnus.info, Node: Finding the Parent, Next: Alternative Approaches, Prev: Summary Sorting, Up: Summary Buffer 7827 78283.23 Finding the Parent 7829======================= 7830 7831‘^’ 7832 If you’d like to read the parent of the current article, and it is 7833 not displayed in the summary buffer, you might still be able to. 7834 That is, if the current group is fetched by NNTP, the parent hasn’t 7835 expired and the ‘References’ in the current article are not 7836 mangled, you can just press ‘^’ or ‘A r’ 7837 (‘gnus-summary-refer-parent-article’). If everything goes well, 7838 you’ll get the parent. If the parent is already displayed in the 7839 summary buffer, point will just move to this article. 7840 7841 If given a positive numerical prefix, fetch that many articles back 7842 into the ancestry. If given a negative numerical prefix, fetch 7843 just that ancestor. So if you say ‘3 ^’, Gnus will fetch the 7844 parent, the grandparent and the great-grandparent of the current 7845 article. If you say ‘-3 ^’, Gnus will only fetch the 7846 great-grandparent of the current article. 7847 7848‘A R (Summary)’ 7849 Fetch all articles mentioned in the ‘References’ header of the 7850 article (‘gnus-summary-refer-references’). 7851 7852‘A T (Summary)’ 7853 Display the full thread where the current article appears 7854 (‘gnus-summary-refer-thread’). This command has to fetch all the 7855 headers in the current group to work, so it usually takes a while. 7856 If you do it often, you may consider setting 7857 ‘gnus-fetch-old-headers’ to ‘invisible’ (*note Filling In 7858 Threads::). This won’t have any visible effects normally, but 7859 it’ll make this command work a whole lot faster. Of course, it’ll 7860 make group entry somewhat slow. 7861 7862 The ‘gnus-refer-thread-limit’ variable says how many old (i.e., 7863 articles before the first displayed in the current group) headers 7864 to fetch when doing this command. The default is 200. If ‘t’, all 7865 the available headers will be fetched. This variable can be 7866 overridden by giving the ‘A T’ command a numerical prefix. 7867 7868‘M-^ (Summary)’ 7869 You can also ask Gnus for an arbitrary article, no matter what 7870 group it belongs to. ‘M-^’ (‘gnus-summary-refer-article’) will ask 7871 you for a ‘Message-ID’, which is one of those long, hard-to-read 7872 thingies that look something like ‘<38o6up$6f2@hymir.ifi.uio.no>’. 7873 You have to get it all exactly right. No fuzzy searches, I’m 7874 afraid. 7875 7876 Gnus looks for the ‘Message-ID’ in the headers that have already 7877 been fetched, but also tries all the select methods specified by 7878 ‘gnus-refer-article-method’ if it is not found. 7879 7880 If the group you are reading is located on a back end that does not 7881support fetching by ‘Message-ID’ very well (like ‘nnspool’), you can set 7882‘gnus-refer-article-method’ to an NNTP method. It would, perhaps, be 7883best if the NNTP server you consult is the one updating the spool you 7884are reading from, but that’s not really necessary. 7885 7886 It can also be a list of select methods, as well as the special 7887symbol ‘current’, which means to use the current select method. If it 7888is a list, Gnus will try all the methods in the list until it finds a 7889match. 7890 7891 Here’s an example setting that will first try the current method, and 7892then ask Google if that fails: 7893 7894 (setq gnus-refer-article-method 7895 '(current 7896 (nnweb "google" (nnweb-type google)))) 7897 7898 Most of the mail back ends support fetching by ‘Message-ID’, but do 7899not do a particularly excellent job at it. That is, ‘nnmbox’, 7900‘nnbabyl’, ‘nnmaildir’, ‘nnml’, are able to locate articles from any 7901groups, while ‘nnfolder’, and ‘nnimap’ are only able to locate articles 7902that have been posted to the current group. ‘nnmh’ does not support 7903this at all. 7904 7905 Fortunately, the special ‘nnregistry’ back end is able to locate 7906articles in any groups, regardless of their back end (*note fetching by 7907‘Message-ID’ using the registry: Registry Article Refer Method.). 7908 7909 7910File: gnus.info, Node: Alternative Approaches, Next: Tree Display, Prev: Finding the Parent, Up: Summary Buffer 7911 79123.24 Alternative Approaches 7913=========================== 7914 7915Different people like to read news using different methods. This being 7916Gnus, we offer a small selection of minor modes for the summary buffers. 7917 7918* Menu: 7919 7920* Pick and Read:: First mark articles and then read them. 7921* Binary Groups:: Auto-decode all articles. 7922 7923 7924File: gnus.info, Node: Pick and Read, Next: Binary Groups, Up: Alternative Approaches 7925 79263.24.1 Pick and Read 7927-------------------- 7928 7929Some newsreaders (like ‘nn’ and, uhm, ‘Netnews’ on VM/CMS) use a 7930two-phased reading interface. The user first marks in a summary buffer 7931the articles she wants to read. Then she starts reading the articles 7932with just an article buffer displayed. 7933 7934 Gnus provides a summary buffer minor mode that allows 7935this—‘gnus-pick-mode’. This basically means that a few process mark 7936commands become one-keystroke commands to allow easy marking, and it 7937provides one additional command for switching to the summary buffer. 7938 7939 Here are the available keystrokes when using pick mode: 7940 7941‘.’ 7942 Pick the article or thread on the current line 7943 (‘gnus-pick-article-or-thread’). If the variable 7944 ‘gnus-thread-hide-subtree’ is true, then this key selects the 7945 entire thread when used at the first article of the thread. 7946 Otherwise, it selects just the article. If given a numerical 7947 prefix, go to that thread or article and pick it. (The line number 7948 is normally displayed at the beginning of the summary pick lines.) 7949 7950‘<SPC>’ 7951 Scroll the summary buffer up one page (‘gnus-pick-next-page’). If 7952 at the end of the buffer, start reading the picked articles. 7953 7954‘u’ 7955 Unpick the thread or article 7956 (‘gnus-pick-unmark-article-or-thread’). If the variable 7957 ‘gnus-thread-hide-subtree’ is true, then this key unpicks the 7958 thread if used at the first article of the thread. Otherwise it 7959 unpicks just the article. You can give this key a numerical prefix 7960 to unpick the thread or article at that line. 7961 7962‘<RET>’ 7963 Start reading the picked articles (‘gnus-pick-start-reading’). If 7964 given a prefix, mark all unpicked articles as read first. If 7965 ‘gnus-pick-display-summary’ is non-‘nil’, the summary buffer will 7966 still be visible when you are reading. 7967 7968 All the normal summary mode commands are still available in the 7969pick-mode, with the exception of ‘u’. However ‘!’ is available which is 7970mapped to the same function ‘gnus-summary-tick-article-forward’. 7971 7972 If this sounds like a good idea to you, you could say: 7973 7974 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) 7975 7976 ‘gnus-pick-mode-hook’ is run in pick minor mode buffers. 7977 7978 If ‘gnus-mark-unpicked-articles-as-read’ is non-‘nil’, mark all 7979unpicked articles as read. The default is ‘nil’. 7980 7981 The summary line format in pick mode is slightly different from the 7982standard format. At the beginning of each line the line number is 7983displayed. The pick mode line format is controlled by the 7984‘gnus-summary-pick-line-format’ variable (*note Formatting Variables::). 7985It accepts the same format specs that ‘gnus-summary-line-format’ does 7986(*note Summary Buffer Lines::). 7987 7988 7989File: gnus.info, Node: Binary Groups, Prev: Pick and Read, Up: Alternative Approaches 7990 79913.24.2 Binary Groups 7992-------------------- 7993 7994If you spend much time in binary groups, you may grow tired of hitting 7995‘X u’, ‘n’, ‘<RET>’ all the time. ‘M-x gnus-binary-mode’ is a minor 7996mode for summary buffers that makes all ordinary Gnus article selection 7997functions uudecode series of articles and display the result instead of 7998just displaying the articles the normal way. 7999 8000 The only way, in fact, to see the actual articles is the ‘g’ command, 8001when you have turned on this mode (‘gnus-binary-show-article’). 8002 8003 ‘gnus-binary-mode-hook’ is called in binary minor mode buffers. 8004 8005 8006File: gnus.info, Node: Tree Display, Next: Mail Group Commands, Prev: Alternative Approaches, Up: Summary Buffer 8007 80083.25 Tree Display 8009================= 8010 8011If you don’t like the normal Gnus summary display, you might try setting 8012‘gnus-use-trees’ to ‘t’. This will create (by default) an additional 8013“tree buffer”. You can execute all summary mode commands in the tree 8014buffer. 8015 8016 There are a few variables to customize the tree display, of course: 8017 8018‘gnus-tree-mode-hook’ 8019 A hook called in all tree mode buffers. 8020 8021‘gnus-tree-mode-line-format’ 8022 A format string for the mode bar in the tree mode buffers (*note 8023 Mode Line Formatting::). The default is ‘Gnus: %%b %S %Z’. For a 8024 list of valid specs, *note Summary Buffer Mode Line::. 8025 8026‘gnus-selected-tree-face’ 8027 Face used for highlighting the selected article in the tree buffer. 8028 The default is ‘modeline’. 8029 8030‘gnus-tree-line-format’ 8031 A format string for the tree nodes. The name is a bit of a 8032 misnomer, though—it doesn’t define a line, but just the node. The 8033 default value is ‘%(%[%3,3n%]%)’, which displays the first three 8034 characters of the name of the poster. It is vital that all nodes 8035 are of the same length, so you _must_ use ‘%4,4n’-like specifiers. 8036 8037 Valid specs are: 8038 8039 ‘n’ 8040 The name of the poster. 8041 ‘f’ 8042 The ‘From’ header. 8043 ‘N’ 8044 The number of the article. 8045 ‘[’ 8046 The opening bracket. 8047 ‘]’ 8048 The closing bracket. 8049 ‘s’ 8050 The subject. 8051 8052 *Note Formatting Variables::. 8053 8054 Variables related to the display are: 8055 8056 ‘gnus-tree-brackets’ 8057 This is used for differentiating between “real” articles and 8058 “sparse” articles. The format is 8059 ((REAL-OPEN . REAL-CLOSE) 8060 (SPARSE-OPEN . SPARSE-CLOSE) 8061 (DUMMY-OPEN . DUMMY-CLOSE)) 8062 and the default is ‘((?[ . ?]) (?( . ?)) (?{ . ?}) (?< . 8063 ?>))’. 8064 8065 ‘gnus-tree-parent-child-edges’ 8066 This is a list that contains the characters used for 8067 connecting parent nodes to their children. The default is 8068 ‘(?- ?\\ ?|)’. 8069 8070‘gnus-tree-minimize-window’ 8071 If this variable is non-‘nil’, Gnus will try to keep the tree 8072 buffer as small as possible to allow more room for the other Gnus 8073 windows. If this variable is a number, the tree buffer will never 8074 be higher than that number. The default is ‘t’. Note that if you 8075 have several windows displayed side-by-side in a frame and the tree 8076 buffer is one of these, minimizing the tree window will also resize 8077 all other windows displayed next to it. 8078 8079 You may also wish to add the following hook to keep the window 8080 minimized at all times: 8081 8082 (add-hook 'gnus-configure-windows-hook 8083 'gnus-tree-perhaps-minimize) 8084 8085‘gnus-generate-tree-function’ 8086 The function that actually generates the thread tree. Two 8087 predefined functions are available: ‘gnus-generate-horizontal-tree’ 8088 and ‘gnus-generate-vertical-tree’ (which is the default). 8089 8090 Here’s an example from a horizontal tree buffer: 8091 8092 {***}-(***)-[odd]-[Gun] 8093 | \[Jan] 8094 | \[odd]-[Eri] 8095 | \(***)-[Eri] 8096 | \[odd]-[Paa] 8097 \[Bjo] 8098 \[Gun] 8099 \[Gun]-[Jor] 8100 8101 Here’s the same thread displayed in a vertical tree buffer: 8102 8103 {***} 8104 |--------------------------\-----\-----\ 8105 (***) [Bjo] [Gun] [Gun] 8106 |--\-----\-----\ | 8107 [odd] [Jan] [odd] (***) [Jor] 8108 | | |--\ 8109 [Gun] [Eri] [Eri] [odd] 8110 | 8111 [Paa] 8112 8113 If you’re using horizontal trees, it might be nice to display the 8114trees side-by-side with the summary buffer. You could add something 8115like the following to your ‘~/.gnus.el’ file: 8116 8117 (setq gnus-use-trees t 8118 gnus-generate-tree-function 'gnus-generate-horizontal-tree 8119 gnus-tree-minimize-window nil) 8120 (gnus-add-configuration 8121 '(article 8122 (vertical 1.0 8123 (horizontal 0.25 8124 (summary 0.75 point) 8125 (tree 1.0)) 8126 (article 1.0)))) 8127 8128 *Note Window Layout::. 8129 8130 8131File: gnus.info, Node: Mail Group Commands, Next: Various Summary Stuff, Prev: Tree Display, Up: Summary Buffer 8132 81333.26 Mail Group Commands 8134======================== 8135 8136Some commands only make sense in mail groups. If these commands are 8137invalid in the current group, they will raise a hell and let you know. 8138 8139 All these commands (except the expiry and edit commands) use the 8140process/prefix convention (*note Process/Prefix::). 8141 8142‘B e’ 8143 Run all expirable articles in the current group through the expiry 8144 process (‘gnus-summary-expire-articles’). That is, delete all 8145 expirable articles in the group that have been around for a while. 8146 (*note Expiring Mail::). 8147 8148‘B C-M-e’ 8149 Delete all the expirable articles in the group 8150 (‘gnus-summary-expire-articles-now’). This means that *all* 8151 articles eligible for expiry in the current group will disappear 8152 forever into that big ‘/dev/null’ in the sky. 8153 8154‘B <DEL>’ 8155 Delete the mail article. This is “delete” as in “delete it from 8156 your disk forever and ever, never to return again.” Use with 8157 caution. (‘gnus-summary-delete-article’). 8158 8159‘B m’ 8160 Move the article from one mail group to another 8161 (‘gnus-summary-move-article’). Marks will be preserved if 8162 ‘gnus-preserve-marks’ is non-‘nil’ (which is the default). 8163 8164‘B c’ 8165 Copy the article from one group (mail group or not) to a mail group 8166 (‘gnus-summary-copy-article’). Marks will be preserved if 8167 ‘gnus-preserve-marks’ is non-‘nil’ (which is the default). 8168 8169‘B B’ 8170 Crosspost the current article to some other group 8171 (‘gnus-summary-crosspost-article’). This will create a new copy of 8172 the article in the other group, and the Xref headers of the article 8173 will be properly updated. 8174 8175‘B i’ 8176 Import an arbitrary file into the current mail newsgroup 8177 (‘gnus-summary-import-article’). You will be prompted for a file 8178 name, a ‘From’ header and a ‘Subject’ header. 8179 8180‘B I’ 8181 Create an empty article in the current mail newsgroups 8182 (‘gnus-summary-create-article’). You will be prompted for a ‘From’ 8183 header and a ‘Subject’ header. 8184 8185‘B r’ 8186 Respool the mail article (‘gnus-summary-respool-article’). 8187 ‘gnus-summary-respool-default-method’ will be used as the default 8188 select method when respooling. This variable is ‘nil’ by default, 8189 which means that the current group select method will be used 8190 instead. Marks will be preserved if ‘gnus-preserve-marks’ is 8191 non-‘nil’ (which is the default). 8192 8193‘B w’ 8194‘e’ 8195 Edit the current article (‘gnus-summary-edit-article’). To finish 8196 editing and make the changes permanent, type ‘C-c C-c’ 8197 (‘gnus-summary-edit-article-done’). If you give a prefix to the 8198 ‘C-c C-c’ command, Gnus won’t re-highlight the article. 8199 8200‘B q’ 8201 If you want to re-spool an article, you might be curious as to what 8202 group the article will end up in before you do the re-spooling. 8203 This command will tell you (‘gnus-summary-respool-query’). 8204 8205‘B t’ 8206 Similarly, this command will display all fancy splitting patterns 8207 used when respooling, if any (‘gnus-summary-respool-trace’). 8208 8209‘B p’ 8210 Some people have a tendency to send you “courtesy” copies when they 8211 follow up to articles you have posted. These usually have a 8212 ‘Newsgroups’ header in them, but not always. This command 8213 (‘gnus-summary-article-posted-p’) will try to fetch the current 8214 article from your news server (or rather, from 8215 ‘gnus-refer-article-method’ or ‘gnus-select-method’) and will 8216 report back whether it found the article or not. Even if it says 8217 that it didn’t find the article, it may have been posted 8218 anyway—mail propagation is much faster than news propagation, and 8219 the news copy may just not have arrived yet. 8220 8221‘K E’ 8222 Encrypt the body of an article (‘gnus-article-encrypt-body’). The 8223 body is encrypted with the encryption protocol specified by the 8224 variable ‘gnus-article-encrypt-protocol’. 8225 8226 If you move (or copy) articles regularly, you might wish to have Gnus 8227suggest where to put the articles. ‘gnus-move-split-methods’ is a 8228variable that uses the same syntax as ‘gnus-split-methods’ (*note Saving 8229Articles::). You may customize that variable to create suggestions you 8230find reasonable. (Note that ‘gnus-move-split-methods’ uses group names 8231where ‘gnus-split-methods’ uses file names.) 8232 8233 (setq gnus-move-split-methods 8234 '(("^From:.*Lars Magne" "nnml:junk") 8235 ("^Subject:.*gnus" "nnfolder:important") 8236 (".*" "nnml:misc"))) 8237 8238 8239File: gnus.info, Node: Various Summary Stuff, Next: Exiting the Summary Buffer, Prev: Mail Group Commands, Up: Summary Buffer 8240 82413.27 Various Summary Stuff 8242========================== 8243 8244* Menu: 8245 8246* Summary Group Information:: Information oriented commands. 8247* Searching for Articles:: Multiple article commands. 8248* Summary Generation Commands:: 8249* Really Various Summary Commands:: Those pesky non-conformant commands. 8250 8251‘gnus-summary-display-while-building’ 8252 If non-‘nil’, show and update the summary buffer as it’s being 8253 built. If ‘t’, update the buffer after every line is inserted. If 8254 the value is an integer, N, update the display every N lines. The 8255 default is ‘nil’. 8256 8257‘gnus-summary-display-arrow’ 8258 If non-‘nil’, display an arrow in the fringe to indicate the 8259 current article. 8260 8261‘gnus-summary-mode-hook’ 8262 This hook is called when creating a summary mode buffer. 8263 8264‘gnus-summary-generate-hook’ 8265 This is called as the last thing before doing the threading and the 8266 generation of the summary buffer. It’s quite convenient for 8267 customizing the threading variables based on what data the 8268 newsgroup has. This hook is called from the summary buffer after 8269 most summary buffer variables have been set. 8270 8271‘gnus-summary-prepare-hook’ 8272 It is called after the summary buffer has been generated. You 8273 might use it to, for instance, highlight lines or modify the look 8274 of the buffer in some other ungodly manner. I don’t care. 8275 8276‘gnus-summary-prepared-hook’ 8277 A hook called as the very last thing after the summary buffer has 8278 been generated. 8279 8280‘gnus-summary-ignore-duplicates’ 8281 When Gnus discovers two articles that have the same ‘Message-ID’, 8282 it has to do something drastic. No articles are allowed to have 8283 the same ‘Message-ID’, but this may happen when reading mail from 8284 some sources. Gnus allows you to customize what happens with this 8285 variable. If it is ‘nil’ (which is the default), Gnus will rename 8286 the ‘Message-ID’ (for display purposes only) and display the 8287 article as any other article. If this variable is ‘t’, it won’t 8288 display the article—it’ll be as if it never existed. 8289 8290‘gnus-alter-articles-to-read-function’ 8291 This function, which takes two parameters (the group name and the 8292 list of articles to be selected), is called to allow the user to 8293 alter the list of articles to be selected. 8294 8295 For instance, the following function adds the list of cached 8296 articles to the list in one particular group: 8297 8298 (defun my-add-cached-articles (group articles) 8299 (if (string= group "some.group") 8300 (append gnus-newsgroup-cached articles) 8301 articles)) 8302 8303‘gnus-newsgroup-variables’ 8304 A list of newsgroup (summary buffer) local variables, or cons of 8305 variables and their default expressions to be evalled (when the 8306 default values are not ‘nil’), that should be made global while the 8307 summary buffer is active. 8308 8309 Note: The default expressions will be evaluated (using function 8310 ‘eval’) before assignment to the local variable rather than just 8311 assigned to it. If the default expression is the symbol ‘global’, 8312 that symbol will not be evaluated but the global value of the local 8313 variable will be used instead. 8314 8315 These variables can be used to set variables in the group 8316 parameters while still allowing them to affect operations done in 8317 other buffers. For example: 8318 8319 (setq gnus-newsgroup-variables 8320 '(message-use-followup-to 8321 (gnus-visible-headers . 8322 "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:"))) 8323 8324 Also *note Group Parameters::. 8325 8326 8327File: gnus.info, Node: Summary Group Information, Next: Searching for Articles, Up: Various Summary Stuff 8328 83293.27.1 Summary Group Information 8330-------------------------------- 8331 8332‘H d’ 8333 Give a brief description of the current group 8334 (‘gnus-summary-describe-group’). If given a prefix, force 8335 rereading the description from the server. 8336 8337‘H h’ 8338 Give an extremely brief description of the most important summary 8339 keystrokes (‘gnus-summary-describe-briefly’). 8340 8341‘H i’ 8342 Go to the Gnus info node (‘gnus-info-find-node’). 8343 8344 8345File: gnus.info, Node: Searching for Articles, Next: Summary Generation Commands, Prev: Summary Group Information, Up: Various Summary Stuff 8346 83473.27.2 Searching for Articles 8348----------------------------- 8349 8350‘M-s’ 8351 Search through all subsequent (raw) articles for a regexp 8352 (‘gnus-summary-search-article-forward’). 8353 8354‘M-r’ 8355 Search through all previous (raw) articles for a regexp 8356 (‘gnus-summary-search-article-backward’). 8357 8358‘M-S’ 8359 Repeat the previous search forwards 8360 (‘gnus-summary-repeat-search-article-forward’). 8361 8362‘M-R’ 8363 Repeat the previous search backwards 8364 (‘gnus-summary-repeat-search-article-backward’). 8365 8366‘&’ 8367 This command will prompt you for a header, a regular expression to 8368 match on this field, and a command to be executed if the match is 8369 made (‘gnus-summary-execute-command’). If the header is an empty 8370 string, the match is done on the entire article. If given a 8371 prefix, search backward instead. 8372 8373 For instance, ‘& <RET> some.*string <RET> #’ will put the process 8374 mark on all articles that have heads or bodies that match 8375 ‘some.*string’. 8376 8377‘M-&’ 8378 Perform any operation on all articles that have been marked with 8379 the process mark (‘gnus-summary-universal-argument’). 8380 8381 8382File: gnus.info, Node: Summary Generation Commands, Next: Really Various Summary Commands, Prev: Searching for Articles, Up: Various Summary Stuff 8383 83843.27.3 Summary Generation Commands 8385---------------------------------- 8386 8387‘Y g’ 8388 Regenerate the current summary buffer (‘gnus-summary-prepare’). 8389 8390‘Y c’ 8391 Pull all cached articles (for the current group) into the summary 8392 buffer (‘gnus-summary-insert-cached-articles’). 8393 8394‘Y d’ 8395 Pull all dormant articles (for the current group) into the summary 8396 buffer (‘gnus-summary-insert-dormant-articles’). 8397 8398‘Y t’ 8399 Pull all ticked articles (for the current group) into the summary 8400 buffer (‘gnus-summary-insert-ticked-articles’). 8401 8402 8403File: gnus.info, Node: Really Various Summary Commands, Prev: Summary Generation Commands, Up: Various Summary Stuff 8404 84053.27.4 Really Various Summary Commands 8406-------------------------------------- 8407 8408‘A D’ 8409‘C-d’ 8410 If the current article is a collection of other articles (for 8411 instance, a digest), you might use this command to enter a group 8412 based on that article (‘gnus-summary-enter-digest-group’). Gnus 8413 will try to guess what article type is currently displayed unless 8414 you give a prefix to this command, which forces a “digest” 8415 interpretation. Basically, whenever you see a message that is a 8416 collection of other messages of some format, you ‘C-d’ and read 8417 these messages in a more convenient fashion. 8418 8419 The variable ‘gnus-auto-select-on-ephemeral-exit’ controls what 8420 article should be selected after exiting a digest group. Valid 8421 values include: 8422 8423 ‘next’ 8424 Select the next article. 8425 8426 ‘next-unread’ 8427 Select the next unread article. 8428 8429 ‘next-noselect’ 8430 Move the cursor to the next article. This is the default. 8431 8432 ‘next-unread-noselect’ 8433 Move the cursor to the next unread article. 8434 8435 If it has any other value or there is no next (unread) article, the 8436 article selected before entering to the digest group will appear. 8437 8438‘C-M-d’ 8439 This command is very similar to the one above, but lets you gather 8440 several documents into one biiig group 8441 (‘gnus-summary-read-document’). It does this by opening several 8442 ‘nndoc’ groups for each document, and then opening an ‘nnvirtual’ 8443 group on top of these ‘nndoc’ groups. This command understands the 8444 process/prefix convention (*note Process/Prefix::). 8445 8446‘C-t’ 8447 Toggle truncation of summary lines 8448 (‘gnus-summary-toggle-truncation’). This will probably confuse the 8449 line centering function in the summary buffer, so it’s not a good 8450 idea to have truncation switched off while reading articles. 8451 8452‘=’ 8453 Expand the summary buffer window (‘gnus-summary-expand-window’). 8454 If given a prefix, force an ‘article’ window configuration. 8455 8456‘C-M-e’ 8457 Edit the group parameters (*note Group Parameters::) of the current 8458 group (‘gnus-summary-edit-parameters’). 8459 8460‘C-M-a’ 8461 Customize the group parameters (*note Group Parameters::) of the 8462 current group (‘gnus-summary-customize-parameters’). 8463 8464 8465File: gnus.info, Node: Exiting the Summary Buffer, Next: Crosspost Handling, Prev: Various Summary Stuff, Up: Summary Buffer 8466 84673.28 Exiting the Summary Buffer 8468=============================== 8469 8470Exiting from the summary buffer will normally update all info on the 8471group and return you to the group buffer. 8472 8473‘Z Z’ 8474‘Z Q’ 8475‘q’ 8476 Exit the current group and update all information on the group 8477 (‘gnus-summary-exit’). ‘gnus-summary-prepare-exit-hook’ is called 8478 before doing much of the exiting, which calls 8479 ‘gnus-summary-expire-articles’ by default. 8480 ‘gnus-summary-exit-hook’ is called after finishing the exit 8481 process. ‘gnus-group-no-more-groups-hook’ is run when returning to 8482 group mode having no more (unread) groups. 8483 8484‘Z E’ 8485‘Q’ 8486 Exit the current group without updating any information on the 8487 group (‘gnus-summary-exit-no-update’). 8488 8489‘Z c’ 8490‘c’ 8491 Mark all unticked articles in the group as read and then exit 8492 (‘gnus-summary-catchup-and-exit’). 8493 8494‘Z C’ 8495 Mark all articles, even the ticked ones, as read and then exit 8496 (‘gnus-summary-catchup-all-and-exit’). 8497 8498‘Z n’ 8499 Mark all articles as read and go to the next group 8500 (‘gnus-summary-catchup-and-goto-next-group’). 8501 8502‘Z p’ 8503 Mark all articles as read and go to the previous group 8504 (‘gnus-summary-catchup-and-goto-prev-group’). 8505 8506‘Z R’ 8507‘C-x C-s’ 8508 Exit this group, and then enter it again 8509 (‘gnus-summary-reselect-current-group’). If given a prefix, select 8510 all articles, both read and unread. 8511 8512‘Z G’ 8513‘M-g’ 8514 Exit the group, check for new articles in the group, and select the 8515 group (‘gnus-summary-rescan-group’). If given a prefix, select all 8516 articles, both read and unread. 8517 8518‘Z N’ 8519 Exit the group and go to the next group 8520 (‘gnus-summary-next-group’). 8521 8522‘Z P’ 8523 Exit the group and go to the previous group 8524 (‘gnus-summary-prev-group’). 8525 8526‘Z s’ 8527 Save the current number of read/marked articles in the dribble 8528 buffer and then save the dribble buffer 8529 (‘gnus-summary-save-newsrc’). If given a prefix, also save the 8530 ‘.newsrc’ file(s). Using this command will make exit without 8531 updating (the ‘Q’ command) worthless. 8532 8533 ‘gnus-exit-group-hook’ is called when you exit the current group with 8534an “updating” exit. For instance ‘Q’ (‘gnus-summary-exit-no-update’) 8535does not call this hook. 8536 8537 If you’re in the habit of exiting groups, and then changing your mind 8538about it, you might set ‘gnus-kill-summary-on-exit’ to ‘nil’. If you do 8539that, Gnus won’t kill the summary buffer when you exit it. (Quelle 8540surprise!) Instead it will change the name of the buffer to something 8541like ‘*Dead Summary ... *’ and install a minor mode called 8542‘gnus-dead-summary-mode’. Now, if you switch back to this buffer, 8543you’ll find that all keys are mapped to a function called 8544‘gnus-summary-wake-up-the-dead’. So tapping any keys in a dead summary 8545buffer will result in a live, normal summary buffer. 8546 8547 There will never be more than one dead summary buffer at any one 8548time. 8549 8550 The data on the current group will be updated (which articles you 8551have read, which articles you have replied to, etc.) when you exit the 8552summary buffer. If the ‘gnus-use-cross-reference’ variable is ‘t’ 8553(which is the default), articles that are cross-referenced to this group 8554and are marked as read, will also be marked as read in the other 8555subscribed groups they were cross-posted to. If this variable is 8556neither ‘nil’ nor ‘t’, the article will be marked as read in both 8557subscribed and unsubscribed groups (*note Crosspost Handling::). 8558 8559 8560File: gnus.info, Node: Crosspost Handling, Next: Duplicate Suppression, Prev: Exiting the Summary Buffer, Up: Summary Buffer 8561 85623.29 Crosspost Handling 8563======================= 8564 8565Marking cross-posted articles as read ensures that you’ll never have to 8566read the same article more than once. Unless, of course, somebody has 8567posted it to several groups separately. Posting the same article to 8568several groups (not cross-posting) is called “spamming”, and you are by 8569law required to send nasty-grams to anyone who perpetrates such a 8570heinous crime. 8571 8572 Remember: Cross-posting is kinda ok, but posting the same article 8573separately to several groups is not. Massive cross-posting (aka. 8574“velveeta”) is to be avoided at all costs, and you can even use the 8575‘gnus-summary-mail-crosspost-complaint’ command to complain about 8576excessive crossposting (*note Summary Mail Commands::). 8577 8578 One thing that may cause Gnus to not do the cross-posting thing 8579correctly is if you use an NNTP server that supports XOVER (which is 8580very nice, because it speeds things up considerably) which does not 8581include the ‘Xref’ header in its NOV lines. This is Evil, but all too 8582common, alas, alack. Gnus tries to Do The Right Thing even with XOVER 8583by registering the ‘Xref’ lines of all articles you actually read, but 8584if you kill the articles, or just mark them as read without reading 8585them, Gnus will not get a chance to snoop the ‘Xref’ lines out of these 8586articles, and will be unable to use the cross reference mechanism. 8587 8588 To check whether your NNTP server includes the ‘Xref’ header in its 8589overview files, try ‘telnet your.nntp.server nntp’, ‘MODE READER’ on 8590‘inn’ servers, and then say ‘LIST overview.fmt’. This may not work, but 8591if it does, and the last line you get does not read ‘Xref:full’, then 8592you should shout and whine at your news admin until she includes the 8593‘Xref’ header in the overview files. 8594 8595 If you want Gnus to get the ‘Xref’s right all the time, you have to 8596set ‘nntp-nov-is-evil’ to ‘t’, which slows things down considerably. 8597Also *note Slow/Expensive Connection::. 8598 8599 C’est la vie. 8600 8601 For an alternative approach, *note Duplicate Suppression::. 8602 8603 8604File: gnus.info, Node: Duplicate Suppression, Next: Security, Prev: Crosspost Handling, Up: Summary Buffer 8605 86063.30 Duplicate Suppression 8607========================== 8608 8609By default, Gnus tries to make sure that you don’t have to read the same 8610article more than once by utilizing the crossposting mechanism (*note 8611Crosspost Handling::). However, that simple and efficient approach may 8612not work satisfactory for some users for various reasons. 8613 8614 1. The NNTP server may fail to generate the ‘Xref’ header. This is 8615 evil and not very common. 8616 8617 2. The NNTP server may fail to include the ‘Xref’ header in the 8618 ‘.overview’ data bases. This is evil and all too common, alas. 8619 8620 3. You may be reading the same group (or several related groups) from 8621 different NNTP servers. 8622 8623 4. You may be getting mail that duplicates articles posted to groups. 8624 8625 I’m sure there are other situations where ‘Xref’ handling fails as 8626well, but these four are the most common situations. 8627 8628 If, and only if, ‘Xref’ handling fails for you, then you may consider 8629switching on “duplicate suppression”. If you do so, Gnus will remember 8630the ‘Message-ID’s of all articles you have read or otherwise marked as 8631read, and then, as if by magic, mark them as read all subsequent times 8632you see them—in _all_ groups. Using this mechanism is quite likely to 8633be somewhat inefficient, but not overly so. It’s certainly preferable 8634to reading the same articles more than once. 8635 8636 Duplicate suppression is not a very subtle instrument. It’s more 8637like a sledge hammer than anything else. It works in a very simple 8638fashion—if you have marked an article as read, it adds this Message-ID 8639to a cache. The next time it sees this Message-ID, it will mark the 8640article as read with the ‘M’ mark. It doesn’t care what group it saw 8641the article in. 8642 8643‘gnus-suppress-duplicates’ 8644 If non-‘nil’, suppress duplicates. 8645 8646‘gnus-save-duplicate-list’ 8647 If non-‘nil’, save the list of duplicates to a file. This will 8648 make startup and shutdown take longer, so the default is ‘nil’. 8649 However, this means that only duplicate articles read in a single 8650 Gnus session are suppressed. 8651 8652‘gnus-duplicate-list-length’ 8653 This variable says how many ‘Message-ID’s to keep in the duplicate 8654 suppression list. The default is 10000. 8655 8656‘gnus-duplicate-file’ 8657 The name of the file to store the duplicate suppression list in. 8658 The default is ‘~/News/suppression’. 8659 8660 If you have a tendency to stop and start Gnus often, setting 8661‘gnus-save-duplicate-list’ to ‘t’ is probably a good idea. If you leave 8662Gnus running for weeks on end, you may have it ‘nil’. On the other 8663hand, saving the list makes startup and shutdown much slower, so that 8664means that if you stop and start Gnus often, you should set 8665‘gnus-save-duplicate-list’ to ‘nil’. Uhm. I’ll leave this up to you to 8666figure out, I think. 8667 8668 8669File: gnus.info, Node: Security, Next: Mailing List, Prev: Duplicate Suppression, Up: Summary Buffer 8670 86713.31 Security 8672============= 8673 8674Gnus is able to verify signed messages or decrypt encrypted messages. 8675The formats that are supported are PGP, PGP/MIME and S/MIME, however you 8676need some external programs to get things to work: 8677 8678 1. To handle PGP and PGP/MIME messages, you have to install an OpenPGP 8679 implementation such as GnuPG. The Lisp interface to GnuPG included 8680 with Emacs is called EasyPG (*note EasyPG: (epa)Top.), but PGG 8681 (*note PGG: (pgg)Top.), and Mailcrypt are also supported. 8682 8683 2. To handle S/MIME message, you need to install OpenSSL. OpenSSL 8684 0.9.6 or newer is recommended. 8685 8686 The variables that control security functionality on 8687reading/composing messages include: 8688 8689‘mm-verify-option’ 8690 Option of verifying signed parts. ‘never’, not verify; ‘always’, 8691 always verify; ‘known’, only verify known protocols. Otherwise, 8692 ask user. 8693 8694‘mm-decrypt-option’ 8695 Option of decrypting encrypted parts. ‘never’, no decryption; 8696 ‘always’, always decrypt; ‘known’, only decrypt known protocols. 8697 Otherwise, ask user. 8698 8699‘mm-sign-option’ 8700 Option of creating signed parts. ‘nil’, use default signing keys; 8701 ‘guided’, ask user to select signing keys from the menu. 8702 8703‘mm-encrypt-option’ 8704 Option of creating encrypted parts. ‘nil’, use the first 8705 public-key matching the ‘From:’ header as the recipient; ‘guided’, 8706 ask user to select recipient keys from the menu. 8707 8708‘mml1991-use’ 8709 Symbol indicating elisp interface to OpenPGP implementation for PGP 8710 messages. The default is ‘epg’, but ‘pgg’, and ‘mailcrypt’ are 8711 also supported although deprecated. By default, Gnus uses the 8712 first available interface in this order. 8713 8714‘mml2015-use’ 8715 Symbol indicating elisp interface to OpenPGP implementation for 8716 PGP/MIME messages. The default is ‘epg’, but ‘pgg’, and 8717 ‘mailcrypt’ are also supported although deprecated. By default, 8718 Gnus uses the first available interface in this order. 8719 8720 By default the buttons that display security information are not 8721shown, because they clutter reading the actual e-mail. You can type ‘K 8722b’ manually to display the information. Use the 8723‘gnus-buttonized-mime-types’ and ‘gnus-unbuttonized-mime-types’ 8724variables to control this permanently. *note MIME Commands:: for 8725further details, and hints on how to customize these variables to always 8726display security information. 8727 8728 Snarfing OpenPGP keys (i.e., importing keys from articles into your 8729key ring) is not supported explicitly through a menu item or command, 8730rather Gnus do detect and label keys as ‘application/pgp-keys’, allowing 8731you to specify whatever action you think is appropriate through the 8732usual MIME infrastructure. You can use a ‘~/.mailcap’ entry (*note 8733mailcap: (emacs-mime)mailcap.) such as the following to import keys 8734using GNU Privacy Guard when you click on the MIME button (*note Using 8735MIME::). 8736 8737 application/pgp-keys; gpg --import --interactive --verbose; needsterminal 8738This happens to also be the default action defined in 8739‘mailcap-mime-data’. 8740 8741 More information on how to set things for sending outgoing signed and 8742encrypted messages up can be found in the message manual (*note 8743Security: (message)Security.). 8744 8745 8746File: gnus.info, Node: Mailing List, Prev: Security, Up: Summary Buffer 8747 87483.32 Mailing List 8749================= 8750 8751Gnus understands some mailing list fields of RFC 2369. To enable it, 8752add a ‘to-list’ group parameter (*note Group Parameters::), possibly 8753using ‘A M’ (‘gnus-mailing-list-insinuate’) in the summary buffer. 8754 8755 That enables the following commands to the summary buffer: 8756 8757‘C-c C-n h’ 8758 Send a message to fetch mailing list help, if List-Help field 8759 exists. 8760 8761‘C-c C-n s’ 8762 Send a message to subscribe the mailing list, if List-Subscribe 8763 field exists. 8764 8765‘C-c C-n u’ 8766 Send a message to unsubscribe the mailing list, if List-Unsubscribe 8767 field exists. 8768 8769‘C-c C-n p’ 8770 Post to the mailing list, if List-Post field exists. 8771 8772‘C-c C-n o’ 8773 Send a message to the mailing list owner, if List-Owner field 8774 exists. 8775 8776‘C-c C-n a’ 8777 Browse the mailing list archive, if List-Archive field exists. 8778 8779 8780File: gnus.info, Node: Article Buffer, Next: Composing Messages, Prev: Summary Buffer, Up: Top 8781 87824 Article Buffer 8783**************** 8784 8785The articles are displayed in the article buffer, of which there is only 8786one. All the summary buffers share the same article buffer unless you 8787tell Gnus otherwise. 8788 8789* Menu: 8790 8791* Hiding Headers:: Deciding what headers should be displayed. 8792* Using MIME:: Pushing articles through MIME before reading them. 8793* HTML:: Reading HTML messages. 8794* Customizing Articles:: Tailoring the look of the articles. 8795* Article Keymap:: Keystrokes available in the article buffer. 8796* Misc Article:: Other stuff. 8797 8798 8799File: gnus.info, Node: Hiding Headers, Next: Using MIME, Up: Article Buffer 8800 88014.1 Hiding Headers 8802================== 8803 8804The top section of each article is the “head”. (The rest is the “body”, 8805but you may have guessed that already.) 8806 8807 There is a lot of useful information in the head: the name of the 8808person who wrote the article, the date it was written and the subject of 8809the article. That’s well and nice, but there’s also lots of information 8810most people do not want to see—what systems the article has passed 8811through before reaching you, the ‘Message-ID’, the ‘References’, etc. ad 8812nauseam—and you’ll probably want to get rid of some of those lines. If 8813you want to keep all those lines in the article buffer, you can set 8814‘gnus-show-all-headers’ to ‘t’. 8815 8816 Gnus provides you with two variables for sifting headers: 8817 8818‘gnus-visible-headers’ 8819 If this variable is non-‘nil’, it should be a regular expression 8820 that says what headers you wish to keep in the article buffer. All 8821 headers that do not match this variable will be hidden. 8822 8823 For instance, if you only want to see the name of the person who 8824 wrote the article and the subject, you’d say: 8825 8826 (setq gnus-visible-headers "^From:\\|^Subject:") 8827 8828 This variable can also be a list of regexps to match headers to 8829 remain visible. 8830 8831‘gnus-ignored-headers’ 8832 This variable is the reverse of ‘gnus-visible-headers’. If this 8833 variable is set (and ‘gnus-visible-headers’ is ‘nil’), it should be 8834 a regular expression that matches all lines that you want to hide. 8835 All lines that do not match this variable will remain visible. 8836 8837 For instance, if you just want to get rid of the ‘References’ line 8838 and the ‘Xref’ line, you might say: 8839 8840 (setq gnus-ignored-headers "^References:\\|^Xref:") 8841 8842 This variable can also be a list of regexps to match headers to be 8843 removed. 8844 8845 Note that if ‘gnus-visible-headers’ is non-‘nil’, this variable 8846 will have no effect. 8847 8848 Gnus can also sort the headers for you. (It does this by default.) 8849You can control the sorting by setting the ‘gnus-sorted-header-list’ 8850variable. It is a list of regular expressions that says in what order 8851the headers are to be displayed. 8852 8853 For instance, if you want the name of the author of the article 8854first, and then the subject, you might say something like: 8855 8856 (setq gnus-sorted-header-list '("^From:" "^Subject:")) 8857 8858 Any headers that are to remain visible, but are not listed in this 8859variable, will be displayed in random order after all the headers listed 8860in this variable. 8861 8862 You can hide further boring headers by setting 8863‘gnus-treat-hide-boring-headers’ to ‘head’. What this function does 8864depends on the ‘gnus-boring-article-headers’ variable. It’s a list, but 8865this list doesn’t actually contain header names. Instead it lists 8866various “boring conditions” that Gnus can check and remove from sight. 8867 8868 These conditions are: 8869‘empty’ 8870 Remove all empty headers. 8871‘followup-to’ 8872 Remove the ‘Followup-To’ header if it is identical to the 8873 ‘Newsgroups’ header. 8874‘reply-to’ 8875 Remove the ‘Reply-To’ header if it lists the same addresses as the 8876 ‘From’ header, or if the ‘broken-reply-to’ group parameter is set. 8877‘newsgroups’ 8878 Remove the ‘Newsgroups’ header if it only contains the current 8879 group name. 8880‘to-address’ 8881 Remove the ‘To’ header if it only contains the address identical to 8882 the current group’s ‘to-address’ parameter. 8883‘to-list’ 8884 Remove the ‘To’ header if it only contains the address identical to 8885 the current group’s ‘to-list’ parameter. 8886‘cc-list’ 8887 Remove the ‘Cc’ header if it only contains the address identical to 8888 the current group’s ‘to-list’ parameter. 8889‘date’ 8890 Remove the ‘Date’ header if the article is less than three days 8891 old. 8892‘long-to’ 8893 Remove the ‘To’ and/or ‘Cc’ header if it is very long. 8894‘many-to’ 8895 Remove all ‘To’ and/or ‘Cc’ headers if there are more than one. 8896 8897 To include these three elements, you could say something like: 8898 8899 (setq gnus-boring-article-headers 8900 '(empty followup-to reply-to)) 8901 8902 This is also the default value for this variable. 8903 8904 8905File: gnus.info, Node: Using MIME, Next: HTML, Prev: Hiding Headers, Up: Article Buffer 8906 89074.2 Using MIME 8908============== 8909 8910Mime is a standard for waving your hands through the air, aimlessly, 8911while people stand around yawning. 8912 8913 MIME, however, is a standard for encoding your articles, aimlessly, 8914while all newsreaders die of fear. 8915 8916 MIME may specify what character set the article uses, the encoding of 8917the characters, and it also makes it possible to embed pictures and 8918other naughty stuff in innocent-looking articles. 8919 8920 Gnus pushes MIME articles through ‘gnus-display-mime-function’ to 8921display the MIME parts. This is ‘gnus-display-mime’ by default, which 8922creates a bundle of clickable buttons that can be used to display, save 8923and manipulate the MIME objects. 8924 8925 The following commands are available when you have placed point over 8926a MIME button: 8927 8928‘<RET> (Article)’ 8929‘<BUTTON-2> (Article)’ 8930 Toggle displaying of the MIME object (‘gnus-article-press-button’). 8931 If built-in viewers can not display the object, Gnus resorts to 8932 external viewers in the ‘mailcap’ files. If a viewer has the 8933 ‘copiousoutput’ specification, the object is displayed inline. 8934 8935‘M-<RET> (Article)’ 8936‘v (Article)’ 8937 Prompt for a method, and then view the MIME object using this 8938 method (‘gnus-mime-view-part’). 8939 8940‘t (Article)’ 8941 View the MIME object as if it were a different MIME media type 8942 (‘gnus-mime-view-part-as-type’). 8943 8944‘C (Article)’ 8945 Prompt for a charset, and then view the MIME object using this 8946 charset (‘gnus-mime-view-part-as-charset’). 8947 8948‘o (Article)’ 8949 Prompt for a file name, and then save the MIME object 8950 (‘gnus-mime-save-part’). 8951 8952‘C-o (Article)’ 8953 Prompt for a file name, then save the MIME object and strip it from 8954 the article. Then proceed to article editing, where a reasonable 8955 suggestion is being made on how the altered article should look 8956 like. The stripped MIME object will be referred via the 8957 message/external-body MIME type. 8958 (‘gnus-mime-save-part-and-strip’). 8959 8960‘r (Article)’ 8961 Prompt for a file name, replace the MIME object with an external 8962 body referring to the file via the message/external-body MIME type. 8963 (‘gnus-mime-replace-part’). 8964 8965‘d (Article)’ 8966 Delete the MIME object from the article and replace it with some 8967 information about the removed MIME object 8968 (‘gnus-mime-delete-part’). 8969 8970‘c (Article)’ 8971 Copy the MIME object to a fresh buffer and display this buffer 8972 (‘gnus-mime-copy-part’). If given a prefix, copy the raw contents 8973 without decoding. If given a numerical prefix, you can do 8974 semi-manual charset stuff (see 8975 ‘gnus-summary-show-article-charset-alist’ in *note Paging the 8976 Article::). Compressed files like ‘.gz’ and ‘.bz2’ are 8977 automatically decompressed if ‘auto-compression-mode’ is enabled 8978 (*note Accessing Compressed Files: (emacs)Compressed Files.). 8979 8980‘p (Article)’ 8981 Print the MIME object (‘gnus-mime-print-part’). This command 8982 respects the ‘print=’ specifications in the ‘.mailcap’ file. 8983 8984‘i (Article)’ 8985 Insert the contents of the MIME object into the buffer 8986 (‘gnus-mime-inline-part’) as ‘text/plain’. If given a prefix, 8987 insert the raw contents without decoding. If given a numerical 8988 prefix, you can do semi-manual charset stuff (see 8989 ‘gnus-summary-show-article-charset-alist’ in *note Paging the 8990 Article::). Compressed files like ‘.gz’ and ‘.bz2’ are 8991 automatically decompressed depending on ‘jka-compr’ regardless of 8992 ‘auto-compression-mode’ (*note Accessing Compressed Files: 8993 (emacs)Compressed Files.). 8994 8995‘E (Article)’ 8996 View the MIME object with an internal viewer. If no internal 8997 viewer is available, use an external viewer 8998 (‘gnus-mime-view-part-internally’). 8999 9000‘e (Article)’ 9001 View the MIME object with an external viewer. 9002 (‘gnus-mime-view-part-externally’). 9003 9004‘| (Article)’ 9005 Output the MIME object to a process (‘gnus-mime-pipe-part’). 9006 9007‘. (Article)’ 9008 Interactively run an action on the MIME object 9009 (‘gnus-mime-action-on-part’). 9010 9011 Gnus will display some MIME objects automatically. The way Gnus 9012determines which parts to do this with is described in the Emacs MIME 9013manual. 9014 9015 It might be best to just use the toggling functions from the article 9016buffer to avoid getting nasty surprises. (For instance, you enter the 9017group ‘alt.sing-a-long’ and, before you know it, MIME has decoded the 9018sound file in the article and some horrible sing-a-long song comes 9019screaming out your speakers, and you can’t find the volume button, 9020because there isn’t one, and people are starting to look at you, and you 9021try to stop the program, but you can’t, and you can’t find the program 9022to control the volume, and everybody else in the room suddenly decides 9023to look at you disdainfully, and you’ll feel rather stupid.) 9024 9025 Any similarity to real events and people is purely coincidental. 9026Ahem. 9027 9028 Also *note MIME Commands::. 9029 9030 9031File: gnus.info, Node: HTML, Next: Customizing Articles, Prev: Using MIME, Up: Article Buffer 9032 90334.3 HTML 9034======== 9035 9036Gnus can display HTML articles nicely formatted in the article buffer. 9037There are many methods for doing that, but two of them are kind of 9038default methods. 9039 9040 If your Emacs copy has been built with libxml2 support, then Gnus 9041uses Emacs’ built-in, plain elisp Simple HTML Renderer ‘shr’ (1) which 9042is also used by Emacs’ browser EWW (*note EWW: (emacs)EWW.). 9043 9044 If your Emacs copy lacks libxml2 support but you have ‘w3m’ installed 9045on your system, Gnus uses that to render HTML mail and display the 9046results in the article buffer (‘gnus-w3m’). 9047 9048 For a complete overview, consult *Note Display Customization: 9049(emacs-mime)Display Customization. This section only describes the 9050default method. 9051 9052‘mm-text-html-renderer’ 9053 If set to ‘shr’, Gnus uses its own simple HTML renderer. If set to 9054 ‘gnus-w3m’, it uses ‘w3m’. 9055 9056‘gnus-blocked-images’ 9057 External images that have URLs that match this regexp won’t be 9058 fetched and displayed. For instance, to block all URLs that have 9059 the string “ads” in them, do the following: 9060 9061 (setq gnus-blocked-images "ads") 9062 9063 This can also be a function to be evaluated. If so, it will be 9064 called with the group name as the parameter. The default value is 9065 ‘gnus-block-private-groups’, which will return ‘"."’ for anything 9066 that isn’t a newsgroup. This means that no external images will be 9067 fetched as a result of reading mail, so that nobody can use web 9068 bugs (and the like) to track whether you’ve read email. 9069 9070 Also *note Misc Article:: for ‘gnus-inhibit-images’. 9071 9072‘gnus-html-cache-directory’ 9073 Gnus will download and cache images according to how 9074 ‘gnus-blocked-images’ is set. These images will be stored in this 9075 directory. 9076 9077‘gnus-html-cache-size’ 9078 When ‘gnus-html-cache-size’ bytes have been used in that directory, 9079 the oldest files will be deleted. The default is 500MB. 9080 9081‘gnus-html-frame-width’ 9082 The width to use when rendering HTML. The default is 70. 9083 9084‘gnus-max-image-proportion’ 9085 How big pictures displayed are in relation to the window they’re 9086 in. A value of 0.7 (the default) means that they are allowed to 9087 take up 70% of the width and height of the window. If they are 9088 larger than this, and Emacs supports it, then the images will be 9089 rescaled down to fit these criteria. 9090 9091‘gnus-article-show-cursor’ 9092 If non-‘nil’, display the cursor in the article buffer even when 9093 the article buffer isn’t the current buffer. 9094 9095 To use this, make sure that you have ‘w3m’ and ‘curl’ installed. If 9096you have, then Gnus should display HTML automatically. 9097 9098 ---------- Footnotes ---------- 9099 9100 (1) ‘shr’ displays colors as declared in the HTML article but tries 9101to adjust them in order to be readable. If you prefer more contrast, 9102*Note FAQ 4-16::. 9103 9104 9105File: gnus.info, Node: Customizing Articles, Next: Article Keymap, Prev: HTML, Up: Article Buffer 9106 91074.4 Customizing Articles 9108======================== 9109 9110A slew of functions for customizing how the articles are to look like 9111exist. You can call these functions interactively (*note Article 9112Washing::), or you can have them called automatically when you select 9113the articles. 9114 9115 To have them called automatically, you should set the corresponding 9116“treatment” variable. For instance, to have headers hidden, you’d set 9117‘gnus-treat-hide-headers’. Below is a list of variables that can be 9118set, but first we discuss the values these variables can have. 9119 9120 Note: Some values, while valid, make little sense. Check the list 9121below for sensible values. 9122 9123 1. ‘nil’: Don’t do this treatment. 9124 9125 2. ‘t’: Do this treatment on all body parts. 9126 9127 3. ‘head’: Do the treatment on the headers. 9128 9129 4. ‘first’: Do this treatment on the first body part. 9130 9131 5. ‘last’: Do this treatment on the last body part. 9132 9133 6. An integer: Do this treatment on all body parts that have a length 9134 less than this number. 9135 9136 7. A list of strings: Do this treatment on all body parts that are in 9137 articles that are read in groups that have names that match one of 9138 the regexps in the list. 9139 9140 8. A list where the first element is not a string: 9141 9142 The list is evaluated recursively. The first element of the list 9143 is a predicate. The following predicates are recognized: ‘or’, 9144 ‘and’, ‘not’ and ‘typep’. Here’s an example: 9145 9146 (or last 9147 (typep "text/x-vcard")) 9148 9149 9. A function: the function is called with no arguments and should 9150 return ‘nil’ or non-‘nil’. The current article is available in the 9151 buffer named by ‘gnus-article-buffer’. 9152 9153 You may have noticed that the word “part” is used here. This refers 9154to the fact that some messages are MIME multipart articles that may be 9155divided into several parts. Articles that are not multiparts are 9156considered to contain just a single part. 9157 9158 Are the treatments applied to all sorts of multipart parts? Yes, if 9159you want to, but by default, only ‘text/plain’ parts are given the 9160treatment. This is controlled by the ‘gnus-article-treat-types’ 9161variable, which is a list of regular expressions that are matched to the 9162type of the part. This variable is ignored if the value of the 9163controlling variable is a predicate list, as described above. 9164 9165 The following treatment options are available. The easiest way to 9166customize this is to examine the ‘gnus-article-treat’ customization 9167group. Values in parenthesis are suggested sensible values. Others are 9168possible but those listed are probably sufficient for most people. 9169 9170‘gnus-treat-buttonize (t, integer)’ 9171‘gnus-treat-buttonize-head (head)’ 9172 9173 *Note Article Buttons::. 9174 9175‘gnus-treat-capitalize-sentences (t, integer)’ 9176‘gnus-treat-overstrike (t, integer)’ 9177‘gnus-treat-strip-cr (t, integer)’ 9178‘gnus-treat-strip-headers-in-body (t, integer)’ 9179‘gnus-treat-strip-leading-blank-lines (t, first, integer)’ 9180‘gnus-treat-strip-multiple-blank-lines (t, integer)’ 9181‘gnus-treat-strip-pem (t, last, integer)’ 9182‘gnus-treat-strip-trailing-blank-lines (t, last, integer)’ 9183‘gnus-treat-unsplit-urls (t, integer)’ 9184‘gnus-treat-wash-html (t, integer)’ 9185 9186 *Note Article Washing::. 9187 9188‘gnus-treat-date (head)’ 9189 9190 This will transform/add date headers according to the 9191 ‘gnus-article-date-headers’ variable. This is a list of Date 9192 headers to display. The formats available are: 9193 9194 ‘ut’ 9195 Universal time, aka GMT, aka ZULU. 9196 9197 ‘local’ 9198 The user’s local time zone. 9199 9200 ‘english’ 9201 A semi-readable English sentence. 9202 9203 ‘lapsed’ 9204 The time elapsed since the message was posted. 9205 9206 ‘combined-lapsed’ 9207 Both the original date header and a (shortened) elapsed time. 9208 9209 ‘combined-local-lapsed’ 9210 Both the time in the user’s local time zone a (shortened) 9211 elapsed time. 9212 9213 ‘original’ 9214 The original date header. 9215 9216 ‘iso8601’ 9217 ISO8601 format, i.e., “2010-11-23T22:05:21”. 9218 9219 ‘user-defined’ 9220 A format done according to the ‘gnus-article-time-format’ 9221 variable. 9222 9223 *Note Article Date::. 9224 9225‘gnus-treat-from-picon (head)’ 9226‘gnus-treat-mail-picon (head)’ 9227‘gnus-treat-newsgroups-picon (head)’ 9228 9229 *Note Picons::. 9230 9231‘gnus-treat-from-gravatar (head)’ 9232‘gnus-treat-mail-gravatar (head)’ 9233 9234 *Note Gravatars::. 9235 9236‘gnus-treat-display-smileys (t, integer)’ 9237 9238‘gnus-treat-body-boundary (head)’ 9239 9240 Adds a delimiter between header and body, the string used as 9241 delimiter is controlled by ‘gnus-body-boundary-delimiter’. 9242 9243 *Note Smileys::. 9244 9245‘gnus-treat-display-x-face (head)’ 9246 9247 *Note X-Face::. 9248 9249‘gnus-treat-display-face (head)’ 9250 9251 *Note Face::. 9252 9253‘gnus-treat-emphasize (t, head, integer)’ 9254‘gnus-treat-fill-article (t, integer)’ 9255‘gnus-treat-fill-long-lines (t, integer)’ 9256‘gnus-treat-hide-boring-headers (head)’ 9257‘gnus-treat-hide-citation (t, integer)’ 9258‘gnus-treat-hide-citation-maybe (t, integer)’ 9259‘gnus-treat-hide-headers (head)’ 9260‘gnus-treat-hide-signature (t, last)’ 9261‘gnus-treat-strip-banner (t, last)’ 9262‘gnus-treat-strip-list-identifiers (head)’ 9263 9264 *Note Article Hiding::. 9265 9266‘gnus-treat-highlight-citation (t, integer)’ 9267‘gnus-treat-highlight-headers (head)’ 9268‘gnus-treat-highlight-signature (t, last, integer)’ 9269 9270 *Note Article Highlighting::. 9271 9272‘gnus-treat-play-sounds’ 9273‘gnus-treat-ansi-sequences (t)’ 9274‘gnus-treat-x-pgp-sig (head)’ 9275 9276‘gnus-treat-unfold-headers (head)’ 9277‘gnus-treat-fold-headers (head)’ 9278‘gnus-treat-fold-newsgroups (head)’ 9279‘gnus-treat-leading-whitespace (head)’ 9280 9281 *Note Article Header::. 9282 9283 You can, of course, write your own functions to be called from 9284‘gnus-part-display-hook’. The functions are called narrowed to the 9285part, and you can do anything you like, pretty much. There is no 9286information that you have to keep in the buffer—you can change 9287everything. 9288 9289 9290File: gnus.info, Node: Article Keymap, Next: Misc Article, Prev: Customizing Articles, Up: Article Buffer 9291 92924.5 Article Keymap 9293================== 9294 9295Most of the keystrokes in the summary buffer can also be used in the 9296article buffer. They should behave as if you typed them in the summary 9297buffer, which means that you don’t actually have to have a summary 9298buffer displayed while reading. You can do it all from the article 9299buffer. 9300 9301 The key ‘v’ is reserved for users. You can bind it to some command 9302or better use it as a prefix key. 9303 9304 A few additional keystrokes are available: 9305 9306‘<SPC>’ 9307 Scroll forwards one page (‘gnus-article-next-page’). This is 9308 exactly the same as ‘h <SPC> h’. 9309 9310‘<DEL>’ 9311 Scroll backwards one page (‘gnus-article-prev-page’). This is 9312 exactly the same as ‘h <DEL> h’. 9313 9314‘C-c ^’ 9315 If point is in the neighborhood of a ‘Message-ID’ and you press 9316 ‘C-c ^’, Gnus will try to get that article from the server 9317 (‘gnus-article-refer-article’). 9318 9319‘C-c C-m’ 9320 Send a reply to the address near point (‘gnus-article-mail’). If 9321 given a prefix, include the mail. 9322 9323‘s’ 9324 Reconfigure the buffers so that the summary buffer becomes visible 9325 (‘gnus-article-show-summary’). 9326 9327‘?’ 9328 Give a very brief description of the available keystrokes 9329 (‘gnus-article-describe-briefly’). 9330 9331‘<TAB>’ 9332 Go to the next button, if any (‘gnus-article-next-button’). This 9333 only makes sense if you have buttonizing turned on. 9334 9335‘M-<TAB>’ 9336 Go to the previous button, if any (‘gnus-article-prev-button’). 9337 9338‘R’ 9339 Send a reply to the current article and yank the current article 9340 (‘gnus-article-reply-with-original’). If the region is active, 9341 only yank the text in the region. 9342 9343‘S W’ 9344 Send a wide reply to the current article and yank the current 9345 article (‘gnus-article-wide-reply-with-original’). If the region 9346 is active, only yank the text in the region. 9347 9348‘F’ 9349 Send a followup to the current article and yank the current article 9350 (‘gnus-article-followup-with-original’). If the region is active, 9351 only yank the text in the region. 9352 9353 9354File: gnus.info, Node: Misc Article, Prev: Article Keymap, Up: Article Buffer 9355 93564.6 Misc Article 9357================ 9358 9359‘gnus-single-article-buffer’ 9360 If non-‘nil’, use the same article buffer for all the groups. 9361 (This is the default.) If ‘nil’, each group will have its own 9362 article buffer. 9363 9364‘gnus-widen-article-window’ 9365 If non-‘nil’, selecting the article buffer with the ‘h’ command 9366 will “widen” the article window to take the entire frame. 9367 9368‘gnus-article-decode-hook’ 9369 Hook used to decode MIME articles. The default value is 9370 ‘(article-decode-charset article-decode-encoded-words)’ 9371 9372‘gnus-article-prepare-hook’ 9373 This hook is called right after the article has been inserted into 9374 the article buffer. It is mainly intended for functions that do 9375 something depending on the contents; it should probably not be used 9376 for changing the contents of the article buffer. 9377 9378‘gnus-article-mode-hook’ 9379 Hook called in article mode buffers. 9380 9381‘gnus-article-mode-syntax-table’ 9382 Syntax table used in article buffers. It is initialized from 9383 ‘text-mode-syntax-table’. 9384 9385‘gnus-article-over-scroll’ 9386 If non-‘nil’, allow scrolling the article buffer even when there no 9387 more new text to scroll in. The default is ‘nil’. 9388 9389‘gnus-article-mode-line-format’ 9390 This variable is a format string along the same lines as 9391 ‘gnus-summary-mode-line-format’ (*note Summary Buffer Mode Line::). 9392 It accepts the same format specifications as that variable, with 9393 two extensions: 9394 9395 ‘w’ 9396 The “wash status” of the article. This is a short string with 9397 one character for each possible article wash operation that 9398 may have been performed. The characters and their meaning: 9399 9400 ‘c’ 9401 Displayed when cited text may be hidden in the article 9402 buffer. 9403 9404 ‘h’ 9405 Displayed when headers are hidden in the article buffer. 9406 9407 ‘p’ 9408 Displayed when article is digitally signed or encrypted, 9409 and Gnus has hidden the security headers. (N.B. does not 9410 tell anything about security status, i.e., good or bad 9411 signature.) 9412 9413 ‘s’ 9414 Displayed when the signature has been hidden in the 9415 Article buffer. 9416 9417 ‘o’ 9418 Displayed when Gnus has treated overstrike characters in 9419 the article buffer. 9420 9421 ‘e’ 9422 Displayed when Gnus has treated emphasized strings in the 9423 article buffer. 9424 9425 ‘m’ 9426 The number of MIME parts in the article. 9427 9428‘gnus-break-pages’ 9429 Controls whether “page breaking” is to take place. If this 9430 variable is non-‘nil’, the articles will be divided into pages 9431 whenever a page delimiter appears in the article. If this variable 9432 is ‘nil’, paging will not be done. 9433 9434‘gnus-page-delimiter’ 9435 This is the delimiter mentioned above. By default, it is ‘^L’ 9436 (formfeed). 9437 9438‘gnus-use-idna’ 9439 This variable controls whether Gnus performs IDNA decoding of 9440 internationalized domain names inside ‘From’, ‘To’ and ‘Cc’ 9441 headers. *Note IDNA: (message)IDNA, for how to compose such 9442 messages. This requires GNU Libidn 9443 (https://www.gnu.org/software/libidn/), and this variable is only 9444 enabled if you have installed it. 9445 9446‘gnus-inhibit-images’ 9447 If this is non-‘nil’, inhibit displaying of images inline in the 9448 article body. It is effective to images that are in articles as 9449 MIME parts, and images in HTML articles rendered when 9450 ‘mm-text-html-renderer’ (*note Display Customization: 9451 (emacs-mime)Display Customization.) is ‘shr’ or ‘gnus-w3m’. 9452 9453 9454File: gnus.info, Node: Composing Messages, Next: Select Methods, Prev: Article Buffer, Up: Top 9455 94565 Composing Messages 9457******************** 9458 9459All commands for posting and mailing will put you in a message buffer 9460where you can edit the article all you like, before you send the article 9461by pressing ‘C-c C-c’. *Note Overview: (message)Top. Where the message 9462will be posted/mailed to depends on your setup (*note Posting Server::). 9463 9464* Menu: 9465 9466* Mail:: Mailing and replying. 9467* Posting Server:: What server should you post and mail via? 9468* POP before SMTP:: You cannot send a mail unless you read a mail. 9469* Mail and Post:: Mailing and posting at the same time. 9470* Archived Messages:: Where Gnus stores the messages you’ve sent. 9471* Posting Styles:: An easier way to specify who you are. 9472* Drafts:: Postponing messages and rejected messages. 9473* Rejected Articles:: What happens if the server doesn’t like your article? 9474* Signing and encrypting:: How to compose secure messages. 9475 9476 Also *note Canceling and Superseding:: for information on how to 9477remove articles you shouldn’t have posted. 9478 9479 9480File: gnus.info, Node: Mail, Next: Posting Server, Up: Composing Messages 9481 94825.1 Mail 9483======== 9484 9485Variables for customizing outgoing mail: 9486 9487‘gnus-uu-digest-headers’ 9488 List of regexps to match headers included in digested messages. 9489 The headers will be included in the sequence they are matched. If 9490 ‘nil’ include all headers. 9491 9492‘gnus-add-to-list’ 9493 If non-‘nil’, add a ‘to-list’ group parameter to mail groups that 9494 have none when you do a ‘a’. 9495 9496‘gnus-confirm-mail-reply-to-news’ 9497 If non-‘nil’, Gnus will ask you for a confirmation when you are 9498 about to reply to news articles by mail. If it is ‘nil’, nothing 9499 interferes in what you want to do. This can also be a function 9500 receiving the group name as the only parameter which should return 9501 non-‘nil’ if a confirmation is needed, or a regular expression 9502 matching group names, where confirmation should be asked for. 9503 9504 If you find yourself never wanting to reply to mail, but 9505 occasionally press ‘R’ anyway, this variable might be for you. 9506 9507‘gnus-confirm-treat-mail-like-news’ 9508 If non-‘nil’, Gnus also requests confirmation according to 9509 ‘gnus-confirm-mail-reply-to-news’ when replying to mail. This is 9510 useful for treating mailing lists like newsgroups. 9511 9512 9513File: gnus.info, Node: Posting Server, Next: POP before SMTP, Prev: Mail, Up: Composing Messages 9514 95155.2 Posting Server 9516================== 9517 9518When you press those magical ‘C-c C-c’ keys to ship off your latest 9519(extremely intelligent, of course) article, where does it go? 9520 9521 Thank you for asking. I hate you. 9522 9523 It can be quite complicated. 9524 9525 When posting news, Message usually invokes ‘message-send-news’ (*note 9526News Variables: (message)News Variables.). Normally, Gnus will post 9527using the same select method as you’re reading from (which might be 9528convenient if you’re reading lots of groups from different private 9529servers). However. If the server you’re reading from doesn’t allow 9530posting, just reading, you probably want to use some other server to 9531post your (extremely intelligent and fabulously interesting) articles. 9532You can then set the ‘gnus-post-method’ to some other method: 9533 9534 (setq gnus-post-method '(nnspool "")) 9535 9536 Now, if you’ve done this, and then this server rejects your article, 9537or this server is down, what do you do then? To override this variable 9538you can use a non-zero prefix to the ‘C-c C-c’ command to force using 9539the “current” server, to get back the default behavior, for posting. 9540 9541 If you give a zero prefix (i.e., ‘C-u 0 C-c C-c’) to that command, 9542Gnus will prompt you for what method to use for posting. 9543 9544 You can also set ‘gnus-post-method’ to a list of select methods. If 9545that’s the case, Gnus will always prompt you for what method to use for 9546posting. 9547 9548 Finally, if you want to always post using the native select method, 9549you can set this variable to ‘native’. 9550 9551 When sending mail, Message invokes the function specified by the 9552variable ‘message-send-mail-function’. Gnus tries to set it to a value 9553suitable for your system. *Note Mail Variables: (message)Mail 9554Variables, for more information. 9555 9556 9557File: gnus.info, Node: POP before SMTP, Next: Mail and Post, Prev: Posting Server, Up: Composing Messages 9558 95595.3 POP before SMTP 9560=================== 9561 9562Does your ISP use POP-before-SMTP authentication? This authentication 9563method simply requires you to contact the POP server before sending 9564email. To do that, put the following lines in your ‘~/.gnus.el’ file: 9565 9566 (add-hook 'message-send-mail-hook 'mail-source-touch-pop) 9567 9568The ‘mail-source-touch-pop’ function does POP authentication according 9569to the value of ‘mail-sources’ without fetching mails, just before 9570sending a mail. *Note Mail Sources::. 9571 9572 If you have two or more POP mail servers set in ‘mail-sources’, you 9573may want to specify one of them to ‘mail-source-primary-source’ as the 9574POP mail server to be used for the POP-before-SMTP authentication. If 9575it is your primary POP mail server (i.e., you are fetching mails mainly 9576from that server), you can set it permanently as follows: 9577 9578 (setq mail-source-primary-source 9579 '(pop :server "pop3.mail.server" 9580 :password "secret")) 9581 9582Otherwise, bind it dynamically only when performing the POP-before-SMTP 9583authentication as follows: 9584 9585 (add-hook 'message-send-mail-hook 9586 (lambda () 9587 (let ((mail-source-primary-source 9588 '(pop :server "pop3.mail.server" 9589 :password "secret"))) 9590 (mail-source-touch-pop)))) 9591 9592 9593File: gnus.info, Node: Mail and Post, Next: Archived Messages, Prev: POP before SMTP, Up: Composing Messages 9594 95955.4 Mail and Post 9596================= 9597 9598Here’s a list of variables relevant to both mailing and posting: 9599 9600‘gnus-mailing-list-groups’ 9601 9602 If your news server offers groups that are really mailing lists 9603 gatewayed to the NNTP server, you can read those groups without 9604 problems, but you can’t post/followup to them without some 9605 difficulty. One solution is to add a ‘to-address’ to the group 9606 parameters (*note Group Parameters::). An easier thing to do is 9607 set the ‘gnus-mailing-list-groups’ to a regexp that matches the 9608 groups that really are mailing lists. Then, at least, followups to 9609 the mailing lists will work most of the time. Posting to these 9610 groups (‘a’) is still a pain, though. 9611 9612‘gnus-user-agent’ 9613 9614 This variable controls which information should be exposed in the 9615 User-Agent header. It can be a list of symbols or a string. Valid 9616 symbols are ‘gnus’ (show Gnus version) and ‘emacs’ (show Emacs 9617 version). In addition to the Emacs version, you can add ‘config’ 9618 (show system configuration) or ‘type’ (show system type). If you 9619 set it to a string, be sure to use a valid format, see RFC 2616. 9620 9621 You may want to do spell-checking on messages that you send out. Or, 9622if you don’t want to spell-check by hand, you could add automatic 9623spell-checking via the ‘ispell’ package: 9624 9625 (add-hook 'message-send-hook 'ispell-message) 9626 9627 If you want to change the ‘ispell’ dictionary based on what group 9628you’re in, you could say something like the following: 9629 9630 (add-hook 'gnus-select-group-hook 9631 (lambda () 9632 (cond 9633 ((string-match 9634 "^de\\." (gnus-group-real-name gnus-newsgroup-name)) 9635 (ispell-change-dictionary "deutsch")) 9636 (t 9637 (ispell-change-dictionary "english"))))) 9638 9639 Modify to suit your needs. 9640 9641 If ‘gnus-message-highlight-citation’ is ‘t’, different levels of 9642citations are highlighted like in Gnus article buffers also in message 9643mode buffers. 9644 9645 9646File: gnus.info, Node: Archived Messages, Next: Posting Styles, Prev: Mail and Post, Up: Composing Messages 9647 96485.5 Archived Messages 9649===================== 9650 9651Gnus provides a few different methods for storing the mail and news you 9652send. The default method is to use the “archive virtual server” to 9653store the messages. If you want to disable this completely, the 9654‘gnus-message-archive-group’ variable should be ‘nil’. The default is 9655‘"sent.%Y-%m"’, which gives you one archive group per month. 9656 9657 For archiving interesting messages in a group you read, see the ‘B c’ 9658(‘gnus-summary-copy-article’) command (*note Mail Group Commands::). 9659 9660 ‘gnus-message-archive-method’ says what virtual server Gnus is to use 9661to store sent messages. The default is ‘"archive"’, and when actually 9662being used it is expanded into: 9663 9664 (nnfolder "archive" 9665 (nnfolder-directory "~/Mail/archive") 9666 (nnfolder-active-file "~/Mail/archive/active") 9667 (nnfolder-get-new-mail nil) 9668 (nnfolder-inhibit-expiry t)) 9669 9670 Note: a server like this is saved in the ‘~/.newsrc.eld’ file first 9671 so that it may be used as a real method of the server which is 9672 named ‘"archive"’ (that is, for the case where 9673 ‘gnus-message-archive-method’ is set to ‘"archive"’) ever since. 9674 If it once has been saved, it will never be updated by default even 9675 if you change the value of ‘gnus-message-archive-method’ afterward. 9676 Therefore, the server ‘"archive"’ doesn’t necessarily mean the 9677 ‘nnfolder’ server like this at all times. If you want the saved 9678 method to reflect always the value of 9679 ‘gnus-message-archive-method’, set the 9680 ‘gnus-update-message-archive-method’ variable to a non-‘nil’ value. 9681 The default value of this variable is ‘nil’. 9682 9683 You can, however, use any mail select method (‘nnml’, ‘nnmbox’, 9684etc.). ‘nnfolder’ is a quite likable select method for doing this sort 9685of thing, though. If you don’t like the default directory chosen, you 9686could say something like: 9687 9688 (setq gnus-message-archive-method 9689 '(nnfolder "archive" 9690 (nnfolder-inhibit-expiry t) 9691 (nnfolder-active-file "~/News/sent-mail/active") 9692 (nnfolder-directory "~/News/sent-mail/"))) 9693 9694 Gnus will insert ‘Gcc’ headers in all outgoing messages that point to 9695one or more group(s) on that server. Which group to use is determined 9696by the ‘gnus-message-archive-group’ variable. 9697 9698 This variable can be used to do the following: 9699 9700a string 9701 Messages will be saved in that group. 9702 9703 Note that you can include a select method in the group name, then 9704 the message will not be stored in the select method given by 9705 ‘gnus-message-archive-method’, but in the select method specified 9706 by the group name, instead. Suppose ‘gnus-message-archive-method’ 9707 has the default value shown above. Then setting 9708 ‘gnus-message-archive-group’ to ‘"foo"’ means that outgoing 9709 messages are stored in ‘nnfolder+archive:foo’, but if you use the 9710 value ‘"nnml:foo"’, then outgoing messages will be stored in 9711 ‘nnml:foo’. 9712 9713a list of strings 9714 Messages will be saved in all those groups. 9715 9716an alist of regexps, functions and forms 9717 When a key “matches”, the result is used. 9718 9719‘nil’ 9720 No message archiving will take place. 9721 9722 Let’s illustrate: 9723 9724 Just saving to a single group called ‘MisK’: 9725 (setq gnus-message-archive-group "MisK") 9726 9727 Saving to two groups, ‘MisK’ and ‘safe’: 9728 (setq gnus-message-archive-group '("MisK" "safe")) 9729 9730 Save to different groups based on what group you are in: 9731 (setq gnus-message-archive-group 9732 '(("^alt" "sent-to-alt") 9733 ("mail" "sent-to-mail") 9734 (".*" "sent-to-misc"))) 9735 9736 More complex stuff: 9737 (setq gnus-message-archive-group 9738 '((if (message-news-p) 9739 "misc-news" 9740 "misc-mail"))) 9741 9742 How about storing all news messages in one file, but storing all mail 9743messages in one file per month: 9744 9745 (setq gnus-message-archive-group 9746 '((if (message-news-p) 9747 "misc-news" 9748 (concat "mail." (format-time-string "%Y-%m"))))) 9749 9750 Now, when you send a message off, it will be stored in the 9751appropriate group. (If you want to disable storing for just one 9752particular message, you can just remove the ‘Gcc’ header that has been 9753inserted.) The archive group will appear in the group buffer the next 9754time you start Gnus, or the next time you press ‘F’ in the group buffer. 9755You can enter it and read the articles in it just like you’d read any 9756other group. If the group gets really big and annoying, you can simply 9757rename if (using ‘G r’ in the group buffer) to something 9758nice—‘misc-mail-september-1995’, or whatever. New messages will 9759continue to be stored in the old (now empty) group. 9760 9761‘gnus-gcc-mark-as-read’ 9762 If non-‘nil’, automatically mark ‘Gcc’ articles as read. 9763 9764‘gnus-gcc-externalize-attachments’ 9765 If ‘nil’, attach files as normal parts in Gcc copies; if a regexp 9766 and matches the Gcc group name, attach files as external parts; if 9767 it is ‘all’, attach local files as external parts; if it is other 9768 non-‘nil’, the behavior is the same as ‘all’, but it may be changed 9769 in the future. 9770 9771‘gnus-gcc-self-resent-messages’ 9772 Like the ‘gcc-self’ group parameter, applied only for unmodified 9773 messages that ‘gnus-summary-resend-message’ (*note Summary Mail 9774 Commands::) resends. Non-‘nil’ value of this variable takes 9775 precedence over any existing ‘Gcc’ header. 9776 9777 If this is ‘none’, no ‘Gcc’ copy will be made. If this is ‘t’, 9778 messages resent will be ‘Gcc’ copied to the current group. If this 9779 is a string, it specifies a group to which resent messages will be 9780 ‘Gcc’ copied. If this is ‘nil’, ‘Gcc’ will be done according to 9781 existing ‘Gcc’ header(s), if any. If this is ‘no-gcc-self’, that 9782 is the default, resent messages will be ‘Gcc’ copied to groups that 9783 existing ‘Gcc’ header specifies, except for the current group. 9784 9785‘gnus-gcc-pre-body-encode-hook’ 9786‘gnus-gcc-post-body-encode-hook’ 9787 9788 These hooks are run before/after encoding the message body of the 9789 Gcc copy of a sent message. The current buffer (when the hook is 9790 run) contains the message including the message header. Changes 9791 made to the message will only affect the Gcc copy, but not the 9792 original message. You can use these hooks to edit the copy (and 9793 influence subsequent transformations), e.g., remove MML secure tags 9794 (*note Signing and encrypting::). 9795 9796 9797File: gnus.info, Node: Posting Styles, Next: Drafts, Prev: Archived Messages, Up: Composing Messages 9798 97995.6 Posting Styles 9800================== 9801 9802All them variables, they make my head swim. 9803 9804 So what if you want a different ‘Organization’ and signature based on 9805what groups you post to? And you post both from your home machine and 9806your work machine, and you want different ‘From’ lines, and so on? 9807 9808 One way to do stuff like that is to write clever hooks that change 9809the variables you need to have changed. That’s a bit boring, so 9810somebody came up with the bright idea of letting the user specify these 9811things in a handy alist. Here’s an example of a ‘gnus-posting-styles’ 9812variable: 9813 9814 ((".*" 9815 (signature "Peace and happiness") 9816 (organization "What me?")) 9817 ("^comp" 9818 (signature "Death to everybody")) 9819 ("comp.emacs.i-love-it" 9820 (organization "Emacs is it"))) 9821 9822 As you might surmise from this example, this alist consists of 9823several “styles”. Each style will be applicable if the first element 9824“matches”, in some form or other. The entire alist will be iterated 9825over, from the beginning towards the end, and each match will be 9826applied, which means that attributes in later styles that match override 9827the same attributes in earlier matching styles. So 9828‘comp.programming.literate’ will have the ‘Death to everybody’ signature 9829and the ‘What me?’ ‘Organization’ header. 9830 9831 The first element in each style is called the ‘match’. If it’s a 9832string, then Gnus will try to regexp match it against the group name. 9833If it is the form ‘(header MATCH REGEXP)’, then Gnus will look in the 9834original article for a header whose name is MATCH and compare that 9835REGEXP. MATCH and REGEXP are strings. (The original article is the one 9836you are replying or following up to. If you are not composing a reply 9837or a followup, then there is nothing to match against.) If the ‘match’ 9838is a function symbol, that function will be called with no arguments. 9839If it’s a variable symbol, then the variable will be referenced. If 9840it’s a list, then that list will be ‘eval’ed. In any case, if this 9841returns a non-‘nil’ value, then the style is said to “match”. 9842 9843 Each style may contain an arbitrary amount of “attributes”. Each 9844attribute consists of a ‘(NAME VALUE)’ pair. In addition, you can also 9845use the ‘(NAME :file VALUE)’ form or the ‘(NAME :value VALUE)’ form. 9846Where ‘:file’ signifies VALUE represents a file name and its contents 9847should be used as the attribute value, ‘:value’ signifies VALUE does not 9848represent a file name explicitly. The attribute name can be one of: 9849 9850 • ‘signature’ 9851 • ‘signature-file’ 9852 • ‘x-face-file’ 9853 • ‘address’, overriding ‘user-mail-address’ 9854 • ‘name’, overriding ‘(user-full-name)’ 9855 • ‘body’ 9856 9857 Note that the ‘signature-file’ attribute honors the variable 9858‘message-signature-directory’. 9859 9860 The attribute name can also be a string or a symbol. In that case, 9861this will be used as a header name, and the value will be inserted in 9862the headers of the article; if the value is ‘nil’, the header name will 9863be removed. If the attribute name is ‘eval’, the form is evaluated, and 9864the result is thrown away. 9865 9866 The attribute value can be a string, a function with zero arguments 9867(the return value will be used), a variable (its value will be used) or 9868a list (it will be ‘eval’ed and the return value will be used). The 9869functions and sexps are called/‘eval’ed in the message buffer that is 9870being set up. 9871 9872 In the case of a string value, if the ‘match’ is a regular 9873expression, or if it takes the form ‘(header MATCH REGEXP)’, a 9874‘gnus-match-substitute-replacement’ is proceed on the value to replace 9875the positional parameters ‘\N’ by the corresponding parenthetical 9876matches (*note Replacing the Text that Matched: (elisp)Replacing Match.) 9877 9878 If you wish to check whether the message you are about to compose is 9879meant to be a news article or a mail message, you can check the values 9880of the ‘message-news-p’ and ‘message-mail-p’ functions. 9881 9882 So here’s a new example: 9883 9884 (setq gnus-posting-styles 9885 '((".*" 9886 (signature-file "~/.signature") 9887 (name "User Name") 9888 (x-face-file "~/.xface") 9889 (x-url (getenv "WWW_HOME")) 9890 (organization "People's Front Against MWM")) 9891 ("^rec.humor" 9892 (signature my-funny-signature-randomizer)) 9893 ((equal (system-name) "gnarly") ;; A form 9894 (signature my-quote-randomizer)) 9895 (message-news-p ;; A function symbol 9896 (signature my-news-signature)) 9897 (window-system ;; A value symbol 9898 ("X-Window-System" (format "%s" window-system))) 9899 ;; If I’m replying to Larsi, set the Organization header. 9900 ((header "from" "larsi.*org") 9901 (Organization "Somewhere, Inc.")) 9902 ;; Reply to a message from the same subaddress the message 9903 ;; was sent to. 9904 ((header "x-original-to" "me\\(\\+.+\\)@example.org") 9905 (address "me\\1@example.org")) 9906 ((posting-from-work-p) ;; A user defined function 9907 (signature-file "~/.work-signature") 9908 (address "user@bar.foo") 9909 (body "You are fired.\n\nSincerely, your boss.") 9910 ("X-Message-SMTP-Method" "smtp smtp.example.org 587") 9911 (organization "Important Work, Inc")) 9912 ("nnml:.*" 9913 (From (with-current-buffer gnus-article-buffer 9914 (message-fetch-field "to")))) 9915 ("^nn.+:" 9916 (signature-file "~/.mail-signature")))) 9917 9918 The ‘nnml:.*’ rule means that you use the ‘To’ address as the ‘From’ 9919address in all your outgoing replies, which might be handy if you fill 9920many roles. You may also use ‘message-alternative-emails’ instead. 9921*Note Message Headers: (message)Message Headers. 9922 9923 Of particular interest in the “work-mail” style is the 9924‘X-Message-SMTP-Method’ header. It specifies how to send the outgoing 9925email. You may want to sent certain emails through certain SMTP servers 9926due to company policies, for instance. *Note Message Variables: 9927(message)Mail Variables. 9928 9929 9930File: gnus.info, Node: Drafts, Next: Rejected Articles, Prev: Posting Styles, Up: Composing Messages 9931 99325.7 Drafts 9933========== 9934 9935If you are writing a message (mail or news) and suddenly remember that 9936you have a steak in the oven (or some pesto in the food processor, you 9937craaazy vegetarians), you’ll probably wish there was a method to save 9938the message you are writing so that you can continue editing it some 9939other day, and send it when you feel its finished. 9940 9941 Well, don’t worry about it. Whenever you start composing a message 9942of some sort using the Gnus mail and post commands, the buffer you get 9943will automatically associate to an article in a special “draft” group. 9944If you save the buffer the normal way (‘C-x C-s’, for instance), the 9945article will be saved there. (Auto-save files also go to the draft 9946group.) 9947 9948 The draft group is a special group (which is implemented as an 9949‘nndraft’ group, if you absolutely have to know) called 9950‘nndraft:drafts’. The variable ‘nndraft-directory’ says where ‘nndraft’ 9951is to store its files. What makes this group special is that you can’t 9952tick any articles in it or mark any articles as read—all articles in the 9953group are permanently unread. 9954 9955 If the group doesn’t exist, it will be created and you’ll be 9956subscribed to it. The only way to make it disappear from the Group 9957buffer is to unsubscribe it. The special properties of the draft group 9958comes from a group property (*note Group Parameters::), and if lost the 9959group behaves like any other group. This means the commands below will 9960not be available. To restore the special properties of the group, the 9961simplest way is to kill the group, using ‘C-k’, and restart Gnus. The 9962group is automatically created again with the correct parameters. The 9963content of the group is not lost. 9964 9965 When you want to continue editing the article, you simply enter the 9966draft group and push ‘D e’ (‘gnus-draft-edit-message’) to do that. You 9967will be placed in a buffer where you left off. 9968 9969 Rejected articles will also be put in this draft group (*note 9970Rejected Articles::). 9971 9972 If you have lots of rejected messages you want to post (or mail) 9973without doing further editing, you can use the ‘D s’ command 9974(‘gnus-draft-send-message’). This command understands the 9975process/prefix convention (*note Process/Prefix::). The ‘D S’ command 9976(‘gnus-draft-send-all-messages’) will ship off all messages in the 9977buffer. 9978 9979 If you have some messages that you wish not to send, you can use the 9980‘D t’ (‘gnus-draft-toggle-sending’) command to mark the message as 9981unsendable. This is a toggling command. 9982 9983 Finally, if you want to delete a draft, use the normal ‘B <DEL>’ 9984command (*note Mail Group Commands::). 9985 9986 9987File: gnus.info, Node: Rejected Articles, Next: Signing and encrypting, Prev: Drafts, Up: Composing Messages 9988 99895.8 Rejected Articles 9990===================== 9991 9992Sometimes a news server will reject an article. Perhaps the server 9993doesn’t like your face. Perhaps it just feels miserable. Perhaps 9994_there be demons_. Perhaps you have included too much cited text. 9995Perhaps the disk is full. Perhaps the server is down. 9996 9997 These situations are, of course, totally beyond the control of Gnus. 9998(Gnus, of course, loves the way you look, always feels great, has angels 9999fluttering around inside of it, doesn’t care about how much cited text 10000you include, never runs full and never goes down.) So Gnus saves these 10001articles until some later time when the server feels better. 10002 10003 The rejected articles will automatically be put in a special draft 10004group (*note Drafts::). When the server comes back up again, you’d then 10005typically enter that group and send all the articles off. 10006 10007 10008File: gnus.info, Node: Signing and encrypting, Prev: Rejected Articles, Up: Composing Messages 10009 100105.9 Signing and encrypting 10011========================== 10012 10013Gnus can digitally sign and encrypt your messages, using vanilla PGP 10014format or PGP/MIME or S/MIME. For decoding such messages, see the 10015‘mm-verify-option’ and ‘mm-decrypt-option’ options (*note Security::). 10016 10017 Often, you would like to sign replies to people who send you signed 10018messages. Even more often, you might want to encrypt messages which are 10019in reply to encrypted messages. Gnus offers ‘gnus-message-replysign’ to 10020enable the former, and ‘gnus-message-replyencrypt’ for the latter. In 10021addition, setting ‘gnus-message-replysignencrypted’ (on by default) will 10022sign automatically encrypted messages. 10023 10024 Instructing MML to perform security operations on a MIME part is done 10025using the ‘C-c C-m s’ key map for signing and the ‘C-c C-m c’ key map 10026for encryption, as follows. 10027 10028‘C-c C-m s s’ 10029 10030 Digitally sign current message using S/MIME. 10031 10032‘C-c C-m s o’ 10033 10034 Digitally sign current message using PGP. 10035 10036‘C-c C-m s p’ 10037 10038 Digitally sign current message using PGP/MIME. 10039 10040‘C-c C-m c s’ 10041 10042 Digitally encrypt current message using S/MIME. 10043 10044‘C-c C-m c o’ 10045 10046 Digitally encrypt current message using PGP. 10047 10048‘C-c C-m c p’ 10049 10050 Digitally encrypt current message using PGP/MIME. 10051 10052‘C-c C-m C-n’ 10053 Remove security related MML tags from message. 10054 10055 *Note Security: (message)Security, for more information. 10056 10057 10058File: gnus.info, Node: Select Methods, Next: Scoring, Prev: Composing Messages, Up: Top 10059 100606 Select Methods 10061**************** 10062 10063A “foreign group” is a group not read by the usual (or default) means. 10064It could be, for instance, a group from a different NNTP server, it 10065could be a virtual group, or it could be your own personal mail group. 10066 10067 A foreign group (or any group, really) is specified by a “name” and a 10068“select method”. To take the latter first, a select method is a list 10069where the first element says what back end to use (e.g., ‘nntp’, 10070‘nnspool’, ‘nnml’) and the second element is the “server name”. There 10071may be additional elements in the select method, where the value may 10072have special meaning for the back end in question. 10073 10074 One could say that a select method defines a “virtual server”—so we 10075do just that (*note Server Buffer::). 10076 10077 The “name” of the group is the name the back end will recognize the 10078group as. 10079 10080 For instance, the group ‘soc.motss’ on the NNTP server 10081‘some.where.edu’ will have the name ‘soc.motss’ and select method ‘(nntp 10082"some.where.edu")’. Gnus will call this group 10083‘nntp+some.where.edu:soc.motss’, even though the ‘nntp’ back end just 10084knows this group as ‘soc.motss’. 10085 10086 The different methods all have their peculiarities, of course. 10087 10088* Menu: 10089 10090* Server Buffer:: Making and editing virtual servers. 10091* Getting News:: Reading USENET news with Gnus. 10092* Using IMAP:: Reading mail from IMAP. 10093* Getting Mail:: Reading your personal mail with Gnus. 10094* Browsing the Web:: Getting messages from a plethora of Web sources. 10095* Other Sources:: Reading directories, files. 10096* Combined Groups:: Combining groups into one group. 10097* Email Based Diary:: Using mails to manage diary events in Gnus. 10098* Gnus Unplugged:: Reading news and mail offline. 10099 10100 10101File: gnus.info, Node: Server Buffer, Next: Getting News, Up: Select Methods 10102 101036.1 Server Buffer 10104================= 10105 10106Traditionally, a “server” is a machine or a piece of software that one 10107connects to, and then requests information from. Gnus does not connect 10108directly to any real servers, but does all transactions through one back 10109end or other. But that’s just putting one layer more between the actual 10110media and Gnus, so we might just as well say that each back end 10111represents a virtual server. 10112 10113 For instance, the ‘nntp’ back end may be used to connect to several 10114different actual NNTP servers, or, perhaps, to many different ports on 10115the same actual NNTP server. You tell Gnus which back end to use, and 10116what parameters to set by specifying a “select method”. 10117 10118 These select method specifications can sometimes become quite 10119complicated—say, for instance, that you want to read from the NNTP 10120server ‘news.funet.fi’ on port number 13, which hangs if queried for NOV 10121headers and has a buggy select. Ahem. Anyway, if you had to specify 10122that for each group that used this server, that would be too much work, 10123so Gnus offers a way of naming select methods, which is what you do in 10124the server buffer. 10125 10126 To enter the server buffer, use the ‘^’ 10127(‘gnus-group-enter-server-mode’) command in the group buffer. 10128 10129* Menu: 10130 10131* Server Buffer Format:: You can customize the look of this buffer. 10132* Server Commands:: Commands to manipulate servers. 10133* Example Methods:: Examples server specifications. 10134* Creating a Virtual Server:: An example session. 10135* Server Variables:: Which variables to set. 10136* Servers and Methods:: You can use server names as select methods. 10137* Unavailable Servers:: Some servers you try to contact may be down. 10138 10139 ‘gnus-server-mode-hook’ is run when creating the server buffer. 10140 10141 10142File: gnus.info, Node: Server Buffer Format, Next: Server Commands, Up: Server Buffer 10143 101446.1.1 Server Buffer Format 10145-------------------------- 10146 10147You can change the look of the server buffer lines by changing the 10148‘gnus-server-line-format’ variable. This is a ‘format’-like variable, 10149with some simple extensions: 10150 10151‘h’ 10152 How the news is fetched—the back end name. 10153 10154‘n’ 10155 The name of this server. 10156 10157‘w’ 10158 Where the news is to be fetched from—the address. 10159 10160‘s’ 10161 The opened/closed/denied status of the server. 10162 10163‘a’ 10164 Whether this server is agentized. 10165 10166 The mode line can also be customized by using the 10167‘gnus-server-mode-line-format’ variable (*note Mode Line Formatting::). 10168The following specs are understood: 10169 10170‘S’ 10171 Server name. 10172 10173‘M’ 10174 Server method. 10175 10176 Also *note Formatting Variables::. 10177 10178 10179File: gnus.info, Node: Server Commands, Next: Example Methods, Prev: Server Buffer Format, Up: Server Buffer 10180 101816.1.2 Server Commands 10182--------------------- 10183 10184The following keybinding are available in the server buffer. Be aware 10185that some of the commands will only work on servers that you’ve added 10186through this interface (with ‘a’), not with servers you’ve defined in 10187your init files. 10188 10189‘v’ 10190 The key ‘v’ is reserved for users. You can bind it to some command 10191 or better use it as a prefix key. 10192 10193‘a’ 10194 Add a new server (‘gnus-server-add-server’). 10195 10196‘e’ 10197 Edit a server (‘gnus-server-edit-server’). 10198 10199‘S’ 10200 Show the definition of a server (‘gnus-server-show-server’). 10201 10202‘<SPC>’ 10203 Browse the current server (‘gnus-server-read-server’). 10204 10205‘q’ 10206 Return to the group buffer (‘gnus-server-exit’). 10207 10208‘k’ 10209 Kill the current server (‘gnus-server-kill-server’). 10210 10211‘y’ 10212 Yank the previously killed server (‘gnus-server-yank-server’). 10213 10214‘c’ 10215 Copy the current server (‘gnus-server-copy-server’). 10216 10217‘l’ 10218 List all servers (‘gnus-server-list-servers’). 10219 10220‘s’ 10221 Request that the server scan its sources for new articles 10222 (‘gnus-server-scan-server’). This is mainly sensible with mail 10223 servers. 10224 10225‘g’ 10226 Request that the server regenerate all its data structures 10227 (‘gnus-server-regenerate-server’). This can be useful if you have 10228 a mail back end that has gotten out of sync. 10229 10230‘z’ 10231 10232 Compact all groups in the server under point 10233 (‘gnus-server-compact-server’). Currently implemented only in nnml 10234 (*note Mail Spool::). This removes gaps between article numbers, 10235 hence getting a correct total article count. 10236 10237 Some more commands for closing, disabling, and re-opening servers are 10238listed in *note Unavailable Servers::. 10239 10240 10241File: gnus.info, Node: Example Methods, Next: Creating a Virtual Server, Prev: Server Commands, Up: Server Buffer 10242 102436.1.3 Example Methods 10244--------------------- 10245 10246Most select methods are pretty simple and self-explanatory: 10247 10248 (nntp "news.funet.fi") 10249 10250 Reading directly from the spool is even simpler: 10251 10252 (nnspool "") 10253 10254 As you can see, the first element in a select method is the name of 10255the back end, and the second is the “address”, or “name”, if you will. 10256 10257 After these two elements, there may be an arbitrary number of 10258‘(VARIABLE FORM)’ pairs. 10259 10260 To go back to the first example—imagine that you want to read from 10261port 15 on that machine. This is what the select method should look 10262like then: 10263 10264 (nntp "news.funet.fi" (nntp-port-number 15)) 10265 10266 You should read the documentation to each back end to find out what 10267variables are relevant, but here’s an ‘nnmh’ example: 10268 10269 ‘nnmh’ is a mail back end that reads a spool-like structure. Say you 10270have two structures that you wish to access: One is your private mail 10271spool, and the other is a public one. Here’s the possible spec for your 10272private mail: 10273 10274 (nnmh "private" (nnmh-directory "~/private/mail/")) 10275 10276 (This server is then called ‘private’, but you may have guessed 10277that.) 10278 10279 Here’s the method for a public spool: 10280 10281 (nnmh "public" 10282 (nnmh-directory "/usr/information/spool/") 10283 (nnmh-get-new-mail nil)) 10284 10285 If you are behind a firewall and only have access to the NNTP server 10286from the firewall machine, you can instruct Gnus to ‘rlogin’ on the 10287firewall machine and connect with netcat 10288(http://netcat.sourceforge.net/) from there to the NNTP server. Doing 10289this can be rather fiddly, but your virtual server definition should 10290probably look something like this: 10291 10292 (nntp "firewall" 10293 (nntp-open-connection-function nntp-open-via-rlogin-and-netcat) 10294 (nntp-via-address "the.firewall.machine") 10295 (nntp-address "the.real.nntp.host")) 10296 10297 If you want to use the wonderful ‘ssh’ program to provide a 10298compressed connection over the modem line, you could add the following 10299configuration to the example above: 10300 10301 (nntp-via-rlogin-command "ssh") 10302 10303 See also ‘nntp-via-rlogin-command-switches’. Here’s an example for 10304an indirect connection: 10305 10306 (setq gnus-select-method 10307 '(nntp "indirect" 10308 (nntp-address "news.server.example") 10309 (nntp-via-user-name "intermediate_user_name") 10310 (nntp-via-address "intermediate.host.example") 10311 (nntp-via-rlogin-command "ssh") 10312 (nntp-via-rlogin-command-switches ("-C")) 10313 (nntp-open-connection-function nntp-open-via-rlogin-and-netcat))) 10314 10315 This means that you have to have set up ‘ssh-agent’ correctly to 10316provide automatic authorization, of course. 10317 10318 If you’re behind a firewall, but have direct access to the outside 10319world through a wrapper command like "runsocks", you could open a 10320socksified netcat connection to the news server as follows: 10321 10322 (nntp "outside" 10323 (nntp-pre-command "runsocks") 10324 (nntp-open-connection-function nntp-open-netcat-stream) 10325 (nntp-address "the.news.server")) 10326 10327 10328File: gnus.info, Node: Creating a Virtual Server, Next: Server Variables, Prev: Example Methods, Up: Server Buffer 10329 103306.1.4 Creating a Virtual Server 10331------------------------------- 10332 10333If you’re saving lots of articles in the cache by using persistent 10334articles, you may want to create a virtual server to read the cache. 10335 10336 First you need to add a new server. The ‘a’ command does that. It 10337would probably be best to use ‘nnml’ to read the cache. You could also 10338use ‘nnspool’ or ‘nnmh’, though. 10339 10340 Type ‘a nnml <RET> cache <RET>’. 10341 10342 You should now have a brand new ‘nnml’ virtual server called ‘cache’. 10343You now need to edit it to have the right definitions. Type ‘e’ to edit 10344the server. You’ll be entered into a buffer that will contain the 10345following: 10346 10347 (nnml "cache") 10348 10349 Change that to: 10350 10351 (nnml "cache" 10352 (nnml-directory "~/News/cache/") 10353 (nnml-active-file "~/News/cache/active")) 10354 10355 Type ‘C-c C-c’ to return to the server buffer. If you now press 10356‘<RET>’ over this virtual server, you should be entered into a browse 10357buffer, and you should be able to enter any of the groups displayed. 10358 10359 10360File: gnus.info, Node: Server Variables, Next: Servers and Methods, Prev: Creating a Virtual Server, Up: Server Buffer 10361 103626.1.5 Server Variables 10363---------------------- 10364 10365One sticky point when defining variables (both on back ends and in Emacs 10366in general) is that some variables are typically initialized from other 10367variables when the definition of the variables is being loaded. If you 10368change the “base” variable after the variables have been loaded, you 10369won’t change the “derived” variables. 10370 10371 This typically affects directory and file variables. For instance, 10372‘nnml-directory’ is ‘~/Mail/’ by default, and all ‘nnml’ directory 10373variables are initialized from that variable, so ‘nnml-active-file’ will 10374be ‘~/Mail/active’. If you define a new virtual ‘nnml’ server, it will 10375_not_ suffice to set just ‘nnml-directory’—you have to explicitly set 10376all the file variables to be what you want them to be. For a complete 10377list of variables for each back end, see each back end’s section later 10378in this manual, but here’s an example ‘nnml’ definition: 10379 10380 (nnml "public" 10381 (nnml-directory "~/my-mail/") 10382 (nnml-active-file "~/my-mail/active") 10383 (nnml-newsgroups-file "~/my-mail/newsgroups")) 10384 10385 Server variables are often called “server parameters”. 10386 10387 10388File: gnus.info, Node: Servers and Methods, Next: Unavailable Servers, Prev: Server Variables, Up: Server Buffer 10389 103906.1.6 Servers and Methods 10391------------------------- 10392 10393Wherever you would normally use a select method (e.g., 10394‘gnus-secondary-select-method’, in the group select method, when 10395browsing a foreign server) you can use a virtual server name instead. 10396This could potentially save lots of typing. And it’s nice all over. 10397 10398 10399File: gnus.info, Node: Unavailable Servers, Prev: Servers and Methods, Up: Server Buffer 10400 104016.1.7 Unavailable Servers 10402------------------------- 10403 10404If a server seems to be unreachable, Gnus will mark that server as 10405‘denied’. That means that any subsequent attempt to make contact with 10406that server will just be ignored. “It can’t be opened,” Gnus will tell 10407you, without making the least effort to see whether that is actually the 10408case or not. 10409 10410 That might seem quite naughty, but it does make sense most of the 10411time. Let’s say you have 10 groups subscribed to on server 10412‘nephelococcygia.com’. This server is located somewhere quite far away 10413from you and the machine is quite slow, so it takes 1 minute just to 10414find out that it refuses connection to you today. If Gnus were to 10415attempt to do that 10 times, you’d be quite annoyed, so Gnus won’t 10416attempt to do that. Once it has gotten a single “connection refused”, 10417it will regard that server as “down”. 10418 10419 So, what happens if the machine was only feeling unwell temporarily? 10420How do you test to see whether the machine has come up again? 10421 10422 You jump to the server buffer (*note Server Buffer::) and poke it 10423with the following commands: 10424 10425‘O’ 10426 Try to establish connection to the server on the current line 10427 (‘gnus-server-open-server’). 10428 10429‘C’ 10430 Close the connection (if any) to the server 10431 (‘gnus-server-close-server’). 10432 10433‘D’ 10434 Mark the current server as unreachable (‘gnus-server-deny-server’). 10435 This will effectively disable the server. 10436 10437‘M-o’ 10438 Open the connections to all servers in the buffer 10439 (‘gnus-server-open-all-servers’). 10440 10441‘M-c’ 10442 Close the connections to all servers in the buffer 10443 (‘gnus-server-close-all-servers’). 10444 10445‘R’ 10446 Remove all marks to whether Gnus was denied connection from any 10447 servers (‘gnus-server-remove-denials’). 10448 10449‘c’ 10450 Copy a server and give it a new name (‘gnus-server-copy-server’). 10451 This can be useful if you have a complex method definition, and 10452 want to use the same definition towards a different (physical) 10453 server. 10454 10455‘L’ 10456 Set server status to offline (‘gnus-server-offline-server’). 10457 10458 10459File: gnus.info, Node: Getting News, Next: Using IMAP, Prev: Server Buffer, Up: Select Methods 10460 104616.2 Getting News 10462================ 10463 10464A newsreader is normally used for reading news. Gnus currently provides 10465only two methods of getting news—it can read from an NNTP server, or it 10466can read from a local spool. 10467 10468* Menu: 10469 10470* NNTP:: Reading news from an NNTP server. 10471* News Spool:: Reading news from the local spool. 10472 10473 10474File: gnus.info, Node: NNTP, Next: News Spool, Up: Getting News 10475 104766.2.1 NNTP 10477---------- 10478 10479Subscribing to a foreign group from an NNTP server is rather easy. You 10480just specify ‘nntp’ as method and the address of the NNTP server as the, 10481uhm, address. 10482 10483 If the NNTP server is located at a non-standard port, setting the 10484third element of the select method to this port number should allow you 10485to connect to the right port. You’ll have to edit the group info for 10486that (*note Foreign Groups::). 10487 10488 The name of the foreign group can be the same as a native group. In 10489fact, you can subscribe to the same group from as many different servers 10490you feel like. There will be no name collisions. 10491 10492 The following variables can be used to create a virtual ‘nntp’ 10493server: 10494 10495‘nntp-server-opened-hook’ 10496 is run after a connection has been made. It can be used to send 10497 commands to the NNTP server after it has been contacted. By 10498 default it sends the command ‘MODE READER’ to the server with the 10499 ‘nntp-send-mode-reader’ function. This function should always be 10500 present in this hook. 10501 10502‘nntp-authinfo-function’ 10503 This function will be used to send ‘AUTHINFO’ to the NNTP server. 10504 The default function is ‘nntp-send-authinfo’, which looks through 10505 your ‘~/.authinfo’ (or whatever you’ve set the ‘nntp-authinfo-file’ 10506 variable to) for applicable entries. If none are found, it will 10507 prompt you for a login name and a password. The format of the 10508 ‘~/.authinfo’ file is (almost) the same as the ‘ftp’ ‘~/.netrc’ 10509 file, which is defined in the ‘ftp’ manual page, but here are the 10510 salient facts: 10511 10512 1. The file contains one or more line, each of which define one 10513 server. 10514 10515 2. Each line may contain an arbitrary number of token/value 10516 pairs. 10517 10518 The valid tokens include ‘machine’, ‘login’, ‘password’, 10519 ‘default’. In addition Gnus introduces two new tokens, not 10520 present in the original ‘.netrc’/‘ftp’ syntax, namely ‘port’ 10521 and ‘force’. (This is the only way the ‘.authinfo’ file 10522 format deviates from the ‘.netrc’ file format.) ‘port’ is 10523 used to indicate what port on the server the credentials apply 10524 to and ‘force’ is explained below. 10525 10526 Here’s an example file: 10527 10528 machine news.uio.no login larsi password geheimnis 10529 machine nntp.ifi.uio.no login larsi force yes 10530 10531 The token/value pairs may appear in any order; ‘machine’ doesn’t 10532 have to be first, for instance. 10533 10534 In this example, both login name and password have been supplied 10535 for the former server, while the latter has only the login name 10536 listed, and the user will be prompted for the password. The latter 10537 also has the ‘force’ tag, which means that the authinfo will be 10538 sent to the NNTP server upon connection; the default (i.e., when 10539 there is not ‘force’ tag) is to not send authinfo to the NNTP 10540 server until the NNTP server asks for it. 10541 10542 You can also add ‘default’ lines that will apply to all servers 10543 that don’t have matching ‘machine’ lines. 10544 10545 default force yes 10546 10547 This will force sending ‘AUTHINFO’ commands to all servers not 10548 previously mentioned. 10549 10550 Remember to not leave the ‘~/.authinfo’ file world-readable. 10551 10552‘nntp-server-action-alist’ 10553 This is a list of regexps to match on server types and actions to 10554 be taken when matches are made. For instance, if you want Gnus to 10555 beep every time you connect to innd, you could say something like: 10556 10557 (setq nntp-server-action-alist 10558 '(("innd" (ding)))) 10559 10560 You probably don’t want to do that, though. 10561 10562 The default value is 10563 10564 '(("nntpd 1\\.5\\.11t" 10565 (remove-hook 'nntp-server-opened-hook 10566 'nntp-send-mode-reader))) 10567 10568 This ensures that Gnus doesn’t send the ‘MODE READER’ command to 10569 nntpd 1.5.11t, since that command chokes that server, I’ve been 10570 told. 10571 10572‘nntp-maximum-request’ 10573 If the NNTP server doesn’t support NOV headers, this back end will 10574 collect headers by sending a series of ‘head’ commands. To speed 10575 things up, the back end sends lots of these commands without 10576 waiting for reply, and then reads all the replies. This is 10577 controlled by the ‘nntp-maximum-request’ variable, and is 400 by 10578 default. If your network is buggy, you should set this to 1. 10579 10580‘nntp-connection-timeout’ 10581 If you have lots of foreign ‘nntp’ groups that you connect to 10582 regularly, you’re sure to have problems with NNTP servers not 10583 responding properly, or being too loaded to reply within reasonable 10584 time. This is can lead to awkward problems, which can be helped 10585 somewhat by setting ‘nntp-connection-timeout’. This is an integer 10586 that says how many seconds the ‘nntp’ back end should wait for a 10587 connection before giving up. If it is ‘nil’, which is the default, 10588 no timeouts are done. 10589 10590‘nntp-nov-is-evil’ 10591 If the NNTP server does not support NOV, you could set this 10592 variable to ‘t’, but ‘nntp’ usually checks automatically whether 10593 NOV can be used. 10594 10595‘nntp-xover-commands’ 10596 List of strings used as commands to fetch NOV lines from a server. 10597 The default value of this variable is ‘("XOVER" "XOVERVIEW")’. 10598 10599‘nntp-nov-gap’ 10600 ‘nntp’ normally sends just one big request for NOV lines to the 10601 server. The server responds with one huge list of lines. However, 10602 if you have read articles 2–5000 in the group, and only want to 10603 read article 1 and 5001, that means that ‘nntp’ will fetch 4999 NOV 10604 lines that you will not need. This variable says how big a gap 10605 between two consecutive articles is allowed to be before the 10606 ‘XOVER’ request is split into several request. Note that if your 10607 network is fast, setting this variable to a really small number 10608 means that fetching will probably be slower. If this variable is 10609 ‘nil’, ‘nntp’ will never split requests. The default is 5. 10610 10611‘nntp-xref-number-is-evil’ 10612 When Gnus refers to an article having the ‘Message-ID’ that a user 10613 specifies or having the ‘Message-ID’ of the parent article of the 10614 current one (*note Finding the Parent::), Gnus sends a ‘HEAD’ 10615 command to the NNTP server to know where it is, and the server 10616 returns the data containing the pairs of a group and an article 10617 number in the ‘Xref’ header. Gnus normally uses the article number 10618 to refer to the article if the data shows that that article is in 10619 the current group, while it uses the ‘Message-ID’ otherwise. 10620 However, some news servers, e.g., ones running Diablo, run multiple 10621 engines having the same articles but article numbers are not kept 10622 synchronized between them. In that case, the article number that 10623 appears in the ‘Xref’ header varies by which engine is chosen, so 10624 you cannot refer to the parent article that is in the current 10625 group, for instance. If you connect to such a server, set this 10626 variable to a non-‘nil’ value, and Gnus never uses article numbers. 10627 For example: 10628 10629 (setq gnus-select-method 10630 '(nntp "newszilla" 10631 (nntp-address "newszilla.example.com") 10632 (nntp-xref-number-is-evil t) 10633 ...)) 10634 10635 The default value of this server variable is ‘nil’. 10636 10637‘nntp-prepare-server-hook’ 10638 A hook run before attempting to connect to an NNTP server. 10639 10640‘nntp-record-commands’ 10641 If non-‘nil’, ‘nntp’ will log all commands it sends to the NNTP 10642 server (along with a timestamp) in the ‘*nntp-log*’ buffer. This 10643 is useful if you are debugging a Gnus/NNTP connection that doesn’t 10644 seem to work. 10645 10646‘nntp-open-connection-function’ 10647 It is possible to customize how the connection to the nntp server 10648 will be opened. If you specify an ‘nntp-open-connection-function’ 10649 parameter, Gnus will use that function to establish the connection. 10650 Seven pre-made functions are supplied. These functions can be 10651 grouped in two categories: direct connection functions (four 10652 pre-made), and indirect ones (three pre-made). 10653 10654‘nntp-never-echoes-commands’ 10655 Non-‘nil’ means the nntp server never echoes commands. It is 10656 reported that some nntps server doesn’t echo commands. So, you may 10657 want to set this to non-‘nil’ in the method for such a server 10658 setting ‘nntp-open-connection-function’ to ‘nntp-open-ssl-stream’ 10659 for example. The default value is ‘nil’. Note that the 10660 ‘nntp-open-connection-functions-never-echo-commands’ variable 10661 overrides the ‘nil’ value of this variable. 10662 10663‘nntp-open-connection-functions-never-echo-commands’ 10664 List of functions that never echo commands. Add or set a function 10665 which you set to ‘nntp-open-connection-function’ to this list if it 10666 does not echo commands. Note that a non-‘nil’ value of the 10667 ‘nntp-never-echoes-commands’ variable overrides this variable. The 10668 default value is ‘(nntp-open-network-stream)’. 10669 10670‘nntp-prepare-post-hook’ 10671 A hook run just before posting an article. If there is no 10672 ‘Message-ID’ header in the article and the news server provides the 10673 recommended ID, it will be added to the article before running this 10674 hook. It is useful to make ‘Cancel-Lock’ headers even if you 10675 inhibit Gnus to add a ‘Message-ID’ header, you could say: 10676 10677 (add-hook 'nntp-prepare-post-hook 'canlock-insert-header) 10678 10679 Note that not all servers support the recommended ID. This works 10680 for INN versions 2.3.0 and later, for instance. 10681 10682‘nntp-server-list-active-group’ 10683 If ‘nil’, then always use ‘GROUP’ instead of ‘LIST ACTIVE’. This 10684 is usually slower, but on misconfigured servers that don’t update 10685 their active files often, this can help. 10686 10687* Menu: 10688 10689* Direct Functions:: Connecting directly to the server. 10690* Indirect Functions:: Connecting indirectly to the server. 10691* Common Variables:: Understood by several connection functions. 10692 10693 10694File: gnus.info, Node: Direct Functions, Next: Indirect Functions, Up: NNTP 10695 106966.2.1.1 Direct Functions 10697........................ 10698 10699These functions are called direct because they open a direct connection 10700between your machine and the NNTP server. The behavior of these 10701functions is also affected by commonly understood variables (*note 10702Common Variables::). 10703 10704‘nntp-open-network-stream’ 10705 This is the default, and simply connects to some port or other on 10706 the remote system. If both Emacs and the server supports it, the 10707 connection will be upgraded to an encrypted STARTTLS connection 10708 automatically. 10709 10710‘network-only’ 10711 The same as the above, but don’t do automatic STARTTLS upgrades. 10712 10713‘nntp-open-tls-stream’ 10714 Opens a connection to a server over a “secure” channel. To use 10715 this you must have GnuTLS (https://www.gnu.org/software/gnutls/) 10716 installed. You then define a server as follows: 10717 10718 ;; "nntps" is port 563 and is predefined in our ‘/etc/services’ 10719 ;; however, ‘gnutls-cli -p’ doesn’t like named ports. 10720 ;; 10721 (nntp "snews.bar.com" 10722 (nntp-open-connection-function nntp-open-tls-stream) 10723 (nntp-port-number 563) 10724 (nntp-address "snews.bar.com")) 10725 10726‘nntp-open-ssl-stream’ 10727 Opens a connection to a server over a “secure” channel. To use 10728 this you must have OpenSSL (https://www.openssl.org/) installed. 10729 You then define a server as follows: 10730 10731 ;; "snews" is port 563 and is predefined in our ‘/etc/services’ 10732 ;; however, ‘openssl s_client -port’ doesn’t like named ports. 10733 ;; 10734 (nntp "snews.bar.com" 10735 (nntp-open-connection-function nntp-open-ssl-stream) 10736 (nntp-port-number 563) 10737 (nntp-address "snews.bar.com")) 10738 10739‘nntp-open-netcat-stream’ 10740 Opens a connection to an NNTP server using the ‘netcat’ program. 10741 You might wonder why this function exists, since we have the 10742 default ‘nntp-open-network-stream’ which would do the job. (One 10743 of) the reason(s) is that if you are behind a firewall but have 10744 direct connections to the outside world thanks to a command wrapper 10745 like ‘runsocks’, you can use it like this: 10746 10747 (nntp "socksified" 10748 (nntp-pre-command "runsocks") 10749 (nntp-open-connection-function nntp-open-netcat-stream) 10750 (nntp-address "the.news.server")) 10751 10752 With the default method, you would need to wrap your whole Emacs 10753 session, which is not a good idea. 10754 10755‘nntp-open-telnet-stream’ 10756 Like ‘nntp-open-netcat-stream’, but uses ‘telnet’ rather than 10757 ‘netcat’. ‘telnet’ is a bit less robust because of things like 10758 line-end-conversion, but sometimes netcat is simply not available. 10759 The previous example would turn into: 10760 10761 (nntp "socksified" 10762 (nntp-pre-command "runsocks") 10763 (nntp-open-connection-function nntp-open-telnet-stream) 10764 (nntp-address "the.news.server") 10765 (nntp-end-of-line "\n")) 10766 10767 10768File: gnus.info, Node: Indirect Functions, Next: Common Variables, Prev: Direct Functions, Up: NNTP 10769 107706.2.1.2 Indirect Functions 10771.......................... 10772 10773These functions are called indirect because they connect to an 10774intermediate host before actually connecting to the NNTP server. All of 10775these functions and related variables are also said to belong to the 10776“via” family of connection: they’re all prefixed with “via” to make 10777things cleaner. The behavior of these functions is also affected by 10778commonly understood variables (*note Common Variables::). 10779 10780‘nntp-open-via-rlogin-and-netcat’ 10781 Does an ‘rlogin’ on a remote system, and then uses ‘netcat’ to 10782 connect to the real NNTP server from there. This is useful for 10783 instance if you need to connect to a firewall machine first. 10784 10785 ‘nntp-open-via-rlogin-and-netcat’-specific variables: 10786 10787 ‘nntp-via-rlogin-command’ 10788 Command used to log in on the intermediate host. The default 10789 is ‘rsh’, but ‘ssh’ is a popular alternative. 10790 10791 ‘nntp-via-rlogin-command-switches’ 10792 List of strings to be used as the switches to 10793 ‘nntp-via-rlogin-command’. The default is ‘nil’. If you use 10794 ‘ssh’ for ‘nntp-via-rlogin-command’, you may set this to 10795 ‘("-C")’ in order to compress all data connections. 10796 10797‘nntp-open-via-rlogin-and-telnet’ 10798 Does essentially the same, but uses ‘telnet’ instead of ‘netcat’ to 10799 connect to the real NNTP server from the intermediate host. 10800 ‘telnet’ is a bit less robust because of things like 10801 line-end-conversion, but sometimes ‘netcat’ is simply not 10802 available. 10803 10804 ‘nntp-open-via-rlogin-and-telnet’-specific variables: 10805 10806 ‘nntp-telnet-command’ 10807 Command used to connect to the real NNTP server from the 10808 intermediate host. The default is ‘telnet’. 10809 10810 ‘nntp-telnet-switches’ 10811 List of strings to be used as the switches to the 10812 ‘nntp-telnet-command’ command. The default is ‘("-8")’. 10813 10814 ‘nntp-via-rlogin-command’ 10815 Command used to log in on the intermediate host. The default 10816 is ‘rsh’, but ‘ssh’ is a popular alternative. 10817 10818 ‘nntp-via-rlogin-command-switches’ 10819 List of strings to be used as the switches to 10820 ‘nntp-via-rlogin-command’. If you use ‘ssh’, you may need to 10821 set this to ‘("-t" "-e" "none")’ or ‘("-C" "-t" "-e" "none")’ 10822 if the telnet command requires a pseudo-tty allocation on an 10823 intermediate host. The default is ‘nil’. 10824 10825 Note that you may want to change the value for ‘nntp-end-of-line’ 10826 to ‘\n’ (*note Common Variables::). 10827 10828‘nntp-open-via-telnet-and-telnet’ 10829 Does essentially the same, but uses ‘telnet’ instead of ‘rlogin’ to 10830 connect to the intermediate host. 10831 10832 ‘nntp-open-via-telnet-and-telnet’-specific variables: 10833 10834 ‘nntp-via-telnet-command’ 10835 Command used to ‘telnet’ the intermediate host. The default 10836 is ‘telnet’. 10837 10838 ‘nntp-via-telnet-switches’ 10839 List of strings to be used as the switches to the 10840 ‘nntp-via-telnet-command’ command. The default is ‘("-8")’. 10841 10842 ‘nntp-via-user-password’ 10843 Password to use when logging in on the intermediate host. 10844 10845 ‘nntp-via-envuser’ 10846 If non-‘nil’, the intermediate ‘telnet’ session (client and 10847 server both) will support the ‘ENVIRON’ option and not prompt 10848 for login name. This works for Solaris ‘telnet’, for 10849 instance. 10850 10851 ‘nntp-via-shell-prompt’ 10852 Regexp matching the shell prompt on the intermediate host. 10853 The default is ‘bash\\|\$ *\r?$\\|> *\r?’. 10854 10855 Note that you may want to change the value for ‘nntp-end-of-line’ 10856 to ‘\n’ (*note Common Variables::). 10857 10858 Here are some additional variables that are understood by all the 10859above functions: 10860 10861‘nntp-via-user-name’ 10862 User name to use when connecting to the intermediate host. 10863 10864‘nntp-via-address’ 10865 Address of the intermediate host to connect to. 10866 10867 10868File: gnus.info, Node: Common Variables, Prev: Indirect Functions, Up: NNTP 10869 108706.2.1.3 Common Variables 10871........................ 10872 10873The following variables affect the behavior of all, or several of the 10874pre-made connection functions. When not specified, all functions are 10875affected (the values of the following variables will be used as the 10876default if each virtual ‘nntp’ server doesn’t specify those server 10877variables individually). 10878 10879‘nntp-pre-command’ 10880 A command wrapper to use when connecting through a non native 10881 connection function (all except ‘nntp-open-network-stream’, 10882 ‘nntp-open-tls-stream’, and ‘nntp-open-ssl-stream’). This is where 10883 you would put a ‘SOCKS’ wrapper for instance. 10884 10885‘nntp-address’ 10886 The address of the NNTP server. 10887 10888‘nntp-port-number’ 10889 Port number to connect to the NNTP server. The default is ‘nntp’. 10890 If you use NNTP over TLS/SSL, you may want to use integer ports 10891 rather than named ports (i.e., use ‘563’ instead of ‘snews’ or 10892 ‘nntps’), because external TLS/SSL tools may not work with named 10893 ports. 10894 10895‘nntp-end-of-line’ 10896 String to use as end-of-line marker when talking to the NNTP 10897 server. This is ‘\r\n’ by default, but should be ‘\n’ when using a 10898 non native telnet connection function. 10899 10900‘nntp-netcat-command’ 10901 Command to use when connecting to the NNTP server through ‘netcat’. 10902 This is _not_ for an intermediate host. This is just for the real 10903 NNTP server. The default is ‘nc’. 10904 10905‘nntp-netcat-switches’ 10906 A list of switches to pass to ‘nntp-netcat-command’. The default 10907 is ‘()’. 10908 10909 10910File: gnus.info, Node: News Spool, Prev: NNTP, Up: Getting News 10911 109126.2.2 News Spool 10913---------------- 10914 10915Subscribing to a foreign group from the local spool is extremely easy, 10916and might be useful, for instance, to speed up reading groups that 10917contain very big articles—‘alt.binaries.pictures.furniture’, for 10918instance. 10919 10920 Anyway, you just specify ‘nnspool’ as the method and ‘""’ (or 10921anything else) as the address. 10922 10923 If you have access to a local spool, you should probably use that as 10924the native select method (*note Finding the News::). It is normally 10925faster than using an ‘nntp’ select method, but might not be. It 10926depends. You just have to try to find out what’s best at your site. 10927 10928‘nnspool-inews-program’ 10929 Program used to post an article. 10930 10931‘nnspool-inews-switches’ 10932 Parameters given to the inews program when posting an article. 10933 10934‘nnspool-spool-directory’ 10935 Where ‘nnspool’ looks for the articles. This is normally 10936 ‘/usr/spool/news/’. 10937 10938‘nnspool-nov-directory’ 10939 Where ‘nnspool’ will look for NOV files. This is normally 10940 ‘/usr/spool/news/over.view/’. 10941 10942‘nnspool-lib-dir’ 10943 Where the news lib dir is (‘/usr/lib/news/’ by default). 10944 10945‘nnspool-active-file’ 10946 The name of the active file. 10947 10948‘nnspool-newsgroups-file’ 10949 The name of the group descriptions file. 10950 10951‘nnspool-history-file’ 10952 The name of the news history file. 10953 10954‘nnspool-active-times-file’ 10955 The name of the active date file. 10956 10957‘nnspool-nov-is-evil’ 10958 If non-‘nil’, ‘nnspool’ won’t try to use any NOV files that it 10959 finds. 10960 10961‘nnspool-sift-nov-with-sed’ 10962 If non-‘nil’, which is the default, use ‘sed’ to get the relevant 10963 portion from the overview file. If ‘nil’, ‘nnspool’ will load the 10964 entire file into a buffer and process it there. 10965 10966 10967File: gnus.info, Node: Using IMAP, Next: Getting Mail, Prev: Getting News, Up: Select Methods 10968 109696.3 Using IMAP 10970============== 10971 10972The most popular mail backend is probably ‘nnimap’, which provides 10973access to IMAP servers. IMAP servers store mail remotely, so the client 10974doesn’t store anything locally. This means that it’s a convenient 10975choice when you’re reading your mail from different locations, or with 10976different user agents. 10977 10978* Menu: 10979 10980* Connecting to an IMAP Server:: Getting started with IMAP. 10981* Customizing the IMAP Connection:: Variables for IMAP connection. 10982* Client-Side IMAP Splitting:: Put mail in the correct mail box. 10983* Support for IMAP Extensions:: Getting extensions and labels from servers. 10984 10985 10986File: gnus.info, Node: Connecting to an IMAP Server, Next: Customizing the IMAP Connection, Up: Using IMAP 10987 109886.3.1 Connecting to an IMAP Server 10989---------------------------------- 10990 10991Connecting to an IMAP can be very easy. Type ‘B’ in the group buffer, 10992or (if your primary interest is reading email), say something like: 10993 10994 (setq gnus-select-method 10995 '(nnimap "imap.gmail.com")) 10996 10997 You’ll be prompted for a user name and password. If you grow tired 10998of that, then add the following to your ‘~/.authinfo’ file: 10999 11000 machine imap.gmail.com login <username> password <password> port imap 11001 11002 That should basically be it for most users. 11003 11004 11005File: gnus.info, Node: Customizing the IMAP Connection, Next: Client-Side IMAP Splitting, Prev: Connecting to an IMAP Server, Up: Using IMAP 11006 110076.3.2 Customizing the IMAP Connection 11008------------------------------------- 11009 11010Here’s an example method that’s more complex: 11011 11012 (nnimap "imap.gmail.com" 11013 (nnimap-inbox "INBOX") 11014 (nnimap-split-methods default) 11015 (nnimap-expunge t) 11016 (nnimap-stream ssl)) 11017 11018‘nnimap-address’ 11019 The address of the server, like ‘imap.gmail.com’. 11020 11021‘nnimap-server-port’ 11022 If the server uses a non-standard port, that can be specified here. 11023 A typical port would be ‘"imap"’ or ‘"imaps"’. 11024 11025‘nnimap-stream’ 11026 How ‘nnimap’ should connect to the server. Possible values are: 11027 11028 ‘undecided’ 11029 This is the default, and this first tries the ‘ssl’ setting, 11030 and then tries the ‘network’ setting. 11031 11032 ‘ssl’ 11033 This uses standard TLS/SSL connections. 11034 11035 ‘network’ 11036 Non-encrypted and unsafe straight socket connection, but will 11037 upgrade to encrypted STARTTLS if both Emacs and the server 11038 supports it. 11039 11040 ‘starttls’ 11041 Encrypted STARTTLS over the normal IMAP port. 11042 11043 ‘shell’ 11044 If you need to tunnel via other systems to connect to the 11045 server, you can use this option, and customize 11046 ‘nnimap-shell-program’ to be what you need. 11047 11048 ‘plain’ 11049 Non-encrypted and unsafe straight socket connection. STARTTLS 11050 will not be used even if it is available. 11051 11052‘nnimap-authenticator’ 11053 Some IMAP servers allow anonymous logins. In that case, this 11054 should be set to ‘anonymous’. If this variable isn’t set, the 11055 normal login methods will be used. If you wish to specify a 11056 specific login method to be used, you can set this variable to 11057 either ‘login’ (the traditional IMAP login method), ‘plain’ or 11058 ‘cram-md5’. 11059 11060‘nnimap-expunge’ 11061 When to expunge deleted messages. If ‘never’, deleted articles are 11062 marked with the IMAP ‘\\Delete’ flag but not automatically 11063 expunged. If ‘immediately’, deleted articles are immediately 11064 expunged (this requires the server to support the UID EXPUNGE 11065 command). If ‘on-exit’, deleted articles are flagged, and all 11066 flagged articles are expunged when the group is closed. 11067 11068 For backwards compatibility, this variable may also be set to t or 11069 nil. If the server supports UID EXPUNGE, both t and nil are 11070 equivalent to ‘immediately’. If the server does not support UID 11071 EXPUNGE nil is equivalent to ‘never’, while t will immediately 11072 expunge ALL articles that are currently flagged as deleted (i.e., 11073 potentially not only the article that was just deleted). 11074 11075‘nnimap-streaming’ 11076 Virtually all IMAP server support fast streaming of data. If you 11077 have problems connecting to the server, try setting this to ‘nil’. 11078 11079‘nnimap-fetch-partial-articles’ 11080 If non-‘nil’, fetch partial articles from the server. If set to a 11081 string, then it’s interpreted as a regexp, and parts that have 11082 matching types will be fetched. For instance, ‘"text/"’ will fetch 11083 all textual parts, while leaving the rest on the server. 11084 11085‘nnimap-record-commands’ 11086 If non-‘nil’, record all IMAP commands in the ‘"*imap log*"’ 11087 buffer. 11088 11089‘nnimap-use-namespaces’ 11090 If non-‘nil’, omit the IMAP namespace prefix in nnimap group names. 11091 If your IMAP mailboxes are called something like ‘INBOX’ and 11092 ‘INBOX.Lists.emacs’, but you’d like the nnimap group names to be 11093 ‘INBOX’ and ‘Lists.emacs’, you should enable this option. 11094 11095 11096File: gnus.info, Node: Client-Side IMAP Splitting, Next: Support for IMAP Extensions, Prev: Customizing the IMAP Connection, Up: Using IMAP 11097 110986.3.3 Client-Side IMAP Splitting 11099-------------------------------- 11100 11101Many people prefer to do the sorting/splitting of mail into their mail 11102boxes on the IMAP server. That way they don’t have to download the mail 11103they’re not all that interested in. 11104 11105 If you do want to do client-side mail splitting, then the following 11106variables are relevant: 11107 11108‘nnimap-inbox’ 11109 This is the IMAP mail box that will be scanned for new mail. This 11110 can also be a list of mail box names. 11111 11112‘nnimap-split-methods’ 11113 Uses the same syntax as ‘nnmail-split-methods’ (*note Splitting 11114 Mail::), except the symbol ‘default’, which means that it should 11115 use the value of the ‘nnmail-split-methods’ variable. 11116 11117‘nnimap-split-fancy’ 11118 Uses the same syntax as ‘nnmail-split-fancy’. 11119 11120‘nnimap-unsplittable-articles’ 11121 List of flag symbols to ignore when doing splitting. That is, 11122 articles that have these flags won’t be considered when splitting. 11123 The default is ‘(%Deleted %Seen)’. 11124 11125 Here’s a complete example ‘nnimap’ backend with a client-side “fancy” 11126splitting method: 11127 11128 (nnimap "imap.example.com" 11129 (nnimap-inbox "INBOX") 11130 (nnimap-split-fancy 11131 (| ("MailScanner-SpamCheck" "spam" "spam.detected") 11132 (to "foo@bar.com" "foo") 11133 "undecided"))) 11134 11135 11136File: gnus.info, Node: Support for IMAP Extensions, Prev: Client-Side IMAP Splitting, Up: Using IMAP 11137 111386.3.4 Support for IMAP Extensions 11139--------------------------------- 11140 11141If you’re using Google’s Gmail, you may want to see your Gmail labels 11142when reading your mail. Gnus can give you this information if you ask 11143for ‘X-GM-LABELS’ in the variable ‘gnus-extra-headers’. For example: 11144 11145 (setq gnus-extra-headers 11146 '(To Newsgroups X-GM-LABELS)) 11147 11148 This will result in Gnus storing your labels in message header 11149structures for later use. The content is always a parenthesized 11150(possible empty) list. 11151 11152 11153File: gnus.info, Node: Getting Mail, Next: Browsing the Web, Prev: Using IMAP, Up: Select Methods 11154 111556.4 Getting Mail 11156================ 11157 11158Reading mail with a newsreader—isn’t that just plain WeIrD? But of 11159course. 11160 11161* Menu: 11162 11163* Mail in a Newsreader:: Important introductory notes. 11164* Getting Started Reading Mail:: A simple cookbook example. 11165* Splitting Mail:: How to create mail groups. 11166* Mail Sources:: How to tell Gnus where to get mail from. 11167* Mail Back End Variables:: Variables for customizing mail handling. 11168* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. 11169* Group Mail Splitting:: Use group customize to drive mail splitting. 11170* Incorporating Old Mail:: What about the old mail you have? 11171* Expiring Mail:: Getting rid of unwanted mail. 11172* Washing Mail:: Removing cruft from the mail you get. 11173* Duplicates:: Dealing with duplicated mail. 11174* Not Reading Mail:: Using mail back ends for reading other files. 11175* Choosing a Mail Back End:: Gnus can read a variety of mail formats. 11176 11177 11178File: gnus.info, Node: Mail in a Newsreader, Next: Getting Started Reading Mail, Up: Getting Mail 11179 111806.4.1 Mail in a Newsreader 11181-------------------------- 11182 11183If you are used to traditional mail readers, but have decided to switch 11184to reading mail with Gnus, you may find yourself experiencing something 11185of a culture shock. 11186 11187 Gnus does not behave like traditional mail readers. If you want to 11188make it behave that way, you can, but it’s an uphill battle. 11189 11190 Gnus, by default, handles all its groups using the same approach. 11191This approach is very newsreaderly—you enter a group, see the new/unread 11192messages, and when you read the messages, they get marked as read, and 11193you don’t see them any more. (Unless you explicitly ask for them.) 11194 11195 In particular, you do not do anything explicitly to delete messages. 11196 11197 Does this mean that all the messages that have been marked as read 11198are deleted? How awful! 11199 11200 But, no, it means that old messages are “expired” according to some 11201scheme or other. For news messages, the expire process is controlled by 11202the news administrator; for mail, the expire process is controlled by 11203you. The expire process for mail is covered in depth in *note Expiring 11204Mail::. 11205 11206 What many Gnus users find, after using it a while for both news and 11207mail, is that the transport mechanism has very little to do with how 11208they want to treat a message. 11209 11210 Many people subscribe to several mailing lists. These are 11211transported via SMTP, and are therefore mail. But we might go for weeks 11212without answering, or even reading these messages very carefully. We 11213may not need to save them because if we should need to read one again, 11214they are archived somewhere else. 11215 11216 Some people have local news groups which have only a handful of 11217readers. These are transported via NNTP, and are therefore news. But 11218we may need to read and answer a large fraction of the messages very 11219carefully in order to do our work. And there may not be an archive, so 11220we may need to save the interesting messages the same way we would 11221personal mail. 11222 11223 The important distinction turns out to be not the transport 11224mechanism, but other factors such as how interested we are in the 11225subject matter, or how easy it is to retrieve the message if we need to 11226read it again. 11227 11228 Gnus provides many options for sorting mail into “groups” which 11229behave like newsgroups, and for treating each group (whether mail or 11230news) differently. 11231 11232 Some users never get comfortable using the Gnus (ahem) paradigm and 11233wish that Gnus should grow up and be a male, er, mail reader. It is 11234possible to whip Gnus into a more mailreaderly being, but, as said 11235before, it’s not easy. People who prefer proper mail readers should try 11236VM instead, which is an excellent, and proper, mail reader. 11237 11238 I don’t mean to scare anybody off, but I want to make it clear that 11239you may be required to learn a new way of thinking about messages. 11240After you’ve been subjected to The Gnus Way, you will come to love it. 11241I can guarantee it. (At least the guy who sold me the Emacs Subliminal 11242Brain-Washing Functions that I’ve put into Gnus did guarantee it. You 11243Will Be Assimilated. You Love Gnus. You Love The Gnus Mail Way. You 11244Do.) 11245 11246 11247File: gnus.info, Node: Getting Started Reading Mail, Next: Splitting Mail, Prev: Mail in a Newsreader, Up: Getting Mail 11248 112496.4.2 Getting Started Reading Mail 11250---------------------------------- 11251 11252It’s quite easy to use Gnus to read your new mail. You just plonk the 11253mail back end of your choice into ‘gnus-secondary-select-methods’, and 11254things will happen automatically. 11255 11256 For instance, if you want to use ‘nnml’ (which is a “one file per 11257mail” back end), you could put the following in your ‘~/.gnus.el’ file: 11258 11259 (setq gnus-secondary-select-methods '((nnml ""))) 11260 11261 Now, the next time you start Gnus, this back end will be queried for 11262new articles, and it will move all the messages in your spool file to 11263its directory, which is ‘~/Mail/’ by default. The new group that will 11264be created (‘mail.misc’) will be subscribed, and you can read it like 11265any other group. 11266 11267 You will probably want to split the mail into several groups, though: 11268 11269 (setq nnmail-split-methods 11270 '(("junk" "^From:.*Lars Ingebrigtsen") 11271 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") 11272 ("other" ""))) 11273 11274 This will result in three new ‘nnml’ mail groups being created: 11275‘nnml:junk’, ‘nnml:crazy’, and ‘nnml:other’. All the mail that doesn’t 11276fit into the first two groups will be placed in the last group. 11277 11278 This should be sufficient for reading mail with Gnus. You might want 11279to give the other sections in this part of the manual a perusal, though. 11280Especially *note Choosing a Mail Back End:: and *note Expiring Mail::. 11281 11282 11283File: gnus.info, Node: Splitting Mail, Next: Mail Sources, Prev: Getting Started Reading Mail, Up: Getting Mail 11284 112856.4.3 Splitting Mail 11286-------------------- 11287 11288The ‘nnmail-split-methods’ variable says how the incoming mail is to be 11289split into groups. 11290 11291 (setq nnmail-split-methods 11292 '(("mail.junk" "^From:.*Lars Ingebrigtsen") 11293 ("mail.crazy" "^Subject:.*die\\|^Organization:.*flabby") 11294 ("mail.other" ""))) 11295 11296 This variable is a list of lists, where the first element of each of 11297these lists is the name of the mail group (they do not have to be called 11298something beginning with ‘mail’, by the way), and the second element is 11299a regular expression used on the header of each mail to determine if it 11300belongs in this mail group. The first string may contain ‘\\1’ forms, 11301like the ones used by ‘replace-match’ to insert sub-expressions from the 11302matched text. For instance: 11303 11304 ("list.\\1" "From:.* \\(.*\\)-list@majordomo.com") 11305 11306In that case, ‘nnmail-split-lowercase-expanded’ controls whether the 11307inserted text should be made lowercase. *Note Fancy Mail Splitting::. 11308 11309 The second element can also be a function. In that case, it will be 11310called narrowed to the headers with the first element of the rule as the 11311argument. It should return a non-‘nil’ value if it thinks that the mail 11312belongs in that group. 11313 11314 The last of these groups should always be a general one, and the 11315regular expression should _always_ be ‘""’ so that it matches any mails 11316that haven’t been matched by any of the other regexps. (These rules are 11317processed from the beginning of the alist toward the end. The first 11318rule to make a match will “win”, unless you have crossposting enabled. 11319In that case, all matching rules will “win”.) If no rule matched, the 11320mail will end up in the ‘bogus’ group. When new groups are created by 11321splitting mail, you may want to run ‘gnus-group-find-new-groups’ to see 11322the new groups. This also applies to the ‘bogus’ group. 11323 11324 If you like to tinker with this yourself, you can set this variable 11325to a function of your choice. This function will be called without any 11326arguments in a buffer narrowed to the headers of an incoming mail 11327message. The function should return a list of group names that it 11328thinks should carry this mail message. 11329 11330 This variable can also be a fancy split method. For the syntax, see 11331*note Fancy Mail Splitting::. 11332 11333 Note that the mail back ends are free to maul the poor, innocent, 11334incoming headers all they want to. They all add ‘Lines’ headers; some 11335add ‘X-Gnus-Group’ headers; most rename the Unix mbox ‘From<SPC>’ line 11336to something else. 11337 11338 The mail back ends all support cross-posting. If several regexps 11339match, the mail will be “cross-posted” to all those groups. 11340‘nnmail-crosspost’ says whether to use this mechanism or not. Note that 11341no articles are crossposted to the general (‘""’) group. 11342 11343 ‘nnmh’ and ‘nnml’ makes crossposts by creating hard links to the 11344crossposted articles. However, not all file systems support hard links. 11345If that’s the case for you, set ‘nnmail-crosspost-link-function’ to 11346‘copy-file’. (This variable is ‘add-name-to-file’ by default.) 11347 11348 If you wish to see where the previous mail split put the messages, 11349you can use the ‘M-x nnmail-split-history’ command. If you wish to see 11350where re-spooling messages would put the messages, you can use 11351‘gnus-summary-respool-trace’ and related commands (*note Mail Group 11352Commands::). 11353 11354 Header lines longer than the value of 11355‘nnmail-split-header-length-limit’ are excluded from the split function. 11356 11357 By default, splitting does not decode headers, so you can not match 11358on non-ASCII strings. But it is useful if you want to match articles 11359based on the raw header data. To enable it, set the 11360‘nnmail-mail-splitting-decodes’ variable to a non-‘nil’ value. In 11361addition, the value of the ‘nnmail-mail-splitting-charset’ variable is 11362used for decoding non-MIME encoded string when 11363‘nnmail-mail-splitting-decodes’ is non-‘nil’. The default value is 11364‘nil’ which means not to decode non-MIME encoded string. A suitable 11365value for you will be ‘undecided’ or be the charset used normally in 11366mails you are interested in. 11367 11368 By default, splitting is performed on all incoming messages. If you 11369specify a ‘directory’ entry for the variable ‘mail-sources’ (*note Mail 11370Source Specifiers::), however, then splitting does _not_ happen by 11371default. You can set the variable ‘nnmail-resplit-incoming’ to a 11372non-‘nil’ value to make splitting happen even in this case. (This 11373variable has no effect on other kinds of entries.) 11374 11375 Gnus gives you all the opportunity you could possibly want for 11376shooting yourself in the foot. Let’s say you create a group that will 11377contain all the mail you get from your boss. And then you accidentally 11378unsubscribe from the group. Gnus will still put all the mail from your 11379boss in the unsubscribed group, and so, when your boss mails you “Have 11380that report ready by Monday or you’re fired!”, you’ll never see it and, 11381come Tuesday, you’ll still believe that you’re gainfully employed while 11382you really should be out collecting empty bottles to save up for next 11383month’s rent money. 11384 11385 11386File: gnus.info, Node: Mail Sources, Next: Mail Back End Variables, Prev: Splitting Mail, Up: Getting Mail 11387 113886.4.4 Mail Sources 11389------------------ 11390 11391Mail can be gotten from many different sources—the mail spool, from a 11392POP mail server, from a procmail directory, or from a maildir, for 11393instance. 11394 11395* Menu: 11396 11397* Mail Source Specifiers:: How to specify what a mail source is. 11398* Mail Source Functions:: 11399* Mail Source Customization:: Some variables that influence things. 11400* Fetching Mail:: Using the mail source specifiers. 11401 11402 11403File: gnus.info, Node: Mail Source Specifiers, Next: Mail Source Functions, Up: Mail Sources 11404 114056.4.4.1 Mail Source Specifiers 11406.............................. 11407 11408You tell Gnus how to fetch mail by setting ‘mail-sources’ (*note 11409Fetching Mail::) to a “mail source specifier”. 11410 11411 Here’s an example: 11412 11413 (pop :server "pop3.mailserver.com" :user "myname") 11414 11415 As can be observed, a mail source specifier is a list where the first 11416element is a “mail source type”, followed by an arbitrary number of 11417“keywords”. Keywords that are not explicitly specified are given 11418default values. 11419 11420 The ‘mail-sources’ is global for all mail groups. You can specify an 11421additional mail source for a particular group by including the ‘group’ 11422mail specifier in ‘mail-sources’, and setting a ‘mail-source’ group 11423parameter (*note Group Parameters::) specifying a single mail source. 11424When this is used, ‘mail-sources’ is typically just ‘((group))’; the 11425‘mail-source’ parameter for a group might look like this: 11426 11427 (mail-source . (file :path "home/user/spools/foo.spool")) 11428 11429 This means that the group’s (and only this group’s) messages will be 11430fetched from the spool file ‘/user/spools/foo.spool’. 11431 11432 The following mail source types are available: 11433 11434‘file’ 11435 Get mail from a single file; typically from the mail spool. 11436 11437 Keywords: 11438 11439 ‘:path’ 11440 The file name. Defaults to the value of the ‘MAIL’ 11441 environment variable or the value of ‘rmail-spool-directory’ 11442 (usually something like ‘/usr/mail/spool/user-name’). 11443 11444 ‘:prescript’ 11445 ‘:postscript’ 11446 Script run before/after fetching mail. 11447 11448 An example file mail source: 11449 11450 (file :path "/usr/spool/mail/user-name") 11451 11452 Or using the default file name: 11453 11454 (file) 11455 11456 If the mail spool file is not located on the local machine, it’s 11457 best to use POP or IMAP or the like to fetch the mail. You can not 11458 use ange-ftp file names here—it has no way to lock the mail spool 11459 while moving the mail. 11460 11461 If it’s impossible to set up a proper server, you can use ssh 11462 instead. 11463 11464 (setq mail-sources 11465 '((file :prescript "ssh host bin/getmail >%t"))) 11466 11467 The ‘getmail’ script would look something like the following: 11468 11469 #!/bin/sh 11470 # getmail - move mail from spool to stdout 11471 # flu@iki.fi 11472 11473 MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail 11474 TMP=$HOME/Mail/tmp 11475 rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP 11476 11477 Alter this script to fit the ‘movemail’ and temporary file you want 11478 to use. 11479 11480‘directory’ 11481 Get mail from several files in a directory. This is typically used 11482 when you have procmail split the incoming mail into several files. 11483 That is, there is a one-to-one correspondence between files in that 11484 directory and groups, so that mail from the file ‘foo.bar.spool’ 11485 will be put in the group ‘foo.bar’. (You can change the suffix to 11486 be used instead of ‘.spool’.) Setting 11487 ‘nnmail-scan-directory-mail-source-once’ to non-‘nil’ forces Gnus 11488 to scan the mail source only once. This is particularly useful if 11489 you want to scan mail groups at a specified level. 11490 11491 There is also the variable ‘nnmail-resplit-incoming’, if you set 11492 that to a non-‘nil’ value, then the normal splitting process is 11493 applied to all the files from the directory, *note Splitting 11494 Mail::. 11495 11496 Keywords: 11497 11498 ‘:path’ 11499 The name of the directory where the files are. There is no 11500 default value. 11501 11502 ‘:suffix’ 11503 Only files ending with this suffix are used. The default is 11504 ‘.spool’. 11505 11506 ‘:predicate’ 11507 Only files that have this predicate return non-‘nil’ are 11508 returned. The default is ‘identity’. This is used as an 11509 additional filter—only files that have the right suffix _and_ 11510 satisfy this predicate are considered. 11511 11512 ‘:prescript’ 11513 ‘:postscript’ 11514 Script run before/after fetching mail. 11515 11516 An example directory mail source: 11517 11518 (directory :path "/home/user-name/procmail-dir/" 11519 :suffix ".prcml") 11520 11521‘pop’ 11522 Get mail from a POP server. 11523 11524 Keywords: 11525 11526 ‘:server’ 11527 The name of the POP server. The default is taken from the 11528 ‘MAILHOST’ environment variable. 11529 11530 ‘:port’ 11531 The port number of the POP server. This can be a number 11532 (e.g., ‘:port 1234’) or a string (e.g., ‘:port "pop3"’). If 11533 it is a string, it should be a service name as listed in 11534 ‘/etc/services’ on Unix systems. The default is ‘"pop3"’. On 11535 some systems you might need to specify it as ‘"pop-3"’ 11536 instead. 11537 11538 ‘:user’ 11539 The user name to give to the POP server. The default is the 11540 login name. 11541 11542 ‘:password’ 11543 The password to give to the POP server. If not specified, the 11544 user is prompted. 11545 11546 ‘:program’ 11547 The program to use to fetch mail from the POP server. This 11548 should be a ‘format’-like string. Here’s an example: 11549 11550 fetchmail %u@%s -P %p %t 11551 11552 The valid format specifier characters are: 11553 11554 ‘t’ 11555 The name of the file the mail is to be moved to. This 11556 must always be included in this string. 11557 11558 ‘s’ 11559 The name of the server. 11560 11561 ‘P’ 11562 The port number of the server. 11563 11564 ‘u’ 11565 The user name to use. 11566 11567 ‘p’ 11568 The password to use. 11569 11570 The values used for these specs are taken from the values you 11571 give the corresponding keywords. 11572 11573 ‘:prescript’ 11574 A script to be run before fetching the mail. The syntax is 11575 the same as the ‘:program’ keyword. This can also be a 11576 function to be run. 11577 11578 One popular way to use this is to set up an SSH tunnel to 11579 access the POP server. Here’s an example: 11580 11581 (pop :server "127.0.0.1" 11582 :port 1234 11583 :user "foo" 11584 :password "secret" 11585 :prescript 11586 "nohup ssh -f -L 1234:pop.server:110 remote.host sleep 3600 &") 11587 11588 ‘:postscript’ 11589 A script to be run after fetching the mail. The syntax is the 11590 same as the ‘:program’ keyword. This can also be a function 11591 to be run. 11592 11593 ‘:function’ 11594 The function to use to fetch mail from the POP server. The 11595 function is called with one parameter—the name of the file 11596 where the mail should be moved to. 11597 11598 ‘:authentication’ 11599 This can be either the symbol ‘password’ or the symbol ‘apop’ 11600 and says what authentication scheme to use. The default is 11601 ‘password’. 11602 11603 ‘:leave’ 11604 Non-‘nil’ if the mail is to be left on the POP server after 11605 fetching. Only the built-in ‘pop3-movemail’ program (the 11606 default) supports this keyword. 11607 11608 If this is a number, leave mails on the server for this many 11609 days since you first checked new mails. In that case, mails 11610 once fetched will never be fetched again by the UIDL control. 11611 If this is ‘nil’ (the default), mails will be deleted on the 11612 server right after fetching. If this is neither ‘nil’ nor a 11613 number, all mails will be left on the server, and you will end 11614 up getting the same mails again and again. 11615 11616 The ‘pop3-uidl-file’ variable specifies the file to which the 11617 UIDL data are locally stored. The default value is 11618 ‘~/.pop3-uidl’. 11619 11620 Note that POP servers maintain no state information between 11621 sessions, so what the client believes is there and what is 11622 actually there may not match up. If they do not, then you may 11623 get duplicate mails or the whole thing can fall apart and 11624 leave you with a corrupt mailbox. 11625 11626 If the ‘:program’ and ‘:function’ keywords aren’t specified, 11627 ‘pop3-movemail’ will be used. 11628 11629 Here are some examples for getting mail from a POP server. 11630 11631 Fetch from the default POP server, using the default user name, and 11632 default fetcher: 11633 11634 (pop) 11635 11636 Fetch from a named server with a named user and password: 11637 11638 (pop :server "my.pop.server" 11639 :user "user-name" :password "secret") 11640 11641 Leave mails on the server for 14 days: 11642 11643 (pop :server "my.pop.server" 11644 :user "user-name" :password "secret" 11645 :leave 14) 11646 11647 Use ‘movemail’ to move the mail: 11648 11649 (pop :program "movemail po:%u %t %p") 11650 11651‘maildir’ 11652 Get mail from a maildir. This is a type of mailbox that is 11653 supported by at least qmail and postfix, where each file in a 11654 special directory contains exactly one mail. 11655 11656 Keywords: 11657 11658 ‘:path’ 11659 The name of the directory where the mails are stored. The 11660 default is taken from the ‘MAILDIR’ environment variable or 11661 ‘~/Maildir/’. 11662 ‘:subdirs’ 11663 The subdirectories of the Maildir. The default is ‘("new" 11664 "cur")’. 11665 11666 You can also get mails from remote hosts (because maildirs 11667 don’t suffer from locking problems). 11668 11669 Two example maildir mail sources: 11670 11671 (maildir :path "/home/user-name/Maildir/" 11672 :subdirs ("cur" "new")) 11673 11674 (maildir :path "/user@remotehost.org:~/Maildir/" 11675 :subdirs ("new")) 11676 11677‘imap’ 11678 Get mail from a IMAP server. If you don’t want to use IMAP as 11679 intended, as a network mail reading protocol (i.e., with nnimap), 11680 for some reason or other, Gnus let you treat it similar to a POP 11681 server and fetches articles from a given IMAP mailbox. *Note Using 11682 IMAP::, for more information. 11683 11684 Keywords: 11685 11686 ‘:server’ 11687 The name of the IMAP server. The default is taken from the 11688 ‘MAILHOST’ environment variable. 11689 11690 ‘:port’ 11691 The port number of the IMAP server. The default is ‘143’, or 11692 ‘993’ for TLS/SSL connections. 11693 11694 ‘:user’ 11695 The user name to give to the IMAP server. The default is the 11696 login name. 11697 11698 ‘:password’ 11699 The password to give to the IMAP server. If not specified, 11700 the user is prompted. 11701 11702 ‘:stream’ 11703 What stream to use for connecting to the server, this is one 11704 of the symbols in ‘imap-stream-alist’. Right now, this means 11705 ‘gssapi’, ‘kerberos4’, ‘starttls’, ‘tls’, ‘ssl’, ‘shell’ or 11706 the default ‘network’. 11707 11708 ‘:authentication’ 11709 Which authenticator to use for authenticating to the server, 11710 this is one of the symbols in ‘imap-authenticator-alist’. 11711 Right now, this means ‘gssapi’, ‘kerberos4’, ‘digest-md5’, 11712 ‘cram-md5’, ‘anonymous’ or the default ‘login’. 11713 11714 ‘:program’ 11715 When using the ‘shell’ :stream, the contents of this variable 11716 is mapped into the ‘imap-shell-program’ variable. This should 11717 be a ‘format’-like string (or list of strings). Here’s an 11718 example: 11719 11720 ssh %s imapd 11721 11722 Make sure nothing is interfering with the output of the 11723 program, e.g., don’t forget to redirect the error output to 11724 the void. The valid format specifier characters are: 11725 11726 ‘s’ 11727 The name of the server. 11728 11729 ‘l’ 11730 User name from ‘imap-default-user’. 11731 11732 ‘p’ 11733 The port number of the server. 11734 11735 The values used for these specs are taken from the values you 11736 give the corresponding keywords. 11737 11738 ‘:mailbox’ 11739 The name of the mailbox to get mail from. The default is 11740 ‘INBOX’ which normally is the mailbox which receives incoming 11741 mail. Instead of a single mailbox, this can be a list of 11742 mailboxes to fetch mail from. 11743 11744 ‘:predicate’ 11745 The predicate used to find articles to fetch. The default, 11746 ‘UNSEEN UNDELETED’, is probably the best choice for most 11747 people, but if you sometimes peek in your mailbox with a IMAP 11748 client and mark some articles as read (or; SEEN) you might 11749 want to set this to ‘1:*’. Then all articles in the mailbox 11750 is fetched, no matter what. For a complete list of 11751 predicates, see RFC 2060 section 6.4.4. 11752 11753 ‘:fetchflag’ 11754 How to flag fetched articles on the server, the default 11755 ‘\Deleted’ will mark them as deleted, an alternative would be 11756 ‘\Seen’ which would simply mark them as read. These are the 11757 two most likely choices, but more flags are defined in RFC 11758 2060 section 2.3.2. 11759 11760 ‘:dontexpunge’ 11761 If non-‘nil’, don’t remove all articles marked as deleted in 11762 the mailbox after finishing the fetch. 11763 11764 An example IMAP mail source: 11765 11766 (imap :server "mail.mycorp.com" 11767 :stream kerberos4 11768 :fetchflag "\\Seen") 11769 11770‘group’ 11771 Get the actual mail source from the ‘mail-source’ group parameter, 11772 *Note Group Parameters::. 11773 11774“Common Keywords” 11775 Common keywords can be used in any type of mail source. 11776 11777 Keywords: 11778 11779 ‘:plugged’ 11780 If non-‘nil’, fetch the mail even when Gnus is unplugged. If 11781 you use directory source to get mail, you can specify it as in 11782 this example: 11783 11784 (setq mail-sources 11785 '((directory :path "/home/pavel/.Spool/" 11786 :suffix "" 11787 :plugged t))) 11788 11789 Gnus will then fetch your mail even when you are unplugged. 11790 This is useful when you use local mail and news. 11791 11792 11793File: gnus.info, Node: Mail Source Functions, Next: Mail Source Customization, Prev: Mail Source Specifiers, Up: Mail Sources 11794 117956.4.4.2 Function Interface 11796.......................... 11797 11798Some of the above keywords specify a Lisp function to be executed. For 11799each keyword ‘:foo’, the Lisp variable ‘foo’ is bound to the value of 11800the keyword while the function is executing. For example, consider the 11801following mail-source setting: 11802 11803 (setq mail-sources '((pop :user "jrl" 11804 :server "pophost" :function fetchfunc))) 11805 11806 While the function ‘fetchfunc’ is executing, the symbol ‘user’ is 11807bound to ‘"jrl"’, and the symbol ‘server’ is bound to ‘"pophost"’. The 11808symbols ‘port’, ‘password’, ‘program’, ‘prescript’, ‘postscript’, 11809‘function’, and ‘authentication’ are also bound (to their default 11810values). 11811 11812 See above for a list of keywords for each type of mail source. 11813 11814 11815File: gnus.info, Node: Mail Source Customization, Next: Fetching Mail, Prev: Mail Source Functions, Up: Mail Sources 11816 118176.4.4.3 Mail Source Customization 11818................................. 11819 11820The following is a list of variables that influence how the mail is 11821fetched. You would normally not need to set or change any of these 11822variables. 11823 11824‘mail-source-crash-box’ 11825 File where mail will be stored while processing it. The default is 11826 ‘~/.emacs-mail-crash-box’. 11827 11828‘mail-source-delete-incoming’ 11829 If non-‘nil’, delete incoming files after handling them. If ‘t’, 11830 delete the files immediately, if ‘nil’, never delete any files. If 11831 a positive number, delete files older than number of days (the 11832 deletion will only happen when receiving new mail). You may also 11833 set ‘mail-source-delete-incoming’ to ‘nil’ and call 11834 ‘mail-source-delete-old-incoming’ from a hook or interactively. 11835 ‘mail-source-delete-incoming’ defaults to ‘10’ in alpha Gnusae and 11836 ‘2’ in released Gnusae. *Note Gnus Development::. 11837 11838‘mail-source-delete-old-incoming-confirm’ 11839 If non-‘nil’, ask for confirmation before deleting old incoming 11840 files. This variable only applies when 11841 ‘mail-source-delete-incoming’ is a positive number. 11842 11843‘mail-source-ignore-errors’ 11844 If non-‘nil’, ignore errors when reading mail from a mail source. 11845 11846‘mail-source-directory’ 11847 Directory where incoming mail source files (if any) will be stored. 11848 The default is ‘~/Mail/’. At present, the only thing this is used 11849 for is to say where the incoming files will be stored if the 11850 variable ‘mail-source-delete-incoming’ is ‘nil’ or a number. 11851 11852‘mail-source-incoming-file-prefix’ 11853 Prefix for file name for storing incoming mail. The default is 11854 ‘Incoming’, in which case files will end up with names like 11855 ‘Incoming30630D_’ or ‘Incoming298602ZD’. This is really only 11856 relevant if ‘mail-source-delete-incoming’ is ‘nil’ or a number. 11857 11858‘mail-source-default-file-modes’ 11859 All new mail files will get this file mode. The default is 11860 ‘#o600’. 11861 11862‘mail-source-movemail-program’ 11863 If non-‘nil’, name of program for fetching new mail. If ‘nil’, 11864 ‘movemail’ in ‘exec-directory’. 11865 11866 11867File: gnus.info, Node: Fetching Mail, Prev: Mail Source Customization, Up: Mail Sources 11868 118696.4.4.4 Fetching Mail 11870..................... 11871 11872The way to actually tell Gnus where to get new mail from is to set 11873‘mail-sources’ to a list of mail source specifiers (*note Mail Source 11874Specifiers::). 11875 11876 If this variable is ‘nil’, the mail back ends will never attempt to 11877fetch mail by themselves. 11878 11879 If you want to fetch mail both from your local spool as well as a POP 11880mail server, you’d say something like: 11881 11882 (setq mail-sources 11883 '((file) 11884 (pop :server "pop3.mail.server" 11885 :password "secret"))) 11886 11887 Or, if you don’t want to use any of the keyword defaults: 11888 11889 (setq mail-sources 11890 '((file :path "/var/spool/mail/user-name") 11891 (pop :server "pop3.mail.server" 11892 :user "user-name" 11893 :port "pop3" 11894 :password "secret"))) 11895 11896 When you use a mail back end, Gnus will slurp all your mail from your 11897inbox and plonk it down in your home directory. Gnus doesn’t move any 11898mail if you’re not using a mail back end—you have to do a lot of magic 11899invocations first. At the time when you have finished drawing the 11900pentagram, lightened the candles, and sacrificed the goat, you really 11901shouldn’t be too surprised when Gnus moves your mail. 11902 11903 11904File: gnus.info, Node: Mail Back End Variables, Next: Fancy Mail Splitting, Prev: Mail Sources, Up: Getting Mail 11905 119066.4.5 Mail Back End Variables 11907----------------------------- 11908 11909These variables are (for the most part) pertinent to all the various 11910mail back ends. 11911 11912‘nnmail-read-incoming-hook’ 11913 The mail back ends all call this hook after reading new mail. You 11914 can use this hook to notify any mail watch programs, if you want 11915 to. 11916 11917‘nnmail-split-hook’ 11918 Hook run in the buffer where the mail headers of each message is 11919 kept just before the splitting based on these headers is done. The 11920 hook is free to modify the buffer contents in any way it sees 11921 fit—the buffer is discarded after the splitting has been done, and 11922 no changes performed in the buffer will show up in any files. 11923 ‘gnus-article-decode-encoded-words’ is one likely function to add 11924 to this hook. 11925 11926‘nnmail-pre-get-new-mail-hook’ 11927‘nnmail-post-get-new-mail-hook’ 11928 These are two useful hooks executed when treating new incoming 11929 mail—‘nnmail-pre-get-new-mail-hook’ (is called just before starting 11930 to handle the new mail) and ‘nnmail-post-get-new-mail-hook’ (is 11931 called when the mail handling is done). Here’s and example of 11932 using these two hooks to change the default file modes the new mail 11933 files get: 11934 11935 (add-hook 'nnmail-pre-get-new-mail-hook 11936 (lambda () (set-default-file-modes #o700))) 11937 11938 (add-hook 'nnmail-post-get-new-mail-hook 11939 (lambda () (set-default-file-modes #o775))) 11940 11941‘nnmail-use-long-file-names’ 11942 If non-‘nil’, the mail back ends will use long file and directory 11943 names. Groups like ‘mail.misc’ will end up in directories 11944 (assuming use of ‘nnml’ back end) or files (assuming use of 11945 ‘nnfolder’ back end) like ‘mail.misc’. If it is ‘nil’, the same 11946 group will end up in ‘mail/misc’. 11947 11948‘nnmail-delete-file-function’ 11949 Function called to delete files. It is ‘delete-file’ by default. 11950 11951‘nnmail-cache-accepted-message-ids’ 11952 If non-‘nil’, put the ‘Message-ID’s of articles imported into the 11953 back end (via ‘Gcc’, for instance) into the mail duplication 11954 discovery cache. The default is ‘nil’. 11955 11956‘nnmail-cache-ignore-groups’ 11957 This can be a regular expression or a list of regular expressions. 11958 Group names that match any of the regular expressions will never be 11959 recorded in the ‘Message-ID’ cache. 11960 11961 This can be useful, for example, when using Fancy Splitting (*note 11962 Fancy Mail Splitting::) together with the function 11963 ‘nnmail-split-fancy-with-parent’. 11964 11965 11966File: gnus.info, Node: Fancy Mail Splitting, Next: Group Mail Splitting, Prev: Mail Back End Variables, Up: Getting Mail 11967 119686.4.6 Fancy Mail Splitting 11969-------------------------- 11970 11971If the rather simple, standard method for specifying how to split mail 11972doesn’t allow you to do what you want, you can set 11973‘nnmail-split-methods’ to ‘nnmail-split-fancy’. Then you can play with 11974the ‘nnmail-split-fancy’ variable. 11975 11976 Let’s look at an example value of this variable first: 11977 11978 ;; Messages from the mailer daemon are not crossposted to any of 11979 ;; the ordinary groups. Warnings are put in a separate group 11980 ;; from real errors. 11981 (| ("from" mail (| ("subject" "warn.*" "mail.warning") 11982 "mail.misc")) 11983 ;; Non-error messages are crossposted to all relevant 11984 ;; groups, but we don’t crosspost between the group for the 11985 ;; (ding) list and the group for other (ding) related mail. 11986 (& (| (any "ding@ifi\\.uio\\.no" "ding.list") 11987 ("subject" "ding" "ding.misc")) 11988 ;; Other mailing lists... 11989 (any "procmail@informatik\\.rwth-aachen\\.de" "procmail.list") 11990 (any "SmartList@informatik\\.rwth-aachen\\.de" "SmartList.list") 11991 ;; Both lists below have the same suffix, so prevent 11992 ;; cross-posting to mkpkg.list of messages posted only to 11993 ;; the bugs- list, but allow cross-posting when the 11994 ;; message was really cross-posted. 11995 (any "bugs-mypackage@somewhere" "mypkg.bugs") 11996 (any "mypackage@somewhere" - "bugs-mypackage" "mypkg.list") 11997 ;; People... 11998 (any "larsi@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen")) 11999 ;; Unmatched mail goes to the catch all group. 12000 "misc.misc") 12001 12002 This variable has the format of a “split”. A split is a (possibly) 12003recursive structure where each split may contain other splits. Here are 12004the possible split syntaxes: 12005 12006‘group’ 12007 If the split is a string, that will be taken as a group name. 12008 Normal regexp match expansion will be done. See below for 12009 examples. 12010 12011‘(FIELD VALUE [- RESTRICT [...] ] SPLIT [INVERT-PARTIAL])’ 12012 The split can be a list containing at least three elements. If the 12013 first element FIELD (a regexp matching a header) contains VALUE 12014 (also a regexp) then store the message as specified by SPLIT. 12015 12016 If RESTRICT (yet another regexp) matches some string after FIELD 12017 and before the end of the matched VALUE, the SPLIT is ignored. If 12018 none of the RESTRICT clauses match, SPLIT is processed. 12019 12020 The last element INVERT-PARTIAL is optional. If it is non-‘nil’, 12021 the match-partial-words behavior controlled by the variable 12022 ‘nnmail-split-fancy-match-partial-words’ (see below) is be 12023 inverted. (New in Gnus 5.10.7) 12024 12025‘(| SPLIT ...)’ 12026 If the split is a list, and the first element is ‘|’ (vertical 12027 bar), then process each SPLIT until one of them matches. A SPLIT 12028 is said to match if it will cause the mail message to be stored in 12029 one or more groups. 12030 12031‘(& SPLIT ...)’ 12032 If the split is a list, and the first element is ‘&’, then process 12033 all SPLITs in the list. 12034 12035‘junk’ 12036 If the split is the symbol ‘junk’, then don’t save (i.e., delete) 12037 this message. Use with extreme caution. 12038 12039‘(: FUNCTION ARG1 ARG2 ...)’ 12040 If the split is a list, and the first element is ‘:’, then the 12041 second element will be called as a function with ARGS given as 12042 arguments. The function should return a SPLIT. 12043 12044 For instance, the following function could be used to split based 12045 on the body of the messages: 12046 12047 (defun split-on-body () 12048 (save-excursion 12049 (save-restriction 12050 (widen) 12051 (goto-char (point-min)) 12052 (when (re-search-forward "Some.*string" nil t) 12053 "string.group")))) 12054 12055 The buffer is narrowed to the header of the message in question 12056 when FUNCTION is run. That’s why ‘(widen)’ needs to be called 12057 after ‘save-excursion’ and ‘save-restriction’ in the example above. 12058 Also note that with the nnimap backend, message bodies will not be 12059 downloaded by default. You need to set 12060 ‘nnimap-split-download-body’ to ‘t’ to do that (*note Client-Side 12061 IMAP Splitting::). 12062 12063‘(! FUNC SPLIT)’ 12064 If the split is a list, and the first element is ‘!’, then SPLIT 12065 will be processed, and FUNC will be called as a function with the 12066 result of SPLIT as argument. FUNC should return a split. 12067 12068‘nil’ 12069 If the split is ‘nil’, it is ignored. 12070 12071 In these splits, FIELD must match a complete field name. 12072 12073 Normally, VALUE in these splits must match a complete _word_ 12074according to the fundamental mode syntax table. In other words, all 12075VALUE’s will be implicitly surrounded by ‘\<...\>’ markers, which are 12076word delimiters. Therefore, if you use the following split, for 12077example, 12078 12079 (any "joe" "joemail") 12080 12081messages sent from ‘joedavis@foo.org’ will normally not be filed in 12082‘joemail’. If you want to alter this behavior, you can use any of the 12083following three ways: 12084 12085 1. You can set the ‘nnmail-split-fancy-match-partial-words’ variable 12086 to non-‘nil’ in order to ignore word boundaries and instead the 12087 match becomes more like a grep. This variable controls whether 12088 partial words are matched during fancy splitting. The default 12089 value is ‘nil’. 12090 12091 Note that it influences all VALUE’s in your split rules. 12092 12093 2. VALUE beginning with ‘.*’ ignores word boundaries in front of a 12094 word. Similarly, if VALUE ends with ‘.*’, word boundaries in the 12095 rear of a word will be ignored. For example, the VALUE 12096 ‘"@example\\.com"’ does not match ‘foo@example.com’ but 12097 ‘".*@example\\.com"’ does. 12098 12099 3. You can set the INVERT-PARTIAL flag in your split rules of the 12100 ‘(FIELD VALUE ...)’ types, aforementioned in this section. If the 12101 flag is set, word boundaries on both sides of a word are ignored 12102 even if ‘nnmail-split-fancy-match-partial-words’ is ‘nil’. 12103 Contrarily, if the flag is set, word boundaries are not ignored 12104 even if ‘nnmail-split-fancy-match-partial-words’ is non-‘nil’. 12105 (New in Gnus 5.10.7) 12106 12107 FIELD and VALUE can also be Lisp symbols, in that case they are 12108expanded as specified by the variable ‘nnmail-split-abbrev-alist’. This 12109is an alist of cons cells, where the CAR of a cell contains the key, and 12110the CDR contains the associated value. Predefined entries in 12111‘nnmail-split-abbrev-alist’ include: 12112 12113‘from’ 12114 Matches the ‘From’, ‘Sender’ and ‘Resent-From’ fields. 12115‘to’ 12116 Matches the ‘To’, ‘Cc’, ‘Apparently-To’, ‘Resent-To’ and 12117 ‘Resent-Cc’ fields. 12118‘any’ 12119 Is the union of the ‘from’ and ‘to’ entries. 12120‘list’ 12121 Matches the ‘List-ID’, ‘List-Post’, ‘X-Mailing-List’, ‘X-BeenThere’ 12122 and ‘X-Loop’ fields. 12123 12124 ‘nnmail-split-fancy-syntax-table’ is the syntax table in effect when 12125all this splitting is performed. 12126 12127 If you want to have Gnus create groups dynamically based on some 12128information in the headers (i.e., do ‘replace-match’-like substitutions 12129in the group names), you can say things like: 12130 12131 (any "debian-\\b\\(\\w+\\)@lists.debian.org" "mail.debian.\\1") 12132 12133 In this example, messages sent to ‘debian-foo@lists.debian.org’ will 12134be filed in ‘mail.debian.foo’. 12135 12136 If the string contains the element ‘\\&’, then the previously matched 12137string will be substituted. Similarly, the elements ‘\\1’ up to ‘\\9’ 12138will be substituted with the text matched by the groupings 1 through 9. 12139 12140 Where ‘nnmail-split-lowercase-expanded’ controls whether the 12141lowercase of the matched string should be used for the substitution. 12142Setting it as non-‘nil’ is useful to avoid the creation of multiple 12143groups when users send to an address using different case (i.e., 12144mailing-list@domain vs Mailing-List@Domain). The default value is ‘t’. 12145 12146 ‘nnmail-split-fancy-with-parent’ is a function which allows you to 12147split followups into the same groups their parents are in. Sometimes 12148you can’t make splitting rules for all your mail. For example, your 12149boss might send you personal mail regarding different projects you are 12150working on, and as you can’t tell your boss to put a distinguishing 12151string into the subject line, you have to resort to manually moving the 12152messages into the right group. With this function, you only have to do 12153it once per thread. 12154 12155 To use this feature, you have to set ‘nnmail-treat-duplicates’ and 12156‘nnmail-cache-accepted-message-ids’ to a non-‘nil’ value. And then you 12157can include ‘nnmail-split-fancy-with-parent’ using the colon feature, 12158like so: 12159 (setq nnmail-treat-duplicates 'warn ; or ‘delete’ 12160 nnmail-cache-accepted-message-ids t 12161 nnmail-split-fancy 12162 '(| (: nnmail-split-fancy-with-parent) 12163 ;; other splits go here 12164 )) 12165 12166 This feature works as follows: when ‘nnmail-treat-duplicates’ is 12167non-‘nil’, Gnus records the message id of every message it sees in the 12168file specified by the variable ‘nnmail-message-id-cache-file’, together 12169with the group it is in (the group is omitted for non-mail messages). 12170When mail splitting is invoked, the function 12171‘nnmail-split-fancy-with-parent’ then looks at the References (and 12172In-Reply-To) header of each message to split and searches the file 12173specified by ‘nnmail-message-id-cache-file’ for the message ids. When 12174it has found a parent, it returns the corresponding group name unless 12175the group name matches the regexp 12176‘nnmail-split-fancy-with-parent-ignore-groups’. It is recommended that 12177you set ‘nnmail-message-id-cache-length’ to a somewhat higher number 12178than the default so that the message ids are still in the cache. (A 12179value of 5000 appears to create a file some 300 kBytes in size.) When 12180‘nnmail-cache-accepted-message-ids’ is non-‘nil’, Gnus also records the 12181message ids of moved articles, so that the followup messages goes into 12182the new group. 12183 12184 Also see the variable ‘nnmail-cache-ignore-groups’ if you don’t want 12185certain groups to be recorded in the cache. For example, if all 12186outgoing messages are written to an “outgoing” group, you could set 12187‘nnmail-cache-ignore-groups’ to match that group name. Otherwise, 12188answers to all your messages would end up in the “outgoing” group. 12189 12190 If ‘nnmail-debug-splitting’ is non-‘nil’, the mail splitting code 12191will log all splitting decisions to the ‘*nnmail split*’ buffer. 12192 12193 12194File: gnus.info, Node: Group Mail Splitting, Next: Incorporating Old Mail, Prev: Fancy Mail Splitting, Up: Getting Mail 12195 121966.4.7 Group Mail Splitting 12197-------------------------- 12198 12199If you subscribe to dozens of mailing lists but you don’t want to 12200maintain mail splitting rules manually, group mail splitting is for you. 12201You just have to set ‘to-list’ and/or ‘to-address’ in group parameters 12202or group customization and set ‘nnmail-split-methods’ to 12203‘gnus-group-split’. This splitting function will scan all groups for 12204those parameters and split mail accordingly, i.e., messages posted from 12205or to the addresses specified in the parameters ‘to-list’ or 12206‘to-address’ of a mail group will be stored in that group. 12207 12208 Sometimes, mailing lists have multiple addresses, and you may want 12209mail splitting to recognize them all: just set the ‘extra-aliases’ group 12210parameter to the list of additional addresses and it’s done. If you’d 12211rather use a regular expression, set ‘split-regexp’. 12212 12213 All these parameters in a group will be used to create an 12214‘nnmail-split-fancy’ split, in which the FIELD is ‘any’, the VALUE is a 12215single regular expression that matches ‘to-list’, ‘to-address’, all of 12216‘extra-aliases’ and all matches of ‘split-regexp’, and the SPLIT is the 12217name of the group. RESTRICTs are also supported: just set the 12218‘split-exclude’ parameter to a list of regular expressions. 12219 12220 If you can’t get the right split to be generated using all these 12221parameters, or you just need something fancier, you can set the 12222parameter ‘split-spec’ to an ‘nnmail-split-fancy’ split. In this case, 12223all other aforementioned parameters will be ignored by 12224‘gnus-group-split’. In particular, ‘split-spec’ may be set to ‘nil’, in 12225which case the group will be ignored by ‘gnus-group-split’. 12226 12227 ‘gnus-group-split’ will do cross-posting on all groups that match, by 12228defining a single ‘&’ fancy split containing one split for each group. 12229If a message doesn’t match any split, it will be stored in the group 12230named in ‘gnus-group-split-default-catch-all-group’, unless some group 12231has ‘split-spec’ set to ‘catch-all’, in which case that group is used as 12232the catch-all group. Even though this variable is often used just to 12233name a group, it may also be set to an arbitrarily complex fancy split 12234(after all, a group name is a fancy split), and this may be useful to 12235split mail that doesn’t go to any mailing list to personal mail folders. 12236Note that this fancy split is added as the last element of a ‘|’ split 12237list that also contains a ‘&’ split with the rules extracted from group 12238parameters. 12239 12240 It’s time for an example. Assume the following group parameters have 12241been defined: 12242 12243 nnml:mail.bar: 12244 ((to-address . "bar@femail.com") 12245 (split-regexp . ".*@femail\\.com")) 12246 nnml:mail.foo: 12247 ((to-list . "foo@nowhere.gov") 12248 (extra-aliases "foo@localhost" "foo-redist@home") 12249 (split-exclude "bugs-foo" "rambling-foo") 12250 (admin-address . "foo-request@nowhere.gov")) 12251 nnml:mail.others: 12252 ((split-spec . catch-all)) 12253 12254 Setting ‘nnmail-split-methods’ to ‘gnus-group-split’ will behave as 12255if ‘nnmail-split-fancy’ had been selected and variable 12256‘nnmail-split-fancy’ had been set as follows: 12257 12258 (| (& (any "\\(bar@femail\\.com\\|.*@femail\\.com\\)" "mail.bar") 12259 (any "\\(foo@nowhere\\.gov\\|foo@localhost\\|foo-redist@home\\)" 12260 - "bugs-foo" - "rambling-foo" "mail.foo")) 12261 "mail.others") 12262 12263 If you’d rather not use group splitting for all your mail groups, you 12264may use it for only some of them, by using ‘nnmail-split-fancy’ splits 12265like this: 12266 12267 (: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL) 12268 12269 GROUPS may be a regular expression or a list of group names whose 12270parameters will be scanned to generate the output split. NO-CROSSPOST 12271can be used to disable cross-posting; in this case, a single ‘|’ split 12272will be output. CATCH-ALL is the fall back fancy split, used like 12273‘gnus-group-split-default-catch-all-group’. If CATCH-ALL is ‘nil’, or 12274if ‘split-regexp’ matches the empty string in any selected group, no 12275catch-all split will be issued. Otherwise, if some group has 12276‘split-spec’ set to ‘catch-all’, this group will override the value of 12277the CATCH-ALL argument. 12278 12279 Unfortunately, scanning all groups and their parameters can be quite 12280slow, especially considering that it has to be done for every message. 12281But don’t despair! The function ‘gnus-group-split-setup’ can be used to 12282enable ‘gnus-group-split’ in a much more efficient way. It sets 12283‘nnmail-split-methods’ to ‘nnmail-split-fancy’ and sets 12284‘nnmail-split-fancy’ to the split produced by ‘gnus-group-split-fancy’. 12285Thus, the group parameters are only scanned once, no matter how many 12286messages are split. 12287 12288 However, if you change group parameters, you’d have to update 12289‘nnmail-split-fancy’ manually. You can do it by running 12290‘gnus-group-split-update’. If you’d rather have it updated 12291automatically, just tell ‘gnus-group-split-setup’ to do it for you. For 12292example, add to your ‘~/.gnus.el’: 12293 12294 (gnus-group-split-setup AUTO-UPDATE CATCH-ALL) 12295 12296 If AUTO-UPDATE is non-‘nil’, ‘gnus-group-split-update’ will be added 12297to ‘gnus-get-top-new-news-hook’, so you won’t ever have to worry about 12298updating ‘nnmail-split-fancy’ again. If you don’t omit CATCH-ALL (it’s 12299optional, equivalent to ‘nil’), 12300‘gnus-group-split-default-catch-all-group’ will be set to its value. 12301 12302 Because you may want to change ‘nnmail-split-fancy’ after it is set 12303by ‘gnus-group-split-update’, this function will run 12304‘gnus-group-split-updated-hook’ just before finishing. 12305 12306 12307File: gnus.info, Node: Incorporating Old Mail, Next: Expiring Mail, Prev: Group Mail Splitting, Up: Getting Mail 12308 123096.4.8 Incorporating Old Mail 12310---------------------------- 12311 12312Most people have lots of old mail stored in various file formats. If 12313you have set up Gnus to read mail using one of the spiffy Gnus mail back 12314ends, you’ll probably wish to have that old mail incorporated into your 12315mail groups. 12316 12317 Doing so can be quite easy. 12318 12319 To take an example: You’re reading mail using ‘nnml’ (*note Mail 12320Spool::), and have set ‘nnmail-split-methods’ to a satisfactory value 12321(*note Splitting Mail::). You have an old Unix mbox file filled with 12322important, but old, mail. You want to move it into your ‘nnml’ groups. 12323 12324 Here’s how: 12325 12326 1. Go to the group buffer. 12327 12328 2. Type ‘G f’ and give the file name to the mbox file when prompted to 12329 create an ‘nndoc’ group from the mbox file (*note Foreign 12330 Groups::). 12331 12332 3. Type ‘<SPC>’ to enter the newly created group. 12333 12334 4. Type ‘M P b’ to process-mark all articles in this group’s buffer 12335 (*note Setting Process Marks::). 12336 12337 5. Type ‘B r’ to respool all the process-marked articles, and answer 12338 ‘nnml’ when prompted (*note Mail Group Commands::). 12339 12340 All the mail messages in the mbox file will now also be spread out 12341over all your ‘nnml’ groups. Try entering them and check whether things 12342have gone without a glitch. If things look ok, you may consider 12343deleting the mbox file, but I wouldn’t do that unless I was absolutely 12344sure that all the mail has ended up where it should be. 12345 12346 Respooling is also a handy thing to do if you’re switching from one 12347mail back end to another. Just respool all the mail in the old mail 12348groups using the new mail back end. 12349 12350 12351File: gnus.info, Node: Expiring Mail, Next: Washing Mail, Prev: Incorporating Old Mail, Up: Getting Mail 12352 123536.4.9 Expiring Mail 12354------------------- 12355 12356Traditional mail readers have a tendency to remove mail articles when 12357you mark them as read, in some way. Gnus takes a fundamentally 12358different approach to mail reading. 12359 12360 Gnus basically considers mail just to be news that has been received 12361in a rather peculiar manner. It does not think that it has the power to 12362actually change the mail, or delete any mail messages. If you enter a 12363mail group, and mark articles as “read”, or kill them in some other 12364fashion, the mail articles will still exist on the system. I repeat: 12365Gnus will not delete your old, read mail. Unless you ask it to, of 12366course. 12367 12368 To make Gnus get rid of your unwanted mail, you have to mark the 12369articles as “expirable”. (With the default key bindings, this means 12370that you have to type ‘E’.) This does not mean that the articles will 12371disappear right away, however. In general, a mail article will be 12372deleted from your system if, 1) it is marked as expirable, AND 2) it is 12373more than one week old. If you do not mark an article as expirable, it 12374will remain on your system until hell freezes over. This bears 12375repeating one more time, with some spurious capitalizations: IF you do 12376NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES. 12377 12378 You do not have to mark articles as expirable by hand. Gnus provides 12379two features, called “auto-expire” and “total-expire”, that can help you 12380with this. In a nutshell, “auto-expire” means that Gnus hits ‘E’ for 12381you when you select an article. And “total-expire” means that Gnus 12382considers all articles as expirable that are read. So, in addition to 12383the articles marked ‘E’, also the articles marked ‘r’, ‘R’, ‘O’, ‘K’, 12384‘Y’ (and so on) are considered expirable. ‘gnus-auto-expirable-marks’ 12385has the full list of these marks. 12386 12387 When should either auto-expire or total-expire be used? Most people 12388who are subscribed to mailing lists split each list into its own group 12389and then turn on auto-expire or total-expire for those groups. (*Note 12390Splitting Mail::, for more information on splitting each list into its 12391own group.) 12392 12393 Which one is better, auto-expire or total-expire? It’s not easy to 12394answer. Generally speaking, auto-expire is probably faster. Another 12395advantage of auto-expire is that you get more marks to work with: for 12396the articles that are supposed to stick around, you can still choose 12397between tick and dormant and read marks. But with total-expire, you 12398only have dormant and ticked to choose from. The advantage of 12399total-expire is that it works well with adaptive scoring (*note Adaptive 12400Scoring::). Auto-expire works with normal scoring but not with adaptive 12401scoring. 12402 12403 Groups that match the regular expression 12404‘gnus-auto-expirable-newsgroups’ will have all articles that you read 12405marked as expirable automatically. All articles marked as expirable 12406have an ‘E’ in the first column in the summary buffer. 12407 12408 By default, if you have auto expiry switched on, Gnus will mark all 12409the articles you read as expirable, no matter if they were read or 12410unread before. To avoid having articles marked as read marked as 12411expirable automatically, you can put something like the following in 12412your ‘~/.gnus.el’ file: 12413 12414 (remove-hook 'gnus-mark-article-hook 12415 'gnus-summary-mark-read-and-unread-as-read) 12416 (add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read) 12417 12418 Note that making a group auto-expirable doesn’t mean that all read 12419articles are expired—only the articles marked as expirable will be 12420expired. Also note that using the ‘d’ command won’t make articles 12421expirable—only semi-automatic marking of articles as read will mark the 12422articles as expirable in auto-expirable groups. 12423 12424 Let’s say you subscribe to a couple of mailing lists, and you want 12425the articles you have read to disappear after a while: 12426 12427 (setq gnus-auto-expirable-newsgroups 12428 "mail.nonsense-list\\|mail.nice-list") 12429 12430 Another way to have auto-expiry happen is to have the element 12431‘auto-expire’ in the group parameters of the group. 12432 12433 If you use adaptive scoring (*note Adaptive Scoring::) and 12434auto-expiring, you’ll have problems. Auto-expiring and adaptive scoring 12435don’t really mix very well. 12436 12437 The ‘nnmail-expiry-wait’ variable supplies the default time an 12438expirable article has to live. The value of this variable can be either 12439a number of days (not necessarily an integer), or one of the symbols 12440‘immediate’ or ‘never’, meaning an article is immediately or never 12441expirable, respectively. 12442 12443 Gnus starts counting days from when the message _arrived_, not from 12444when it was sent. The default is seven days. 12445 12446 The ‘nnmail-expiry-wait-function’ variable lets you fine-tune how 12447long articles are to live, based on what group they are in. When set to 12448a function, its returned value, if non-‘nil’, overrides that of 12449‘nnmail-expiry-wait’. Otherwise, the value of ‘nnmail-expiry-wait’ is 12450used instead. 12451 12452 For example, let’s say you want to have a one month expiry period in 12453the ‘mail.private’ group, a one day expiry period in the ‘mail.junk’ 12454group, and a six day expiry period everywhere else. This can be 12455achieved as follows: 12456 12457 (setq nnmail-expiry-wait-function 12458 (lambda (group) 12459 (cond ((string= group "mail.private") 12460 31) 12461 ((string= group "mail.junk") 12462 1) 12463 ((string= group "important") 12464 'never) 12465 (t 12466 6)))) 12467 12468 The group names this function is fed are “unadorned” group names—no 12469‘nnml:’ prefixes and the like. 12470 12471 As an alternative to the variables ‘nnmail-expiry-wait’ or 12472‘nnmail-expiry-wait-function’, you can also use the ‘expiry-wait’ group 12473parameter to selectively change the expiry period (*note Group 12474Parameters::). 12475 12476 The normal action taken when expiring articles is to delete them. 12477However, in some circumstances it might make more sense to move them to 12478other groups instead of deleting them. The variable 12479‘nnmail-expiry-target’ (and the ‘expiry-target’ group parameter) 12480controls this. The variable supplies a default value for all groups, 12481which can be overridden for specific groups by the group parameter. 12482default value is ‘delete’, but this can also be a string (which should 12483be the name of the group the message should be moved to), or a function 12484(which will be called in a buffer narrowed to the message in question, 12485and with the name of the group being moved from as its parameter) which 12486should return a target—either a group name or ‘delete’. 12487 12488 Here’s an example for specifying a group name: 12489 (setq nnmail-expiry-target "nnml:expired") 12490 12491 Gnus provides a function ‘nnmail-fancy-expiry-target’ which will 12492expire mail to groups according to the variable 12493‘nnmail-fancy-expiry-targets’. Here’s an example: 12494 12495 (setq nnmail-expiry-target 'nnmail-fancy-expiry-target 12496 nnmail-fancy-expiry-targets 12497 '((to-from "boss" "nnfolder:Work") 12498 ("subject" "IMPORTANT" "nnfolder:IMPORTANT.%Y.%b") 12499 ("from" ".*" "nnfolder:Archive-%Y"))) 12500 12501 With this setup, any mail that has ‘IMPORTANT’ in its Subject header 12502and was sent in the year ‘YYYY’ and month ‘MMM’, will get expired to the 12503group ‘nnfolder:IMPORTANT.YYYY.MMM’. If its From or To header contains 12504the string ‘boss’, it will get expired to ‘nnfolder:Work’. All other 12505mail will get expired to ‘nnfolder:Archive-YYYY’. 12506 12507 If ‘nnmail-keep-last-article’ is non-‘nil’, Gnus will never expire 12508the final article in a mail newsgroup. This is to make life easier for 12509procmail users. 12510 12511 By the way: That line up there, about Gnus never expiring 12512non-expirable articles, is a lie. If you put ‘total-expire’ in the 12513group parameters, articles will not be marked as expirable, but all read 12514articles will be put through the expiry process. Use with extreme 12515caution. Even more dangerous is the ‘gnus-total-expirable-newsgroups’ 12516variable. All groups that match this regexp will have all read articles 12517put through the expiry process, which means that _all_ old mail articles 12518in the groups in question will be deleted after a while. Use with 12519extreme caution, and don’t come crying to me when you discover that the 12520regexp you used matched the wrong group and all your important mail has 12521disappeared. Be a _man_! Or a _woman_! Whatever you feel more 12522comfortable with! So there! 12523 12524 Most people make most of their mail groups total-expirable, though. 12525 12526 If ‘gnus-inhibit-user-auto-expire’ is non-‘nil’, user marking 12527commands will not mark an article as expirable, even if the group has 12528auto-expire turned on. 12529 12530 The expirable marks of articles will be removed when copying or 12531moving them to a group in which auto-expire is not turned on. This is 12532for preventing articles from being expired unintentionally. On the 12533other hand, to a group that has turned auto-expire on, the expirable 12534marks of articles that are copied or moved will not be changed by 12535default. I.e., when copying or moving to such a group, articles that 12536were expirable will be left expirable and ones that were not expirable 12537will not be marked as expirable. So, even though in auto-expire groups, 12538some articles will never get expired (unless you read them again). If 12539you don’t side with that behavior that unexpirable articles may be mixed 12540into auto-expire groups, you can set 12541‘gnus-mark-copied-or-moved-articles-as-expirable’ to a non-‘nil’ value. 12542In that case, articles that have been read will be marked as expirable 12543automatically when being copied or moved to a group that has auto-expire 12544turned on. The default value is ‘nil’. 12545 12546 12547File: gnus.info, Node: Washing Mail, Next: Duplicates, Prev: Expiring Mail, Up: Getting Mail 12548 125496.4.10 Washing Mail 12550------------------- 12551 12552Mailers and list servers are notorious for doing all sorts of really, 12553really stupid things with mail. “Hey, RFC 822 doesn’t explicitly 12554prohibit us from adding the string ‘wE aRe ElItE!!!!!1!!’ to the end of 12555all lines passing through our server, so let’s do that!!!!1!” Yes, but 12556RFC 822 and its successors weren’t designed to be read by morons. 12557Things that were considered to be self-evident were not discussed. So. 12558Here we are. 12559 12560 Case in point: The German version of Microsoft Exchange adds ‘AW: ’ 12561to the subjects of replies instead of ‘Re: ’. I could pretend to be 12562shocked and dismayed by this, but I haven’t got the energy. It is to 12563laugh. 12564 12565 Gnus provides a plethora of functions for washing articles while 12566displaying them, but it might be nicer to do the filtering before 12567storing the mail to disk. For that purpose, we have three hooks and 12568various functions that can be put in these hooks. 12569 12570‘nnmail-prepare-incoming-hook’ 12571 This hook is called before doing anything with the mail and is 12572 meant for grand, sweeping gestures. It is called in a buffer that 12573 contains all the new, incoming mail. Functions to be used include: 12574 12575 ‘nnheader-ms-strip-cr’ 12576 Remove trailing carriage returns from each line. This is 12577 default on Emacs running on MS machines. 12578 12579‘nnmail-prepare-incoming-header-hook’ 12580 This hook is called narrowed to each header. It can be used when 12581 cleaning up the headers. Functions that can be used include: 12582 12583 ‘nnmail-remove-leading-whitespace’ 12584 Clear leading white space that “helpful” listservs have added 12585 to the headers to make them look nice. Aaah. 12586 12587 (Note that this function works on both the header on the body 12588 of all messages, so it is a potentially dangerous function to 12589 use (if a body of a message contains something that looks like 12590 a header line). So rather than fix the bug, it is of course 12591 the right solution to make it into a feature by documenting 12592 it.) 12593 12594 ‘nnmail-remove-list-identifiers’ 12595 Some list servers add an identifier—for example, ‘(idm)’—to 12596 the beginning of all ‘Subject’ headers. I’m sure that’s nice 12597 for people who use stone age mail readers. This function will 12598 remove strings that match the ‘nnmail-list-identifiers’ 12599 regexp, which can also be a list of regexp. 12600 ‘nnmail-list-identifiers’ may not contain ‘\\(..\\)’. 12601 12602 For instance, if you want to remove the ‘(idm)’ and the 12603 ‘nagnagnag’ identifiers: 12604 12605 (setq nnmail-list-identifiers 12606 '("(idm)" "nagnagnag")) 12607 12608 This can also be done non-destructively with 12609 ‘gnus-list-identifiers’, *Note Article Hiding::. 12610 12611 ‘nnmail-remove-tabs’ 12612 Translate all ‘<TAB>’ characters into ‘<SPC>’ characters. 12613 12614 ‘nnmail-ignore-broken-references’ 12615 Some mail user agents (e.g., Eudora and Pegasus) produce 12616 broken ‘References’ headers, but correct ‘In-Reply-To’ 12617 headers. This function will get rid of the ‘References’ 12618 header if the headers contain a line matching the regular 12619 expression ‘nnmail-broken-references-mailers’. 12620 12621‘nnmail-prepare-incoming-message-hook’ 12622 This hook is called narrowed to each message. Functions to be used 12623 include: 12624 12625 ‘article-de-quoted-unreadable’ 12626 Decode Quoted Readable encoding. 12627 12628 12629File: gnus.info, Node: Duplicates, Next: Not Reading Mail, Prev: Washing Mail, Up: Getting Mail 12630 126316.4.11 Duplicates 12632----------------- 12633 12634If you are a member of a couple of mailing lists, you will sometimes 12635receive two copies of the same mail. This can be quite annoying, so 12636‘nnmail’ checks for and treats any duplicates it might find. To do 12637this, it keeps a cache of old ‘Message-ID’s: 12638‘nnmail-message-id-cache-file’, which is ‘~/.nnmail-cache’ by default. 12639The approximate maximum number of ‘Message-ID’s stored there is 12640controlled by the ‘nnmail-message-id-cache-length’ variable, which is 126411000 by default. (So 1000 ‘Message-ID’s will be stored.) If all this 12642sounds scary to you, you can set ‘nnmail-treat-duplicates’ to ‘warn’ 12643(which is what it is by default), and ‘nnmail’ won’t delete duplicate 12644mails. Instead it will insert a warning into the head of the mail 12645saying that it thinks that this is a duplicate of a different message. 12646 12647 This variable can also be a function. If that’s the case, the 12648function will be called from a buffer narrowed to the message in 12649question with the ‘Message-ID’ as a parameter. The function must return 12650either ‘nil’, ‘warn’, or ‘delete’. 12651 12652 You can turn this feature off completely by setting the variable to 12653‘nil’. 12654 12655 If you want all the duplicate mails to be put into a special 12656“duplicates” group, you could do that using the normal mail split 12657methods: 12658 12659 (setq nnmail-split-fancy 12660 '(| ;; Messages duplicates go to a separate group. 12661 ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate") 12662 ;; Message from daemons, postmaster, and the like to another. 12663 (any mail "mail.misc") 12664 ;; Other rules. 12665 [...] )) 12666Or something like: 12667 (setq nnmail-split-methods 12668 '(("duplicates" "^Gnus-Warning:.*duplicate") 12669 ;; Other rules. 12670 [...])) 12671 12672 Here’s a neat feature: If you know that the recipient reads her mail 12673with Gnus, and that she has ‘nnmail-treat-duplicates’ set to ‘delete’, 12674you can send her as many insults as you like, just by using a 12675‘Message-ID’ of a mail that you know that she’s already received. Think 12676of all the fun! She’ll never see any of it! Whee! 12677 12678 12679File: gnus.info, Node: Not Reading Mail, Next: Choosing a Mail Back End, Prev: Duplicates, Up: Getting Mail 12680 126816.4.12 Not Reading Mail 12682----------------------- 12683 12684If you start using any of the mail back ends, they have the annoying 12685habit of assuming that you want to read mail with them. This might not 12686be unreasonable, but it might not be what you want. 12687 12688 If you set ‘mail-sources’ and ‘nnmail-spool-file’ to ‘nil’, none of 12689the back ends will ever attempt to read incoming mail, which should 12690help. 12691 12692 This might be too much, if, for instance, you are reading mail quite 12693happily with ‘nnml’ and just want to peek at some old (pre-Emacs 23) 12694Rmail file you have stashed away with ‘nnbabyl’. All back ends have 12695variables called back-end-‘get-new-mail’. If you want to disable the 12696‘nnbabyl’ mail reading, you edit the virtual server for the group to 12697have a setting where ‘nnbabyl-get-new-mail’ to ‘nil’. 12698 12699 All the mail back ends will call ‘nn’*‘-prepare-save-mail-hook’ 12700narrowed to the article to be saved before saving it when reading 12701incoming mail. 12702 12703 12704File: gnus.info, Node: Choosing a Mail Back End, Prev: Not Reading Mail, Up: Getting Mail 12705 127066.4.13 Choosing a Mail Back End 12707------------------------------- 12708 12709Gnus will read the mail spool when you activate a mail group. The mail 12710file is first copied to your home directory. What happens after that 12711depends on what format you want to store your mail in. 12712 12713 There are six different mail back ends in the standard Gnus, and more 12714back ends are available separately. The mail back end most people use 12715(because it is possibly the fastest) is ‘nnml’ (*note Mail Spool::). 12716 12717* Menu: 12718 12719* Unix Mail Box:: Using the (quite) standard Un*x mbox. 12720* Babyl:: Babyl was used by older versions of Rmail. 12721* Mail Spool:: Store your mail in a private spool? 12722* MH Spool:: An mhspool-like back end. 12723* Maildir:: Another one-file-per-message format. 12724* nnmaildir Group Parameters:: 12725* Article Identification:: 12726* NOV Data:: 12727* Article Marks:: 12728* Mail Folders:: Having one file for each group. 12729* Comparing Mail Back Ends:: An in-depth looks at pros and cons. 12730 12731 12732File: gnus.info, Node: Unix Mail Box, Next: Babyl, Up: Choosing a Mail Back End 12733 127346.4.13.1 Unix Mail Box 12735...................... 12736 12737The “nnmbox” back end will use the standard Un*x mbox file to store 12738mail. ‘nnmbox’ will add extra headers to each mail article to say which 12739group it belongs in. 12740 12741 Virtual server settings: 12742 12743‘nnmbox-mbox-file’ 12744 The name of the mail box in the user’s home directory. Default is 12745 ‘~/mbox’. 12746 12747‘nnmbox-active-file’ 12748 The name of the active file for the mail box. Default is 12749 ‘~/.mbox-active’. 12750 12751‘nnmbox-get-new-mail’ 12752 If non-‘nil’, ‘nnmbox’ will read incoming mail and split it into 12753 groups. Default is ‘t’. 12754 12755 12756File: gnus.info, Node: Babyl, Next: Mail Spool, Prev: Unix Mail Box, Up: Choosing a Mail Back End 12757 127586.4.13.2 Babyl 12759.............. 12760 12761The “nnbabyl” back end will use a Babyl mail box to store mail. 12762‘nnbabyl’ will add extra headers to each mail article to say which group 12763it belongs in. 12764 12765 Virtual server settings: 12766 12767‘nnbabyl-mbox-file’ 12768 The name of the Babyl file. The default is ‘~/RMAIL’ 12769 12770‘nnbabyl-active-file’ 12771 The name of the active file for the Babyl file. The default is 12772 ‘~/.rmail-active’ 12773 12774‘nnbabyl-get-new-mail’ 12775 If non-‘nil’, ‘nnbabyl’ will read incoming mail. Default is ‘t’ 12776 12777 12778File: gnus.info, Node: Mail Spool, Next: MH Spool, Prev: Babyl, Up: Choosing a Mail Back End 12779 127806.4.13.3 Mail Spool 12781................... 12782 12783The “nnml” spool mail format isn’t compatible with any other known 12784format. It should be used with some caution. 12785 12786 If you use this back end, Gnus will split all incoming mail into 12787files, one file for each mail, and put the articles into the 12788corresponding directories under the directory specified by the 12789‘nnml-directory’ variable. The default value is ‘~/Mail/’. 12790 12791 You do not have to create any directories beforehand; Gnus will take 12792care of all that. 12793 12794 If you have a strict limit as to how many files you are allowed to 12795store in your account, you should not use this back end. As each mail 12796gets its own file, you might very well occupy thousands of inodes within 12797a few weeks. If this is no problem for you, and it isn’t a problem for 12798you having your friendly systems administrator walking around, madly, 12799shouting “Who is eating all my inodes?! Who? Who!?!”, then you should 12800know that this is probably the fastest format to use. You do not have 12801to trudge through a big mbox file just to read your new mail. 12802 12803 ‘nnml’ is probably the slowest back end when it comes to article 12804splitting. It has to create lots of files, and it also generates NOV 12805databases for the incoming mails. This makes it possibly the fastest 12806back end when it comes to reading mail. 12807 12808 Virtual server settings: 12809 12810‘nnml-directory’ 12811 All ‘nnml’ directories will be placed under this directory. The 12812 default is the value of ‘message-directory’ (whose default value is 12813 ‘~/Mail’). 12814 12815‘nnml-active-file’ 12816 The active file for the ‘nnml’ server. The default is 12817 ‘~/Mail/active’. 12818 12819‘nnml-newsgroups-file’ 12820 The ‘nnml’ group descriptions file. *Note Newsgroups File 12821 Format::. The default is ‘~/Mail/newsgroups’. 12822 12823‘nnml-get-new-mail’ 12824 If non-‘nil’, ‘nnml’ will read incoming mail. The default is ‘t’. 12825 12826‘nnml-nov-is-evil’ 12827 If non-‘nil’, this back end will ignore any NOV files. The default 12828 is ‘nil’. 12829 12830‘nnml-nov-file-name’ 12831 The name of the NOV files. The default is ‘.overview’. 12832 12833‘nnml-prepare-save-mail-hook’ 12834 Hook run narrowed to an article before saving. 12835 12836‘nnml-use-compressed-files’ 12837 If non-‘nil’, ‘nnml’ will allow using compressed message files. 12838 This requires ‘auto-compression-mode’ to be enabled (*note 12839 Compressed Files: (emacs)Compressed Files.). If the value of 12840 ‘nnml-use-compressed-files’ is a string, it is used as the file 12841 extension specifying the compression program. You can set it to 12842 ‘.bz2’ if your Emacs supports it. A value of ‘t’ is equivalent to 12843 ‘.gz’. 12844 12845‘nnml-compressed-files-size-threshold’ 12846 Default size threshold for compressed message files. Message files 12847 with bodies larger than that many characters will be automatically 12848 compressed if ‘nnml-use-compressed-files’ is non-‘nil’. 12849 12850 If your ‘nnml’ groups and NOV files get totally out of whack, you can 12851do a complete update by typing ‘M-x nnml-generate-nov-databases’. This 12852command will trawl through the entire ‘nnml’ hierarchy, looking at each 12853and every article, so it might take a while to complete. A better 12854interface to this functionality can be found in the server buffer (*note 12855Server Commands::). 12856 12857 12858File: gnus.info, Node: MH Spool, Next: Maildir, Prev: Mail Spool, Up: Choosing a Mail Back End 12859 128606.4.13.4 MH Spool 12861................. 12862 12863‘nnmh’ is just like ‘nnml’, except that is doesn’t generate NOV 12864databases and it doesn’t keep an active file or marks file. This makes 12865‘nnmh’ a _much_ slower back end than ‘nnml’, but it also makes it easier 12866to write procmail scripts for. 12867 12868 Virtual server settings: 12869 12870‘nnmh-directory’ 12871 All ‘nnmh’ directories will be located under this directory. The 12872 default is the value of ‘message-directory’ (whose default is 12873 ‘~/Mail’) 12874 12875‘nnmh-get-new-mail’ 12876 If non-‘nil’, ‘nnmh’ will read incoming mail. The default is ‘t’. 12877 12878‘nnmh-be-safe’ 12879 If non-‘nil’, ‘nnmh’ will go to ridiculous lengths to make sure 12880 that the articles in the folder are actually what Gnus thinks they 12881 are. It will check date stamps and stat everything in sight, so 12882 setting this to ‘t’ will mean a serious slow-down. If you never 12883 use anything but Gnus to read the ‘nnmh’ articles, you do not have 12884 to set this variable to ‘t’. The default is ‘nil’. 12885 12886 12887File: gnus.info, Node: Maildir, Next: nnmaildir Group Parameters, Prev: MH Spool, Up: Choosing a Mail Back End 12888 128896.4.13.5 Maildir 12890................ 12891 12892‘nnmaildir’ stores mail in the maildir format, with each maildir 12893corresponding to a group in Gnus. This format is documented here: 12894<https://cr.yp.to/proto/maildir.html>. ‘nnmaildir’ also stores extra 12895information in the ‘.nnmaildir/’ directory within a maildir. 12896 12897 Maildir format was designed to allow concurrent deliveries and 12898reading, without needing locks. With other back ends, you would have 12899your mail delivered to a spool of some kind, and then you would 12900configure Gnus to split mail from that spool into your groups. You can 12901still do that with ‘nnmaildir’, but the more common configuration is to 12902have your mail delivered directly to the maildirs that appear as group 12903in Gnus. 12904 12905 ‘nnmaildir’ is designed to be perfectly reliable: ‘C-g’ will never 12906corrupt its data in memory, and ‘SIGKILL’ will never corrupt its data in 12907the filesystem. 12908 12909 ‘nnmaildir’ stores article marks and NOV data in each maildir. So 12910you can copy a whole maildir from one Gnus setup to another, and you 12911will keep your marks. 12912 12913 Virtual server settings: 12914 12915‘directory’ 12916 For each of your ‘nnmaildir’ servers (it’s very unlikely that you’d 12917 need more than one), you need to create a directory and populate it 12918 with maildirs or symlinks to maildirs (and nothing else; do not 12919 choose a directory already used for other purposes). Each maildir 12920 will be represented in Gnus as a newsgroup on that server; the 12921 filename of the symlink will be the name of the group. Any 12922 filenames in the directory starting with ‘.’ are ignored. The 12923 directory is scanned when you first start Gnus, and each time you 12924 type ‘g’ in the group buffer; if any maildirs have been removed or 12925 added, ‘nnmaildir’ notices at these times. 12926 12927 The value of the ‘directory’ parameter should be a Lisp form which 12928 is processed by ‘eval’ and ‘expand-file-name’ to get the path of 12929 the directory for this server. The form is ‘eval’ed only when the 12930 server is opened; the resulting string is used until the server is 12931 closed. (If you don’t know about forms and ‘eval’, don’t worry—a 12932 simple string will work.) This parameter is not optional; you must 12933 specify it. I don’t recommend using ‘"~/Mail"’ or a subdirectory 12934 of it; several other parts of Gnus use that directory by default 12935 for various things, and may get confused if ‘nnmaildir’ uses it 12936 too. ‘"~/.nnmaildir"’ is a typical value. 12937 12938‘target-prefix’ 12939 This should be a Lisp form which is processed by ‘eval’ and 12940 ‘expand-file-name’. The form is ‘eval’ed only when the server is 12941 opened; the resulting string is used until the server is closed. 12942 12943 When you create a group on an ‘nnmaildir’ server, the maildir is 12944 created with ‘target-prefix’ prepended to its name, and a symlink 12945 pointing to that maildir is created, named with the plain group 12946 name. So if ‘directory’ is ‘"~/.nnmaildir"’ and ‘target-prefix’ is 12947 ‘"../maildirs/"’, then when you create the group ‘foo’, ‘nnmaildir’ 12948 will create ‘~/.nnmaildir/../maildirs/foo’ as a maildir, and will 12949 create ‘~/.nnmaildir/foo’ as a symlink pointing to 12950 ‘../maildirs/foo’. 12951 12952 You can set ‘target-prefix’ to a string without any slashes to 12953 create both maildirs and symlinks in the same ‘directory’; in this 12954 case, any maildirs found in ‘directory’ whose names start with 12955 ‘target-prefix’ will not be listed as groups (but the symlinks 12956 pointing to them will be). 12957 12958 As a special case, if ‘target-prefix’ is ‘""’ (the default), then 12959 when you create a group, the maildir will be created in ‘directory’ 12960 without a corresponding symlink. Beware that you cannot use 12961 ‘gnus-group-delete-group’ on such groups without the ‘force’ 12962 argument. 12963 12964‘directory-files’ 12965 This should be a function with the same interface as 12966 ‘directory-files’ (such as ‘directory-files’ itself). It is used 12967 to scan the server’s ‘directory’ for maildirs. This parameter is 12968 optional; the default is ‘nnheader-directory-files-safe’ if 12969 ‘nnheader-directory-files-is-safe’ is ‘nil’, and ‘directory-files’ 12970 otherwise. (‘nnheader-directory-files-is-safe’ is checked only 12971 once when the server is opened; if you want to check it each time 12972 the directory is scanned, you’ll have to provide your own function 12973 that does that.) 12974 12975‘get-new-mail’ 12976 If non-‘nil’, then after scanning for new mail in the group 12977 maildirs themselves as usual, this server will also incorporate 12978 mail the conventional Gnus way, from ‘mail-sources’ according to 12979 ‘nnmail-split-methods’ or ‘nnmail-split-fancy’. The default value 12980 is ‘nil’. 12981 12982 Do _not_ use the same maildir both in ‘mail-sources’ and as an 12983 ‘nnmaildir’ group. The results might happen to be useful, but that 12984 would be by chance, not by design, and the results might be 12985 different in the future. If your split rules create new groups, 12986 remember to supply a ‘create-directory’ server parameter. 12987 12988 12989File: gnus.info, Node: nnmaildir Group Parameters, Next: Article Identification, Prev: Maildir, Up: Choosing a Mail Back End 12990 129916.4.13.6 Group parameters 12992......................... 12993 12994‘nnmaildir’ uses several group parameters. It’s safe to ignore all 12995this; the default behavior for ‘nnmaildir’ is the same as the default 12996behavior for other mail back ends: articles are deleted after one week, 12997etc. Except for the expiry parameters, all this functionality is unique 12998to ‘nnmaildir’, so you can ignore it if you’re just trying to duplicate 12999the behavior you already have with another back end. 13000 13001 If the value of any of these parameters is a vector, the first 13002element is evaluated as a Lisp form and the result is used, rather than 13003the original value. If the value is not a vector, the value itself is 13004evaluated as a Lisp form. (This is why these parameters use names 13005different from those of other, similar parameters supported by other 13006back ends: they have different, though similar, meanings.) (For 13007numbers, strings, ‘nil’, and ‘t’, you can ignore the ‘eval’ business 13008again; for other values, remember to use an extra quote and wrap the 13009value in a vector when appropriate.) 13010 13011‘expire-age’ 13012 An integer specifying the minimum age, in seconds, of an article 13013 before it will be expired, or the symbol ‘never’ to specify that 13014 articles should never be expired. If this parameter is not set, 13015 ‘nnmaildir’ falls back to the usual 13016 ‘nnmail-expiry-wait’(‘-function’) variables (the ‘expiry-wait’ 13017 group parameter overrides ‘nnmail-expiry-wait’ and makes 13018 ‘nnmail-expiry-wait-function’ ineffective). If you wanted a value 13019 of 3 days, you could use something like ‘[(* 3 24 60 60)]’; 13020 ‘nnmaildir’ will evaluate the form and use the result. An 13021 article’s age is measured starting from the article file’s 13022 modification time. Normally, this is the same as the article’s 13023 delivery time, but editing an article makes it younger. Moving an 13024 article (other than via expiry) may also make an article younger. 13025 13026‘expire-group’ 13027 If this is set to a string such as a full Gnus group name, like 13028 "backend+server.address.string:group.name" 13029 and if it is not the name of the same group that the parameter 13030 belongs to, then articles will be moved to the specified group 13031 during expiry before being deleted. _If this is set to an 13032 ‘nnmaildir’ group, the article will be just as old in the 13033 destination group as it was in the source group._ So be careful 13034 with ‘expire-age’ in the destination group. If this is set to the 13035 name of the same group that the parameter belongs to, then the 13036 article is not expired at all. If you use the vector form, the 13037 first element is evaluated once for each article. So that form can 13038 refer to ‘nnmaildir-article-file-name’, etc., to decide where to 13039 put the article. _Even if this parameter is not set, ‘nnmaildir’ 13040 does not fall back to the ‘expiry-target’ group parameter or the 13041 ‘nnmail-expiry-target’ variable._ 13042 13043‘read-only’ 13044 If this is set to ‘t’, ‘nnmaildir’ will treat the articles in this 13045 maildir as read-only. This means: articles are not renamed from 13046 ‘new/’ into ‘cur/’; articles are only found in ‘new/’, not ‘cur/’; 13047 articles are never deleted; articles cannot be edited. ‘new/’ is 13048 expected to be a symlink to the ‘new/’ directory of another 13049 maildir—e.g., a system-wide mailbox containing a mailing list of 13050 common interest. Everything in the maildir outside ‘new/’ is _not_ 13051 treated as read-only, so for a shared mailbox, you do still need to 13052 set up your own maildir (or have write permission to the shared 13053 mailbox); your maildir just won’t contain extra copies of the 13054 articles. 13055 13056‘directory-files’ 13057 A function with the same interface as ‘directory-files’. It is 13058 used to scan the directories in the maildir corresponding to this 13059 group to find articles. The default is the function specified by 13060 the server’s ‘directory-files’ parameter. 13061 13062‘distrust-Lines:’ 13063 If non-‘nil’, ‘nnmaildir’ will always count the lines of an 13064 article, rather than use the ‘Lines:’ header field. If ‘nil’, the 13065 header field will be used if present. 13066 13067‘always-marks’ 13068 A list of mark symbols, such as ‘['(read expire)]’. Whenever Gnus 13069 asks ‘nnmaildir’ for article marks, ‘nnmaildir’ will say that all 13070 articles have these marks, regardless of whether the marks stored 13071 in the filesystem say so. This is a proof-of-concept feature that 13072 will probably be removed eventually; it ought to be done in Gnus 13073 proper, or abandoned if it’s not worthwhile. 13074 13075‘never-marks’ 13076 A list of mark symbols, such as ‘['(tick expire)]’. Whenever Gnus 13077 asks ‘nnmaildir’ for article marks, ‘nnmaildir’ will say that no 13078 articles have these marks, regardless of whether the marks stored 13079 in the filesystem say so. ‘never-marks’ overrides ‘always-marks’. 13080 This is a proof-of-concept feature that will probably be removed 13081 eventually; it ought to be done in Gnus proper, or abandoned if 13082 it’s not worthwhile. 13083 13084‘nov-cache-size’ 13085 An integer specifying the size of the NOV memory cache. To speed 13086 things up, ‘nnmaildir’ keeps NOV data in memory for a limited 13087 number of articles in each group. (This is probably not 13088 worthwhile, and will probably be removed in the future.) This 13089 parameter’s value is noticed only the first time a group is seen 13090 after the server is opened—i.e., when you first start Gnus, 13091 typically. The NOV cache is never resized until the server is 13092 closed and reopened. The default is an estimate of the number of 13093 articles that would be displayed in the summary buffer: a count of 13094 articles that are either marked with ‘tick’ or not marked with 13095 ‘read’, plus a little extra. 13096 13097 13098File: gnus.info, Node: Article Identification, Next: NOV Data, Prev: nnmaildir Group Parameters, Up: Choosing a Mail Back End 13099 131006.4.13.7 Article identification 13101............................... 13102 13103Articles are stored in the ‘cur/’ subdirectory of each maildir. Each 13104article file is named like ‘uniq:info’, where ‘uniq’ contains no colons. 13105‘nnmaildir’ ignores, but preserves, the ‘:info’ part. (Other maildir 13106readers typically use this part of the filename to store marks.) The 13107‘uniq’ part uniquely identifies the article, and is used in various 13108places in the ‘.nnmaildir/’ subdirectory of the maildir to store 13109information about the corresponding article. The full pathname of an 13110article is available in the variable ‘nnmaildir-article-file-name’ after 13111you request the article in the summary buffer. 13112 13113 13114File: gnus.info, Node: NOV Data, Next: Article Marks, Prev: Article Identification, Up: Choosing a Mail Back End 13115 131166.4.13.8 NOV data 13117................. 13118 13119An article identified by ‘uniq’ has its NOV data (used to generate lines 13120in the summary buffer) stored in ‘.nnmaildir/nov/uniq’. There is no 13121‘nnmaildir-generate-nov-databases’ function. (There isn’t much need for 13122it—an article’s NOV data is updated automatically when the article or 13123‘nnmail-extra-headers’ has changed.) You can force ‘nnmaildir’ to 13124regenerate the NOV data for a single article simply by deleting the 13125corresponding NOV file, but _beware_: this will also cause ‘nnmaildir’ 13126to assign a new article number for this article, which may cause trouble 13127with ‘seen’ marks, the Agent, and the cache. 13128 13129 13130File: gnus.info, Node: Article Marks, Next: Mail Folders, Prev: NOV Data, Up: Choosing a Mail Back End 13131 131326.4.13.9 Article marks 13133...................... 13134 13135An article identified by ‘uniq’ is considered to have the mark ‘flag’ 13136when the file ‘.nnmaildir/marks/flag/uniq’ exists. When Gnus asks 13137‘nnmaildir’ for a group’s marks, ‘nnmaildir’ looks for such files and 13138reports the set of marks it finds. When Gnus asks ‘nnmaildir’ to store 13139a new set of marks, ‘nnmaildir’ creates and deletes the corresponding 13140files as needed. (Actually, rather than create a new file for each 13141mark, it just creates hard links to ‘.nnmaildir/markfile’, to save 13142inodes.) 13143 13144 You can invent new marks by creating a new directory in 13145‘.nnmaildir/marks/’. You can tar up a maildir and remove it from your 13146server, untar it later, and keep your marks. You can add and remove 13147marks yourself by creating and deleting mark files. If you do this 13148while Gnus is running and your ‘nnmaildir’ server is open, it’s best to 13149exit all summary buffers for ‘nnmaildir’ groups and type ‘s’ in the 13150group buffer first, and to type ‘g’ or ‘M-g’ in the group buffer 13151afterwards. Otherwise, Gnus might not pick up the changes, and might 13152undo them. 13153 13154 13155File: gnus.info, Node: Mail Folders, Next: Comparing Mail Back Ends, Prev: Article Marks, Up: Choosing a Mail Back End 13156 131576.4.13.10 Mail Folders 13158...................... 13159 13160‘nnfolder’ is a back end for storing each mail group in a separate file. 13161Each file is in the standard Un*x mbox format. ‘nnfolder’ will add 13162extra headers to keep track of article numbers and arrival dates. 13163 13164 Virtual server settings: 13165 13166‘nnfolder-directory’ 13167 All the ‘nnfolder’ mail boxes will be stored under this directory. 13168 The default is the value of ‘message-directory’ (whose default is 13169 ‘~/Mail’) 13170 13171‘nnfolder-active-file’ 13172 The name of the active file. The default is ‘~/Mail/active’. 13173 13174‘nnfolder-newsgroups-file’ 13175 The name of the group descriptions file. *Note Newsgroups File 13176 Format::. The default is ‘~/Mail/newsgroups’ 13177 13178‘nnfolder-get-new-mail’ 13179 If non-‘nil’, ‘nnfolder’ will read incoming mail. The default is 13180 ‘t’ 13181 13182‘nnfolder-save-buffer-hook’ 13183 Hook run before saving the folders. Note that Emacs does the 13184 normal backup renaming of files even with the ‘nnfolder’ buffers. 13185 If you wish to switch this off, you could say something like the 13186 following in your ‘.emacs’ file: 13187 13188 (defun turn-off-backup () 13189 (set (make-local-variable 'backup-inhibited) t)) 13190 13191 (add-hook 'nnfolder-save-buffer-hook 'turn-off-backup) 13192 13193‘nnfolder-delete-mail-hook’ 13194 Hook run in a buffer narrowed to the message that is to be deleted. 13195 This function can be used to copy the message to somewhere else, or 13196 to extract some information from it before removing it. 13197 13198‘nnfolder-nov-is-evil’ 13199 If non-‘nil’, this back end will ignore any NOV files. The default 13200 is ‘nil’. 13201 13202‘nnfolder-nov-file-suffix’ 13203 The extension for NOV files. The default is ‘.nov’. 13204 13205‘nnfolder-nov-directory’ 13206 The directory where the NOV files should be stored. If ‘nil’, 13207 ‘nnfolder-directory’ is used. 13208 13209 If you have lots of ‘nnfolder’-like files you’d like to read with 13210‘nnfolder’, you can use the ‘M-x nnfolder-generate-active-file’ command 13211to make ‘nnfolder’ aware of all likely files in ‘nnfolder-directory’. 13212This only works if you use long file names, though. 13213 13214 13215File: gnus.info, Node: Comparing Mail Back Ends, Prev: Mail Folders, Up: Choosing a Mail Back End 13216 132176.4.13.11 Comparing Mail Back Ends 13218.................................. 13219 13220First, just for terminology, the “back end” is the common word for a 13221low-level access method—a transport, if you will, by which something is 13222acquired. The sense is that one’s mail has to come from somewhere, and 13223so selection of a suitable back end is required in order to get that 13224mail within spitting distance of Gnus. 13225 13226 The same concept exists for Usenet itself: Though access to articles 13227is typically done by NNTP these days, once upon a midnight dreary, 13228everyone in the world got at Usenet by running a reader on the machine 13229where the articles lay (the machine which today we call an NNTP server), 13230and access was by the reader stepping into the articles’ directory spool 13231area directly. One can still select between either the ‘nntp’ or 13232‘nnspool’ back ends, to select between these methods, if one happens 13233actually to live on the server (or can see its spool directly, anyway, 13234via NFS). 13235 13236 The goal in selecting a mail back end is to pick one which 13237simultaneously represents a suitable way of dealing with the original 13238format plus leaving mail in a form that is convenient to use in the 13239future. Here are some high and low points on each: 13240 13241‘nnmbox’ 13242 13243 UNIX systems have historically had a single, very common, and 13244 well-defined format. All messages arrive in a single “spool file”, 13245 and they are delineated by a line whose regular expression matches 13246 ‘^From_’. (My notational use of ‘_’ is to indicate a space, to 13247 make it clear in this instance that this is not the RFC-specified 13248 ‘From:’ header.) Because Emacs and therefore Gnus emanate 13249 historically from the Unix environment, it is simplest if one does 13250 not mess a great deal with the original mailbox format, so if one 13251 chooses this back end, Gnus’ primary activity in getting mail from 13252 the real spool area to Gnus’ preferred directory is simply to copy 13253 it, with no (appreciable) format change in the process. It is the 13254 “dumbest” way to move mail into availability in the Gnus 13255 environment. This makes it fast to move into place, but slow to 13256 parse, when Gnus has to look at what’s where. 13257 13258‘nnbabyl’ 13259 13260 Once upon a time, there was the DEC-10 and DEC-20, running 13261 operating systems called TOPS and related things, and the usual 13262 (only?) mail reading environment was a thing called Babyl. I 13263 don’t know what format was used for mail landing on the system, but 13264 Babyl had its own internal format to which mail was converted, 13265 primarily involving creating a spool-file-like entity with a scheme 13266 for inserting Babyl-specific headers and status bits above the top 13267 of each message in the file. Rmail was Emacs’s first mail reader, 13268 it was written by Richard Stallman, and Stallman came out of that 13269 TOPS/Babyl environment, so he wrote Rmail to understand the mail 13270 files folks already had in existence. Gnus (and VM, for that 13271 matter) continue to support this format because it’s perceived as 13272 having some good qualities in those mailer-specific headers/status 13273 bits stuff. Rmail itself still exists as well, of course, and is 13274 still maintained within Emacs. Since Emacs 23, it uses standard 13275 mbox format rather than Babyl. 13276 13277 Both of the above forms leave your mail in a single file on your 13278 file system, and they must parse that entire file each time you 13279 take a look at your mail. 13280 13281‘nnml’ 13282 13283 ‘nnml’ is the back end which smells the most as though you were 13284 actually operating with an ‘nnspool’-accessed Usenet system. (In 13285 fact, I believe ‘nnml’ actually derived from ‘nnspool’ code, lo 13286 these years ago.) One’s mail is taken from the original spool 13287 file, and is then cut up into individual message files, 1:1. It 13288 maintains a Usenet-style active file (analogous to what one finds 13289 in an INN- or CNews-based news system in (for instance) 13290 ‘/var/lib/news/active’, or what is returned via the ‘NNTP LIST’ 13291 verb) and also creates “overview” files for efficient group entry, 13292 as has been defined for NNTP servers for some years now. It is 13293 slower in mail-splitting, due to the creation of lots of files, 13294 updates to the ‘nnml’ active file, and additions to overview files 13295 on a per-message basis, but it is extremely fast on access because 13296 of what amounts to the indexing support provided by the active file 13297 and overviews. 13298 13299 ‘nnml’ costs “inodes” in a big way; that is, it soaks up the 13300 resource which defines available places in the file system to put 13301 new files. Sysadmins take a dim view of heavy inode occupation 13302 within tight, shared file systems. But if you live on a personal 13303 machine where the file system is your own and space is not at a 13304 premium, ‘nnml’ wins big. 13305 13306 It is also problematic using this back end if you are living in a 13307 FAT16-based Windows world, since much space will be wasted on all 13308 these tiny files. 13309 13310‘nnmh’ 13311 13312 The Rand MH mail-reading system has been around UNIX systems for a 13313 very long time; it operates by splitting one’s spool file of 13314 messages into individual files, but with little or no indexing 13315 support—‘nnmh’ is considered to be semantically equivalent to 13316 “‘nnml’ without active file or overviews”. This is arguably the 13317 worst choice, because one gets the slowness of individual file 13318 creation married to the slowness of access parsing when learning 13319 what’s new in one’s groups. 13320 13321‘nnfolder’ 13322 13323 Basically the effect of ‘nnfolder’ is ‘nnmbox’ (the first method 13324 described above) on a per-group basis. That is, ‘nnmbox’ itself 13325 puts _all_ one’s mail in one file; ‘nnfolder’ provides a little bit 13326 of optimization to this so that each of one’s mail groups has a 13327 Unix mail box file. It’s faster than ‘nnmbox’ because each group 13328 can be parsed separately, and still provides the simple Unix mail 13329 box format requiring minimal effort in moving the mail around. In 13330 addition, it maintains an “active” file making it much faster for 13331 Gnus to figure out how many messages there are in each separate 13332 group. 13333 13334 If you have groups that are expected to have a massive amount of 13335 messages, ‘nnfolder’ is not the best choice, but if you receive 13336 only a moderate amount of mail, ‘nnfolder’ is probably the most 13337 friendly mail back end all over. 13338 13339‘nnmaildir’ 13340 13341 For configuring expiry and other things, ‘nnmaildir’ uses 13342 incompatible group parameters, slightly different from those of 13343 other mail back ends. 13344 13345 ‘nnmaildir’ is largely similar to ‘nnml’, with some notable 13346 differences. Each message is stored in a separate file, but the 13347 filename is unrelated to the article number in Gnus. ‘nnmaildir’ 13348 also stores the equivalent of ‘nnml’’s overview files in one file 13349 per article, so it uses about twice as many inodes as ‘nnml’. (Use 13350 ‘df -i’ to see how plentiful your inode supply is.) If this slows 13351 you down or takes up very much space, a non-block-structured file 13352 system. 13353 13354 Since maildirs don’t require locking for delivery, the maildirs you 13355 use as groups can also be the maildirs your mail is directly 13356 delivered to. This means you can skip Gnus’ mail splitting if your 13357 mail is already organized into different mailboxes during delivery. 13358 A ‘directory’ entry in ‘mail-sources’ would have a similar effect, 13359 but would require one set of mailboxes for spooling deliveries (in 13360 mbox format, thus damaging message bodies), and another set to be 13361 used as groups (in whatever format you like). A maildir has a 13362 built-in spool, in the ‘new/’ subdirectory. Beware that currently, 13363 mail moved from ‘new/’ to ‘cur/’ instead of via mail splitting will 13364 not undergo treatment such as duplicate checking. 13365 13366 ‘nnmaildir’ stores article marks for a given group in the 13367 corresponding maildir, in a way designed so that it’s easy to 13368 manipulate them from outside Gnus. You can tar up a maildir, 13369 unpack it somewhere else, and still have your marks. 13370 13371 ‘nnmaildir’ uses a significant amount of memory to speed things up. 13372 (It keeps in memory some of the things that ‘nnml’ stores in files 13373 and that ‘nnmh’ repeatedly parses out of message files.) If this 13374 is a problem for you, you can set the ‘nov-cache-size’ group 13375 parameter to something small (0 would probably not work, but 1 13376 probably would) to make it use less memory. This caching will 13377 probably be removed in the future. 13378 13379 Startup is likely to be slower with ‘nnmaildir’ than with other 13380 back ends. Everything else is likely to be faster, depending in 13381 part on your file system. 13382 13383 ‘nnmaildir’ does not use ‘nnoo’, so you cannot use ‘nnoo’ to write 13384 an ‘nnmaildir’-derived back end. 13385 13386 13387File: gnus.info, Node: Browsing the Web, Next: Other Sources, Prev: Getting Mail, Up: Select Methods 13388 133896.5 Browsing the Web 13390==================== 13391 13392Web-based discussion forums are getting more and more popular. On many 13393subjects, the web-based forums have become the most important forums, 13394eclipsing the importance of mailing lists and news groups. The reason 13395is easy to understand—they are friendly to new users; you just point and 13396click, and there’s the discussion. With mailing lists, you have to go 13397through a cumbersome subscription procedure, and most people don’t even 13398know what a news group is. 13399 13400 The problem with this scenario is that web browsers are not very good 13401at being newsreaders. They do not keep track of what articles you’ve 13402read; they do not allow you to score on subjects you’re interested in; 13403they do not allow off-line browsing; they require you to click around 13404and drive you mad in the end. 13405 13406 So—if web browsers suck at reading discussion forums, why not use 13407Gnus to do it instead? 13408 13409 Gnus has been getting a bit of a collection of back ends for 13410providing interfaces to these sources. 13411 13412* Menu: 13413 13414* Archiving Mail:: 13415* Web Searches:: Creating groups from articles that match a string. 13416* RSS:: Reading RDF site summary. 13417 13418 The main caveat with all these web sources is that they probably 13419won’t work for a very long time. Gleaning information from the HTML 13420data is guesswork at best, and when the layout is altered, the Gnus back 13421end will fail. If you have reasonably new versions of these back ends, 13422though, you should be ok. 13423 13424 One thing all these Web methods have in common is that the Web 13425sources are often down, unavailable or just plain too slow to be fun. 13426In those cases, it makes a lot of sense to let the Gnus Agent (*note 13427Gnus Unplugged::) handle downloading articles, and then you can read 13428them at leisure from your local disk. No more World Wide Wait for you. 13429 13430 13431File: gnus.info, Node: Archiving Mail, Next: Web Searches, Up: Browsing the Web 13432 134336.5.1 Archiving Mail 13434-------------------- 13435 13436Some of the back ends, notably ‘nnml’, ‘nnfolder’, and ‘nnmaildir’, now 13437actually store the article marks with each group. For these servers, 13438archiving and restoring a group while preserving marks is fairly simple. 13439 13440 (Preserving the group level and group parameters as well still 13441requires ritual dancing and sacrifices to the ‘.newsrc.eld’ deity 13442though.) 13443 13444 To archive an entire ‘nnml’, ‘nnfolder’, or ‘nnmaildir’ server, take 13445a recursive copy of the server directory. There is no need to shut down 13446Gnus, so archiving may be invoked by ‘cron’ or similar. You restore the 13447data by restoring the directory tree, and adding a server definition 13448pointing to that directory in Gnus. The *note Article Backlog::, *note 13449Asynchronous Fetching:: and other things might interfere with 13450overwriting data, so you may want to shut down Gnus before you restore 13451the data. 13452 13453 13454File: gnus.info, Node: Web Searches, Next: RSS, Prev: Archiving Mail, Up: Browsing the Web 13455 134566.5.2 Web Searches 13457------------------ 13458 13459It’s, like, too neat to search the Usenet for articles that match a 13460string, but it, like, totally _sucks_, like, totally, to use one of 13461those, like, Web browsers, and you, like, have to, rilly, like, look at 13462the commercials, so, like, with Gnus you can do _rad_, rilly, searches 13463without having to use a browser. 13464 13465 The ‘nnweb’ back end allows an easy interface to the mighty search 13466engine. You create an ‘nnweb’ group, enter a search pattern, and then 13467enter the group and read the articles like you would any normal group. 13468The ‘G w’ command in the group buffer (*note Foreign Groups::) will do 13469this in an easy-to-use fashion. 13470 13471 ‘nnweb’ groups don’t really lend themselves to being solid 13472groups—they have a very fleeting idea of article numbers. In fact, each 13473time you enter an ‘nnweb’ group (not even changing the search pattern), 13474you are likely to get the articles ordered in a different manner. Not 13475even using duplicate suppression (*note Duplicate Suppression::) will 13476help, since ‘nnweb’ doesn’t even know the ‘Message-ID’ of the articles 13477before reading them using some search engines (Google, for instance). 13478The only possible way to keep track of which articles you’ve read is by 13479scoring on the ‘Date’ header—mark all articles posted before the last 13480date you read the group as read. 13481 13482 If the search engine changes its output substantially, ‘nnweb’ won’t 13483be able to parse it and will fail. One could hardly fault the Web 13484providers if they were to do this—their _raison d’être_ is to make money 13485off of advertisements, not to provide services to the community. Since 13486‘nnweb’ washes the ads off all the articles, one might think that the 13487providers might be somewhat miffed. We’ll see. 13488 13489 Virtual server variables: 13490 13491‘nnweb-type’ 13492 What search engine type is being used. The currently supported 13493 types are ‘google’ and ‘dejanews’. Note that ‘dejanews’ is an 13494 alias to ‘google’. 13495 13496‘nnweb-search’ 13497 The search string to feed to the search engine. 13498 13499‘nnweb-max-hits’ 13500 Advisory maximum number of hits per search to display. The default 13501 is 999. 13502 13503‘nnweb-type-definition’ 13504 Type-to-definition alist. This alist says what ‘nnweb’ should do 13505 with the various search engine types. The following elements must 13506 be present: 13507 13508 ‘article’ 13509 Function to decode the article and provide something that Gnus 13510 understands. 13511 13512 ‘map’ 13513 Function to create an article number to message header and URL 13514 alist. 13515 13516 ‘search’ 13517 Function to send the search string to the search engine. 13518 13519 ‘address’ 13520 The address the aforementioned function should send the search 13521 string to. 13522 13523 ‘id’ 13524 Format string URL to fetch an article by ‘Message-ID’. 13525 13526 13527File: gnus.info, Node: RSS, Prev: Web Searches, Up: Browsing the Web 13528 135296.5.3 RSS 13530--------- 13531 13532Some web sites have an RDF Site Summary (RSS). RSS is a format for 13533summarizing headlines from news related sites (such as BBC or CNN). But 13534basically anything list-like can be presented as an RSS feed: weblogs, 13535changelogs or recent changes to a wiki (e.g., 13536<https://cliki.net/site/recent-changes>). 13537 13538 RSS has a quite regular and nice interface, and it’s possible to get 13539the information Gnus needs to keep groups updated. 13540 13541 Note: you had better use Emacs which supports the ‘utf-8’ coding 13542system because RSS uses UTF-8 for encoding non-ASCII text by default. 13543It is also used by default for non-ASCII group names. 13544 13545 Use ‘G R’ from the group buffer to subscribe to a feed—you will be 13546prompted for the location, the title and the description of the feed. 13547The title, which allows any characters, will be used for the group name 13548and the name of the group data file. The description can be omitted. 13549 13550 An easy way to get started with ‘nnrss’ is to say something like the 13551following in the group buffer: ‘B nnrss <RET> <RET> y’, then subscribe 13552to groups. 13553 13554 The ‘nnrss’ back end saves the group data file in ‘nnrss-directory’ 13555(see below) for each ‘nnrss’ group. File names containing non-ASCII 13556characters will be encoded by the coding system specified with the 13557‘nnmail-pathname-coding-system’ variable or other. Also *Note Non-ASCII 13558Group Names::, for more information. 13559 13560 The ‘nnrss’ back end generates ‘multipart/alternative’ MIME articles 13561in which each contains a ‘text/plain’ part and a ‘text/html’ part. 13562 13563 You can also use the following commands to import and export your 13564subscriptions from a file in OPML format (Outline Processor Markup 13565Language). 13566 13567 -- Function: nnrss-opml-import file 13568 Prompt for an OPML file, and subscribe to each feed in the file. 13569 13570 -- Function: nnrss-opml-export 13571 Write your current RSS subscriptions to a buffer in OPML format. 13572 13573 The following ‘nnrss’ variables can be altered: 13574 13575‘nnrss-directory’ 13576 The directory where ‘nnrss’ stores its files. The default is 13577 ‘~/News/rss/’. 13578 13579‘nnrss-file-coding-system’ 13580 The coding system used when reading and writing the ‘nnrss’ groups 13581 data files. The default is the value of 13582 ‘mm-universal-coding-system’ (which defaults to ‘emacs-mule’). 13583 13584‘nnrss-ignore-article-fields’ 13585 Some feeds update constantly article fields during their 13586 publications, e.g., to indicate the number of comments. However, 13587 if there is a difference between the local article and the distant 13588 one, the latter is considered to be new. To avoid this and discard 13589 some fields, set this variable to the list of fields to be ignored. 13590 The default is ‘'(slash:comments)’. 13591 13592‘nnrss-use-local’ 13593 If you set ‘nnrss-use-local’ to ‘t’, ‘nnrss’ will read the feeds 13594 from local files in ‘nnrss-directory’. You can use the command 13595 ‘nnrss-generate-download-script’ to generate a download script 13596 using ‘wget’. 13597 13598 The following code may be helpful, if you want to show the 13599description in the summary buffer. 13600 13601 (add-to-list 'nnmail-extra-headers nnrss-description-field) 13602 (setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-15,15f%]%) %s%uX\n") 13603 13604 (defun gnus-user-format-function-X (header) 13605 (let ((descr 13606 (assq nnrss-description-field (mail-header-extra header)))) 13607 (if descr (concat "\n\t" (cdr descr)) ""))) 13608 13609 The following code may be useful to open an nnrss url directly from 13610the summary buffer. 13611 13612 (require 'browse-url) 13613 13614 (defun browse-nnrss-url (arg) 13615 (interactive "p") 13616 (let ((url (assq nnrss-url-field 13617 (mail-header-extra 13618 (gnus-data-header 13619 (assq (gnus-summary-article-number) 13620 gnus-newsgroup-data)))))) 13621 (if url 13622 (progn 13623 (browse-url (cdr url)) 13624 (gnus-summary-mark-as-read-forward 1)) 13625 (gnus-summary-scroll-up arg)))) 13626 13627 (with-eval-after-load "gnus" 13628 (define-key gnus-summary-mode-map 13629 (kbd "<RET>") 'browse-nnrss-url)) 13630 (add-to-list 'nnmail-extra-headers nnrss-url-field) 13631 13632 Even if you have added ‘text/html’ to the 13633‘mm-discouraged-alternatives’ variable (*note Display Customization: 13634(emacs-mime)Display Customization.) since you don’t want to see HTML 13635parts, it might be more useful especially in ‘nnrss’ groups to display 13636‘text/html’ parts. Here’s an example of setting 13637‘mm-discouraged-alternatives’ as a group parameter (*note Group 13638Parameters::) in order to display ‘text/html’ parts only in ‘nnrss’ 13639groups: 13640 13641 ;; Set the default value of ‘mm-discouraged-alternatives’. 13642 (with-eval-after-load "gnus-sum" 13643 (add-to-list 13644 'gnus-newsgroup-variables 13645 '(mm-discouraged-alternatives 13646 . '("text/html" "image/.*")))) 13647 13648 ;; Display ‘text/html’ parts in ‘nnrss’ groups. 13649 (add-to-list 13650 'gnus-parameters 13651 '("\\`nnrss:" (mm-discouraged-alternatives nil))) 13652 13653 13654File: gnus.info, Node: Other Sources, Next: Combined Groups, Prev: Browsing the Web, Up: Select Methods 13655 136566.6 Other Sources 13657================= 13658 13659Gnus can do more than just read news or mail. The methods described 13660below allow Gnus to view directories and files as if they were 13661newsgroups. 13662 13663* Menu: 13664 13665* Directory Groups:: You can read a directory as if it was a newsgroup. 13666* Anything Groups:: Dired? Who needs dired? 13667* Document Groups:: Single files can be the basis of a group. 13668* Mail-To-News Gateways:: Posting articles via mail-to-news gateways. 13669* The Empty Backend:: The backend that never has any news. 13670 13671 13672File: gnus.info, Node: Directory Groups, Next: Anything Groups, Up: Other Sources 13673 136746.6.1 Directory Groups 13675---------------------- 13676 13677If you have a directory that has lots of articles in separate files in 13678it, you might treat it as a newsgroup. The files have to have numerical 13679names, of course. 13680 13681 This might be an opportune moment to mention ‘ange-ftp’ (and its 13682successor ‘efs’), that most wonderful of all wonderful Emacs packages. 13683When I wrote ‘nndir’, I didn’t think much about it—a back end to read 13684directories. Big deal. 13685 13686 ‘ange-ftp’ changes that picture dramatically. For instance, if you 13687enter the ‘ange-ftp’ file name ‘/ftp.hpc.uh.edu:/pub/emacs/ding-list/’ 13688as the directory name, ‘ange-ftp’ or ‘efs’ will actually allow you to 13689read this directory over at ‘sina’ as a newsgroup. Distributed news 13690ahoy! 13691 13692 ‘nndir’ will use NOV files if they are present. 13693 13694 ‘nndir’ is a “read-only” back end—you can’t delete or expire articles 13695with this method. You can use ‘nnmh’ or ‘nnml’ for whatever you use 13696‘nndir’ for, so you could switch to any of those methods if you feel the 13697need to have a non-read-only ‘nndir’. 13698 13699 13700File: gnus.info, Node: Anything Groups, Next: Document Groups, Prev: Directory Groups, Up: Other Sources 13701 137026.6.2 Anything Groups 13703--------------------- 13704 13705From the ‘nndir’ back end (which reads a single spool-like directory), 13706it’s just a hop and a skip to ‘nneething’, which pretends that any 13707arbitrary directory is a newsgroup. Strange, but true. 13708 13709 When ‘nneething’ is presented with a directory, it will scan this 13710directory and assign article numbers to each file. When you enter such 13711a group, ‘nneething’ must create “headers” that Gnus can use. After 13712all, Gnus is a newsreader, in case you’re forgetting. ‘nneething’ does 13713this in a two-step process. First, it snoops each file in question. If 13714the file looks like an article (i.e., the first few lines look like 13715headers), it will use this as the head. If this is just some arbitrary 13716file without a head (e.g., a C source file), ‘nneething’ will cobble up 13717a header out of thin air. It will use file ownership, name and date and 13718do whatever it can with these elements. 13719 13720 All this should happen automatically for you, and you will be 13721presented with something that looks very much like a newsgroup. Totally 13722like a newsgroup, to be precise. If you select an article, it will be 13723displayed in the article buffer, just as usual. 13724 13725 If you select a line that represents a directory, Gnus will pop you 13726into a new summary buffer for this ‘nneething’ group. And so on. You 13727can traverse the entire disk this way, if you feel like, but remember 13728that Gnus is not dired, really, and does not intend to be, either. 13729 13730 There are two overall modes to this action—ephemeral or solid. When 13731doing the ephemeral thing (i.e., ‘G D’ from the group buffer), Gnus will 13732not store information on what files you have read, and what files are 13733new, and so on. If you create a solid ‘nneething’ group the normal way 13734with ‘G m’, Gnus will store a mapping table between article numbers and 13735file names, and you can treat this group like any other groups. When 13736you activate a solid ‘nneething’ group, you will be told how many unread 13737articles it contains, etc., etc. 13738 13739 Some variables: 13740 13741‘nneething-map-file-directory’ 13742 All the mapping files for solid ‘nneething’ groups will be stored 13743 in this directory, which defaults to ‘~/.nneething/’. 13744 13745‘nneething-exclude-files’ 13746 All files that match this regexp will be ignored. Nice to use to 13747 exclude auto-save files and the like, which is what it does by 13748 default. 13749 13750‘nneething-include-files’ 13751 Regexp saying what files to include in the group. If this variable 13752 is non-‘nil’, only files matching this regexp will be included. 13753 13754‘nneething-map-file’ 13755 Name of the map files. 13756 13757 13758File: gnus.info, Node: Document Groups, Next: Mail-To-News Gateways, Prev: Anything Groups, Up: Other Sources 13759 137606.6.3 Document Groups 13761--------------------- 13762 13763‘nndoc’ is a cute little thing that will let you read a single file as a 13764newsgroup. Several files types are supported: 13765 13766‘babyl’ 13767 The Babyl format. 13768 13769‘mbox’ 13770 The standard Unix mbox file. 13771 13772‘mmdf’ 13773 The MMDF mail box format. 13774 13775‘news’ 13776 Several news articles appended into a file. 13777 13778‘rnews’ 13779 The rnews batch transport format. 13780 13781‘nsmail’ 13782 Netscape mail boxes. 13783 13784‘mime-parts’ 13785 MIME multipart messages. 13786 13787‘standard-digest’ 13788 The standard (RFC 1153) digest format. 13789 13790‘mime-digest’ 13791 A MIME digest of messages. 13792 13793‘lanl-gov-announce’ 13794 Announcement messages from LANL Gov Announce. 13795 13796‘git’ 13797 ‘git’ commit messages. 13798 13799‘rfc822-forward’ 13800 A message forwarded according to RFC 822 or its successors. 13801 13802‘outlook’ 13803 The Outlook mail box. 13804 13805‘oe-dbx’ 13806 The Outlook Express dbx mail box. 13807 13808‘exim-bounce’ 13809 A bounce message from the Exim MTA. 13810 13811‘forward’ 13812 A message forwarded according to informal rules. 13813 13814‘rfc934’ 13815 An RFC934-forwarded message. 13816 13817‘mailman’ 13818 A mailman digest. 13819 13820‘clari-briefs’ 13821 A digest of Clarinet brief news items. 13822 13823‘slack-digest’ 13824 Non-standard digest format—matches most things, but does it badly. 13825 13826‘mail-in-mail’ 13827 The last resort. 13828 13829 You can also use the special “file type” ‘guess’, which means that 13830‘nndoc’ will try to guess what file type it is looking at. ‘digest’ 13831means that ‘nndoc’ should guess what digest type the file is. 13832 13833 ‘nndoc’ will not try to change the file or insert any extra headers 13834into it—it will simply, like, let you use the file as the basis for a 13835group. And that’s it. 13836 13837 If you have some old archived articles that you want to insert into 13838your new & spiffy Gnus mail back end, ‘nndoc’ can probably help you with 13839that. Say you have an old ‘RMAIL’ file with mail that you now want to 13840split into your new ‘nnml’ groups. You look at that file using ‘nndoc’ 13841(using the ‘G f’ command in the group buffer (*note Foreign Groups::)), 13842set the process mark on all the articles in the buffer (‘M P b’, for 13843instance), and then re-spool (‘B r’) using ‘nnml’. If all goes well, 13844all the mail in the ‘RMAIL’ file is now also stored in lots of ‘nnml’ 13845directories, and you can delete that pesky ‘RMAIL’ file. If you have 13846the guts! 13847 13848 Virtual server variables: 13849 13850‘nndoc-article-type’ 13851 This should be one of ‘mbox’, ‘babyl’, ‘digest’, ‘news’, ‘rnews’, 13852 ‘mmdf’, ‘forward’, ‘rfc934’, ‘rfc822-forward’, ‘mime-parts’, 13853 ‘standard-digest’, ‘slack-digest’, ‘clari-briefs’, ‘nsmail’, 13854 ‘outlook’, ‘oe-dbx’, ‘mailman’, and ‘mail-in-mail’ or ‘guess’. 13855 13856‘nndoc-post-type’ 13857 This variable says whether Gnus is to consider the group a news 13858 group or a mail group. There are two valid values: ‘mail’ (the 13859 default) and ‘news’. 13860 13861* Menu: 13862 13863* Document Server Internals:: How to add your own document types. 13864 13865 13866File: gnus.info, Node: Document Server Internals, Up: Document Groups 13867 138686.6.3.1 Document Server Internals 13869................................. 13870 13871Adding new document types to be recognized by ‘nndoc’ isn’t difficult. 13872You just have to whip up a definition of what the document looks like, 13873write a predicate function to recognize that document type, and then 13874hook into ‘nndoc’. 13875 13876 First, here’s an example document type definition: 13877 13878 (mmdf 13879 (article-begin . "^\^A\^A\^A\^A\n") 13880 (body-end . "^\^A\^A\^A\^A\n")) 13881 13882 The definition is simply a unique “name” followed by a series of 13883regexp pseudo-variable settings. Below are the possible variables—don’t 13884be daunted by the number of variables; most document types can be 13885defined with very few settings: 13886 13887‘first-article’ 13888 If present, ‘nndoc’ will skip past all text until it finds 13889 something that match this regexp. All text before this will be 13890 totally ignored. 13891 13892‘article-begin’ 13893 This setting has to be present in all document type definitions. 13894 It says what the beginning of each article looks like. To do more 13895 complicated things that cannot be dealt with a simple regexp, you 13896 can use ‘article-begin-function’ instead of this. 13897 13898‘article-begin-function’ 13899 If present, this should be a function that moves point to the 13900 beginning of each article. This setting overrides ‘article-begin’. 13901 13902‘head-begin’ 13903 If present, this should be a regexp that matches the head of the 13904 article. To do more complicated things that cannot be dealt with a 13905 simple regexp, you can use ‘head-begin-function’ instead of this. 13906 13907‘head-begin-function’ 13908 If present, this should be a function that moves point to the head 13909 of the article. This setting overrides ‘head-begin’. 13910 13911‘head-end’ 13912 This should match the end of the head of the article. It defaults 13913 to ‘^$’—the empty line. 13914 13915‘body-begin’ 13916 This should match the beginning of the body of the article. It 13917 defaults to ‘^\n’. To do more complicated things that cannot be 13918 dealt with a simple regexp, you can use ‘body-begin-function’ 13919 instead of this. 13920 13921‘body-begin-function’ 13922 If present, this function should move point to the beginning of the 13923 body of the article. This setting overrides ‘body-begin’. 13924 13925‘body-end’ 13926 If present, this should match the end of the body of the article. 13927 To do more complicated things that cannot be dealt with a simple 13928 regexp, you can use ‘body-end-function’ instead of this. 13929 13930‘body-end-function’ 13931 If present, this function should move point to the end of the body 13932 of the article. This setting overrides ‘body-end’. 13933 13934‘file-begin’ 13935 If present, this should match the beginning of the file. All text 13936 before this regexp will be totally ignored. 13937 13938‘file-end’ 13939 If present, this should match the end of the file. All text after 13940 this regexp will be totally ignored. 13941 13942 So, using these variables ‘nndoc’ is able to dissect a document file 13943into a series of articles, each with a head and a body. However, a few 13944more variables are needed since not all document types are all that 13945news-like—variables needed to transform the head or the body into 13946something that’s palatable for Gnus: 13947 13948‘prepare-body-function’ 13949 If present, this function will be called when requesting an 13950 article. It will be called with point at the start of the body, 13951 and is useful if the document has encoded some parts of its 13952 contents. 13953 13954‘article-transform-function’ 13955 If present, this function is called when requesting an article. 13956 It’s meant to be used for more wide-ranging transformation of both 13957 head and body of the article. 13958 13959‘generate-head-function’ 13960 If present, this function is called to generate a head that Gnus 13961 can understand. It is called with the article number as a 13962 parameter, and is expected to generate a nice head for the article 13963 in question. It is called when requesting the headers of all 13964 articles. 13965 13966‘generate-article-function’ 13967 If present, this function is called to generate an entire article 13968 that Gnus can understand. It is called with the article number as 13969 a parameter when requesting all articles. 13970 13971‘dissection-function’ 13972 If present, this function is called to dissect a document by 13973 itself, overriding ‘first-article’, ‘article-begin’, 13974 ‘article-begin-function’, ‘head-begin’, ‘head-begin-function’, 13975 ‘head-end’, ‘body-begin’, ‘body-begin-function’, ‘body-end’, 13976 ‘body-end-function’, ‘file-begin’, and ‘file-end’. 13977 13978 Let’s look at the most complicated example I can come up 13979with—standard digests: 13980 13981 (standard-digest 13982 (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+")) 13983 (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+")) 13984 (prepare-body-function . nndoc-unquote-dashes) 13985 (body-end-function . nndoc-digest-body-end) 13986 (head-end . "^ ?$") 13987 (body-begin . "^ ?\n") 13988 (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$") 13989 (subtype digest guess)) 13990 13991 We see that all text before a 70-width line of dashes is ignored; all 13992text after a line that starts with that ‘^End of’ is also ignored; each 13993article begins with a 30-width line of dashes; the line separating the 13994head from the body may contain a single space; and that the body is run 13995through ‘nndoc-unquote-dashes’ before being delivered. 13996 13997 To hook your own document definition into ‘nndoc’, use the 13998‘nndoc-add-type’ function. It takes two parameters—the first is the 13999definition itself and the second (optional) parameter says where in the 14000document type definition alist to put this definition. The alist is 14001traversed sequentially, and ‘nndoc-TYPE-type-p’ is called for a given 14002type TYPE. So ‘nndoc-mmdf-type-p’ is called to see whether a document 14003is of ‘mmdf’ type, and so on. These type predicates should return ‘nil’ 14004if the document is not of the correct type; ‘t’ if it is of the correct 14005type; and a number if the document might be of the correct type. A high 14006number means high probability; a low number means low probability with 14007‘0’ being the lowest valid number. 14008 14009 14010File: gnus.info, Node: Mail-To-News Gateways, Next: The Empty Backend, Prev: Document Groups, Up: Other Sources 14011 140126.6.4 Mail-To-News Gateways 14013--------------------------- 14014 14015If your local ‘nntp’ server doesn’t allow posting, for some reason or 14016other, you can post using one of the numerous mail-to-news gateways. 14017The ‘nngateway’ back end provides the interface. 14018 14019 Note that you can’t read anything from this back end—it can only be 14020used to post with. 14021 14022 Server variables: 14023 14024‘nngateway-address’ 14025 This is the address of the mail-to-news gateway. 14026 14027‘nngateway-header-transformation’ 14028 News headers often have to be transformed in some odd way or other 14029 for the mail-to-news gateway to accept it. This variable says what 14030 transformation should be called, and defaults to 14031 ‘nngateway-simple-header-transformation’. The function is called 14032 narrowed to the headers to be transformed and with one 14033 parameter—the gateway address. 14034 14035 This default function just inserts a new ‘To’ header based on the 14036 ‘Newsgroups’ header and the gateway address. For instance, an 14037 article with this ‘Newsgroups’ header: 14038 14039 Newsgroups: alt.religion.emacs 14040 14041 will get this ‘To’ header inserted: 14042 14043 To: alt-religion-emacs@GATEWAY 14044 14045 The following pre-defined functions exist: 14046 14047 ‘nngateway-simple-header-transformation’ 14048 Creates a ‘To’ header that looks like 14049 NEWSGROUP@‘nngateway-address’. 14050 14051 ‘nngateway-mail2news-header-transformation’ 14052 Creates a ‘To’ header that looks like ‘nngateway-address’. 14053 14054 Here’s an example: 14055 14056 (setq gnus-post-method 14057 '(nngateway 14058 "mail2news@replay.com" 14059 (nngateway-header-transformation 14060 nngateway-mail2news-header-transformation))) 14061 14062 So, to use this, simply say something like: 14063 14064 (setq gnus-post-method '(nngateway "GATEWAY.ADDRESS")) 14065 14066 14067File: gnus.info, Node: The Empty Backend, Prev: Mail-To-News Gateways, Up: Other Sources 14068 140696.6.5 The Empty Backend 14070----------------------- 14071 14072‘nnnil’ is a backend that can be used as a placeholder if you have to 14073specify a backend somewhere, but don’t really want to. The classical 14074example is if you don’t want to have a primary select methods, but want 14075to only use secondary ones: 14076 14077 (setq gnus-select-method '(nnnil "")) 14078 (setq gnus-secondary-select-methods 14079 '((nnimap "foo") 14080 (nnml ""))) 14081 14082 14083File: gnus.info, Node: Combined Groups, Next: Email Based Diary, Prev: Other Sources, Up: Select Methods 14084 140856.7 Combined Groups 14086=================== 14087 14088Gnus allows combining a mixture of all the other group types into bigger 14089groups. 14090 14091* Menu: 14092 14093* Virtual Groups:: Combining articles from many groups. 14094 14095 14096File: gnus.info, Node: Virtual Groups, Up: Combined Groups 14097 140986.7.1 Virtual Groups 14099-------------------- 14100 14101An “nnvirtual group” is really nothing more than a collection of other 14102groups. 14103 14104 For instance, if you are tired of reading many small groups, you can 14105put them all in one big group, and then grow tired of reading one big, 14106unwieldy group. The joys of computing! 14107 14108 You specify ‘nnvirtual’ as the method. The address should be a 14109regexp to match component groups. 14110 14111 All marks in the virtual group will stick to the articles in the 14112component groups. So if you tick an article in a virtual group, the 14113article will also be ticked in the component group from whence it came. 14114(And vice versa—marks from the component groups will also be shown in 14115the virtual group.). To create an empty virtual group, run ‘G V’ 14116(‘gnus-group-make-empty-virtual’) in the group buffer and edit the 14117method regexp with ‘M-e’ (‘gnus-group-edit-group-method’) 14118 14119 Here’s an example ‘nnvirtual’ method that collects all Andrea Dworkin 14120newsgroups into one, big, happy newsgroup: 14121 14122 (nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*") 14123 14124 The component groups can be native or foreign; everything should work 14125smoothly, but if your computer explodes, it was probably my fault. 14126 14127 Collecting the same group from several servers might actually be a 14128good idea if users have set the Distribution header to limit 14129distribution. If you would like to read ‘soc.motss’ both from a server 14130in Japan and a server in Norway, you could use the following as the 14131group regexp: 14132 14133 "^nntp\\+server\\.jp:soc\\.motss$\\|^nntp\\+server\\.no:soc\\.motss$" 14134 14135 (Remember, though, that if you’re creating the group with ‘G m’, you 14136shouldn’t double the backslashes, and you should leave off the quote 14137characters at the beginning and the end of the string.) 14138 14139 This should work kinda smoothly—all articles from both groups should 14140end up in this one, and there should be no duplicates. Threading (and 14141the rest) will still work as usual, but there might be problems with the 14142sequence of articles. Sorting on date might be an option here (*note 14143Selecting a Group::). 14144 14145 One limitation, however—all groups included in a virtual group have 14146to be alive (i.e., subscribed or unsubscribed). Killed or zombie groups 14147can’t be component groups for ‘nnvirtual’ groups. 14148 14149 If the ‘nnvirtual-always-rescan’ variable is non-‘nil’ (which is the 14150default), ‘nnvirtual’ will always scan groups for unread articles when 14151entering a virtual group. If this variable is ‘nil’ and you read 14152articles in a component group after the virtual group has been 14153activated, the read articles from the component group will show up when 14154you enter the virtual group. You’ll also see this effect if you have 14155two virtual groups that have a component group in common. If that’s the 14156case, you should set this variable to ‘t’. Or you can just tap ‘M-g’ on 14157the virtual group every time before you enter it—it’ll have much the 14158same effect. 14159 14160 ‘nnvirtual’ can have both mail and news groups as component groups. 14161When responding to articles in ‘nnvirtual’ groups, ‘nnvirtual’ has to 14162ask the back end of the component group the article comes from whether 14163it is a news or mail back end. However, when you do a ‘^’, there is 14164typically no sure way for the component back end to know this, and in 14165that case ‘nnvirtual’ tells Gnus that the article came from a not-news 14166back end. (Just to be on the safe side.) 14167 14168 ‘C-c C-n’ in the message buffer will insert the ‘Newsgroups’ line 14169from the article you respond to in these cases. 14170 14171 ‘nnvirtual’ groups do not inherit anything but articles and marks 14172from component groups—group parameters, for instance, are not inherited. 14173 14174 14175File: gnus.info, Node: Email Based Diary, Next: Gnus Unplugged, Prev: Combined Groups, Up: Select Methods 14176 141776.8 Email Based Diary 14178===================== 14179 14180This section describes a special mail back end called ‘nndiary’, and its 14181companion library ‘gnus-diary’. It is “special” in the sense that it is 14182not meant to be one of the standard alternatives for reading mail with 14183Gnus. See *note Choosing a Mail Back End:: for that. Instead, it is 14184used to treat _some_ of your mails in a special way, namely, as event 14185reminders. 14186 14187 Here is a typical scenario: 14188 14189 • You’ve got a date with Andy Mc Dowell or Bruce Willis (select 14190 according to your sexual preference) in one month. You don’t want 14191 to forget it. 14192 • So you send a “reminder” message (actually, a diary one) to 14193 yourself. 14194 • You forget all about it and keep on getting and reading new mail, 14195 as usual. 14196 • From time to time, as you type ‘g’ in the group buffer and as the 14197 date is getting closer, the message will pop up again to remind you 14198 of your appointment, just as if it were new and unread. 14199 • Read your “new” messages, this one included, and start dreaming 14200 again of the night you’re gonna have. 14201 • Once the date is over (you actually fell asleep just after dinner), 14202 the message will be automatically deleted if it is marked as 14203 expirable. 14204 14205 The Gnus Diary back end has the ability to handle regular 14206appointments (that wouldn’t ever be deleted) as well as punctual ones, 14207operates as a real mail back end and is configurable in many ways. All 14208of this is explained in the sections below. 14209 14210* Menu: 14211 14212* The NNDiary Back End:: Basic setup and usage. 14213* The Gnus Diary Library:: Utility toolkit on top of nndiary. 14214 14215 14216File: gnus.info, Node: The NNDiary Back End, Next: The Gnus Diary Library, Up: Email Based Diary 14217 142186.8.1 The NNDiary Back End 14219-------------------------- 14220 14221‘nndiary’ is a back end very similar to ‘nnml’ (*note Mail Spool::). 14222Actually, it could appear as a mix of ‘nnml’ and ‘nndraft’. If you know 14223‘nnml’, you’re already familiar with the message storing scheme of 14224‘nndiary’: one file per message, one directory per group. 14225 14226 Before anything, there is one requirement to be able to run ‘nndiary’ 14227properly: you _must_ use the group timestamp feature of Gnus. This adds 14228a timestamp to each group’s parameters. *note Group Timestamp:: to see 14229how it’s done. 14230 14231* Menu: 14232 14233* Diary Messages:: What makes a message valid for nndiary. 14234* Running NNDiary:: NNDiary has two modes of operation. 14235* Customizing NNDiary:: Bells and whistles. 14236 14237 14238File: gnus.info, Node: Diary Messages, Next: Running NNDiary, Up: The NNDiary Back End 14239 142406.8.1.1 Diary Messages 14241...................... 14242 14243‘nndiary’ messages are just normal ones, except for the mandatory 14244presence of 7 special headers. These headers are of the form 14245‘X-Diary-<something>’, ‘<something>’ being one of ‘Minute’, ‘Hour’, 14246‘Dom’, ‘Month’, ‘Year’, ‘Time-Zone’ and ‘Dow’. ‘Dom’ means “Day of 14247Month”, and ‘Dow’ means “Day of Week”. These headers actually behave 14248like crontab specifications and define the event date(s): 14249 14250 • For all headers except the ‘Time-Zone’ one, a header value is 14251 either a star (meaning all possible values), or a list of fields 14252 (separated by a comma). 14253 • A field is either an integer, or a range. 14254 • A range is two integers separated by a dash. 14255 • Possible integer values are 0–59 for ‘Minute’, 0–23 for ‘Hour’, 14256 1–31 for ‘Dom’, 1–12 for ‘Month’, above 1971 for ‘Year’ and 0–6 for 14257 ‘Dow’ (0 meaning Sunday). 14258 • As a special case, a star in either ‘Dom’ or ‘Dow’ doesn’t mean 14259 “all possible values”, but “use only the other field”. Note that 14260 if both are star’ed, the use of either one gives the same result. 14261 • The ‘Time-Zone’ header is special in that it can only have one 14262 value (‘GMT’, for instance). A star doesn’t mean “all possible 14263 values” (because it makes no sense), but “the current local time 14264 zone”. Most of the time, you’ll be using a star here. However, 14265 for a list of available time zone values, see the variable 14266 ‘nndiary-headers’. 14267 14268 As a concrete example, here are the diary headers to add to your 14269message for specifying “Each Monday and each 1st of month, at 12:00, 1427020:00, 21:00, 22:00, 23:00 and 24:00, from 1999 to 2010” (I’ll let you 14271find what to do then): 14272 14273 X-Diary-Minute: 0 14274 X-Diary-Hour: 12, 20-24 14275 X-Diary-Dom: 1 14276 X-Diary-Month: * 14277 X-Diary-Year: 1999-2010 14278 X-Diary-Dow: 1 14279 X-Diary-Time-Zone: * 14280 14281 14282File: gnus.info, Node: Running NNDiary, Next: Customizing NNDiary, Prev: Diary Messages, Up: The NNDiary Back End 14283 142846.8.1.2 Running NNDiary 14285....................... 14286 14287‘nndiary’ has two modes of operation: “traditional” (the default) and 14288“autonomous”. In traditional mode, ‘nndiary’ does not get new mail by 14289itself. You have to move (‘B m’) or copy (‘B c’) mails from your 14290primary mail back end to nndiary groups in order to handle them as diary 14291messages. In autonomous mode, ‘nndiary’ retrieves its own mail and 14292handles it independently from your primary mail back end. 14293 14294 One should note that Gnus is not inherently designed to allow several 14295“master” mail back ends at the same time. However, this does make sense 14296with ‘nndiary’: you really want to send and receive diary messages to 14297your diary groups directly. So, ‘nndiary’ supports being sort of a 14298“second primary mail back end” (to my knowledge, it is the only back end 14299offering this feature). However, there is a limitation (which I hope to 14300fix some day): respooling doesn’t work in autonomous mode. 14301 14302 In order to use ‘nndiary’ in autonomous mode, you have several things 14303to do: 14304 14305 • Allow ‘nndiary’ to retrieve new mail by itself. Put the following 14306 line in your ‘~/.gnus.el’ file: 14307 14308 (setq nndiary-get-new-mail t) 14309 • You must arrange for diary messages (those containing ‘X-Diary-*’ 14310 headers) to be split in a private folder _before_ Gnus treat them. 14311 Again, this is needed because Gnus cannot (yet ?) properly handle 14312 multiple primary mail back ends. Getting those messages from a 14313 separate source will compensate this misfeature to some extent. 14314 14315 As an example, here’s my procmailrc entry to store diary files in 14316 ‘~/.nndiary’ (the default ‘nndiary’ mail source file): 14317 14318 :0 HD : 14319 * ^X-Diary 14320 .nndiary 14321 14322 Once this is done, you might want to customize the following two 14323options that affect the diary mail retrieval and splitting processes: 14324 14325 -- Variable: nndiary-mail-sources 14326 This is the diary-specific replacement for the standard 14327 ‘mail-sources’ variable. It obeys the same syntax, and defaults to 14328 ‘(file :path "~/.nndiary")’. 14329 14330 -- Variable: nndiary-split-methods 14331 This is the diary-specific replacement for the standard 14332 ‘nnmail-split-methods’ variable. It obeys the same syntax. 14333 14334 Finally, you may add a permanent ‘nndiary’ virtual server (something 14335like ‘(nndiary "diary")’ should do) to your 14336‘gnus-secondary-select-methods’. 14337 14338 Hopefully, almost everything (see the TODO section in ‘nndiary.el’) 14339will work as expected when you restart Gnus: in autonomous mode, typing 14340‘g’ and ‘M-g’ in the group buffer, will also get your new diary mails 14341and split them according to your diary-specific rules, ‘F’ will find 14342your new diary groups etc. 14343 14344 14345File: gnus.info, Node: Customizing NNDiary, Prev: Running NNDiary, Up: The NNDiary Back End 14346 143476.8.1.3 Customizing NNDiary 14348........................... 14349 14350Now that ‘nndiary’ is up and running, it’s time to customize it. The 14351custom group is called ‘nndiary’ (no, really ?!). You should browse it 14352to figure out which options you’d like to tweak. The following two 14353variables are probably the only ones you will want to change: 14354 14355 -- Variable: nndiary-reminders 14356 This is the list of times when you want to be reminded of your 14357 appointments (e.g., 3 weeks before, then 2 days before, then 1 hour 14358 before and that’s it). Remember that “being reminded” means that 14359 the diary message will pop up as brand new and unread again when 14360 you get new mail. 14361 14362 -- Variable: nndiary-week-starts-on-monday 14363 Rather self-explanatory. Otherwise, Sunday is assumed (this is the 14364 default). 14365 14366 14367File: gnus.info, Node: The Gnus Diary Library, Prev: The NNDiary Back End, Up: Email Based Diary 14368 143696.8.2 The Gnus Diary Library 14370---------------------------- 14371 14372Using ‘nndiary’ manually (I mean, writing the headers by hand and so on) 14373would be rather boring. Fortunately, there is a library called 14374‘gnus-diary’ written on top of ‘nndiary’, that does many useful things 14375for you. 14376 14377 In order to use it, add the following line to your ‘~/.gnus.el’ file: 14378 14379 (require 'gnus-diary) 14380 14381 Also, you shouldn’t use any ‘gnus-user-format-function-[d|D]’ (*note 14382Summary Buffer Lines::). ‘gnus-diary’ provides both of these (sorry if 14383you used them before). 14384 14385* Menu: 14386 14387* Diary Summary Line Format:: A nicer summary buffer line format. 14388* Diary Articles Sorting:: A nicer way to sort messages. 14389* Diary Headers Generation:: Not doing it manually. 14390* Diary Group Parameters:: Not handling them manually. 14391 14392 14393File: gnus.info, Node: Diary Summary Line Format, Next: Diary Articles Sorting, Up: The Gnus Diary Library 14394 143956.8.2.1 Diary Summary Line Format 14396................................. 14397 14398Displaying diary messages in standard summary line format (usually 14399something like ‘From Joe: Subject’) is pretty useless. Most of the 14400time, you’re the one who wrote the message, and you mostly want to see 14401the event’s date. 14402 14403 ‘gnus-diary’ provides two supplemental user formats to be used in 14404summary line formats. ‘D’ corresponds to a formatted time string for 14405the next occurrence of the event (e.g., “Sat, Sep 22 01, 12:00”), while 14406‘d’ corresponds to an approximate remaining time until the next 14407occurrence of the event (e.g., “in 6 months, 1 week”). 14408 14409 For example, here’s how Joe’s birthday is displayed in my 14410‘nndiary+diary:birthdays’ summary buffer (note that the message is 14411expirable, but will never be deleted, as it specifies a periodic event): 14412 14413 E Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week) 14414 14415 In order to get something like the above, you would normally add the 14416following line to your diary groups’parameters: 14417 14418 (gnus-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n") 14419 14420 However, ‘gnus-diary’ does it automatically (*note Diary Group 14421Parameters::). You can however customize the provided summary line 14422format with the following user options: 14423 14424 -- Variable: gnus-diary-summary-line-format 14425 Defines the summary line format used for diary groups (*note 14426 Summary Buffer Lines::). ‘gnus-diary’ uses it to automatically 14427 update the diary groups’parameters. 14428 14429 -- Variable: gnus-diary-time-format 14430 Defines the format to display dates in diary summary buffers. This 14431 is used by the ‘D’ user format. See the docstring for details. 14432 14433 -- Variable: gnus-diary-delay-format-function 14434 Defines the format function to use for displaying delays (remaining 14435 times) in diary summary buffers. This is used by the ‘d’ user 14436 format. There are currently built-in functions for English and 14437 French; you can also define your own. See the docstring for 14438 details. 14439 14440 14441File: gnus.info, Node: Diary Articles Sorting, Next: Diary Headers Generation, Prev: Diary Summary Line Format, Up: The Gnus Diary Library 14442 144436.8.2.2 Diary Articles Sorting 14444.............................. 14445 14446‘gnus-diary’ provides new sorting functions (*note Sorting the Summary 14447Buffer:: ) called ‘gnus-summary-sort-by-schedule’, 14448‘gnus-thread-sort-by-schedule’ and ‘gnus-article-sort-by-schedule’. 14449These functions let you organize your diary summary buffers from the 14450closest event to the farthest one. 14451 14452 ‘gnus-diary’ automatically installs ‘gnus-summary-sort-by-schedule’ 14453as a menu item in the summary buffer’s “sort” menu, and the two others 14454as the primary (hence default) sorting functions in the group parameters 14455(*note Diary Group Parameters::). 14456 14457 14458File: gnus.info, Node: Diary Headers Generation, Next: Diary Group Parameters, Prev: Diary Articles Sorting, Up: The Gnus Diary Library 14459 144606.8.2.3 Diary Headers Generation 14461................................ 14462 14463‘gnus-diary’ provides a function called ‘gnus-diary-check-message’ to 14464help you handle the ‘X-Diary-*’ headers. This function ensures that the 14465current message contains all the required diary headers, and prompts you 14466for values or corrections if needed. 14467 14468 This function is hooked into the ‘nndiary’ back end, so that moving 14469or copying an article to a diary group will trigger it automatically. 14470It is also bound to ‘C-c C-f d’ in ‘message-mode’ and 14471‘article-edit-mode’ in order to ease the process of converting a usual 14472mail to a diary one. 14473 14474 This function takes a prefix argument which will force prompting of 14475all diary headers, regardless of their presence or validity. That way, 14476you can very easily reschedule an already valid diary message, for 14477instance. 14478 14479 14480File: gnus.info, Node: Diary Group Parameters, Prev: Diary Headers Generation, Up: The Gnus Diary Library 14481 144826.8.2.4 Diary Group Parameters 14483.............................. 14484 14485When you create a new diary group, or visit one, ‘gnus-diary’ 14486automatically checks your group parameters and if needed, sets the 14487summary line format to the diary-specific value, installs the 14488diary-specific sorting functions, and also adds the different 14489‘X-Diary-*’ headers to the group’s posting-style. It is then easier to 14490send a diary message, because if you use ‘C-u a’ or ‘C-u m’ on a diary 14491group to prepare a message, these headers will be inserted automatically 14492(although not filled with proper values yet). 14493 14494 ‘nndiary’ is a _real_ mail back end. You really send real diary 14495messages for real. This means for instance that you can give 14496appointments to anybody (provided they use Gnus and ‘nndiary’) by 14497sending the diary message to them as well. 14498 14499 14500File: gnus.info, Node: Gnus Unplugged, Prev: Email Based Diary, Up: Select Methods 14501 145026.9 Gnus Unplugged 14503================== 14504 14505In olden times (ca. February ’88), people used to run their newsreaders 14506on big machines with permanent connections to the net. News transport 14507was dealt with by news servers, and all the newsreaders had to do was to 14508read news. Believe it or not. 14509 14510 Nowadays most people read news and mail at home, and use some sort of 14511modem to connect to the net. To avoid running up huge phone bills, it 14512would be nice to have a way to slurp down all the news and mail, hang up 14513the phone, read for several hours, and then upload any responses you 14514have to make. And then you repeat the procedure. 14515 14516 Of course, you can use news servers for doing this as well. I’ve 14517used ‘inn’ together with ‘slurp’, ‘pop’ and ‘sendmail’ for some years, 14518but doing that’s a bore. Moving the news server functionality up to the 14519newsreader makes sense if you’re the only person reading news on a 14520machine. 14521 14522 Setting up Gnus as an “offline” newsreader is quite simple. In fact, 14523you don’t have to configure anything as the agent is now enabled by 14524default (*note gnus-agent: Agent Variables.). 14525 14526 Of course, to use it as such, you have to learn a few new commands. 14527 14528* Menu: 14529 14530* Agent Basics:: How it all is supposed to work. 14531* Agent Categories:: How to tell the Gnus Agent what to download. 14532* Agent Commands:: New commands for all the buffers. 14533* Agent Visuals:: Ways that the agent may effect your summary buffer. 14534* Agent as Cache:: The Agent is a big cache too. 14535* Agent Expiry:: How to make old articles go away. 14536* Agent Regeneration:: How to recover from lost connections and other accidents. 14537* Agent and flags:: How the Agent maintains flags. 14538* Agent and IMAP:: How to use the Agent with IMAP. 14539* Outgoing Messages:: What happens when you post/mail something? 14540* Agent Variables:: Customizing is fun. 14541* Example Setup:: An example ‘~/.gnus.el’ file for offline people. 14542* Batching Agents:: How to fetch news from a ‘cron’ job. 14543* Agent Caveats:: What you think it’ll do and what it does. 14544 14545 14546File: gnus.info, Node: Agent Basics, Next: Agent Categories, Up: Gnus Unplugged 14547 145486.9.1 Agent Basics 14549------------------ 14550 14551First, let’s get some terminology out of the way. 14552 14553 The Gnus Agent is said to be “unplugged” when you have severed the 14554connection to the net (and notified the Agent that this is the case). 14555When the connection to the net is up again (and Gnus knows this), the 14556Agent is “plugged”. 14557 14558 The “local” machine is the one you’re running on, and which isn’t 14559connected to the net continuously. 14560 14561 “Downloading” means fetching things from the net to your local 14562machine. “Uploading” is doing the opposite. 14563 14564 You know that Gnus gives you all the opportunity you’d ever want for 14565shooting yourself in the foot. Some people call it flexibility. Gnus 14566is also customizable to a great extent, which means that the user has a 14567say on how Gnus behaves. Other newsreaders might unconditionally shoot 14568you in your foot, but with Gnus, you have a choice! 14569 14570 Gnus is never really in plugged or unplugged state. Rather, it 14571applies that state to each server individually. This means that some 14572servers can be plugged while others can be unplugged. Additionally, 14573some servers can be ignored by the Agent altogether (which means that 14574they’re kinda like plugged always). 14575 14576 So when you unplug the Agent and then wonder why is Gnus opening a 14577connection to the Net, the next step to do is to look whether all 14578servers are agentized. If there is an unagentized server, you found the 14579culprit. 14580 14581 Another thing is the “offline” state. Sometimes, servers aren’t 14582reachable. When Gnus notices this, it asks you whether you want the 14583server to be switched to offline state. If you say yes, then the server 14584will behave somewhat as if it was unplugged, except that Gnus will ask 14585you whether you want to switch it back online again. 14586 14587 Let’s take a typical Gnus session using the Agent. 14588 14589 • You start Gnus with ‘gnus-unplugged’. This brings up the Gnus 14590 Agent in a disconnected state. You can read all the news that you 14591 have already fetched while in this mode. 14592 14593 • You then decide to see whether any new news has arrived. You 14594 connect your machine to the net (using PPP or whatever), and then 14595 hit ‘J j’ to make Gnus become “plugged” and use ‘g’ to check for 14596 new mail as usual. To check for new mail in unplugged mode (*note 14597 Mail Source Specifiers::). 14598 14599 • You can then read the new news immediately, or you can download the 14600 news onto your local machine. If you want to do the latter, you 14601 press ‘g’ to check if there are any new news and then ‘J s’ to 14602 fetch all the eligible articles in all the groups. (To let Gnus 14603 know which articles you want to download, *note Agent 14604 Categories::). 14605 14606 • After fetching the articles, you press ‘J j’ to make Gnus become 14607 unplugged again, and you shut down the PPP thing (or whatever). 14608 And then you read the news offline. 14609 14610 • And then you go to step 2. 14611 14612 Here are some things you should do the first time (or so) that you 14613use the Agent. 14614 14615 • Decide which servers should be covered by the Agent. If you have a 14616 mail back end, it would probably be nonsensical to have it covered 14617 by the Agent. Go to the server buffer (‘^’ in the group buffer) 14618 and press ‘J a’ on the server (or servers) that you wish to have 14619 covered by the Agent (*note Server Agent Commands::), or ‘J r’ on 14620 automatically added servers you do not wish to have covered by the 14621 Agent. By default, no servers are agentized. 14622 14623 • Decide on download policy. It’s fairly simple once you decide 14624 whether you are going to use agent categories, topic parameters, 14625 and/or group parameters to implement your policy. If you’re new to 14626 gnus, it is probably best to start with a category, *Note Agent 14627 Categories::. 14628 14629 Both topic parameters (*note Topic Parameters::) and agent 14630 categories (*note Agent Categories::) provide for setting a policy 14631 that applies to multiple groups. Which you use is entirely up to 14632 you. Topic parameters do override categories so, if you mix the 14633 two, you’ll have to take that into account. If you have a few 14634 groups that deviate from your policy, you can use group parameters 14635 (*note Group Parameters::) to configure them. 14636 14637 • Uhm... that’s it. 14638 14639 14640File: gnus.info, Node: Agent Categories, Next: Agent Commands, Prev: Agent Basics, Up: Gnus Unplugged 14641 146426.9.2 Agent Categories 14643---------------------- 14644 14645One of the main reasons to integrate the news transport layer into the 14646newsreader is to allow greater control over what articles to download. 14647There’s not much point in downloading huge amounts of articles, just to 14648find out that you’re not interested in reading any of them. It’s better 14649to be somewhat more conservative in choosing what to download, and then 14650mark the articles for downloading manually if it should turn out that 14651you’re interested in the articles anyway. 14652 14653 One of the more effective methods for controlling what is to be 14654downloaded is to create a “category” and then assign some (or all) 14655groups to this category. Groups that do not belong in any other 14656category belong to the ‘default’ category. Gnus has its own buffer for 14657creating and managing categories. 14658 14659 If you prefer, you can also use group parameters (*note Group 14660Parameters::) and topic parameters (*note Topic Parameters::) for an 14661alternative approach to controlling the agent. The only real difference 14662is that categories are specific to the agent (so there is less to learn) 14663while group and topic parameters include the kitchen sink. 14664 14665 Since you can set agent parameters in several different places we 14666have a rule to decide which source to believe. This rule specifies that 14667the parameter sources are checked in the following order: group 14668parameters, topic parameters, agent category, and finally customizable 14669variables. So you can mix all of these sources to produce a wide range 14670of behavior, just don’t blame me if you don’t remember where you put 14671your settings. 14672 14673* Menu: 14674 14675* Category Syntax:: What a category looks like. 14676* Category Buffer:: A buffer for maintaining categories. 14677* Category Variables:: Customize’r’Us. 14678 14679 14680File: gnus.info, Node: Category Syntax, Next: Category Buffer, Up: Agent Categories 14681 146826.9.2.1 Category Syntax 14683....................... 14684 14685A category consists of a name, the list of groups belonging to the 14686category, and a number of optional parameters that override the 14687customizable variables. The complete list of agent parameters are 14688listed below. 14689 14690‘agent-groups’ 14691 The list of groups that are in this category. 14692 14693‘agent-predicate’ 14694 A predicate which (generally) gives a rough outline of which 14695 articles are eligible for downloading; and 14696 14697‘agent-score’ 14698 a score rule which (generally) gives you a finer granularity when 14699 deciding what articles to download. (Note that this “download 14700 score” is not necessarily related to normal scores.) 14701 14702‘agent-enable-expiration’ 14703 a boolean indicating whether the agent should expire old articles 14704 in this group. Most groups should be expired to conserve disk 14705 space. In fact, its probably safe to say that the gnus.* hierarchy 14706 contains the only groups that should not be expired. 14707 14708‘agent-days-until-old’ 14709 an integer indicating the number of days that the agent should wait 14710 before deciding that a read article is safe to expire. 14711 14712‘agent-low-score’ 14713 an integer that overrides the value of ‘gnus-agent-low-score’. 14714 14715‘agent-high-score’ 14716 an integer that overrides the value of ‘gnus-agent-high-score’. 14717 14718‘agent-short-article’ 14719 an integer that overrides the value of ‘gnus-agent-short-article’. 14720 14721‘agent-long-article’ 14722 an integer that overrides the value of ‘gnus-agent-long-article’. 14723 14724‘agent-enable-undownloaded-faces’ 14725 a symbol indicating whether the summary buffer should display 14726 undownloaded articles using the ‘gnus-summary-*-undownloaded-face’ 14727 faces. Any symbol other than ‘nil’ will enable the use of 14728 undownloaded faces. 14729 14730 The name of a category can not be changed once the category has been 14731created. 14732 14733 Each category maintains a list of groups that are exclusive members 14734of that category. The exclusivity rule is automatically enforced, add a 14735group to a new category and it is automatically removed from its old 14736category. 14737 14738 A predicate in its simplest form can be a single predicate such as 14739‘true’ or ‘false’. These two will download every available article or 14740nothing respectively. In the case of these two special predicates an 14741additional score rule is superfluous. 14742 14743 Predicates of ‘high’ or ‘low’ download articles in respect of their 14744scores in relationship to ‘gnus-agent-high-score’ and 14745‘gnus-agent-low-score’ as described below. 14746 14747 To gain even finer control of what is to be regarded eligible for 14748download a predicate can consist of a number of predicates with logical 14749operators sprinkled in between. 14750 14751 Perhaps some examples are in order. 14752 14753 Here’s a simple predicate. (It’s the default predicate, in fact, 14754used for all groups that don’t belong to any other category.) 14755 14756 short 14757 14758 Quite simple, eh? This predicate is true if and only if the article 14759is short (for some value of “short”). 14760 14761 Here’s a more complex predicate: 14762 14763 (or high 14764 (and 14765 (not low) 14766 (not long))) 14767 14768 This means that an article should be downloaded if it has a high 14769score, or if the score is not low and the article is not long. You get 14770the drift. 14771 14772 The available logical operators are ‘or’, ‘and’ and ‘not’. (If you 14773prefer, you can use the more “C”-ish operators ‘|’, ‘&’ and ‘!’ 14774instead.) 14775 14776 The following predicates are pre-defined, but if none of these fit 14777what you want to do, you can write your own. 14778 14779 When evaluating each of these predicates, the named constant will be 14780bound to the value determined by calling ‘gnus-agent-find-parameter’ on 14781the appropriate parameter. For example, gnus-agent-short-article will 14782be bound to ‘(gnus-agent-find-parameter group 'agent-short-article)’. 14783This means that you can specify a predicate in your category then tune 14784that predicate to individual groups. 14785 14786‘short’ 14787 True if the article is shorter than ‘gnus-agent-short-article’ 14788 lines; default 100. 14789 14790‘long’ 14791 True if the article is longer than ‘gnus-agent-long-article’ lines; 14792 default 200. 14793 14794‘low’ 14795 True if the article has a download score less than 14796 ‘gnus-agent-low-score’; default 0. 14797 14798‘high’ 14799 True if the article has a download score greater than 14800 ‘gnus-agent-high-score’; default 0. 14801 14802‘spam’ 14803 True if the Gnus Agent guesses that the article is spam. The 14804 heuristics may change over time, but at present it just computes a 14805 checksum and sees whether articles match. 14806 14807‘true’ 14808 Always true. 14809 14810‘false’ 14811 Always false. 14812 14813 If you want to create your own predicate function, here’s what you 14814have to know: The functions are called with no parameters, but the 14815‘gnus-headers’ and ‘gnus-score’ dynamic variables are bound to useful 14816values. 14817 14818 For example, you could decide that you don’t want to download 14819articles that were posted more than a certain number of days ago (e.g., 14820posted more than ‘gnus-agent-expire-days’ ago) you might write a 14821function something along the lines of the following: 14822 14823 (defun my-article-old-p () 14824 "Say whether an article is old." 14825 (< (time-to-days (date-to-time (mail-header-date gnus-headers))) 14826 (- (time-to-days nil) gnus-agent-expire-days))) 14827 14828 with the predicate then defined as: 14829 14830 (not my-article-old-p) 14831 14832 or you could append your predicate to the predefined 14833‘gnus-category-predicate-alist’ in your ‘~/.gnus.el’ or wherever. 14834 14835 (require 'gnus-agent) 14836 (setq gnus-category-predicate-alist 14837 (append gnus-category-predicate-alist 14838 '((old . my-article-old-p)))) 14839 14840 and simply specify your predicate as: 14841 14842 (not old) 14843 14844 If/when using something like the above, be aware that there are many 14845misconfigured systems/mailers out there and so an article’s date is not 14846always a reliable indication of when it was posted. Hell, some people 14847just don’t give a damn. 14848 14849 The above predicates apply to _all_ the groups which belong to the 14850category. However, if you wish to have a specific predicate for an 14851individual group within a category, or you’re just too lazy to set up a 14852new category, you can enter a group’s individual predicate in its group 14853parameters like so: 14854 14855 (agent-predicate . short) 14856 14857 This is the group/topic parameter equivalent of the agent category 14858default. Note that when specifying a single word predicate like this, 14859the ‘agent-predicate’ specification must be in dotted pair notation. 14860 14861 The equivalent of the longer example from above would be: 14862 14863 (agent-predicate or high (and (not low) (not long))) 14864 14865 The outer parenthesis required in the category specification are not 14866entered here as, not being in dotted pair notation, the value of the 14867predicate is assumed to be a list. 14868 14869 Now, the syntax of the download score is the same as the syntax of 14870normal score files, except that all elements that require actually 14871seeing the article itself are verboten. This means that only the 14872following headers can be scored on: ‘Subject’, ‘From’, ‘Date’, 14873‘Message-ID’, ‘References’, ‘Chars’, ‘Lines’, and ‘Xref’. 14874 14875 As with predicates, the specification of the ‘download score rule’ to 14876use in respect of a group can be in either the category definition if 14877it’s to be applicable to all groups in therein, or a group’s parameters 14878if it’s to be specific to that group. 14879 14880 In both of these places the ‘download score rule’ can take one of 14881three forms: 14882 14883 1. Score rule 14884 14885 This has the same syntax as a normal Gnus score file except only a 14886 subset of scoring keywords are available as mentioned above. 14887 14888 example: 14889 14890 • Category specification 14891 14892 (("from" 14893 ("Lars Ingebrigtsen" 1000000 nil s)) 14894 ("lines" 14895 (500 -100 nil <))) 14896 14897 • Group/Topic Parameter specification 14898 14899 (agent-score ("from" 14900 ("Lars Ingebrigtsen" 1000000 nil s)) 14901 ("lines" 14902 (500 -100 nil <))) 14903 14904 Again, note the omission of the outermost parenthesis here. 14905 14906 2. Agent score file 14907 14908 These score files must _only_ contain the permitted scoring 14909 keywords stated above. 14910 14911 example: 14912 14913 • Category specification 14914 14915 ("~/News/agent.SCORE") 14916 14917 or perhaps 14918 14919 ("~/News/agent.SCORE" "~/News/agent.group.SCORE") 14920 14921 • Group Parameter specification 14922 14923 (agent-score "~/News/agent.SCORE") 14924 14925 Additional score files can be specified as above. Need I say 14926 anything about parenthesis? 14927 14928 3. Use ‘normal’ score files 14929 14930 If you don’t want to maintain two sets of scoring rules for a 14931 group, and your desired ‘downloading’ criteria for a group are the 14932 same as your ‘reading’ criteria then you can tell the agent to 14933 refer to your ‘normal’ score files when deciding what to download. 14934 14935 These directives in either the category definition or a group’s 14936 parameters will cause the agent to read in all the applicable score 14937 files for a group, _filtering out_ those sections that do not 14938 relate to one of the permitted subset of scoring keywords. 14939 14940 • Category Specification 14941 14942 file 14943 14944 • Group Parameter specification 14945 14946 (agent-score . file) 14947 14948 14949File: gnus.info, Node: Category Buffer, Next: Category Variables, Prev: Category Syntax, Up: Agent Categories 14950 149516.9.2.2 Category Buffer 14952....................... 14953 14954You’d normally do all category maintenance from the category buffer. 14955When you enter it for the first time (with the ‘J c’ command from the 14956group buffer), you’ll only see the ‘default’ category. 14957 14958 The following commands are available in this buffer: 14959 14960‘q’ 14961 Return to the group buffer (‘gnus-category-exit’). 14962 14963‘e’ 14964 Use a customization buffer to set all of the selected category’s 14965 parameters at one time (‘gnus-category-customize-category’). 14966 14967‘k’ 14968 Kill the current category (‘gnus-category-kill’). 14969 14970‘c’ 14971 Copy the current category (‘gnus-category-copy’). 14972 14973‘a’ 14974 Add a new category (‘gnus-category-add’). 14975 14976‘p’ 14977 Edit the predicate of the current category 14978 (‘gnus-category-edit-predicate’). 14979 14980‘g’ 14981 Edit the list of groups belonging to the current category 14982 (‘gnus-category-edit-groups’). 14983 14984‘s’ 14985 Edit the download score rule of the current category 14986 (‘gnus-category-edit-score’). 14987 14988‘l’ 14989 List all the categories (‘gnus-category-list’). 14990 14991 14992File: gnus.info, Node: Category Variables, Prev: Category Buffer, Up: Agent Categories 14993 149946.9.2.3 Category Variables 14995.......................... 14996 14997‘gnus-category-mode-hook’ 14998 Hook run in category buffers. 14999 15000‘gnus-category-line-format’ 15001 Format of the lines in the category buffer (*note Formatting 15002 Variables::). Valid elements are: 15003 15004 ‘c’ 15005 The name of the category. 15006 15007 ‘g’ 15008 The number of groups in the category. 15009 15010‘gnus-category-mode-line-format’ 15011 Format of the category mode line (*note Mode Line Formatting::). 15012 15013‘gnus-agent-short-article’ 15014 Articles that have fewer lines than this are short. Default 100. 15015 15016‘gnus-agent-long-article’ 15017 Articles that have more lines than this are long. Default 200. 15018 15019‘gnus-agent-low-score’ 15020 Articles that have a score lower than this have a low score. 15021 Default 0. 15022 15023‘gnus-agent-high-score’ 15024 Articles that have a score higher than this have a high score. 15025 Default 0. 15026 15027‘gnus-agent-expire-days’ 15028 The number of days that a ‘read’ article must stay in the agent’s 15029 local disk before becoming eligible for expiration (While the name 15030 is the same, this doesn’t mean expiring the article on the server. 15031 It just means deleting the local copy of the article). What is 15032 also important to understand is that the counter starts with the 15033 time the article was written to the local disk and not the time the 15034 article was read. Default 7. 15035 15036‘gnus-agent-enable-expiration’ 15037 Determines whether articles in a group are, by default, expired or 15038 retained indefinitely. The default is ‘ENABLE’ which means that 15039 you’ll have to disable expiration when desired. On the other hand, 15040 you could set this to ‘DISABLE’. In that case, you would then have 15041 to enable expiration in selected groups. 15042 15043 15044File: gnus.info, Node: Agent Commands, Next: Agent Visuals, Prev: Agent Categories, Up: Gnus Unplugged 15045 150466.9.3 Agent Commands 15047-------------------- 15048 15049All the Gnus Agent commands are on the ‘J’ submap. The ‘J j’ 15050(‘gnus-agent-toggle-plugged’) command works in all modes, and toggles 15051the plugged/unplugged state of the Gnus Agent. 15052 15053* Menu: 15054 15055* Group Agent Commands:: Configure groups and fetch their contents. 15056* Summary Agent Commands:: Manually select then fetch specific articles. 15057* Server Agent Commands:: Select the servers that are supported by the agent. 15058 15059 15060File: gnus.info, Node: Group Agent Commands, Next: Summary Agent Commands, Up: Agent Commands 15061 150626.9.3.1 Group Agent Commands 15063............................ 15064 15065‘J u’ 15066 Fetch all eligible articles in the current group 15067 (‘gnus-agent-fetch-groups’). 15068 15069‘J c’ 15070 Enter the Agent category buffer (‘gnus-enter-category-buffer’). 15071 15072‘J s’ 15073 Fetch all eligible articles in all groups 15074 (‘gnus-agent-fetch-session’). 15075 15076‘J S’ 15077 Send all sendable messages in the queue group 15078 (‘gnus-group-send-queue’). *Note Drafts::. 15079 15080‘J a’ 15081 Add the current group to an Agent category 15082 (‘gnus-agent-add-group’). This command understands the 15083 process/prefix convention (*note Process/Prefix::). 15084 15085‘J r’ 15086 Remove the current group from its category, if any 15087 (‘gnus-agent-remove-group’). This command understands the 15088 process/prefix convention (*note Process/Prefix::). 15089 15090‘J Y’ 15091 Synchronize flags changed while unplugged with remote server, if 15092 any. 15093 15094 15095File: gnus.info, Node: Summary Agent Commands, Next: Server Agent Commands, Prev: Group Agent Commands, Up: Agent Commands 15096 150976.9.3.2 Summary Agent Commands 15098.............................. 15099 15100‘J #’ 15101 Mark the article for downloading (‘gnus-agent-mark-article’). 15102 15103‘J M-#’ 15104 Remove the downloading mark from the article 15105 (‘gnus-agent-unmark-article’). 15106 15107‘@’ 15108 Toggle whether to download the article (‘gnus-agent-toggle-mark’). 15109 The download mark is ‘%’ by default. 15110 15111‘J c’ 15112 Mark all articles as read (‘gnus-agent-catchup’) that are neither 15113 cached, downloaded, nor downloadable. 15114 15115‘J S’ 15116 Download all eligible (*note Agent Categories::) articles in this 15117 group. (‘gnus-agent-fetch-group’). 15118 15119‘J s’ 15120 Download all processable articles in this group. 15121 (‘gnus-agent-summary-fetch-series’). 15122 15123‘J u’ 15124 Download all downloadable articles in the current group 15125 (‘gnus-agent-summary-fetch-group’). 15126 15127 15128File: gnus.info, Node: Server Agent Commands, Prev: Summary Agent Commands, Up: Agent Commands 15129 151306.9.3.3 Server Agent Commands 15131............................. 15132 15133‘J a’ 15134 Add the current server to the list of servers covered by the Gnus 15135 Agent (‘gnus-agent-add-server’). 15136 15137‘J r’ 15138 Remove the current server from the list of servers covered by the 15139 Gnus Agent (‘gnus-agent-remove-server’). 15140 15141 15142File: gnus.info, Node: Agent Visuals, Next: Agent as Cache, Prev: Agent Commands, Up: Gnus Unplugged 15143 151446.9.4 Agent Visuals 15145------------------- 15146 15147If you open a summary while unplugged and, Gnus knows from the group’s 15148active range that there are more articles than the headers currently 15149stored in the Agent, you may see some articles whose subject looks 15150something like ‘[Undownloaded article #####]’. These are placeholders 15151for the missing headers. Aside from setting a mark, there is not much 15152that can be done with one of these placeholders. When Gnus finally gets 15153a chance to fetch the group’s headers, the placeholders will 15154automatically be replaced by the actual headers. You can configure the 15155summary buffer’s maneuvering to skip over the placeholders if you care 15156(See ‘gnus-auto-goto-ignores’). 15157 15158 While it may be obvious to all, the only headers and articles 15159available while unplugged are those headers and articles that were 15160fetched into the Agent while previously plugged. To put it another way, 15161“If you forget to fetch something while plugged, you might have a less 15162than satisfying unplugged session”. For this reason, the Agent adds two 15163visual effects to your summary buffer. These effects display the 15164download status of each article so that you always know which articles 15165will be available when unplugged. 15166 15167 The first visual effect is the ‘%O’ spec. If you customize 15168‘gnus-summary-line-format’ to include this specifier, you will add a 15169single character field that indicates an article’s download status. 15170Articles that have been fetched into either the Agent or the Cache, will 15171display ‘gnus-downloaded-mark’ (defaults to ‘+’). All other articles 15172will display ‘gnus-undownloaded-mark’ (defaults to ‘-’). If you open a 15173group that has not been agentized, a space (‘ ’) will be displayed. 15174 15175 The second visual effect are the undownloaded faces. The faces, 15176there are three indicating the article’s score (low, normal, high), seem 15177to result in a love/hate response from many Gnus users. The problem is 15178that the face selection is controlled by a list of condition tests and 15179face names (See ‘gnus-summary-highlight’). Each condition is tested in 15180the order in which it appears in the list so early conditions have 15181precedence over later conditions. All of this means that, if you tick 15182an undownloaded article, the article will continue to be displayed in 15183the undownloaded face rather than the ticked face. 15184 15185 If you use the Agent as a cache (to avoid downloading the same 15186article each time you visit it or to minimize your connection time), the 15187undownloaded face will probably seem like a good idea. The reason being 15188that you do all of our work (marking, reading, deleting) with downloaded 15189articles so the normal faces always appear. For those users using the 15190agent to improve online performance by caching the NOV database (most 15191users since 5.10.2), the undownloaded faces may appear to be an 15192absolutely horrible idea. The issue being that, since none of their 15193articles have been fetched into the Agent, all of the normal faces will 15194be obscured by the undownloaded faces. 15195 15196 If you would like to use the undownloaded faces, you must enable the 15197undownloaded faces by setting the ‘agent-enable-undownloaded-faces’ 15198group parameter to ‘t’. This parameter, like all other agent 15199parameters, may be set on an Agent Category (*note Agent Categories::), 15200a Group Topic (*note Topic Parameters::), or an individual group (*note 15201Group Parameters::). 15202 15203 The one problem common to all users using the agent is how quickly it 15204can consume disk space. If you using the agent on many groups, it is 15205even more difficult to effectively recover disk space. One solution is 15206the ‘%F’ format available in ‘gnus-group-line-format’. This format will 15207display the actual disk space used by articles fetched into both the 15208agent and cache. By knowing which groups use the most space, users know 15209where to focus their efforts when “agent expiring” articles. 15210 15211 15212File: gnus.info, Node: Agent as Cache, Next: Agent Expiry, Prev: Agent Visuals, Up: Gnus Unplugged 15213 152146.9.5 Agent as Cache 15215-------------------- 15216 15217When Gnus is plugged, it is not efficient to download headers or 15218articles from the server again, if they are already stored in the Agent. 15219So, Gnus normally only downloads headers once, and stores them in the 15220Agent. These headers are later used when generating the summary buffer, 15221regardless of whether you are plugged or unplugged. Articles are not 15222cached in the Agent by default though (that would potentially consume 15223lots of disk space), but if you have already downloaded an article into 15224the Agent, Gnus will not download the article from the server again but 15225use the locally stored copy instead. 15226 15227 If you so desire, you can configure the agent (see ‘gnus-agent-cache’ 15228*note Agent Variables::) to always download headers and articles while 15229plugged. Gnus will almost certainly be slower, but it will be kept 15230synchronized with the server. That last point probably won’t make any 15231sense if you are using a nntp or nnimap back end. 15232 15233 15234File: gnus.info, Node: Agent Expiry, Next: Agent Regeneration, Prev: Agent as Cache, Up: Gnus Unplugged 15235 152366.9.6 Agent Expiry 15237------------------ 15238 15239The Agent back end, ‘nnagent’, doesn’t handle expiry. Well, at least it 15240doesn’t handle it like other back ends. Instead, there are special 15241‘gnus-agent-expire’ and ‘gnus-agent-expire-group’ commands that will 15242expire all read articles that are older than ‘gnus-agent-expire-days’ 15243days. They can be run whenever you feel that you’re running out of 15244space. Neither are particularly fast or efficient, and it’s not a 15245particularly good idea to interrupt them (with ‘C-g’ or anything else) 15246once you’ve started one of them. 15247 15248 Note that other functions might run ‘gnus-agent-expire’ for you to 15249keep the agent synchronized with the group. 15250 15251 The agent parameter ‘agent-enable-expiration’ may be used to prevent 15252expiration in selected groups. 15253 15254 If ‘gnus-agent-expire-all’ is non-‘nil’, the agent expiration 15255commands will expire all articles—unread, read, ticked and dormant. If 15256‘nil’ (which is the default), only read articles are eligible for 15257expiry, and unread, ticked and dormant articles will be kept 15258indefinitely. 15259 15260 If you find that some articles eligible for expiry are never expired, 15261perhaps some Gnus Agent files are corrupted. There’s are special 15262commands, ‘gnus-agent-regenerate’ and ‘gnus-agent-regenerate-group’, to 15263fix possible problems. 15264 15265 15266File: gnus.info, Node: Agent Regeneration, Next: Agent and flags, Prev: Agent Expiry, Up: Gnus Unplugged 15267 152686.9.7 Agent Regeneration 15269------------------------ 15270 15271The local data structures used by ‘nnagent’ may become corrupted due to 15272certain exceptional conditions. When this happens, ‘nnagent’ 15273functionality may degrade or even fail. The solution to this problem is 15274to repair the local data structures by removing all internal 15275inconsistencies. 15276 15277 For example, if your connection to your server is lost while 15278downloaded articles into the agent, the local data structures will not 15279know about articles successfully downloaded prior to the connection 15280failure. Running ‘gnus-agent-regenerate’ or 15281‘gnus-agent-regenerate-group’ will update the data structures such that 15282you don’t need to download these articles a second time. 15283 15284 The command ‘gnus-agent-regenerate’ will perform 15285‘gnus-agent-regenerate-group’ on every agentized group. While you can 15286run ‘gnus-agent-regenerate’ in any buffer, it is strongly recommended 15287that you first close all summary buffers. 15288 15289 The command ‘gnus-agent-regenerate-group’ uses the local copies of 15290individual articles to repair the local NOV(header) database. It then 15291updates the internal data structures that document which articles are 15292stored locally. An optional argument will mark articles in the agent as 15293unread. 15294 15295 15296File: gnus.info, Node: Agent and flags, Next: Agent and IMAP, Prev: Agent Regeneration, Up: Gnus Unplugged 15297 152986.9.8 Agent and flags 15299--------------------- 15300 15301The Agent works with any Gnus back end including those, such as nnimap, 15302that store flags (read, ticked, etc.) on the server. Sadly, the Agent 15303does not actually know which backends keep their flags in the backend 15304server rather than in ‘.newsrc’. This means that the Agent, while 15305unplugged or disconnected, will always record all changes to the flags 15306in its own files. 15307 15308 When you plug back in, Gnus will then check to see if you have any 15309changed any flags and ask if you wish to synchronize these with the 15310server. This behavior is customizable by 15311‘gnus-agent-synchronize-flags’. 15312 15313 If ‘gnus-agent-synchronize-flags’ is ‘nil’, the Agent will never 15314automatically synchronize flags. If it is ‘ask’, which is the default, 15315the Agent will check if you made any changes and if so ask if you wish 15316to synchronize these when you re-connect. If it has any other value, 15317all flags will be synchronized automatically. 15318 15319 If you do not wish to synchronize flags automatically when you 15320re-connect, you can do it manually with the 15321‘gnus-agent-synchronize-flags’ command that is bound to ‘J Y’ in the 15322group buffer. 15323 15324 Technical note: the synchronization algorithm does not work by 15325“pushing” all local flags to the server, but rather by incrementally 15326updated the server view of flags by changing only those flags that were 15327changed by the user. Thus, if you set one flag on an article, quit the 15328group then re-select the group and remove the flag; the flag will be set 15329and removed from the server when you “synchronize”. The queued flag 15330operations can be found in the per-server ‘flags’ file in the Agent 15331directory. It’s emptied when you synchronize flags. 15332 15333 15334File: gnus.info, Node: Agent and IMAP, Next: Outgoing Messages, Prev: Agent and flags, Up: Gnus Unplugged 15335 153366.9.9 Agent and IMAP 15337-------------------- 15338 15339The Agent works with any Gnus back end, including nnimap. However, 15340since there are some conceptual differences between NNTP and IMAP, this 15341section (should) provide you with some information to make Gnus Agent 15342work smoother as a IMAP Disconnected Mode client. 15343 15344 Some things are currently not implemented in the Agent that you’d 15345might expect from a disconnected IMAP client, including: 15346 15347 • Copying/moving articles into nnimap groups when unplugged. 15348 15349 • Creating/deleting nnimap groups when unplugged. 15350 15351 15352File: gnus.info, Node: Outgoing Messages, Next: Agent Variables, Prev: Agent and IMAP, Up: Gnus Unplugged 15353 153546.9.10 Outgoing Messages 15355------------------------ 15356 15357By default, when Gnus is unplugged, all outgoing messages (both mail and 15358news) are stored in the draft group “queue” (*note Drafts::). You can 15359view them there after posting, and edit them at will. 15360 15361 You can control the circumstances under which outgoing mail is queued 15362(see ‘gnus-agent-queue-mail’, *note Agent Variables::). Outgoing news 15363is always queued when Gnus is unplugged, and never otherwise. 15364 15365 You can send the messages either from the draft group with the 15366special commands available there, or you can use the ‘J S’ command in 15367the group buffer to send all the sendable messages in the draft group. 15368Posting news will only work when Gnus is plugged, but you can send mail 15369at any time. 15370 15371 If sending mail while unplugged does not work for you and you worry 15372about hitting ‘J S’ by accident when unplugged, you can have Gnus ask 15373you to confirm your action (see ‘gnus-agent-prompt-send-queue’, *note 15374Agent Variables::). 15375 15376 15377File: gnus.info, Node: Agent Variables, Next: Example Setup, Prev: Outgoing Messages, Up: Gnus Unplugged 15378 153796.9.11 Agent Variables 15380---------------------- 15381 15382‘gnus-agent’ 15383 Is the agent enabled? The default is ‘t’. When first enabled, the 15384 agent will use ‘gnus-agent-auto-agentize-methods’ to automatically 15385 mark some back ends as agentized. You may change which back ends 15386 are agentized using the agent commands in the server buffer. 15387 15388 To enter the server buffer, use the ‘^’ 15389 (‘gnus-group-enter-server-mode’) command in the group buffer. 15390 15391‘gnus-agent-directory’ 15392 Where the Gnus Agent will store its files. The default is 15393 ‘~/News/agent/’. 15394 15395‘gnus-agent-handle-level’ 15396 Groups on levels (*note Group Levels::) higher than this variable 15397 will be ignored by the Agent. The default is 15398 ‘gnus-level-subscribed’, which means that only subscribed group 15399 will be considered by the Agent by default. 15400 15401‘gnus-agent-plugged-hook’ 15402 Hook run when connecting to the network. 15403 15404‘gnus-agent-unplugged-hook’ 15405 Hook run when disconnecting from the network. 15406 15407‘gnus-agent-fetched-hook’ 15408 Hook run when finished fetching articles. 15409 15410‘gnus-agent-cache’ 15411 Variable to control whether use the locally stored NOV and articles 15412 when plugged, e.g., essentially using the Agent as a cache. The 15413 default is non-‘nil’, which means to use the Agent as a cache. 15414 15415‘gnus-agent-go-online’ 15416 If ‘gnus-agent-go-online’ is ‘nil’, the Agent will never 15417 automatically switch offline servers into online status. If it is 15418 ‘ask’, the default, the Agent will ask if you wish to switch 15419 offline servers into online status when you re-connect. If it has 15420 any other value, all offline servers will be automatically switched 15421 into online status. 15422 15423‘gnus-agent-mark-unread-after-downloaded’ 15424 If ‘gnus-agent-mark-unread-after-downloaded’ is non-‘nil’, mark 15425 articles as unread after downloading. This is usually a safe thing 15426 to do as the newly downloaded article has obviously not been read. 15427 The default is ‘t’. 15428 15429‘gnus-agent-synchronize-flags’ 15430 If ‘gnus-agent-synchronize-flags’ is ‘nil’, the Agent will never 15431 automatically synchronize flags. If it is ‘ask’, which is the 15432 default, the Agent will check if you made any changes and if so ask 15433 if you wish to synchronize these when you re-connect. If it has 15434 any other value, all flags will be synchronized automatically. 15435 15436‘gnus-agent-consider-all-articles’ 15437 If ‘gnus-agent-consider-all-articles’ is non-‘nil’, the agent will 15438 let the agent predicate decide whether articles need to be 15439 downloaded or not, for all articles. When ‘nil’, the default, the 15440 agent will only let the predicate decide whether unread articles 15441 are downloaded or not. If you enable this, you may also want to 15442 look into the agent expiry settings (*note Category Variables::), 15443 so that the agent doesn’t download articles which the agent will 15444 later expire, over and over again. 15445 15446‘gnus-agent-max-fetch-size’ 15447 The agent fetches articles into a temporary buffer prior to parsing 15448 them into individual files. To avoid exceeding the max. buffer 15449 size, the agent alternates between fetching and parsing until all 15450 articles have been fetched. ‘gnus-agent-max-fetch-size’ provides a 15451 size limit to control how often the cycling occurs. A large value 15452 improves performance. A small value minimizes the time lost should 15453 the connection be lost while fetching (You may need to run 15454 ‘gnus-agent-regenerate-group’ to update the group’s state. 15455 However, all articles parsed prior to losing the connection will be 15456 available while unplugged). The default is 10M so it is unusual to 15457 see any cycling. 15458 15459‘gnus-server-unopen-status’ 15460 Perhaps not an Agent variable, but closely related to the Agent, 15461 this variable says what will happen if Gnus cannot open a server. 15462 If the Agent is enabled, the default, ‘nil’, makes Gnus ask the 15463 user whether to deny the server or whether to unplug the agent. If 15464 the Agent is disabled, Gnus always simply deny the server. Other 15465 choices for this variable include ‘denied’ and ‘offline’ the latter 15466 is only valid if the Agent is used. 15467 15468‘gnus-auto-goto-ignores’ 15469 Another variable that isn’t an Agent variable, yet so closely 15470 related that most will look for it here, this variable tells the 15471 summary buffer how to maneuver around undownloaded (only headers 15472 stored in the agent) and unfetched (neither article nor headers 15473 stored) articles. 15474 15475 The valid values are ‘nil’ (maneuver to any article), 15476 ‘undownloaded’ (maneuvering while unplugged ignores articles that 15477 have not been fetched), ‘always-undownloaded’ (maneuvering always 15478 ignores articles that have not been fetched), ‘unfetched’ 15479 (maneuvering ignores articles whose headers have not been fetched). 15480 15481‘gnus-agent-queue-mail’ 15482 When ‘gnus-agent-queue-mail’ is ‘always’, Gnus will always queue 15483 mail rather than sending it straight away. When ‘t’, Gnus will 15484 queue mail when unplugged only. When ‘nil’, never queue mail. The 15485 default is ‘t’. 15486 15487‘gnus-agent-prompt-send-queue’ 15488 When ‘gnus-agent-prompt-send-queue’ is non-‘nil’ Gnus will prompt 15489 you to confirm that you really wish to proceed if you hit ‘J S’ 15490 while unplugged. The default is ‘nil’. 15491 15492‘gnus-agent-auto-agentize-methods’ 15493 If you have never used the Agent before (or more technically, if 15494 ‘~/News/agent/lib/servers’ does not exist), Gnus will automatically 15495 agentize a few servers for you. This variable control which back 15496 ends should be auto-agentized. It is typically only useful to 15497 agentize remote back ends. The auto-agentizing has the same effect 15498 as running ‘J a’ on the servers (*note Server Agent Commands::). 15499 If the file exist, you must manage the servers manually by adding 15500 or removing them, this variable is only applicable the first time 15501 you start Gnus. The default is ‘nil’. 15502 15503 15504File: gnus.info, Node: Example Setup, Next: Batching Agents, Prev: Agent Variables, Up: Gnus Unplugged 15505 155066.9.12 Example Setup 15507-------------------- 15508 15509If you don’t want to read this manual, and you have a fairly standard 15510setup, you may be able to use something like the following as your 15511‘~/.gnus.el’ file to get started. 15512 15513 ;; Define how Gnus is to fetch news. We do this over NNTP 15514 ;; from your ISP’s server. 15515 (setq gnus-select-method '(nntp "news.your-isp.com")) 15516 15517 ;; Define how Gnus is to read your mail. We read mail from 15518 ;; your ISP’s POP server. 15519 (setq mail-sources '((pop :server "pop.your-isp.com"))) 15520 15521 ;; Say how Gnus is to store the mail. We use nnml groups. 15522 (setq gnus-secondary-select-methods '((nnml ""))) 15523 15524 ;; Make Gnus into an offline newsreader. 15525 ;; (gnus-agentize) ; The obsolete setting. 15526 ;; (setq gnus-agent t) ; Now the default. 15527 15528 That should be it, basically. Put that in your ‘~/.gnus.el’ file, 15529edit to suit your needs, start up PPP (or whatever), and type ‘M-x 15530gnus’. 15531 15532 If this is the first time you’ve run Gnus, you will be subscribed 15533automatically to a few default newsgroups. You’ll probably want to 15534subscribe to more groups, and to do that, you have to query the NNTP 15535server for a complete list of groups with the ‘A A’ command. This 15536usually takes quite a while, but you only have to do it once. 15537 15538 After reading and parsing a while, you’ll be presented with a list of 15539groups. Subscribe to the ones you want to read with the ‘u’ command. 15540‘l’ to make all the killed groups disappear after you’ve subscribe to 15541all the groups you want to read. (‘A k’ will bring back all the killed 15542groups.) 15543 15544 You can now read the groups at once, or you can download the articles 15545with the ‘J s’ command. And then read the rest of this manual to find 15546out which of the other gazillion things you want to customize. 15547 15548 15549File: gnus.info, Node: Batching Agents, Next: Agent Caveats, Prev: Example Setup, Up: Gnus Unplugged 15550 155516.9.13 Batching Agents 15552---------------------- 15553 15554Having the Gnus Agent fetch articles (and post whatever messages you’ve 15555written) is quite easy once you’ve gotten things set up properly. The 15556following shell script will do everything that is necessary: 15557 15558 You can run a complete batch command from the command line with the 15559following incantation: 15560 15561 #!/bin/sh 15562 emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-agent-batch >/dev/null 2>&1 15563 15564 15565File: gnus.info, Node: Agent Caveats, Prev: Batching Agents, Up: Gnus Unplugged 15566 155676.9.14 Agent Caveats 15568-------------------- 15569 15570The Gnus Agent doesn’t seem to work like most other offline newsreaders. 15571Here are some common questions that some imaginary people may ask: 15572 15573“If I read an article while plugged, do they get entered into the Agent?” 15574 15575 *No*. If you want this behavior, add 15576 ‘gnus-agent-fetch-selected-article’ to ‘gnus-select-article-hook’. 15577 15578“If I read an article while plugged, and the article already exists in” 15579 the Agent, will it get downloaded once more? 15580 15581 *No*, unless ‘gnus-agent-cache’ is ‘nil’. 15582 15583 In short, when Gnus is unplugged, it only looks into the locally 15584stored articles; when it’s plugged, it talks to your ISP and may also 15585use the locally stored articles. 15586 15587 15588File: gnus.info, Node: Scoring, Next: Searching, Prev: Select Methods, Up: Top 15589 155907 Scoring 15591********* 15592 15593Other people use “kill files”, but we here at Gnus Towers like scoring 15594better than killing, so we’d rather switch than fight. They do 15595something completely different as well, so sit up straight and pay 15596attention! 15597 15598 All articles have a default score (‘gnus-summary-default-score’), 15599which is 0 by default. This score may be raised or lowered either 15600interactively or by score files. Articles that have a score lower than 15601‘gnus-summary-mark-below’ are marked as read. 15602 15603 Gnus will read any “score files” that apply to the current group 15604before generating the summary buffer. 15605 15606 There are several commands in the summary buffer that insert score 15607entries based on the current article. You can, for instance, ask Gnus 15608to lower or increase the score of all articles with a certain subject. 15609 15610 There are two sorts of scoring entries: Permanent and temporary. 15611Temporary score entries are self-expiring entries. Any entries that are 15612temporary and have not been used for, say, a week, will be removed 15613silently to help keep the sizes of the score files down. 15614 15615* Menu: 15616 15617* Summary Score Commands:: Adding score entries for the current group. 15618* Group Score Commands:: General score commands. 15619* Score Variables:: Customize your scoring. (My, what terminology). 15620* Score File Format:: What a score file may contain. 15621* Score File Editing:: You can edit score files by hand as well. 15622* Adaptive Scoring:: Big Sister Gnus knows what you read. 15623* Home Score File:: How to say where new score entries are to go. 15624* Followups To Yourself:: Having Gnus notice when people answer you. 15625* Scoring On Other Headers:: Scoring on non-standard headers. 15626* Scoring Tips:: How to score effectively. 15627* Reverse Scoring:: That problem child of old is not problem. 15628* Global Score Files:: Earth-spanning, ear-splitting score files. 15629* Kill Files:: They are still here, but they can be ignored. 15630* Converting Kill Files:: Translating kill files to score files. 15631* Advanced Scoring:: Using logical expressions to build score rules. 15632* Score Decays:: It can be useful to let scores wither away. 15633 15634 15635File: gnus.info, Node: Summary Score Commands, Next: Group Score Commands, Up: Scoring 15636 156377.1 Summary Score Commands 15638========================== 15639 15640The score commands that alter score entries do not actually modify real 15641score files. That would be too inefficient. Gnus maintains a cache of 15642previously loaded score files, one of which is considered the “current 15643score file alist”. The score commands simply insert entries into this 15644list, and upon group exit, this list is saved. 15645 15646 The current score file is by default the group’s local score file, 15647even if no such score file actually exists. To insert score commands 15648into some other score file (e.g., ‘all.SCORE’), you must first make this 15649score file the current one. 15650 15651 General score commands that don’t actually change the score file: 15652 15653‘V s’ 15654 Set the score of the current article (‘gnus-summary-set-score’). 15655 15656‘V S’ 15657 Display the score of the current article 15658 (‘gnus-summary-current-score’). 15659 15660‘V t’ 15661 Display all score rules that have been used on the current article 15662 (‘gnus-score-find-trace’). In the ‘*Score Trace*’ buffer, you may 15663 type ‘e’ to edit score file corresponding to the score rule on 15664 current line and ‘f’ to format (‘gnus-score-pretty-print’) the 15665 score file and edit it. 15666 15667‘V w’ 15668 List words used in scoring (‘gnus-score-find-favorite-words’). 15669 15670‘V R’ 15671 Run the current summary through the scoring process 15672 (‘gnus-summary-rescore’). This might be useful if you’re playing 15673 around with your score files behind Gnus’ back and want to see the 15674 effect you’re having. 15675 15676‘V c’ 15677 Make a different score file the current 15678 (‘gnus-score-change-score-file’). 15679 15680‘V e’ 15681 Edit the current score file (‘gnus-score-edit-current-scores’). 15682 You will be popped into a ‘gnus-score-mode’ buffer (*note Score 15683 File Editing::). 15684 15685‘V f’ 15686 Edit a score file and make this score file the current one 15687 (‘gnus-score-edit-file’). 15688 15689‘V F’ 15690 Flush the score cache (‘gnus-score-flush-cache’). This is useful 15691 after editing score files. 15692 15693‘V C’ 15694 Customize a score file in a visually pleasing manner 15695 (‘gnus-score-customize’). 15696 15697 The rest of these commands modify the local score file. 15698 15699‘V m’ 15700 Prompt for a score, and mark all articles with a score below this 15701 as read (‘gnus-score-set-mark-below’). 15702 15703‘V x’ 15704 Prompt for a score, and add a score rule to the current score file 15705 to expunge all articles below this score 15706 (‘gnus-score-set-expunge-below’). 15707 15708 The keystrokes for actually making score entries follow a very 15709regular pattern, so there’s no need to list all the commands. (Hundreds 15710of them.) 15711 15712 1. The first key is either ‘I’ (upper case i) for increasing the score 15713 or ‘L’ for lowering the score. 15714 2. The second key says what header you want to score on. The 15715 following keys are available: 15716 15717 ‘a’ 15718 Score on the author name. 15719 15720 ‘s’ 15721 Score on the subject line. 15722 15723 ‘x’ 15724 Score on the ‘Xref’ line—i.e., the cross-posting line. 15725 15726 ‘r’ 15727 Score on the ‘References’ line. 15728 15729 ‘d’ 15730 Score on the date. 15731 15732 ‘l’ 15733 Score on the number of lines. 15734 15735 ‘i’ 15736 Score on the ‘Message-ID’ header. 15737 15738 ‘e’ 15739 Score on an “extra” header, that is, one of those in 15740 gnus-extra-headers, if your NNTP server tracks additional 15741 header data in overviews. 15742 15743 ‘f’ 15744 Score on followups—this matches the author name, and adds 15745 scores to the followups to this author. (Using this key leads 15746 to the creation of ‘ADAPT’ files.) 15747 15748 ‘b’ 15749 Score on the body. 15750 15751 ‘h’ 15752 Score on the head. 15753 15754 ‘t’ 15755 Score on thread. (Using this key leads to the creation of 15756 ‘ADAPT’ files.) 15757 15758 3. The third key is the match type. Which match types are valid 15759 depends on what headers you are scoring on. 15760 15761 ‘strings’ 15762 15763 ‘e’ 15764 Exact matching. 15765 15766 ‘s’ 15767 Substring matching. 15768 15769 ‘f’ 15770 Fuzzy matching (*note Fuzzy Matching::). 15771 15772 ‘r’ 15773 Regexp matching 15774 15775 ‘date’ 15776 15777 ‘b’ 15778 Before date. 15779 15780 ‘a’ 15781 After date. 15782 15783 ‘n’ 15784 This date. 15785 15786 ‘number’ 15787 15788 ‘<’ 15789 Less than number. 15790 15791 ‘=’ 15792 Equal to number. 15793 15794 ‘>’ 15795 Greater than number. 15796 15797 4. The fourth and usually final key says whether this is a temporary 15798 (i.e., expiring) score entry, or a permanent (i.e., non-expiring) 15799 score entry, or whether it is to be done immediately, without 15800 adding to the score file. 15801 15802 ‘t’ 15803 Temporary score entry. 15804 15805 ‘p’ 15806 Permanent score entry. 15807 15808 ‘i’ 15809 Immediately scoring. 15810 15811 5. If you are scoring on ‘e’ (extra) headers, you will then be 15812 prompted for the header name on which you wish to score. This must 15813 be a header named in gnus-extra-headers, and ‘<TAB>’ completion is 15814 available. 15815 15816 So, let’s say you want to increase the score on the current author 15817with exact matching permanently: ‘I a e p’. If you want to lower the 15818score based on the subject line, using substring matching, and make a 15819temporary score entry: ‘L s s t’. Pretty easy. 15820 15821 To make things a bit more complicated, there are shortcuts. If you 15822use a capital letter on either the second or third keys, Gnus will use 15823defaults for the remaining one or two keystrokes. The defaults are 15824“substring” and “temporary”. So ‘I A’ is the same as ‘I a s t’, and ‘I 15825a R’ is the same as ‘I a r t’. 15826 15827 These functions take both the numerical prefix and the symbolic 15828prefix (*note Symbolic Prefixes::). A numerical prefix says how much to 15829lower (or increase) the score of the article. A symbolic prefix of ‘a’ 15830says to use the ‘all.SCORE’ file for the command instead of the current 15831score file. 15832 15833 The ‘gnus-score-mimic-keymap’ says whether these commands will 15834pretend they are keymaps or not. 15835 15836 15837File: gnus.info, Node: Group Score Commands, Next: Score Variables, Prev: Summary Score Commands, Up: Scoring 15838 158397.2 Group Score Commands 15840======================== 15841 15842There aren’t many of these as yet, I’m afraid. 15843 15844‘W e’ 15845 Edit the apply-to-all-groups all.SCORE file. You will be popped 15846 into a ‘gnus-score-mode’ buffer (*note Score File Editing::). 15847 15848‘W f’ 15849 Gnus maintains a cache of score alists to avoid having to reload 15850 them all the time. This command will flush the cache 15851 (‘gnus-score-flush-cache’). 15852 15853 You can do scoring from the command line by saying something like: 15854 15855 $ emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-batch-score 15856 15857 15858File: gnus.info, Node: Score Variables, Next: Score File Format, Prev: Group Score Commands, Up: Scoring 15859 158607.3 Score Variables 15861=================== 15862 15863‘gnus-use-scoring’ 15864 If ‘nil’, Gnus will not check for score files, and will not, in 15865 general, do any score-related work. This is ‘t’ by default. 15866 15867‘gnus-kill-killed’ 15868 If this variable is ‘nil’, Gnus will never apply score files to 15869 articles that have already been through the kill process. While 15870 this may save you lots of time, it also means that if you apply a 15871 kill file to a group, and then change the kill file and want to run 15872 it over you group again to kill more articles, it won’t work. You 15873 have to set this variable to ‘t’ to do that. (It is ‘t’ by 15874 default.) 15875 15876‘gnus-kill-files-directory’ 15877 All kill and score files will be stored in this directory, which is 15878 initialized from the ‘SAVEDIR’ environment variable by default. 15879 This is ‘~/News/’ by default. 15880 15881‘gnus-score-file-suffix’ 15882 Suffix to add to the group name to arrive at the score file name 15883 (‘SCORE’ by default.) 15884 15885‘gnus-score-uncacheable-files’ 15886 All score files are normally cached to avoid excessive re-loading 15887 of score files. However, this might make your Emacs grow big and 15888 bloated, so this regexp can be used to weed out score files 15889 unlikely to be needed again. It would be a bad idea to deny 15890 caching of ‘all.SCORE’, while it might be a good idea to not cache 15891 ‘comp.infosystems.www.authoring.misc.ADAPT’. In fact, this 15892 variable is ‘ADAPT$’ by default, so no adaptive score files will be 15893 cached. 15894 15895‘gnus-save-score’ 15896 If you have really complicated score files, and do lots of batch 15897 scoring, then you might set this variable to ‘t’. This will make 15898 Gnus save the scores into the ‘.newsrc.eld’ file. 15899 15900 If you do not set this to ‘t’, then manual scores (like those set 15901 with ‘V s’ (‘gnus-summary-set-score’)) will not be preserved across 15902 group visits. 15903 15904‘gnus-score-interactive-default-score’ 15905 Score used by all the interactive raise/lower commands to 15906 raise/lower score with. Default is 1000, which may seem excessive, 15907 but this is to ensure that the adaptive scoring scheme gets enough 15908 room to play with. We don’t want the small changes from the 15909 adaptive scoring to overwrite manually entered data. 15910 15911‘gnus-summary-default-score’ 15912 Default score of an article, which is 0 by default. 15913 15914‘gnus-summary-expunge-below’ 15915 Don’t display the summary lines of articles that have scores lower 15916 than this variable. This is ‘nil’ by default, which means that no 15917 articles will be hidden. This variable is local to the summary 15918 buffers, and has to be set from ‘gnus-summary-mode-hook’. 15919 15920‘gnus-score-over-mark’ 15921 Mark (in the third column) used for articles with a score over the 15922 default. Default is ‘+’. 15923 15924‘gnus-score-below-mark’ 15925 Mark (in the third column) used for articles with a score below the 15926 default. Default is ‘-’. 15927 15928‘gnus-score-find-score-files-function’ 15929 Function used to find score files for the current group. This 15930 function is called with the name of the group as the argument. 15931 15932 Predefined functions available are: 15933 15934 ‘gnus-score-find-single’ 15935 Only apply the group’s own score file. 15936 15937 ‘gnus-score-find-bnews’ 15938 Apply all score files that match, using bnews syntax. This is 15939 the default. If the current group is ‘gnu.emacs.gnus’, for 15940 instance, ‘all.emacs.all.SCORE’, ‘not.alt.all.SCORE’ and 15941 ‘gnu.all.SCORE’ would all apply. In short, the instances of 15942 ‘all’ in the score file names are translated into ‘.*’, and 15943 then a regexp match is done. 15944 15945 This means that if you have some score entries that you want 15946 to apply to all groups, then you put those entries in the 15947 ‘all.SCORE’ file. 15948 15949 The score files are applied in a semi-random order, although 15950 Gnus will try to apply the more general score files before the 15951 more specific score files. It does this by looking at the 15952 number of elements in the score file names—discarding the 15953 ‘all’ elements. 15954 15955 ‘gnus-score-find-hierarchical’ 15956 Apply all score files from all the parent groups. This means 15957 that you can’t have score files like ‘all.SCORE’, but you can 15958 have ‘SCORE’, ‘comp.SCORE’ and ‘comp.emacs.SCORE’ for each 15959 server. 15960 15961 This variable can also be a list of functions. In that case, all 15962 these functions will be called with the group name as argument, and 15963 all the returned lists of score files will be applied. These 15964 functions can also return lists of lists of score alists directly. 15965 In that case, the functions that return these non-file score alists 15966 should probably be placed before the “real” score file functions, 15967 to ensure that the last score file returned is the local score 15968 file. Phu. 15969 15970 For example, to do hierarchical scoring but use a 15971 non-server-specific overall score file, you could use the value 15972 (list (lambda (group) ("all.SCORE")) 15973 'gnus-score-find-hierarchical) 15974 15975‘gnus-score-expiry-days’ 15976 This variable says how many days should pass before an unused score 15977 file entry is expired. If this variable is ‘nil’, no score file 15978 entries are expired. It’s 7 by default. 15979 15980‘gnus-update-score-entry-dates’ 15981 If this variable is non-‘nil’, temporary score entries that have 15982 been triggered (matched) will have their dates updated. (This is 15983 how Gnus controls expiry—all non-matched-entries will become too 15984 old while matched entries will stay fresh and young.) However, if 15985 you set this variable to ‘nil’, even matched entries will grow old 15986 and will have to face that oh-so grim reaper. 15987 15988‘gnus-score-after-write-file-function’ 15989 Function called with the name of the score file just written. 15990 15991‘gnus-score-thread-simplify’ 15992 If this variable is non-‘nil’, article subjects will be simplified 15993 for subject scoring purposes in the same manner as with 15994 threading—according to the current value of 15995 ‘gnus-simplify-subject-functions’. If the scoring entry uses 15996 ‘substring’ or ‘exact’ matching, the match will also be simplified 15997 in this manner. 15998 15999 16000File: gnus.info, Node: Score File Format, Next: Score File Editing, Prev: Score Variables, Up: Scoring 16001 160027.4 Score File Format 16003===================== 16004 16005A score file is an ‘emacs-lisp’ file that normally contains just a 16006single form. Casual users are not expected to edit these files; 16007everything can be changed from the summary buffer. 16008 16009 Anyway, if you’d like to dig into it yourself, here’s an example: 16010 16011 (("from" 16012 ("Lars Ingebrigtsen" -10000) 16013 ("Per Abrahamsen") 16014 ("larsi\\|lmi" -50000 nil R)) 16015 ("subject" 16016 ("Ding is Badd" nil 728373)) 16017 ("xref" 16018 ("alt.politics" -1000 728372 s)) 16019 ("lines" 16020 (2 -100 nil <)) 16021 (mark 0) 16022 (expunge -1000) 16023 (mark-and-expunge -10) 16024 (read-only nil) 16025 (orphan -10) 16026 (adapt t) 16027 (files "/hom/larsi/News/gnu.SCORE") 16028 (exclude-files "all.SCORE") 16029 (local (gnus-newsgroup-auto-expire t) 16030 (gnus-summary-make-false-root empty)) 16031 (eval (ding))) 16032 16033 This example demonstrates most score file elements. *Note Advanced 16034Scoring::, for a different approach. 16035 16036 Even though this looks much like Lisp code, nothing here is actually 16037‘eval’ed. The Lisp reader is used to read this form, though, so it has 16038to be valid syntactically, if not semantically. 16039 16040 Six keys are supported by this alist: 16041 16042‘STRING’ 16043 If the key is a string, it is the name of the header to perform the 16044 match on. Scoring can only be performed on these eight headers: 16045 ‘From’, ‘Subject’, ‘References’, ‘Message-ID’, ‘Xref’, ‘Lines’, 16046 ‘Chars’ and ‘Date’. In addition to these headers, there are three 16047 strings to tell Gnus to fetch the entire article and do the match 16048 on larger parts of the article: ‘Body’ will perform the match on 16049 the body of the article, ‘Head’ will perform the match on the head 16050 of the article, and ‘All’ will perform the match on the entire 16051 article. Note that using any of these last three keys will slow 16052 down group entry _considerably_. The final “header” you can score 16053 on is ‘Followup’. These score entries will result in new score 16054 entries being added for all follow-ups to articles that matches 16055 these score entries. 16056 16057 Following this key is an arbitrary number of score entries, where 16058 each score entry has one to four elements. 16059 16060 1. The first element is the “match element”. On most headers 16061 this will be a string, but on the Lines and Chars headers, 16062 this must be an integer. 16063 16064 2. If the second element is present, it should be a number—the 16065 “score element”. This number should be an integer in the 16066 neginf to posinf interval. This number is added to the score 16067 of the article if the match is successful. If this element is 16068 not present, the ‘gnus-score-interactive-default-score’ number 16069 will be used instead. This is 1000 by default. 16070 16071 3. If the third element is present, it should be a number—the 16072 “date element”. This date says when the last time this score 16073 entry matched, which provides a mechanism for expiring the 16074 score entries. It this element is not present, the score 16075 entry is permanent. The date is represented by the number of 16076 days since December 31, 1 BCE. 16077 16078 4. If the fourth element is present, it should be a symbol—the 16079 “type element”. This element specifies what function should 16080 be used to see whether this score entry matches the article. 16081 What match types that can be used depends on what header you 16082 wish to perform the match on. 16083 16084 “From, Subject, References, Xref, Message-ID” 16085 For most header types, there are the ‘r’ and ‘R’ 16086 (regexp), as well as ‘s’ and ‘S’ (substring) types, and 16087 ‘e’ and ‘E’ (exact match), and ‘w’ (word match) types. 16088 If this element is not present, Gnus will assume that 16089 substring matching should be used. ‘R’, ‘S’, and ‘E’ 16090 differ from the others in that the matches will be done 16091 in a case-sensitive manner. All these one-letter types 16092 are really just abbreviations for the ‘regexp’, ‘string’, 16093 ‘exact’, and ‘word’ types, which you can use instead, if 16094 you feel like. 16095 16096 “Extra” 16097 Just as for the standard string overview headers, if you 16098 are using gnus-extra-headers, you can score on these 16099 headers’ values. In this case, there is a 5th element in 16100 the score entry, being the name of the header to be 16101 scored. The following entry is useful in your 16102 ‘all.SCORE’ file in case of spam attacks from a single 16103 origin host, if your NNTP server tracks 16104 ‘NNTP-Posting-Host’ in overviews: 16105 16106 ("111.222.333.444" -1000 nil s 16107 "NNTP-Posting-Host") 16108 16109 “Lines, Chars” 16110 These two headers use different match types: ‘<’, ‘>’, 16111 ‘=’, ‘>=’ and ‘<=’. 16112 16113 These predicates are true if 16114 16115 (PREDICATE HEADER MATCH) 16116 16117 evaluates to non-‘nil’. For instance, the advanced match 16118 ‘("lines" 4 <)’ (*note Advanced Scoring::) will result in 16119 the following form: 16120 16121 (< header-value 4) 16122 16123 Or to put it another way: When using ‘<’ on ‘Lines’ with 16124 4 as the match, we get the score added if the article has 16125 less than 4 lines. (It’s easy to get confused and think 16126 it’s the other way around. But it’s not. I think.) 16127 16128 When matching on ‘Lines’, be careful because some back 16129 ends (like ‘nndir’) do not generate ‘Lines’ header, so 16130 every article ends up being marked as having 0 lines. 16131 This can lead to strange results if you happen to lower 16132 score of the articles with few lines. 16133 16134 “Date” 16135 For the Date header we have three kinda silly match 16136 types: ‘before’, ‘at’ and ‘after’. I can’t really 16137 imagine this ever being useful, but, like, it would feel 16138 kinda silly not to provide this function. Just in case. 16139 You never know. Better safe than sorry. Once burnt, 16140 twice shy. Don’t judge a book by its cover. Never not 16141 have sex on a first date. (I have been told that at 16142 least one person, and I quote, “found this function 16143 indispensable”, however.) 16144 16145 A more useful match type is ‘regexp’. With it, you can 16146 match the date string using a regular expression. The 16147 date is normalized to ISO8601 compact format 16148 first—YYYYMMDD‘T’HHMMSS. If you want to match all 16149 articles that have been posted on April 1st in every 16150 year, you could use ‘....0401.........’ as a match 16151 string, for instance. (Note that the date is kept in its 16152 original time zone, so this will match articles that were 16153 posted when it was April 1st where the article was posted 16154 from. Time zones are such wholesome fun for the whole 16155 family, eh?) 16156 16157 “Head, Body, All” 16158 These three match keys use the same match types as the 16159 ‘From’ (etc.) header uses. 16160 16161 “Followup” 16162 This match key is somewhat special, in that it will match 16163 the ‘From’ header, and affect the score of not only the 16164 matching articles, but also all followups to the matching 16165 articles. This allows you to increase the score of 16166 followups to your own articles, or decrease the score of 16167 followups to the articles of some known trouble-maker. 16168 Uses the same match types as the ‘From’ header uses. 16169 (Using this match key will lead to creation of ‘ADAPT’ 16170 files.) 16171 16172 “Thread” 16173 This match key works along the same lines as the 16174 ‘Followup’ match key. If you say that you want to score 16175 on a (sub-)thread started by an article with a 16176 ‘Message-ID’ X, then you add a ‘thread’ match. This will 16177 add a new ‘thread’ match for each article that has X in 16178 its ‘References’ header. (These new ‘thread’ matches 16179 will use the ‘Message-ID’s of these matching articles.) 16180 This will ensure that you can raise/lower the score of an 16181 entire thread, even though some articles in the thread 16182 may not have complete ‘References’ headers. Note that 16183 using this may lead to nondeterministic scores of the 16184 articles in the thread. (Using this match key will lead 16185 to creation of ‘ADAPT’ files.) 16186 16187‘mark’ 16188 The value of this entry should be a number. Any articles with a 16189 score lower than this number will be marked as read. 16190 16191‘expunge’ 16192 The value of this entry should be a number. Any articles with a 16193 score lower than this number will be removed from the summary 16194 buffer. 16195 16196‘mark-and-expunge’ 16197 The value of this entry should be a number. Any articles with a 16198 score lower than this number will be marked as read and removed 16199 from the summary buffer. 16200 16201‘thread-mark-and-expunge’ 16202 The value of this entry should be a number. All articles that 16203 belong to a thread that has a total score below this number will be 16204 marked as read and removed from the summary buffer. 16205 ‘gnus-thread-score-function’ says how to compute the total score 16206 for a thread. 16207 16208‘files’ 16209 The value of this entry should be any number of file names. These 16210 files are assumed to be score files as well, and will be loaded the 16211 same way this one was. 16212 16213‘exclude-files’ 16214 The clue of this entry should be any number of files. These files 16215 will not be loaded, even though they would normally be so, for some 16216 reason or other. 16217 16218‘eval’ 16219 The value of this entry will be ‘eval’ed. This element will be 16220 ignored when handling global score files. 16221 16222‘read-only’ 16223 Read-only score files will not be updated or saved. Global score 16224 files should feature this atom (*note Global Score Files::). 16225 (Note: “Global” here really means “global”; not your personal 16226 apply-to-all-groups score files.) 16227 16228‘orphan’ 16229 The value of this entry should be a number. Articles that do not 16230 have parents will get this number added to their scores. Imagine 16231 you follow some high-volume newsgroup, like ‘comp.lang.c’. Most 16232 likely you will only follow a few of the threads, also want to see 16233 any new threads. 16234 16235 You can do this with the following two score file entries: 16236 16237 (orphan -500) 16238 (mark-and-expunge -100) 16239 16240 When you enter the group the first time, you will only see the new 16241 threads. You then raise the score of the threads that you find 16242 interesting (with ‘I T’ or ‘I S’), and ignore (‘c y’) the rest. 16243 Next time you enter the group, you will see new articles in the 16244 interesting threads, plus any new threads. 16245 16246 I.e., the orphan score atom is for high-volume groups where a few 16247 interesting threads which can’t be found automatically by ordinary 16248 scoring rules exist. 16249 16250‘adapt’ 16251 This entry controls the adaptive scoring. If it is ‘t’, the 16252 default adaptive scoring rules will be used. If it is ‘ignore’, no 16253 adaptive scoring will be performed on this group. If it is a list, 16254 this list will be used as the adaptive scoring rules. If it isn’t 16255 present, or is something other than ‘t’ or ‘ignore’, the default 16256 adaptive scoring rules will be used. If you want to use adaptive 16257 scoring on most groups, you’d set ‘gnus-use-adaptive-scoring’ to 16258 ‘t’, and insert an ‘(adapt ignore)’ in the groups where you do not 16259 want adaptive scoring. If you only want adaptive scoring in a few 16260 groups, you’d set ‘gnus-use-adaptive-scoring’ to ‘nil’, and insert 16261 ‘(adapt t)’ in the score files of the groups where you want it. 16262 16263‘adapt-file’ 16264 All adaptive score entries will go to the file named by this entry. 16265 It will also be applied when entering the group. This atom might 16266 be handy if you want to adapt on several groups at once, using the 16267 same adaptive file for a number of groups. 16268 16269‘local’ 16270 The value of this entry should be a list of ‘(VAR VALUE)’ pairs. 16271 Each VAR will be made buffer-local to the current summary buffer, 16272 and set to the value specified. This is a convenient, if somewhat 16273 strange, way of setting variables in some groups if you don’t like 16274 hooks much. Note that the VALUE won’t be evaluated. 16275 16276 16277File: gnus.info, Node: Score File Editing, Next: Adaptive Scoring, Prev: Score File Format, Up: Scoring 16278 162797.5 Score File Editing 16280====================== 16281 16282You normally enter all scoring commands from the summary buffer, but you 16283might feel the urge to edit them by hand as well, so we’ve supplied you 16284with a mode for that. 16285 16286 It’s simply a slightly customized ‘emacs-lisp’ mode, with these 16287additional commands: 16288 16289‘C-c C-c’ 16290 Save the changes you have made and return to the summary buffer 16291 (‘gnus-score-edit-exit’). 16292 16293‘C-c C-d’ 16294 Insert the current date in numerical format 16295 (‘gnus-score-edit-insert-date’). This is really the day number, if 16296 you were wondering. 16297 16298‘C-c C-p’ 16299 The adaptive score files are saved in an unformatted fashion. If 16300 you intend to read one of these files, you want to “pretty print” 16301 it first. This command (‘gnus-score-pretty-print’) does that for 16302 you. 16303 16304 Type ‘M-x gnus-score-mode’ to use this mode. 16305 16306 ‘gnus-score-menu-hook’ is run in score mode buffers. 16307 16308 In the summary buffer you can use commands like ‘V f’, ‘V e’ and ‘V 16309t’ to begin editing score files. 16310 16311 16312File: gnus.info, Node: Adaptive Scoring, Next: Home Score File, Prev: Score File Editing, Up: Scoring 16313 163147.6 Adaptive Scoring 16315==================== 16316 16317If all this scoring is getting you down, Gnus has a way of making it all 16318happen automatically—as if by magic. Or rather, as if by artificial 16319stupidity, to be precise. 16320 16321 When you read an article, or mark an article as read, or kill an 16322article, you leave marks behind. On exit from the group, Gnus can sniff 16323these marks and add score elements depending on what marks it finds. 16324You turn on this ability by setting ‘gnus-use-adaptive-scoring’ to ‘t’ 16325or ‘(line)’. If you want score adaptively on separate words appearing 16326in the subjects, you should set this variable to ‘(word)’. If you want 16327to use both adaptive methods, set this variable to ‘(word line)’. 16328 16329 To give you complete control over the scoring process, you can 16330customize the ‘gnus-default-adaptive-score-alist’ variable. For 16331instance, it might look something like this: 16332 16333 (setq gnus-default-adaptive-score-alist 16334 '((gnus-unread-mark) 16335 (gnus-ticked-mark (from 4)) 16336 (gnus-dormant-mark (from 5)) 16337 (gnus-del-mark (from -4) (subject -1)) 16338 (gnus-read-mark (from 4) (subject 2)) 16339 (gnus-expirable-mark (from -1) (subject -1)) 16340 (gnus-killed-mark (from -1) (subject -3)) 16341 (gnus-kill-file-mark) 16342 (gnus-ancient-mark) 16343 (gnus-low-score-mark) 16344 (gnus-catchup-mark (from -1) (subject -1)))) 16345 16346 As you see, each element in this alist has a mark as a key (either a 16347variable name or a “real” mark—a character). Following this key is a 16348arbitrary number of header/score pairs. If there are no header/score 16349pairs following the key, no adaptive scoring will be done on articles 16350that have that key as the article mark. For instance, articles with 16351‘gnus-unread-mark’ in the example above will not get adaptive score 16352entries. 16353 16354 Each article can have only one mark, so just a single of these rules 16355will be applied to each article. 16356 16357 To take ‘gnus-del-mark’ as an example—this alist says that all 16358articles that have that mark (i.e., are marked with ‘e’) will have a 16359score entry added to lower based on the ‘From’ header by −4, and lowered 16360by ‘Subject’ by −1. Change this to fit your prejudices. 16361 16362 If you have marked 10 articles with the same subject with 16363‘gnus-del-mark’, the rule for that mark will be applied ten times. That 16364means that that subject will get a score of ten times −1, which should 16365be, unless I’m much mistaken, −10. 16366 16367 If you have auto-expirable (mail) groups (*note Expiring Mail::), all 16368the read articles will be marked with the ‘E’ mark. This’ll probably 16369make adaptive scoring slightly impossible, so auto-expiring and adaptive 16370scoring doesn’t really mix very well. 16371 16372 The headers you can score on are ‘from’, ‘subject’, ‘message-id’, 16373‘references’, ‘xref’, ‘lines’, ‘chars’ and ‘date’. In addition, you can 16374score on ‘followup’, which will create an adaptive score entry that 16375matches on the ‘References’ header using the ‘Message-ID’ of the current 16376article, thereby matching the following thread. 16377 16378 If you use this scheme, you should set the score file atom ‘mark’ to 16379something small—like −300, perhaps, to avoid having small random changes 16380result in articles getting marked as read. 16381 16382 After using adaptive scoring for a week or so, Gnus should start to 16383become properly trained and enhance the authors you like best, and kill 16384the authors you like least, without you having to say so explicitly. 16385 16386 You can control what groups the adaptive scoring is to be performed 16387on by using the score files (*note Score File Format::). This will also 16388let you use different rules in different groups. 16389 16390 The adaptive score entries will be put into a file where the name is 16391the group name with ‘gnus-adaptive-file-suffix’ appended. The default 16392is ‘ADAPT’. 16393 16394 Adaptive score files can get huge and are not meant to be edited by 16395human hands. If ‘gnus-adaptive-pretty-print’ is ‘nil’ (the default) 16396those files will not be written in a human readable way. 16397 16398 When doing adaptive scoring, substring or fuzzy matching would 16399probably give you the best results in most cases. However, if the 16400header one matches is short, the possibility for false positives is 16401great, so if the length of the match is less than 16402‘gnus-score-exact-adapt-limit’, exact matching will be used. If this 16403variable is ‘nil’, exact matching will always be used to avoid this 16404problem. 16405 16406 As mentioned above, you can adapt either on individual words or 16407entire headers. If you adapt on words, the 16408‘gnus-default-adaptive-word-score-alist’ variable says what score each 16409instance of a word should add given a mark. 16410 16411 (setq gnus-default-adaptive-word-score-alist 16412 `((,gnus-read-mark . 30) 16413 (,gnus-catchup-mark . -10) 16414 (,gnus-killed-mark . -20) 16415 (,gnus-del-mark . -15))) 16416 16417 This is the default value. If you have adaption on words enabled, 16418every word that appears in subjects of articles marked with 16419‘gnus-read-mark’ will result in a score rule that increase the score 16420with 30 points. 16421 16422 Words that appear in the ‘gnus-default-ignored-adaptive-words’ list 16423will be ignored. If you wish to add more words to be ignored, use the 16424‘gnus-ignored-adaptive-words’ list instead. 16425 16426 Some may feel that short words shouldn’t count when doing adaptive 16427scoring. If so, you may set ‘gnus-adaptive-word-length-limit’ to an 16428integer. Words shorter than this number will be ignored. This variable 16429defaults to ‘nil’. 16430 16431 When the scoring is done, ‘gnus-adaptive-word-syntax-table’ is the 16432syntax table in effect. It is similar to the standard syntax table, but 16433it considers numbers to be non-word-constituent characters. 16434 16435 If ‘gnus-adaptive-word-minimum’ is set to a number, the adaptive word 16436scoring process will never bring down the score of an article to below 16437this number. The default is ‘nil’. 16438 16439 If ‘gnus-adaptive-word-no-group-words’ is set to ‘t’, gnus won’t 16440adaptively word score any of the words in the group name. Useful for 16441groups like ‘comp.editors.emacs’, where most of the subject lines 16442contain the word ‘emacs’. 16443 16444 After using this scheme for a while, it might be nice to write a 16445‘gnus-psychoanalyze-user’ command to go through the rules and see what 16446words you like and what words you don’t like. Or perhaps not. 16447 16448 Note that the adaptive word scoring thing is highly experimental and 16449is likely to change in the future. Initial impressions seem to indicate 16450that it’s totally useless as it stands. Some more work (involving more 16451rigorous statistical methods) will have to be done to make this useful. 16452 16453 16454File: gnus.info, Node: Home Score File, Next: Followups To Yourself, Prev: Adaptive Scoring, Up: Scoring 16455 164567.7 Home Score File 16457=================== 16458 16459The score file where new score file entries will go is called the “home 16460score file”. This is normally (and by default) the score file for the 16461group itself. For instance, the home score file for ‘gnu.emacs.gnus’ is 16462‘gnu.emacs.gnus.SCORE’. 16463 16464 However, this may not be what you want. It is often convenient to 16465share a common home score file among many groups—all ‘emacs’ groups 16466could perhaps use the same home score file. 16467 16468 The variable that controls this is ‘gnus-home-score-file’. It can 16469be: 16470 16471 1. A string. Then this file will be used as the home score file for 16472 all groups. 16473 16474 2. A function. The result of this function will be used as the home 16475 score file. The function will be called with the name of the group 16476 as the parameter. 16477 16478 3. A list. The elements in this list can be: 16479 16480 1. ‘(REGEXP FILE-NAME)’. If the REGEXP matches the group name, 16481 the FILE-NAME will be used as the home score file. 16482 16483 2. A function. If the function returns non-‘nil’, the result 16484 will be used as the home score file. The function will be 16485 called with the name of the group as the parameter. 16486 16487 3. A string. Use the string as the home score file. 16488 16489 The list will be traversed from the beginning towards the end 16490 looking for matches. 16491 16492 So, if you want to use just a single score file, you could say: 16493 16494 (setq gnus-home-score-file 16495 "my-total-score-file.SCORE") 16496 16497 If you want to use ‘gnu.SCORE’ for all ‘gnu’ groups and ‘rec.SCORE’ 16498for all ‘rec’ groups (and so on), you can say: 16499 16500 (setq gnus-home-score-file 16501 'gnus-hierarchial-home-score-file) 16502 16503 This is a ready-made function provided for your convenience. Other 16504functions include 16505 16506‘gnus-current-home-score-file’ 16507 Return the “current” regular score file. This will make scoring 16508 commands add entry to the “innermost” matching score file. 16509 16510 If you want to have one score file for the ‘emacs’ groups and another 16511for the ‘comp’ groups, while letting all other groups use their own home 16512score files: 16513 16514 (setq gnus-home-score-file 16515 ;; All groups that match the regexp ‘"\\.emacs"’ 16516 '(("\\.emacs" "emacs.SCORE") 16517 ;; All the comp groups in one score file 16518 ("^comp" "comp.SCORE"))) 16519 16520 ‘gnus-home-adapt-file’ works exactly the same way as 16521‘gnus-home-score-file’, but says what the home adaptive score file is 16522instead. All new adaptive file entries will go into the file specified 16523by this variable, and the same syntax is allowed. 16524 16525 In addition to using ‘gnus-home-score-file’ and 16526‘gnus-home-adapt-file’, you can also use group parameters (*note Group 16527Parameters::) and topic parameters (*note Topic Parameters::) to achieve 16528much the same. Group and topic parameters take precedence over this 16529variable. 16530 16531 16532File: gnus.info, Node: Followups To Yourself, Next: Scoring On Other Headers, Prev: Home Score File, Up: Scoring 16533 165347.8 Followups To Yourself 16535========================= 16536 16537Gnus offers two commands for picking out the ‘Message-ID’ header in the 16538current buffer. Gnus will then add a score rule that scores using this 16539‘Message-ID’ on the ‘References’ header of other articles. This will, 16540in effect, increase the score of all articles that respond to the 16541article in the current buffer. Quite useful if you want to easily note 16542when people answer what you’ve said. 16543 16544‘gnus-score-followup-article’ 16545 This will add a score to articles that directly follow up your own 16546 article. 16547 16548‘gnus-score-followup-thread’ 16549 This will add a score to all articles that appear in a thread 16550 “below” your own article. 16551 16552 These two functions are both primarily meant to be used in hooks like 16553‘message-sent-hook’, like this: 16554 (add-hook 'message-sent-hook 'gnus-score-followup-thread) 16555 16556 If you look closely at your own ‘Message-ID’, you’ll notice that the 16557first two or three characters are always the same. Here’s two of mine: 16558 16559 <x6u3u47icf.fsf@eyesore.no> 16560 <x6sp9o7ibw.fsf@eyesore.no> 16561 16562 So “my” ident on this machine is ‘x6’. This can be exploited—the 16563following rule will raise the score on all followups to myself: 16564 16565 ("references" 16566 ("<x6[0-9a-z]+\\.fsf\\(_-_\\)?@.*eyesore\\.no>" 16567 1000 nil r)) 16568 16569 Whether it’s the first two or first three characters that are “yours” 16570is system-dependent. 16571 16572 16573File: gnus.info, Node: Scoring On Other Headers, Next: Scoring Tips, Prev: Followups To Yourself, Up: Scoring 16574 165757.9 Scoring On Other Headers 16576============================ 16577 16578Gnus is quite fast when scoring the “traditional” headers—‘From’, 16579‘Subject’ and so on. However, scoring other headers requires writing a 16580‘head’ scoring rule, which means that Gnus has to request every single 16581article from the back end to find matches. This takes a long time in 16582big groups. 16583 16584 You can inhibit this slow scoring on headers or body by setting the 16585variable ‘gnus-inhibit-slow-scoring’. If ‘gnus-inhibit-slow-scoring’ is 16586regexp, slow scoring is inhibited if the group matches the regexp. If 16587it is ‘t’, slow scoring on it is inhibited for all groups. 16588 16589 Now, there’s not much you can do about the slowness for news groups, 16590but for mail groups, you have greater control. In *note To From 16591Newsgroups::, it’s explained in greater detail what this mechanism does, 16592but here’s a cookbook example for ‘nnml’ on how to allow scoring on the 16593‘To’ and ‘Cc’ headers. 16594 16595 Put the following in your ‘~/.gnus.el’ file. 16596 16597 (setq gnus-extra-headers '(To Cc Newsgroups Keywords) 16598 nnmail-extra-headers gnus-extra-headers) 16599 16600 Restart Gnus and rebuild your ‘nnml’ overview files with the ‘M-x 16601nnml-generate-nov-databases’ command. This will take a long time if you 16602have much mail. 16603 16604 Now you can score on ‘To’ and ‘Cc’ as “extra headers” like so: ‘I e s 16605p To <RET> <your name> <RET>’. 16606 16607 See? Simple. 16608 16609 16610File: gnus.info, Node: Scoring Tips, Next: Reverse Scoring, Prev: Scoring On Other Headers, Up: Scoring 16611 166127.10 Scoring Tips 16613================= 16614 16615“Crossposts” 16616 If you want to lower the score of crossposts, the line to match on 16617 is the ‘Xref’ header. 16618 ("xref" (" talk.politics.misc:" -1000)) 16619 16620“Multiple crossposts” 16621 If you want to lower the score of articles that have been 16622 crossposted to more than, say, 3 groups: 16623 ("xref" 16624 ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+" 16625 -1000 nil r)) 16626 16627“Matching on the body” 16628 This is generally not a very good idea—it takes a very long time. 16629 Gnus actually has to fetch each individual article from the server. 16630 But you might want to anyway, I guess. Even though there are three 16631 match keys (‘Head’, ‘Body’ and ‘All’), you should choose one and 16632 stick with it in each score file. If you use any two, each article 16633 will be fetched _twice_. If you want to match a bit on the ‘Head’ 16634 and a bit on the ‘Body’, just use ‘All’ for all the matches. 16635 16636“Marking as read” 16637 You will probably want to mark articles that have scores below a 16638 certain number as read. This is most easily achieved by putting 16639 the following in your ‘all.SCORE’ file: 16640 ((mark -100)) 16641 You may also consider doing something similar with ‘expunge’. 16642 16643“Negated character classes” 16644 If you say stuff like ‘[^abcd]*’, you may get unexpected results. 16645 That will match newlines, which might lead to, well, The Unknown. 16646 Say ‘[^abcd\n]*’ instead. 16647 16648 16649File: gnus.info, Node: Reverse Scoring, Next: Global Score Files, Prev: Scoring Tips, Up: Scoring 16650 166517.11 Reverse Scoring 16652==================== 16653 16654If you want to keep just articles that have ‘Sex with Emacs’ in the 16655subject header, and expunge all other articles, you could put something 16656like this in your score file: 16657 16658 (("subject" 16659 ("Sex with Emacs" 2)) 16660 (mark 1) 16661 (expunge 1)) 16662 16663 So, you raise all articles that match ‘Sex with Emacs’ and mark the 16664rest as read, and expunge them to boot. 16665 16666 16667File: gnus.info, Node: Global Score Files, Next: Kill Files, Prev: Reverse Scoring, Up: Scoring 16668 166697.12 Global Score Files 16670======================= 16671 16672Sure, other newsreaders have “global kill files”. These are usually 16673nothing more than a single kill file that applies to all groups, stored 16674in the user’s home directory. Bah! Puny, weak newsreaders! 16675 16676 What I’m talking about here are Global Score Files. Score files from 16677all over the world, from users everywhere, uniting all nations in one 16678big, happy score file union! Ange-score! New and untested! 16679 16680 All you have to do to use other people’s score files is to set the 16681‘gnus-global-score-files’ variable. One entry for each score file, or 16682each score file directory. Gnus will decide by itself what score files 16683are applicable to which group. 16684 16685 To use the score file 16686‘/ftp@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE’ and all score 16687files in the ‘/ftp@ftp.some-where:/pub/score’ directory, say this: 16688 16689 (setq gnus-global-score-files 16690 '("/ftp@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE" 16691 "/ftp@ftp.some-where:/pub/score/")) 16692 16693Simple, eh? Directory names must end with a ‘/’. These directories are 16694typically scanned only once during each Gnus session. If you feel the 16695need to manually re-scan the remote directories, you can use the 16696‘gnus-score-search-global-directories’ command. 16697 16698 Note that, at present, using this option will slow down group entry 16699somewhat. (That is—a lot.) 16700 16701 If you want to start maintaining score files for other people to use, 16702just put your score file up for anonymous ftp and announce it to the 16703world. Become a retro-moderator! Participate in the retro-moderator 16704wars sure to ensue, where retro-moderators battle it out for the 16705sympathy of the people, luring them to use their score files on false 16706premises! Yay! The net is saved! 16707 16708 Here are some tips for the would-be retro-moderator, off the top of 16709my head: 16710 16711 • Articles heavily crossposted are probably junk. 16712 • To lower a single inappropriate article, lower by ‘Message-ID’. 16713 • Particularly brilliant authors can be raised on a permanent basis. 16714 • Authors that repeatedly post off-charter for the group can safely 16715 be lowered out of existence. 16716 • Set the ‘mark’ and ‘expunge’ atoms to obliterate the nastiest 16717 articles completely. 16718 16719 • Use expiring score entries to keep the size of the file down. You 16720 should probably have a long expiry period, though, as some sites 16721 keep old articles for a long time. 16722 16723 ... I wonder whether other newsreaders will support global score 16724files in the future. _Snicker_. Yup, any day now, newsreaders like 16725Blue Wave, xrn and 1stReader are bound to implement scoring. Should we 16726start holding our breath yet? 16727 16728 16729File: gnus.info, Node: Kill Files, Next: Converting Kill Files, Prev: Global Score Files, Up: Scoring 16730 167317.13 Kill Files 16732=============== 16733 16734Gnus still supports those pesky old kill files. In fact, the kill file 16735entries can now be expiring, which is something I wrote before Daniel 16736Quinlan thought of doing score files, so I’ve left the code in there. 16737 16738 In short, kill processing is a lot slower (and I do mean _a lot_) 16739than score processing, so it might be a good idea to rewrite your kill 16740files into score files. 16741 16742 Anyway, a kill file is a normal ‘emacs-lisp’ file. You can put any 16743forms into this file, which means that you can use kill files as some 16744sort of primitive hook function to be run on group entry, even though 16745that isn’t a very good idea. 16746 16747 Normal kill files look like this: 16748 16749 (gnus-kill "From" "Lars Ingebrigtsen") 16750 (gnus-kill "Subject" "ding") 16751 (gnus-expunge "X") 16752 16753 This will mark every article written by me as read, and remove the 16754marked articles from the summary buffer. Very useful, you’ll agree. 16755 16756 Other programs use a totally different kill file syntax. If Gnus 16757encounters what looks like a ‘rn’ kill file, it will take a stab at 16758interpreting it. 16759 16760 Two summary functions for editing a GNUS kill file: 16761 16762‘M-k’ 16763 Edit this group’s kill file (‘gnus-summary-edit-local-kill’). 16764 16765‘M-K’ 16766 Edit the general kill file (‘gnus-summary-edit-global-kill’). 16767 16768 Two group mode functions for editing the kill files: 16769 16770‘M-k’ 16771 Edit this group’s kill file (‘gnus-group-edit-local-kill’). 16772 16773‘M-K’ 16774 Edit the general kill file (‘gnus-group-edit-global-kill’). 16775 16776 Kill file variables: 16777 16778‘gnus-kill-file-name’ 16779 A kill file for the group ‘soc.motss’ is normally called 16780 ‘soc.motss.KILL’. The suffix appended to the group name to get 16781 this file name is detailed by the ‘gnus-kill-file-name’ variable. 16782 The “global” kill file (not in the score file sense of “global”, of 16783 course) is just called ‘KILL’. 16784 16785‘gnus-kill-save-kill-file’ 16786 If this variable is non-‘nil’, Gnus will save the kill file after 16787 processing, which is necessary if you use expiring kills. 16788 16789‘gnus-apply-kill-hook’ 16790 A hook called to apply kill files to a group. It is 16791 ‘(gnus-apply-kill-file)’ by default. If you want to ignore the 16792 kill file if you have a score file for the same group, you can set 16793 this hook to ‘(gnus-apply-kill-file-unless-scored)’. If you don’t 16794 want kill files to be processed, you should set this variable to 16795 ‘nil’. 16796 16797‘gnus-kill-file-mode-hook’ 16798 A hook called in kill-file mode buffers. 16799 16800 16801File: gnus.info, Node: Converting Kill Files, Next: Advanced Scoring, Prev: Kill Files, Up: Scoring 16802 168037.14 Converting Kill Files 16804========================== 16805 16806If you have loads of old kill files, you may want to convert them into 16807score files. If they are “regular”, you can use the 16808‘gnus-kill-to-score.el’ package; if not, you’ll have to do it by hand. 16809 16810 The kill to score conversion package isn’t included in Emacs by 16811default. You can fetch it from the contrib directory of the Gnus 16812distribution or from 16813<http://heim.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el>. 16814 16815 If your old kill files are very complex—if they contain more 16816non-‘gnus-kill’ forms than not, you’ll have to convert them by hand. Or 16817just let them be as they are. Gnus will still use them as before. 16818 16819 16820File: gnus.info, Node: Advanced Scoring, Next: Score Decays, Prev: Converting Kill Files, Up: Scoring 16821 168227.15 Advanced Scoring 16823===================== 16824 16825Scoring on Subjects and From headers is nice enough, but what if you’re 16826really interested in what a person has to say only when she’s talking 16827about a particular subject? Or what if you really don’t want to read 16828what person A has to say when she’s following up to person B, but want 16829to read what she says when she’s following up to person C? 16830 16831 By using advanced scoring rules you may create arbitrarily complex 16832scoring patterns. 16833 16834* Menu: 16835 16836* Advanced Scoring Syntax:: A definition. 16837* Advanced Scoring Examples:: What they look like. 16838* Advanced Scoring Tips:: Getting the most out of it. 16839 16840 16841File: gnus.info, Node: Advanced Scoring Syntax, Next: Advanced Scoring Examples, Up: Advanced Scoring 16842 168437.15.1 Advanced Scoring Syntax 16844------------------------------ 16845 16846Ordinary scoring rules have a string as the first element in the rule. 16847Advanced scoring rules have a list as the first element. The second 16848element is the score to be applied if the first element evaluated to a 16849non-‘nil’ value. 16850 16851 These lists may consist of three logical operators, one redirection 16852operator, and various match operators. 16853 16854 Logical operators: 16855 16856‘&’ 16857‘and’ 16858 This logical operator will evaluate each of its arguments until it 16859 finds one that evaluates to ‘false’, and then it’ll stop. If all 16860 arguments evaluate to ‘true’ values, then this operator will return 16861 ‘true’. 16862 16863‘|’ 16864‘or’ 16865 This logical operator will evaluate each of its arguments until it 16866 finds one that evaluates to ‘true’. If no arguments are ‘true’, 16867 then this operator will return ‘false’. 16868 16869‘!’ 16870‘not’ 16871‘¬’ 16872 This logical operator only takes a single argument. It returns the 16873 logical negation of the value of its argument. 16874 16875 There is an “indirection operator” that will make its arguments apply 16876to the ancestors of the current article being scored. For instance, 16877‘1-’ will make score rules apply to the parent of the current article. 16878‘2-’ will make score rules apply to the grandparent of the current 16879article. Alternatively, you can write ‘^^’, where the number of ‘^’s 16880(carets) says how far back into the ancestry you want to go. 16881 16882 Finally, we have the match operators. These are the ones that do the 16883real work. Match operators are header name strings followed by a match 16884and a match type. A typical match operator looks like ‘("from" "Lars 16885Ingebrigtsen" s)’. The header names are the same as when using simple 16886scoring, and the match types are also the same. 16887 16888 16889File: gnus.info, Node: Advanced Scoring Examples, Next: Advanced Scoring Tips, Prev: Advanced Scoring Syntax, Up: Advanced Scoring 16890 168917.15.2 Advanced Scoring Examples 16892-------------------------------- 16893 16894Please note that the following examples are score file rules. To make a 16895complete score file from them, surround them with another pair of 16896parentheses. 16897 16898 Let’s say you want to increase the score of articles written by Lars 16899when he’s talking about Gnus: 16900 16901 ((& 16902 ("from" "Lars Ingebrigtsen") 16903 ("subject" "Gnus")) 16904 1000) 16905 16906 Quite simple, huh? 16907 16908 When he writes long articles, he sometimes has something nice to say: 16909 16910 ((& 16911 ("from" "Lars Ingebrigtsen") 16912 (| 16913 ("subject" "Gnus") 16914 ("lines" 100 >))) 16915 1000) 16916 16917 However, when he responds to things written by Reig Eigil Logge, you 16918really don’t want to read what he’s written: 16919 16920 ((& 16921 ("from" "Lars Ingebrigtsen") 16922 (1- ("from" "Reig Eigil Logge"))) 16923 -100000) 16924 16925 Everybody that follows up Redmondo when he writes about disappearing 16926socks should have their scores raised, but only when they talk about 16927white socks. However, when Lars talks about socks, it’s usually not 16928very interesting: 16929 16930 ((& 16931 (1- 16932 (& 16933 ("from" "redmondo@.*no" r) 16934 ("body" "disappearing.*socks" t))) 16935 (! ("from" "Lars Ingebrigtsen")) 16936 ("body" "white.*socks")) 16937 1000) 16938 16939 Suppose you’re reading a high volume group and you’re only interested 16940in replies. The plan is to score down all articles that don’t have 16941subject that begin with "Re:", "Fw:" or "Fwd:" and then score up all 16942parents of articles that have subjects that begin with reply marks. 16943 16944 ((! ("subject" "re:\\|fwd?:" r)) 16945 -200) 16946 ((1- ("subject" "re:\\|fwd?:" r)) 16947 200) 16948 16949 The possibilities are endless. 16950 16951 16952File: gnus.info, Node: Advanced Scoring Tips, Prev: Advanced Scoring Examples, Up: Advanced Scoring 16953 169547.15.3 Advanced Scoring Tips 16955---------------------------- 16956 16957The ‘&’ and ‘|’ logical operators do short-circuit logic. That is, they 16958stop processing their arguments when it’s clear what the result of the 16959operation will be. For instance, if one of the arguments of an ‘&’ 16960evaluates to ‘false’, there’s no point in evaluating the rest of the 16961arguments. This means that you should put slow matches (‘body’, 16962‘header’) last and quick matches (‘from’, ‘subject’) first. 16963 16964 The indirection arguments (‘1-’ and so on) will make their arguments 16965work on previous generations of the thread. If you say something like: 16966 16967 ... 16968 (1- 16969 (1- 16970 ("from" "lars"))) 16971 ... 16972 16973 Then that means “score on the from header of the grandparent of the 16974current article”. An indirection is quite fast, but it’s better to say: 16975 16976 (1- 16977 (& 16978 ("from" "Lars") 16979 ("subject" "Gnus"))) 16980 16981 than it is to say: 16982 16983 (& 16984 (1- ("from" "Lars")) 16985 (1- ("subject" "Gnus"))) 16986 16987 16988File: gnus.info, Node: Score Decays, Prev: Advanced Scoring, Up: Scoring 16989 169907.16 Score Decays 16991================= 16992 16993You may find that your scores have a tendency to grow without bounds, 16994especially if you’re using adaptive scoring. If scores get too big, 16995they lose all meaning—they simply max out and it’s difficult to use them 16996in any sensible way. 16997 16998 Gnus provides a mechanism for decaying scores to help with this 16999problem. When score files are loaded and ‘gnus-decay-scores’ is 17000non-‘nil’, Gnus will run the score files through the decaying mechanism 17001thereby lowering the scores of all non-permanent score rules. If 17002‘gnus-decay-scores’ is a regexp, only score files matching this regexp 17003are treated. E.g., you may set it to ‘\\.ADAPT\\'’ if only _adaptive_ 17004score files should be decayed. The decay itself if performed by the 17005‘gnus-decay-score-function’ function, which is ‘gnus-decay-score’ by 17006default. Here’s the definition of that function: 17007 17008 (defun gnus-decay-score (score) 17009 "Decay SCORE according to `gnus-score-decay-constant' 17010 and `gnus-score-decay-scale'." 17011 (let ((n (- score 17012 (* (if (< score 0) -1 1) 17013 (min (abs score) 17014 (max gnus-score-decay-constant 17015 (* (abs score) 17016 gnus-score-decay-scale))))))) 17017 (floor n))) 17018 17019 ‘gnus-score-decay-constant’ is 3 by default and 17020‘gnus-score-decay-scale’ is 0.05. This should cause the following: 17021 17022 1. Scores between −3 and 3 will be set to 0 when this function is 17023 called. 17024 17025 2. Scores with magnitudes between 3 and 60 will be shrunk by 3. 17026 17027 3. Scores with magnitudes greater than 60 will be shrunk by 5% of the 17028 score. 17029 17030 If you don’t like this decay function, write your own. It is called 17031with the score to be decayed as its only parameter, and it should return 17032the new score, which should be an integer. 17033 17034 Gnus will try to decay scores once a day. If you haven’t run Gnus 17035for four days, Gnus will decay the scores four times, for instance. 17036 17037 17038File: gnus.info, Node: Searching, Next: Various, Prev: Scoring, Up: Top 17039 170408 Searching 17041*********** 17042 17043FIXME: Add a brief overview of Gnus search capabilities. A brief 17044comparison of nnir, nnmairix, contrib/gnus-namazu would be nice as well. 17045 17046 This chapter describes tools for searching groups and servers for 17047articles matching a query and then retrieving those articles. Gnus 17048provides a simpler mechanism for searching through articles in a summary 17049buffer to find those matching a pattern. *Note Searching for 17050Articles::. 17051 17052* Menu: 17053 17054* nnir:: Searching with various engines. 17055* nnmairix:: Searching with Mairix. 17056 17057 17058File: gnus.info, Node: nnir, Next: nnmairix, Up: Searching 17059 170608.1 nnir 17061======== 17062 17063This section describes how to use ‘nnir’ to search for articles within 17064gnus. 17065 17066* Menu: 17067 17068* What is nnir?:: What does ‘nnir’ do? 17069* Basic Usage:: How to perform simple searches. 17070* Setting up nnir:: How to set up ‘nnir’. 17071 17072 17073File: gnus.info, Node: What is nnir?, Next: Basic Usage, Up: nnir 17074 170758.1.1 What is nnir? 17076------------------- 17077 17078‘nnir’ is a Gnus interface to a number of tools for searching through 17079mail and news repositories. Different backends (like ‘nnimap’ and 17080‘nntp’) work with different tools (called “engines” in ‘nnir’ lingo), 17081but all use the same basic search interface. 17082 17083 The ‘nnimap’ search engine should work with no configuration. Other 17084engines require a local index that needs to be created and maintained 17085outside of Gnus. 17086 17087 17088File: gnus.info, Node: Basic Usage, Next: Setting up nnir, Prev: What is nnir?, Up: nnir 17089 170908.1.2 Basic Usage 17091----------------- 17092 17093In the group buffer typing ‘G G’ will search the group on the current 17094line by calling ‘gnus-group-make-nnir-group’. This prompts for a query 17095string, creates an ephemeral ‘nnir’ group containing the articles that 17096match this query, and takes you to a summary buffer showing these 17097articles. Articles may then be read, moved and deleted using the usual 17098commands. 17099 17100 The ‘nnir’ group made in this way is an ‘ephemeral’ group, and some 17101changes are not permanent: aside from reading, moving, and deleting, you 17102can’t act on the original article. But there is an alternative: you can 17103_warp_ (i.e., jump) to the original group for the article on the current 17104line with ‘A W’, aka ‘gnus-warp-to-article’. Even better, the function 17105‘gnus-summary-refer-thread’, bound by default in summary buffers to ‘A 17106T’, will first warp to the original group before it works its magic and 17107includes all the articles in the thread. From here you can read, move 17108and delete articles, but also copy them, alter article marks, whatever. 17109Go nuts. 17110 17111 You say you want to search more than just the group on the current 17112line? No problem: just process-mark the groups you want to search. You 17113want even more? Calling for an nnir search with the cursor on a topic 17114heading will search all the groups under that heading. 17115 17116 Still not enough? OK, in the server buffer 17117‘gnus-group-make-nnir-group’ (now bound to ‘G’) will search all groups 17118from the server on the current line. Too much? Want to ignore certain 17119groups when searching, like spam groups? Just customize 17120‘nnir-ignored-newsgroups’. 17121 17122 One more thing: individual search engines may have special search 17123features. You can access these special features by giving a prefix-arg 17124to ‘gnus-group-make-nnir-group’. If you are searching multiple groups 17125with different search engines you will be prompted for the special 17126search features for each engine separately. 17127 17128 17129File: gnus.info, Node: Setting up nnir, Prev: Basic Usage, Up: nnir 17130 171318.1.3 Setting up nnir 17132--------------------- 17133 17134To set up nnir you may need to do some prep work. Firstly, you may need 17135to configure the search engines you plan to use. Some of them, like 17136‘imap’, need no special configuration. Others, like ‘namazu’ and 17137‘swish’, require configuration as described below. Secondly, you need 17138to associate a search engine with a server or a backend. 17139 17140 If you just want to use the ‘imap’ engine to search ‘nnimap’ servers 17141then you don’t have to do anything. But you might want to read the 17142details of the query language anyway. 17143 17144* Menu: 17145 17146* Associating Engines:: How to associate engines. 17147* The imap Engine:: Imap configuration and usage. 17148* The swish++ Engine:: Swish++ configuration and usage. 17149* The swish-e Engine:: Swish-e configuration and usage. 17150* The namazu Engine:: Namazu configuration and usage. 17151* The notmuch Engine:: Notmuch configuration and usage. 17152* The hyrex Engine:: Hyrex configuration and usage. 17153* Customizations:: User customizable settings. 17154 17155 17156File: gnus.info, Node: Associating Engines, Next: The imap Engine, Up: Setting up nnir 17157 171588.1.3.1 Associating Engines 17159........................... 17160 17161When searching a group, ‘nnir’ needs to know which search engine to use. 17162You can configure a given server to use a particular engine by setting 17163the server variable ‘nnir-search-engine’ to the engine name. For 17164example to use the ‘namazu’ engine to search the server named ‘home’ you 17165can use 17166 17167 (setq gnus-secondary-select-methods 17168 '((nnml "home" 17169 (nnimap-address "localhost") 17170 (nnir-search-engine namazu)))) 17171 17172 Alternatively you might want to use a particular engine for all 17173servers with a given backend. For example, you might want to use the 17174‘imap’ engine for all servers using the ‘nnimap’ backend. In this case 17175you can customize the variable ‘nnir-method-default-engines’. This is 17176an alist of pairs of the form ‘(backend . engine)’. By default this 17177variable is set to use the ‘imap’ engine for all servers using the 17178‘nnimap’ backend. But if you wanted to use ‘namazu’ for all your 17179servers with an ‘nnimap’ backend you could change this to 17180 17181 '((nnimap . namazu) 17182 (nntp . gmane)) 17183 17184 17185File: gnus.info, Node: The imap Engine, Next: The swish++ Engine, Prev: Associating Engines, Up: Setting up nnir 17186 171878.1.3.2 The imap Engine 17188....................... 17189 17190The ‘imap’ engine requires no configuration. 17191 17192 Queries using the ‘imap’ engine follow a simple query language. The 17193search is always case-insensitive and supports the following features 17194(inspired by the Google search input language): 17195 17196‘Boolean query operators’ 17197 AND, OR, and NOT are supported, and parentheses can be used to 17198 control operator precedence, e.g., (emacs OR xemacs) AND linux. 17199 Note that operators must be written with all capital letters to be 17200 recognized. Also preceding a term with a − sign is equivalent to 17201 NOT term. 17202 17203‘Automatic AND queries’ 17204 If you specify multiple words then they will be treated as an AND 17205 expression intended to match all components. 17206 17207‘Phrase searches’ 17208 If you wrap your query in double-quotes then it will be treated as 17209 a literal string. 17210 17211 By default the whole message will be searched. The query can be 17212limited to a specific part of a message by using a prefix-arg. After 17213inputting the query this will prompt (with completion) for a message 17214part. Choices include “Whole message”, “Subject”, “From”, and “To”. 17215Any unrecognized input is interpreted as a header name. For example, 17216typing ‘Message-ID’ in response to this prompt will limit the query to 17217the Message-ID header. 17218 17219 Finally selecting “Imap” will interpret the query as a raw IMAP 17220search query. The format of such queries can be found in RFC3501. 17221 17222 If you don’t like the default of searching whole messages you can 17223customize ‘nnir-imap-default-search-key’. For example to use IMAP 17224queries by default 17225 17226 (setq nnir-imap-default-search-key "Imap") 17227 17228 17229File: gnus.info, Node: The swish++ Engine, Next: The swish-e Engine, Prev: The imap Engine, Up: Setting up nnir 17230 172318.1.3.3 The swish++ Engine 17232.......................... 17233 17234FIXME: Say something more here. 17235 17236 Documentation for swish++ may be found at the swish++ sourceforge 17237page: <http://swishplusplus.sourceforge.net> 17238 17239‘nnir-swish++-program’ 17240 The name of the swish++ executable. Defaults to ‘search’ 17241 17242‘nnir-swish++-additional-switches’ 17243 A list of strings to be given as additional arguments to swish++. 17244 ‘nil’ by default. 17245 17246‘nnir-swish++-remove-prefix’ 17247 The prefix to remove from each file name returned by swish++ in 17248 order to get a group name. By default this is ‘$HOME/Mail’. 17249 17250 17251File: gnus.info, Node: The swish-e Engine, Next: The namazu Engine, Prev: The swish++ Engine, Up: Setting up nnir 17252 172538.1.3.4 The swish-e Engine 17254.......................... 17255 17256FIXME: Say something more here. 17257 17258‘nnir-swish-e-program’ 17259 The name of the swish-e search program. Defaults to ‘swish-e’. 17260 17261‘nnir-swish-e-additional-switches’ 17262 A list of strings to be given as additional arguments to swish-e. 17263 ‘nil’ by default. 17264 17265‘nnir-swish-e-remove-prefix’ 17266 The prefix to remove from each file name returned by swish-e in 17267 order to get a group name. By default this is ‘$HOME/Mail’. 17268 17269 17270File: gnus.info, Node: The namazu Engine, Next: The notmuch Engine, Prev: The swish-e Engine, Up: Setting up nnir 17271 172728.1.3.5 The namazu Engine 17273......................... 17274 17275Using the namazu engine requires creating and maintaining index files. 17276One directory should contain all the index files, and nnir must be told 17277where to find them by setting the ‘nnir-namazu-index-directory’ 17278variable. 17279 17280 To work correctly the ‘nnir-namazu-remove-prefix’ variable must also 17281be correct. This is the prefix to remove from each file name returned 17282by Namazu in order to get a proper group name (albeit with ‘/’ instead 17283of ‘.’). 17284 17285 For example, suppose that Namazu returns file names such as 17286‘/home/john/Mail/mail/misc/42’. For this example, use the following 17287setting: ‘(setq nnir-namazu-remove-prefix "/home/john/Mail/")’ Note the 17288trailing slash. Removing this prefix from the directory gives 17289‘mail/misc/42’. ‘nnir’ knows to remove the ‘/42’ and to replace ‘/’ 17290with ‘.’ to arrive at the correct group name ‘mail.misc’. 17291 17292 Extra switches may be passed to the namazu search command by setting 17293the variable ‘nnir-namazu-additional-switches’. It is particularly 17294important not to pass any switches to namazu that will change the output 17295format. Good switches to use include ‘--sort’, ‘--ascending’, ‘--early’ 17296and ‘--late’. Refer to the Namazu documentation for further information 17297on valid switches. 17298 17299 Mail must first be indexed with the ‘mknmz’ program. Read the 17300documentation for namazu to create a configuration file. Here is an 17301example: 17302 17303 package conf; # Don't remove this line! 17304 17305 # Paths which will not be indexed. Don't use '^' or '$' anchors. 17306 $EXCLUDE_PATH = "spam|sent"; 17307 17308 # Header fields which should be searchable. case-insensitive 17309 $REMAIN_HEADER = "from|date|message-id|subject"; 17310 17311 # Searchable fields. case-insensitive 17312 $SEARCH_FIELD = "from|date|message-id|subject"; 17313 17314 # The max length of a word. 17315 $WORD_LENG_MAX = 128; 17316 17317 # The max length of a field. 17318 $MAX_FIELD_LENGTH = 256; 17319 17320 For this example, mail is stored in the directories ‘~/Mail/mail/’, 17321‘~/Mail/lists/’ and ‘~/Mail/archive/’, so to index them go to the index 17322directory set in ‘nnir-namazu-index-directory’ and issue the following 17323command: 17324 17325 mknmz --mailnews ~/Mail/archive/ ~/Mail/mail/ ~/Mail/lists/ 17326 17327 For maximum searching efficiency you might want to have a cron job 17328run this command periodically, say every four hours. 17329 17330 17331File: gnus.info, Node: The notmuch Engine, Next: The hyrex Engine, Prev: The namazu Engine, Up: Setting up nnir 17332 173338.1.3.6 The notmuch Engine 17334.......................... 17335 17336‘nnir-notmuch-program’ 17337 The name of the notmuch search executable. Defaults to ‘notmuch’. 17338 17339‘nnir-notmuch-additional-switches’ 17340 A list of strings, to be given as additional arguments to notmuch. 17341 17342‘nnir-notmuch-remove-prefix’ 17343 The prefix to remove from each file name returned by notmuch in 17344 order to get a group name (albeit with ‘/’ instead of ‘.’). This 17345 is a regular expression. 17346 17347‘nnir-notmuch-filter-group-names-function’ 17348 A function used to transform the names of groups being searched in, 17349 for use as a “path:” search keyword for notmuch. If nil, the 17350 default, “path:” keywords are not used. Otherwise, this should be 17351 a callable which accepts a single group name and returns a 17352 transformed name as notmuch expects to see it. In many mail 17353 backends, for instance, dots in group names must be converted to 17354 forward slashes: to achieve this, set this option to 17355 (lambda (g) (replace-regexp-in-string "\\." "/" g)) 17356 17357 17358File: gnus.info, Node: The hyrex Engine, Next: Customizations, Prev: The notmuch Engine, Up: Setting up nnir 17359 173608.1.3.7 The hyrex Engine 17361........................ 17362 17363This engine is obsolete. 17364 17365 17366File: gnus.info, Node: Customizations, Prev: The hyrex Engine, Up: Setting up nnir 17367 173688.1.3.8 Customizations 17369...................... 17370 17371‘nnir-method-default-engines’ 17372 Alist of pairs of server backends and search engines. The default 17373 associations are 17374 (nnimap . imap) 17375 17376‘nnir-ignored-newsgroups’ 17377 A regexp to match newsgroups in the active file that should be 17378 skipped when searching all groups on a server. 17379 17380‘nnir-summary-line-format’ 17381 The format specification to be used for lines in an nnir summary 17382 buffer. All the items from ‘gnus-summary-line-format’ are 17383 available, along with three items unique to nnir summary buffers: 17384 17385 %Z Search retrieval score value (integer) 17386 %G Article original full group name (string) 17387 %g Article original short group name (string) 17388 17389 If ‘nil’ (the default) this will use ‘gnus-summary-line-format’. 17390 17391‘nnir-retrieve-headers-override-function’ 17392 If non-‘nil’, a function that retrieves article headers rather than 17393 using the gnus built-in function. This function takes an article 17394 list and group as arguments and populates the ‘nntp-server-buffer’ 17395 with the retrieved headers. It should then return either ’nov or 17396 ’headers indicating the retrieved header format. Failure to 17397 retrieve headers should return ‘nil’. 17398 17399 If this variable is ‘nil’, or if the provided function returns 17400 ‘nil’ for a search result, ‘gnus-retrieve-headers’ will be called 17401 instead." 17402 17403 17404File: gnus.info, Node: nnmairix, Prev: nnir, Up: Searching 17405 174068.2 nnmairix 17407============ 17408 17409This paragraph describes how to set up mairix and the back end 17410‘nnmairix’ for indexing and searching your mail from within Gnus. 17411Additionally, you can create permanent “smart” groups which are bound to 17412mairix searches and are automatically updated. 17413 17414* Menu: 17415 17416* About mairix:: About the mairix mail search engine 17417* nnmairix requirements:: What you will need for using nnmairix 17418* What nnmairix does:: What does nnmairix actually do? 17419* Setting up mairix:: Set up your mairix installation 17420* Configuring nnmairix:: Set up the nnmairix back end 17421* nnmairix keyboard shortcuts:: List of available keyboard shortcuts 17422* Propagating marks:: How to propagate marks from nnmairix groups 17423* nnmairix tips and tricks:: Some tips, tricks and examples 17424* nnmairix caveats:: Some more stuff you might want to know 17425 17426 17427File: gnus.info, Node: About mairix, Next: nnmairix requirements, Up: nnmairix 17428 174298.2.1 About mairix 17430------------------ 17431 17432Mairix is a tool for indexing and searching words in locally stored 17433mail. It was written by Richard Curnow and is licensed under the GPL. 17434Mairix comes with most popular GNU/Linux distributions, but it also runs 17435under Windows (with cygwin), macOS and Solaris. The homepage can be 17436found at <http://www.rpcurnow.force9.co.uk/mairix/index.html> 17437 17438 Though mairix might not be as flexible as other search tools like 17439swish++ or namazu, which you can use via the ‘nnir’ back end, it has the 17440prime advantage of being incredibly fast. On current systems, it can 17441easily search through headers and message bodies of thousands and 17442thousands of mails in well under a second. Building the database 17443necessary for searching might take a minute or two, but only has to be 17444done once fully. Afterwards, the updates are done incrementally and 17445therefore are really fast, too. Additionally, mairix is very easy to 17446set up. 17447 17448 For maximum speed though, mairix should be used with mails stored in 17449‘Maildir’ or ‘MH’ format (this includes the ‘nnml’ back end), although 17450it also works with mbox. Mairix presents the search results by 17451populating a _virtual_ maildir/MH folder with symlinks which point to 17452the “real” message files (if mbox is used, copies are made). Since 17453mairix already presents search results in such a virtual mail folder, it 17454is very well suited for using it as an external program for creating 17455_smart_ mail folders, which represent certain mail searches. 17456 17457 17458File: gnus.info, Node: nnmairix requirements, Next: What nnmairix does, Prev: About mairix, Up: nnmairix 17459 174608.2.2 nnmairix requirements 17461--------------------------- 17462 17463Mairix searches local mail—that means, mairix absolutely must have 17464direct access to your mail folders. If your mail resides on another 17465server (e.g., an IMAP server) and you happen to have shell access, 17466‘nnmairix’ supports running mairix remotely, e.g., via ssh. 17467 17468 Additionally, ‘nnmairix’ only supports the following Gnus back ends: 17469‘nnml’, ‘nnmaildir’, and ‘nnimap’. You must use one of these back ends 17470for using ‘nnmairix’. Other back ends, like ‘nnmbox’, ‘nnfolder’ or 17471‘nnmh’, won’t work. 17472 17473 If you absolutely must use mbox and still want to use ‘nnmairix’, you 17474can set up a local IMAP server, which you then access via ‘nnimap’. 17475This is a rather massive setup for accessing some mbox files, so just 17476change to MH or Maildir already... However, if you’re really, really 17477passionate about using mbox, you might want to look into the package 17478‘mairix.el’, which comes with Emacs 23. 17479 17480 17481File: gnus.info, Node: What nnmairix does, Next: Setting up mairix, Prev: nnmairix requirements, Up: nnmairix 17482 174838.2.3 What nnmairix does 17484------------------------ 17485 17486The back end ‘nnmairix’ enables you to call mairix from within Gnus, 17487either to query mairix with a search term or to update the database. 17488While visiting a message in the summary buffer, you can use several 17489pre-defined shortcuts for calling mairix, e.g., to quickly search for 17490all mails from the sender of the current message or to display the whole 17491thread associated with the message, even if the mails are in different 17492folders. 17493 17494 Additionally, you can create permanent ‘nnmairix’ groups which are 17495bound to certain mairix searches. This way, you can easily create a 17496group containing mails from a certain sender, with a certain subject 17497line or even for one specific thread based on the Message-ID. If you 17498check for new mail in these folders (e.g., by pressing ‘g’ or ‘M-g’), 17499they automatically update themselves by calling mairix. 17500 17501 You might ask why you need ‘nnmairix’ at all, since mairix already 17502creates the group, populates it with links to the mails so that you can 17503then access it with Gnus, right? Well, this _might_ work, but often 17504does not—at least not without problems. Most probably you will get 17505strange article counts, and sometimes you might see mails which Gnus 17506claims have already been canceled and are inaccessible. This is due to 17507the fact that Gnus isn’t really amused when things are happening behind 17508its back. Another problem can be the mail back end itself, e.g., if you 17509use mairix with an IMAP server (I had Dovecot complaining about corrupt 17510index files when mairix changed the contents of the search group). 17511Using ‘nnmairix’ should circumvent these problems. 17512 17513 ‘nnmairix’ is not really a mail back end—it’s actually more like a 17514wrapper, sitting between a “real” mail back end where mairix stores the 17515searches and the Gnus front end. You can choose between three different 17516mail back ends for the mairix folders: ‘nnml’, ‘nnmaildir’ or ‘nnimap’. 17517‘nnmairix’ will call the mairix binary so that the search results are 17518stored in folders named ‘zz_mairix-<NAME>-<NUMBER>’ on this mail back 17519end, but it will present these folders in the Gnus front end only with 17520‘<NAME>’. You can use an existing mail back end where you already store 17521your mail, but if you’re uncomfortable with ‘nnmairix’ creating new mail 17522groups alongside your other mail, you can also create, e.g., a new 17523‘nnmaildir’ or ‘nnml’ server exclusively for mairix, but then make sure 17524those servers do not accidentally receive your new mail (*note nnmairix 17525caveats::). A special case exists if you want to use mairix remotely on 17526an IMAP server with ‘nnimap’—here the mairix folders and your other mail 17527must be on the same ‘nnimap’ back end. 17528 17529 17530File: gnus.info, Node: Setting up mairix, Next: Configuring nnmairix, Prev: What nnmairix does, Up: nnmairix 17531 175328.2.4 Setting up mairix 17533----------------------- 17534 17535First: create a backup of your mail folders (*note nnmairix caveats::). 17536 17537 Setting up mairix is easy: simply create a ‘.mairixrc’ file with (at 17538least) the following entries: 17539 17540 # Your Maildir/MH base folder 17541 base=~/Maildir 17542 17543 This is the base folder for your mails. All the following 17544directories are relative to this base folder. If you want to use 17545‘nnmairix’ with ‘nnimap’, this base directory has to point to the mail 17546directory where the IMAP server stores the mail folders! 17547 17548 maildir= ... your maildir folders which should be indexed ... 17549 mh= ... your nnml/mh folders which should be indexed ... 17550 mbox = ... your mbox files which should be indexed ... 17551 17552 This specifies all your mail folders and mbox files (relative to the 17553base directory!) you want to index with mairix. Note that the ‘nnml’ 17554back end saves mails in MH format, so you have to put those directories 17555in the ‘mh’ line. See the example at the end of this section and 17556mairixrc’s man-page for further details. 17557 17558 omit=zz_mairix-* 17559 17560 This should make sure that you don’t accidentally index the mairix 17561search results. You can change the prefix of these folders with the 17562variable ‘nnmairix-group-prefix’. 17563 17564 mformat= ... 'maildir' or 'mh' ... 17565 database= ... location of database file ... 17566 17567 The ‘format’ setting specifies the output format for the mairix 17568search folder. Set this to ‘mh’ if you want to access search results 17569with ‘nnml’. Otherwise choose ‘maildir’. 17570 17571 To summarize, here is my shortened ‘.mairixrc’ file as an example: 17572 17573 base=~/Maildir 17574 maildir=.personal:.work:.logcheck:.sent 17575 mh=../Mail/nnml/*... 17576 mbox=../mboxmail/mailarchive_year* 17577 mformat=maildir 17578 omit=zz_mairix-* 17579 database=~/.mairixdatabase 17580 17581 In this case, the base directory is ‘~/Maildir’, where all my Maildir 17582folders are stored. As you can see, the folders are separated by 17583colons. If you wonder why every folder begins with a dot: this is 17584because I use Dovecot as IMAP server, which again uses ‘Maildir++’ 17585folders. For testing nnmairix, I also have some ‘nnml’ mail, which is 17586saved in ‘~/Mail/nnml’. Since this has to be specified relative to the 17587‘base’ directory, the ‘../Mail’ notation is needed. Note that the line 17588ends in ‘*...’, which means to recursively scan all files under this 17589directory. Without the three dots, the wildcard ‘*’ will not work 17590recursively. I also have some old mbox files with archived mail lying 17591around in ‘~/mboxmail’. The other lines should be obvious. 17592 17593 See the man page for ‘mairixrc’ for details and further options, 17594especially regarding wildcard usage, which may be a little different 17595than you are used to. 17596 17597 Now simply call ‘mairix’ to create the index for the first time. 17598Note that this may take a few minutes, but every following index will do 17599the updates incrementally and hence is very fast. 17600 17601 17602File: gnus.info, Node: Configuring nnmairix, Next: nnmairix keyboard shortcuts, Prev: Setting up mairix, Up: nnmairix 17603 176048.2.5 Configuring nnmairix 17605-------------------------- 17606 17607In group mode, type ‘G b c’ 17608(‘nnmairix-create-server-and-default-group’). This will ask you for all 17609necessary information and create a ‘nnmairix’ server as a foreign 17610server. You will have to specify the following: 17611 17612 • The *name* of the ‘nnmairix’ server—choose whatever you want. 17613 17614 • The name of the *back end server* where mairix should store its 17615 searches. This must be a full server name, like ‘nnml:mymail’. 17616 Just hit ‘<TAB>’ to see the available servers. Currently, servers 17617 which are accessed through ‘nnmaildir’, ‘nnimap’ and ‘nnml’ are 17618 supported. As explained above, for locally stored mails, this can 17619 be an existing server where you store your mails. However, you can 17620 also create, e.g., a new ‘nnmaildir’ or ‘nnml’ server exclusively 17621 for ‘nnmairix’ in your secondary select methods (*note Finding the 17622 News::). If you use a secondary ‘nnml’ server just for mairix, 17623 make sure that you explicitly set the server variable 17624 ‘nnml-get-new-mail’ to ‘nil’, or you might lose mail (*note 17625 nnmairix caveats::). If you want to use mairix remotely on an IMAP 17626 server, you have to choose the corresponding ‘nnimap’ server here. 17627 17628 • The *command* to call the mairix binary. This will usually just be 17629 ‘mairix’, but you can also choose something like ‘ssh SERVER 17630 mairix’ if you want to call mairix remotely, e.g., on your IMAP 17631 server. If you want to add some default options to mairix, you 17632 could do this here, but better use the variable 17633 ‘nnmairix-mairix-search-options’ instead. 17634 17635 • The name of the *default search group*. This will be the group 17636 where all temporary mairix searches are stored, i.e., all searches 17637 which are not bound to permanent ‘nnmairix’ groups. Choose 17638 whatever you like. 17639 17640 • If the mail back end is ‘nnimap’ or ‘nnmaildir’, you will be asked 17641 if you work with *Maildir++*, i.e., with hidden maildir folders 17642 (=beginning with a dot). For example, you have to answer ‘yes’ 17643 here if you work with the Dovecot IMAP server. Otherwise, you 17644 should answer ‘no’ here. 17645 17646 17647File: gnus.info, Node: nnmairix keyboard shortcuts, Next: Propagating marks, Prev: Configuring nnmairix, Up: nnmairix 17648 176498.2.6 nnmairix keyboard shortcuts 17650--------------------------------- 17651 17652In group mode: 17653 17654‘G b c’ 17655 Creates ‘nnmairix’ server and default search group for this server 17656 (‘nnmairix-create-server-and-default-group’). You should have done 17657 this by now (*note Configuring nnmairix::). 17658 17659‘G b s’ 17660 Prompts for query which is then sent to the mairix binary. Search 17661 results are put into the default search group which is 17662 automatically displayed (‘nnmairix-search’). 17663 17664‘G b m’ 17665 Allows you to create a mairix search or a permanent group more 17666 comfortably using graphical widgets, similar to a customization 17667 group. Just try it to see how it works (‘nnmairix-widget-search’). 17668 17669‘G b i’ 17670 Another command for creating a mairix query more comfortably, but 17671 uses only the minibuffer (‘nnmairix-search-interactive’). 17672 17673‘G b g’ 17674 Creates a permanent group which is associated with a search query 17675 (‘nnmairix-create-search-group’). The ‘nnmairix’ back end 17676 automatically calls mairix when you update this group with ‘g’ or 17677 ‘M-g’. 17678 17679‘G b q’ 17680 Changes the search query for the ‘nnmairix’ group under cursor 17681 (‘nnmairix-group-change-query-this-group’). 17682 17683‘G b t’ 17684 Toggles the ’threads’ parameter for the ‘nnmairix’ group under 17685 cursor, i.e., if you want see the whole threads of the found 17686 messages (‘nnmairix-group-toggle-threads-this-group’). 17687 17688‘G b u’ 17689 Calls mairix binary for updating the database 17690 (‘nnmairix-update-database’). The default parameters are ‘-F’ and 17691 ‘-Q’ for making this as fast as possible (see variable 17692 ‘nnmairix-mairix-update-options’ for defining these default 17693 options). 17694 17695‘G b r’ 17696 Keep articles in this ‘nnmairix’ group always read or unread, or 17697 leave the marks unchanged 17698 (‘nnmairix-group-toggle-readmarks-this-group’). 17699 17700‘G b d’ 17701 Recreate ‘nnmairix’ group on the “real” mail back end 17702 (‘nnmairix-group-delete-recreate-this-group’). You can do this if 17703 you always get wrong article counts with a ‘nnmairix’ group. 17704 17705‘G b a’ 17706 Toggles the ‘allow-fast’ parameters for group under cursor 17707 (‘nnmairix-group-toggle-allowfast-this-group’). The default 17708 behavior of ‘nnmairix’ is to do a mairix search every time you 17709 update or enter the group. With the ‘allow-fast’ parameter set, 17710 mairix will only be called when you explicitly update the group, 17711 but not upon entering. This makes entering the group faster, but 17712 it may also lead to dangling symlinks if something changed between 17713 updating and entering the group which is not yet in the mairix 17714 database. 17715 17716‘G b p’ 17717 Toggle marks propagation for this group 17718 (‘nnmairix-group-toggle-propmarks-this-group’). (*note Propagating 17719 marks::). 17720 17721‘G b o’ 17722 Manually propagate marks (‘nnmairix-propagate-marks’); needed only 17723 when ‘nnmairix-propagate-marks-upon-close’ is set to ‘nil’. 17724 17725 In summary mode: 17726 17727‘G G m’ 17728 Allows you to create a mairix query or group based on the current 17729 message using graphical widgets (same as ‘nnmairix-widget-search’) 17730 (‘nnmairix-widget-search-from-this-article’). 17731 17732‘G G g’ 17733 Interactively creates a new search group with query based on the 17734 current message, but uses the minibuffer instead of graphical 17735 widgets (‘nnmairix-create-search-group-from-message’). 17736 17737‘G G t’ 17738 Searches thread for the current article 17739 (‘nnmairix-search-thread-this-article’). This is effectively a 17740 shortcut for calling ‘nnmairix-search’ with ‘m:msgid’ of the 17741 current article and enabled threads. 17742 17743‘G G f’ 17744 Searches all messages from sender of the current article 17745 (‘nnmairix-search-from-this-article’). This is a shortcut for 17746 calling ‘nnmairix-search’ with ‘f:From’. 17747 17748‘G G o’ 17749 (Only in ‘nnmairix’ groups!) Tries determine the group this 17750 article originally came from and displays the article in this 17751 group, so that, e.g., replying to this article the correct posting 17752 styles/group parameters are applied 17753 (‘nnmairix-goto-original-article’). This function will use the 17754 registry if available, but can also parse the article file name as 17755 a fallback method. 17756 17757‘G G u’ 17758 Remove possibly existing tick mark from original article 17759 (‘nnmairix-remove-tick-mark-original-article’). (*note nnmairix 17760 tips and tricks::). 17761 17762 17763File: gnus.info, Node: Propagating marks, Next: nnmairix tips and tricks, Prev: nnmairix keyboard shortcuts, Up: nnmairix 17764 177658.2.7 Propagating marks 17766----------------------- 17767 17768First of: you really need a patched mairix binary for using the marks 17769propagation feature efficiently. Otherwise, you would have to update 17770the mairix database all the time. You can get the patch at 17771 17772 <http://www.randomsample.de/mairix-maildir-patch.tar> 17773 17774 You need the mairix v0.21 source code for this patch; everything else 17775is explained in the accompanied readme file. If you don’t want to use 17776marks propagation, you don’t have to apply these patches, but they also 17777fix some annoyances regarding changing maildir flags, so it might still 17778be useful to you. 17779 17780 With the patched mairix binary, you can use ‘nnmairix’ as an 17781alternative to mail splitting (*note Fancy Mail Splitting::). For 17782example, instead of splitting all mails from ‘david@foobar.com’ into a 17783group, you can simply create a search group with the query 17784‘f:david@foobar.com’. This is actually what “smart folders” are all 17785about: simply put everything in one mail folder and dynamically create 17786searches instead of splitting. This is more flexible, since you can 17787dynamically change your folders any time you want to. This also implies 17788that you will usually read your mails in the ‘nnmairix’ groups instead 17789of your “real” mail groups. 17790 17791 There is one problem, though: say you got a new mail from 17792‘david@foobar.com’; it will now show up in two groups, the “real” group 17793(your INBOX, for example) and in the ‘nnmairix’ search group (provided 17794you have updated the mairix database). Now you enter the ‘nnmairix’ 17795group and read the mail. The mail will be marked as read, but only in 17796the ‘nnmairix’ group—in the “real” mail group it will be still shown as 17797unread. 17798 17799 You could now catch up the mail group (*note Group Data::), but this 17800is tedious and error prone, since you may overlook mails you don’t have 17801created ‘nnmairix’ groups for. Of course, you could first use 17802‘nnmairix-goto-original-article’ (*note nnmairix keyboard shortcuts::) 17803and then read the mail in the original group, but that’s even more 17804cumbersome. 17805 17806 Clearly, the easiest way would be if marks could somehow be 17807automatically set for the original article. This is exactly what _marks 17808propagation_ is about. 17809 17810 Marks propagation is inactive by default. You can activate it for a 17811certain ‘nnmairix’ group with 17812‘nnmairix-group-toggle-propmarks-this-group’ (bound to ‘G b p’). This 17813function will warn you if you try to use it with your default search 17814group; the reason is that the default search group is used for temporary 17815searches, and it’s easy to accidentally propagate marks from this group. 17816However, you can ignore this warning if you really want to. 17817 17818 With marks propagation enabled, all the marks you set in a ‘nnmairix’ 17819group should now be propagated to the original article. For example, 17820you can now tick an article (by default with ‘!’) and this mark should 17821magically be set for the original article, too. 17822 17823 A few more remarks which you may or may not want to know: 17824 17825 Marks will not be set immediately, but only upon closing a group. 17826This not only makes marks propagation faster, it also avoids problems 17827with dangling symlinks when dealing with maildir files (since changing 17828flags will change the file name). You can also control when to 17829propagate marks via ‘nnmairix-propagate-marks-upon-close’ (see the 17830doc-string for details). 17831 17832 Obviously, ‘nnmairix’ will have to look up the original group for 17833every article you want to set marks for. If available, ‘nnmairix’ will 17834first use the registry for determining the original group. The registry 17835is very fast, hence you should really, really enable the registry when 17836using marks propagation. If you don’t have to worry about RAM and disc 17837space, set ‘gnus-registry-max-entries’ to a large enough value; to be on 17838the safe side, choose roughly the amount of mails you index with mairix. 17839 17840 If you don’t want to use the registry or the registry hasn’t seen the 17841original article yet, ‘nnmairix’ will use an additional mairix search 17842for determining the file name of the article. This, of course, is way 17843slower than the registry—if you set hundreds or even thousands of marks 17844this way, it might take some time. You can avoid this situation by 17845setting ‘nnmairix-only-use-registry’ to ‘t’. 17846 17847 Maybe you also want to propagate marks the other way round, i.e., if 17848you tick an article in a "real" mail group, you’d like to have the same 17849article in a ‘nnmairix’ group ticked, too. For several good reasons, 17850this can only be done efficiently if you use maildir. To immediately 17851contradict myself, let me mention that it WON’T work with ‘nnmaildir’, 17852since ‘nnmaildir’ stores the marks externally and not in the file name. 17853Therefore, propagating marks to ‘nnmairix’ groups will usually only work 17854if you use an IMAP server which uses maildir as its file format. 17855 17856 If you work with this setup, just set 17857‘nnmairix-propagate-marks-to-nnmairix-groups’ to ‘t’ and see what 17858happens. If you don’t like what you see, just set it to ‘nil’ again. 17859One problem might be that you get a wrong number of unread articles; 17860this usually happens when you delete or expire articles in the original 17861groups. When this happens, you can recreate the ‘nnmairix’ group on the 17862back end using ‘G b d’. 17863 17864 17865File: gnus.info, Node: nnmairix tips and tricks, Next: nnmairix caveats, Prev: Propagating marks, Up: nnmairix 17866 178678.2.8 nnmairix tips and tricks 17868------------------------------ 17869 17870 • Checking Mail 17871 17872 I put all my important mail groups at group level 1. The mairix 17873 groups have group level 5, so they do not get checked at start up 17874 (*note Group Levels::). 17875 17876 I use the following to check for mails: 17877 17878 (defun my-check-mail-mairix-update (level) 17879 (interactive "P") 17880 ;; if no prefix given, set level=1 17881 (gnus-group-get-new-news (or level 1)) 17882 (nnmairix-update-groups "mairixsearch" t t) 17883 (gnus-group-list-groups)) 17884 17885 (define-key gnus-group-mode-map "g" 'my-check-mail-mairix-update) 17886 17887 Instead of ‘"mairixsearch"’ use the name of your ‘nnmairix’ server. 17888 See the doc string for ‘nnmairix-update-groups’ for details. 17889 17890 • Example: search group for ticked articles 17891 17892 For example, you can create a group for all ticked articles, where 17893 the articles always stay unread: 17894 17895 Hit ‘G b g’, enter group name (e.g., ‘important’), use ‘F:f’ as 17896 query and do not include threads. 17897 17898 Now activate marks propagation for this group by using ‘G b p’. 17899 Then activate the always-unread feature by using ‘G b r’ twice. 17900 17901 So far so good—but how do you remove the tick marks in the 17902 ‘nnmairix’ group? There are two options: You may simply use 17903 ‘nnmairix-remove-tick-mark-original-article’ (bound to ‘G G u’) to 17904 remove tick marks from the original article. The other possibility 17905 is to set ‘nnmairix-propagate-marks-to-nnmairix-groups’ to ‘t’, but 17906 see the above comments about this option. If it works for you, the 17907 tick marks should also exist in the ‘nnmairix’ group and you can 17908 remove them as usual, e.g., by marking an article as read. 17909 17910 When you have removed a tick mark from the original article, this 17911 article should vanish from the ‘nnmairix’ group after you have 17912 updated the mairix database and updated the group. Fortunately, 17913 there is a function for doing exactly that: 17914 ‘nnmairix-update-groups’. See the previous code snippet and the 17915 doc string for details. 17916 17917 • Dealing with auto-subscription of mail groups 17918 17919 As described before, all ‘nnmairix’ groups are in fact stored on 17920 the mail back end in the form ‘zz_mairix-<NAME>-<NUMBER>’. You can 17921 see them when you enter the back end server in the server buffer. 17922 You should not subscribe these groups! Unfortunately, these groups 17923 will usually get _auto-subscribed_ when you use ‘nnmaildir’ or 17924 ‘nnml’, i.e., you will suddenly see groups of the form ‘zz_mairix*’ 17925 pop up in your group buffer. If this happens to you, simply kill 17926 these groups with C-k. For avoiding this, turn off 17927 auto-subscription completely by setting the variable 17928 ‘gnus-auto-subscribed-groups’ to ‘nil’ (*note Filtering New 17929 Groups::), or if you like to keep this feature use the following 17930 kludge for turning it off for all groups beginning with ‘zz_’: 17931 17932 (setq gnus-auto-subscribed-groups 17933 "^\\(nnml\\|nnfolder\\|nnmbox\\|nnmh\\|nnbabyl\\|nnmaildir\\).*:\\([^z]\\|z$\\|\\z[^z]\\|zz$\\|zz[^_]\\|zz_$\\).*") 17934 17935 17936File: gnus.info, Node: nnmairix caveats, Prev: nnmairix tips and tricks, Up: nnmairix 17937 179388.2.9 nnmairix caveats 17939---------------------- 17940 17941 • You can create a secondary ‘nnml’ server just for nnmairix, but 17942 then you have to explicitly set the corresponding server variable 17943 ‘nnml-get-new-mail’ to ‘nil’. Otherwise, new mail might get put 17944 into this secondary server (and would never show up again). Here’s 17945 an example server definition: 17946 17947 (nnml "mairix" (nnml-directory "mairix") (nnml-get-new-mail nil)) 17948 17949 (The ‘nnmaildir’ back end also has a server variable 17950 ‘get-new-mail’, but its default value is ‘nil’, so you don’t have 17951 to explicitly set it if you use a ‘nnmaildir’ server just for 17952 mairix.) 17953 17954 • If you use the Gnus registry: don’t use the registry with 17955 ‘nnmairix’ groups (put them in ‘gnus-registry-unfollowed-groups’; 17956 this is the default). Be _extra careful_ if you use 17957 ‘gnus-registry-split-fancy-with-parent’; mails which are split into 17958 ‘nnmairix’ groups are usually gone for good as soon as you check 17959 the group for new mail (yes, it has happened to me...). 17960 17961 • Therefore: _Never ever_ put “real” mails into ‘nnmairix’ groups 17962 (you shouldn’t be able to, anyway). 17963 17964 • If you use the Gnus agent (*note Gnus Unplugged::): don’t agentize 17965 ‘nnmairix’ groups (though I have no idea what happens if you do). 17966 17967 • mairix does only support us-ascii characters. 17968 17969 • ‘nnmairix’ uses a rather brute force method to force Gnus to 17970 completely reread the group on the mail back end after mairix was 17971 called—it simply deletes and re-creates the group on the mail back 17972 end. So far, this has worked for me without any problems, and I 17973 don’t see how ‘nnmairix’ could delete other mail groups than its 17974 own, but anyway: you really should have a backup of your mail 17975 folders. 17976 17977 • All necessary information is stored in the group parameters (*note 17978 Group Parameters::). This has the advantage that no active file is 17979 needed, but also implies that when you kill a ‘nnmairix’ group, it 17980 is gone for good. 17981 17982 • If you create and kill a lot of ‘nnmairix’ groups, the 17983 “zz_mairix-*” groups will accumulate on the mail back end server. 17984 To delete old groups which are no longer needed, call 17985 ‘nnmairix-purge-old-groups’. Note that this assumes that you don’t 17986 save any “real” mail in folders of the form 17987 ‘zz_mairix-<NAME>-<NUMBER>’. You can change the prefix of 17988 ‘nnmairix’ groups by changing the variable ‘nnmairix-group-prefix’. 17989 17990 • The following only applies if you _don’t_ use the mentioned patch 17991 for mairix (*note Propagating marks::): 17992 17993 A problem can occur when using ‘nnmairix’ with maildir folders and 17994 comes with the fact that maildir stores mail flags like ‘Seen’ or 17995 ‘Replied’ by appending chars ‘S’ and ‘R’ to the message file name, 17996 respectively. This implies that currently you would have to update 17997 the mairix database not only when new mail arrives, but also when 17998 mail flags are changing. The same applies to new mails which are 17999 indexed while they are still in the ‘new’ folder but then get moved 18000 to ‘cur’ when Gnus has seen the mail. If you don’t update the 18001 database after this has happened, a mairix query can lead to 18002 symlinks pointing to non-existing files. In Gnus, these messages 18003 will usually appear with “(none)” entries in the header and can’t 18004 be accessed. If this happens to you, using ‘G b u’ and updating 18005 the group will usually fix this. 18006 18007 18008File: gnus.info, Node: Various, Next: The End, Prev: Searching, Up: Top 18009 180109 Various 18011********* 18012 18013* Menu: 18014 18015* Process/Prefix:: A convention used by many treatment commands. 18016* Interactive:: Making Gnus ask you many questions. 18017* Symbolic Prefixes:: How to supply some Gnus functions with options. 18018* Formatting Variables:: You can specify what buffers should look like. 18019* Window Layout:: Configuring the Gnus buffer windows. 18020* Tabbed Interface:: Configuring the Gnus tabs. 18021* Faces and Fonts:: How to change how faces look. 18022* Mode Lines:: Displaying information in the mode lines. 18023* Highlighting and Menus:: Making buffers look all nice and cozy. 18024* Daemons:: Gnus can do things behind your back. 18025* Undo:: Some actions can be undone. 18026* Predicate Specifiers:: Specifying predicates. 18027* Moderation:: What to do if you’re a moderator. 18028* Fetching a Group:: Starting Gnus just to read a group. 18029* Image Enhancements:: Modern versions of Emacs can display images. 18030* Fuzzy Matching:: What’s the big fuzz? 18031* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email. 18032* Spam Package:: A package for filtering and processing spam. 18033* The Gnus Registry:: A package for tracking messages by Message-ID. 18034* The Gnus Cloud:: A package for synchronizing Gnus marks. 18035* Other modes:: Interaction with other modes. 18036* Various Various:: Things that are really various. 18037 18038 18039File: gnus.info, Node: Process/Prefix, Next: Interactive, Up: Various 18040 180419.1 Process/Prefix 18042================== 18043 18044Many functions, among them functions for moving, decoding and saving 18045articles, use what is known as the “Process/Prefix convention”. 18046 18047 This is a method for figuring out what articles the user wants the 18048command to be performed on. 18049 18050 It goes like this: 18051 18052 If the numeric prefix is N, perform the operation on the next N 18053articles, starting with the current one. If the numeric prefix is 18054negative, perform the operation on the previous N articles, starting 18055with the current one. 18056 18057 If ‘transient-mark-mode’ in non-‘nil’ and the region is active, all 18058articles in the region will be worked upon. 18059 18060 If there is no numeric prefix, but some articles are marked with the 18061process mark, perform the operation on the articles marked with the 18062process mark. 18063 18064 If there is neither a numeric prefix nor any articles marked with the 18065process mark, just perform the operation on the current article. 18066 18067 Quite simple, really, but it needs to be made clear so that surprises 18068are avoided. 18069 18070 Commands that react to the process mark will push the current list of 18071process marked articles onto a stack and will then clear all process 18072marked articles. You can restore the previous configuration with the ‘M 18073P y’ command (*note Setting Process Marks::). 18074 18075 One thing that seems to shock & horrify lots of people is that, for 18076instance, ‘3 d’ does exactly the same as ‘d’ ‘d’ ‘d’. Since each ‘d’ 18077(which marks the current article as read) by default goes to the next 18078unread article after marking, this means that ‘3 d’ will mark the next 18079three unread articles as read, no matter what the summary buffer looks 18080like. Set ‘gnus-summary-goto-unread’ to ‘nil’ for a more 18081straightforward action. 18082 18083 Many commands do not use the process/prefix convention. All commands 18084that do explicitly say so in this manual. To apply the process/prefix 18085convention to commands that do not use it, you can use the ‘M-&’ 18086command. For instance, to mark all the articles in the group as 18087expirable, you could say ‘M P b M-& E’. 18088 18089 18090File: gnus.info, Node: Interactive, Next: Symbolic Prefixes, Prev: Process/Prefix, Up: Various 18091 180929.2 Interactive 18093=============== 18094 18095‘gnus-novice-user’ 18096 If this variable is non-‘nil’, you are either a newcomer to the 18097 World of Usenet, or you are very cautious, which is a nice thing to 18098 be, really. You will be given questions of the type “Are you sure 18099 you want to do this?” before doing anything dangerous. This is ‘t’ 18100 by default. 18101 18102‘gnus-expert-user’ 18103 If this variable is non-‘nil’, you will seldom be asked any 18104 questions by Gnus. It will simply assume you know what you’re 18105 doing, no matter how strange. For example, quitting Gnus, exiting 18106 a group without an update, catching up with a group, deleting 18107 expired articles, and replying by mail to a news message will not 18108 require confirmation. 18109 18110‘gnus-interactive-catchup’ 18111 Require confirmation before catching up a group if non-‘nil’. It 18112 is ‘t’ by default. 18113 18114‘gnus-interactive-exit’ 18115 If non-‘nil’, require a confirmation when exiting Gnus. If 18116 ‘quiet’, update any active summary buffers automatically without 18117 querying. The default value is ‘t’. 18118 18119 18120File: gnus.info, Node: Symbolic Prefixes, Next: Formatting Variables, Prev: Interactive, Up: Various 18121 181229.3 Symbolic Prefixes 18123===================== 18124 18125Quite a lot of Emacs commands react to the (numeric) prefix. For 18126instance, ‘C-u 4 C-f’ moves point four characters forward, and ‘C-u 9 0 181270 I s s p’ adds a permanent ‘Subject’ substring score rule of 900 to the 18128current article. 18129 18130 This is all nice and well, but what if you want to give a command 18131some additional information? Well, what most commands do is interpret 18132the “raw” prefix in some special way. ‘C-u 0 C-x C-s’ means that one 18133doesn’t want a backup file to be created when saving the current buffer, 18134for instance. But what if you want to save without making a backup 18135file, and you want Emacs to flash lights and play a nice tune at the 18136same time? You can’t, and you’re probably perfectly happy that way. 18137 18138 I’m not, so I’ve added a second prefix—the “symbolic prefix”. The 18139prefix key is ‘M-i’ (‘gnus-symbolic-argument’), and the next character 18140typed in is the value. You can stack as many ‘M-i’ prefixes as you 18141want. ‘M-i a C-M-u’ means “feed the ‘C-M-u’ command the symbolic prefix 18142‘a’”. ‘M-i a M-i b C-M-u’ means “feed the ‘C-M-u’ command the symbolic 18143prefixes ‘a’ and ‘b’”. You get the drift. 18144 18145 Typing in symbolic prefixes to commands that don’t accept them 18146doesn’t hurt, but it doesn’t do any good either. Currently not many 18147Gnus functions make use of the symbolic prefix. 18148 18149 If you’re interested in how Gnus implements this, *note Extended 18150Interactive::. 18151 18152 18153File: gnus.info, Node: Formatting Variables, Next: Window Layout, Prev: Symbolic Prefixes, Up: Various 18154 181559.4 Formatting Variables 18156======================== 18157 18158Throughout this manual you’ve probably noticed lots of variables called 18159things like ‘gnus-group-line-format’ and 18160‘gnus-summary-mode-line-format’. These control how Gnus is to output 18161lines in the various buffers. There’s quite a lot of them. 18162Fortunately, they all use the same syntax, so there’s not that much to 18163be annoyed by. 18164 18165 Here’s an example format spec (from the group buffer): ‘%M%S%5y: 18166%(%g%)\n’. We see that it is indeed extremely ugly, and that there are 18167lots of percentages everywhere. 18168 18169* Menu: 18170 18171* Formatting Basics:: A formatting variable is basically a format string. 18172* Mode Line Formatting:: Some rules about mode line formatting variables. 18173* Advanced Formatting:: Modifying output in various ways. 18174* User-Defined Specs:: Having Gnus call your own functions. 18175* Formatting Fonts:: Making the formatting look colorful and nice. 18176* Positioning Point:: Moving point to a position after an operation. 18177* Tabulation:: Tabulating your output. 18178 18179 Currently Gnus uses the following formatting variables: 18180‘gnus-group-line-format’, ‘gnus-summary-line-format’, 18181‘gnus-server-line-format’, ‘gnus-topic-line-format’, 18182‘gnus-group-mode-line-format’, ‘gnus-summary-mode-line-format’, 18183‘gnus-article-mode-line-format’, ‘gnus-server-mode-line-format’, and 18184‘gnus-summary-pick-line-format’. 18185 18186 All these format variables can also be arbitrary elisp forms. In 18187that case, they will be ‘eval’ed to insert the required lines. 18188 18189 Gnus includes a command to help you while creating your own format 18190specs. ‘M-x gnus-update-format’ will ‘eval’ the current form, update 18191the spec in question and pop you to a buffer where you can examine the 18192resulting Lisp code to be run to generate the line. 18193 18194 18195File: gnus.info, Node: Formatting Basics, Next: Mode Line Formatting, Up: Formatting Variables 18196 181979.4.1 Formatting Basics 18198----------------------- 18199 18200Each ‘%’ element will be replaced by some string or other when the 18201buffer in question is generated. ‘%5y’ means “insert the ‘y’ spec, and 18202pad with spaces to get a 5-character field”. 18203 18204 As with normal C and Emacs Lisp formatting strings, the numerical 18205modifier between the ‘%’ and the formatting type character will “pad” 18206the output so that it is always at least that long. ‘%5y’ will make the 18207field always (at least) five characters wide by padding with spaces to 18208the left. If you say ‘%-5y’, it will pad to the right instead. 18209 18210 You may also wish to limit the length of the field to protect against 18211particularly wide values. For that you can say ‘%4,6y’, which means 18212that the field will never be more than 6 characters wide and never less 18213than 4 characters wide. 18214 18215 Also Gnus supports some extended format specifications, such as 18216‘%&user-date;’. 18217 18218 18219File: gnus.info, Node: Mode Line Formatting, Next: Advanced Formatting, Prev: Formatting Basics, Up: Formatting Variables 18220 182219.4.2 Mode Line Formatting 18222-------------------------- 18223 18224Mode line formatting variables (e.g., ‘gnus-summary-mode-line-format’) 18225follow the same rules as other, buffer line oriented formatting 18226variables (*note Formatting Basics::) with the following two 18227differences: 18228 18229 1. There must be no newline (‘\n’) at the end. 18230 18231 2. The special ‘%%b’ spec can be used to display the buffer name. 18232 Well, it’s no spec at all, really—‘%%’ is just a way to quote ‘%’ 18233 to allow it to pass through the formatting machinery unmangled, so 18234 that Emacs receives ‘%b’, which is something the Emacs mode line 18235 display interprets to mean “show the buffer name”. For a full list 18236 of mode line specs Emacs understands, see the documentation of the 18237 ‘mode-line-format’ variable. 18238 18239 18240File: gnus.info, Node: Advanced Formatting, Next: User-Defined Specs, Prev: Mode Line Formatting, Up: Formatting Variables 18241 182429.4.3 Advanced Formatting 18243------------------------- 18244 18245It is frequently useful to post-process the fields in some way. 18246Padding, limiting, cutting off parts and suppressing certain values can 18247be achieved by using “tilde modifiers”. A typical tilde spec might look 18248like ‘%~(cut 3)~(ignore "0")y’. 18249 18250 These are the valid modifiers: 18251 18252‘pad’ 18253‘pad-left’ 18254 Pad the field to the left with spaces until it reaches the required 18255 length. 18256 18257‘pad-right’ 18258 Pad the field to the right with spaces until it reaches the 18259 required length. 18260 18261‘max’ 18262‘max-left’ 18263 Cut off characters from the left until it reaches the specified 18264 length. 18265 18266‘max-right’ 18267 Cut off characters from the right until it reaches the specified 18268 length. 18269 18270‘cut’ 18271‘cut-left’ 18272 Cut off the specified number of characters from the left. 18273 18274‘cut-right’ 18275 Cut off the specified number of characters from the right. 18276 18277‘ignore’ 18278 Return an empty string if the field is equal to the specified 18279 value. 18280 18281‘form’ 18282 Use the specified form as the field value when the ‘@’ spec is 18283 used. 18284 18285 Here’s an example: 18286 18287 "~(form (current-time-string))@" 18288 18289 Let’s take an example. The ‘%o’ spec in the summary mode lines will 18290return a date in compact ISO8601 format—‘19960809T230410’. This is 18291quite a mouthful, so we want to shave off the century number and the 18292time, leaving us with a six-character date. That would be ‘%~(cut-left 182932)~(max-right 6)~(pad 6)o’. (Cutting is done before maxing, and we need 18294the padding to ensure that the date is never less than 6 characters to 18295make it look nice in columns.) 18296 18297 Ignoring is done first; then cutting; then maxing; and then as the 18298very last operation, padding. 18299 18300 18301File: gnus.info, Node: User-Defined Specs, Next: Formatting Fonts, Prev: Advanced Formatting, Up: Formatting Variables 18302 183039.4.4 User-Defined Specs 18304------------------------ 18305 18306All the specs allow for inserting user defined specifiers—‘u’. The next 18307character in the format string should be a letter. Gnus will call the 18308function ‘gnus-user-format-function-’‘X’, where ‘X’ is the letter 18309following ‘%u’. The function will be passed a single parameter—what the 18310parameter means depends on what buffer it’s being called from. The 18311function should return a string, which will be inserted into the buffer 18312just like information from any other specifier. This function may also 18313be called with dummy values, so it should protect against that. 18314 18315 Also Gnus supports extended user-defined specs, such as ‘%u&foo;’. 18316Gnus will call the function ‘gnus-user-format-function-’‘foo’. 18317 18318 You can also use tilde modifiers (*note Advanced Formatting:: to 18319achieve much the same without defining new functions. Here’s an 18320example: ‘%~(form (count-lines (point-min) (point)))@’. The form given 18321here will be evaluated to yield the current line number, and then 18322inserted. 18323 18324 18325File: gnus.info, Node: Formatting Fonts, Next: Positioning Point, Prev: User-Defined Specs, Up: Formatting Variables 18326 183279.4.5 Formatting Fonts 18328---------------------- 18329 18330There are specs for highlighting, and these are shared by all the format 18331variables. Text inside the ‘%(’ and ‘%)’ specifiers will get the 18332special ‘mouse-face’ property set, which means that it will be 18333highlighted (with ‘gnus-mouse-face’) when you put the mouse pointer over 18334it. 18335 18336 Text inside the ‘%{’ and ‘%}’ specifiers will have their normal faces 18337set using ‘gnus-face-0’, which is ‘bold’ by default. If you say ‘%1{’, 18338you’ll get ‘gnus-face-1’ instead, and so on. Create as many faces as 18339you wish. The same goes for the ‘mouse-face’ specs—you can say 18340‘%3(hello%)’ to have ‘hello’ mouse-highlighted with ‘gnus-mouse-face-3’. 18341 18342 Text inside the ‘%<<’ and ‘%>>’ specifiers will get the special 18343‘balloon-help’ property set to ‘gnus-balloon-face-0’. If you say 18344‘%1<<’, you’ll get ‘gnus-balloon-face-1’ and so on. The 18345‘gnus-balloon-face-*’ variables should be either strings or symbols 18346naming functions that return a string. When the mouse passes over text 18347with this property set, a balloon window will appear and display the 18348string. Please refer to *note Tooltips: (emacs)Tooltips. for more 18349information on this. (For technical reasons, the guillemets have been 18350approximated as ‘<<’ and ‘>>’ in this paragraph.) 18351 18352 Here’s an alternative recipe for the group buffer: 18353 18354 ;; Create three face types. 18355 (setq gnus-face-1 'bold) 18356 (setq gnus-face-3 'italic) 18357 18358 ;; We want the article count to be in 18359 ;; a bold and green face. So we create 18360 ;; a new face called ‘my-green-bold’. 18361 (copy-face 'bold 'my-green-bold) 18362 ;; Set the color. 18363 (set-face-foreground 'my-green-bold "ForestGreen") 18364 (setq gnus-face-2 'my-green-bold) 18365 18366 ;; Set the new & fancy format. 18367 (setq gnus-group-line-format 18368 "%M%S%3{%5y%}%2[:%] %(%1{%g%}%)\n") 18369 18370 I’m sure you’ll be able to use this scheme to create totally 18371unreadable and extremely vulgar displays. Have fun! 18372 18373 Note that the ‘%(’ specs (and friends) do not make any sense on the 18374mode-line variables. 18375 18376 18377File: gnus.info, Node: Positioning Point, Next: Tabulation, Prev: Formatting Fonts, Up: Formatting Variables 18378 183799.4.6 Positioning Point 18380----------------------- 18381 18382Gnus usually moves point to a pre-defined place on each line in most 18383buffers. By default, point move to the first colon character on the 18384line. You can customize this behavior in three different ways. 18385 18386 You can move the colon character to somewhere else on the line. 18387 18388 You can redefine the function that moves the point to the colon. The 18389function is called ‘gnus-goto-colon’. 18390 18391 But perhaps the most convenient way to deal with this, if you don’t 18392want to have a colon in your line, is to use the ‘%*’ specifier. If you 18393put a ‘%*’ somewhere in your format line definition, Gnus will place 18394point there. 18395 18396 18397File: gnus.info, Node: Tabulation, Prev: Positioning Point, Up: Formatting Variables 18398 183999.4.7 Tabulation 18400---------------- 18401 18402You can usually line up your displays by padding and cutting your 18403strings. However, when combining various strings of different size, it 18404can often be more convenient to just output the strings, and then worry 18405about lining up the following text afterwards. 18406 18407 To do that, Gnus supplies tabulator specs—‘%=’. There are two 18408different types—“hard tabulators” and “soft tabulators”. 18409 18410 ‘%50=’ will insert space characters to pad the line up to column 50. 18411If the text is already past column 50, nothing will be inserted. This 18412is the soft tabulator. 18413 18414 ‘%-50=’ will insert space characters to pad the line up to column 50. 18415If the text is already past column 50, the excess text past column 50 18416will be removed. This is the hard tabulator. 18417 18418 18419File: gnus.info, Node: Window Layout, Next: Tabbed Interface, Prev: Formatting Variables, Up: Various 18420 184219.5 Window Layout 18422================= 18423 18424No, there’s nothing here about X, so be quiet. 18425 18426 If ‘gnus-use-full-window’ non-‘nil’, Gnus will delete all other 18427windows and occupy the entire Emacs screen by itself. It is ‘t’ by 18428default. 18429 18430 Setting this variable to ‘nil’ kinda works, but there are glitches. 18431Use at your own peril. 18432 18433 ‘gnus-buffer-configuration’ describes how much space each Gnus buffer 18434should be given. Here’s an excerpt of this variable: 18435 18436 ((group (vertical 1.0 (group 1.0 point))) 18437 (article (vertical 1.0 (summary 0.25 point) 18438 (article 1.0)))) 18439 18440 This is an alist. The “key” is a symbol that names some action or 18441other. For instance, when displaying the group buffer, the window 18442configuration function will use ‘group’ as the key. A full list of 18443possible names is listed below. 18444 18445 The “value” (i.e., the “split”) says how much space each buffer 18446should occupy. To take the ‘article’ split as an example: 18447 18448 (article (vertical 1.0 (summary 0.25 point) 18449 (article 1.0))) 18450 18451 This “split” says that the summary buffer should occupy 25% of upper 18452half of the screen, and that it is placed over the article buffer. As 18453you may have noticed, 100% + 25% is actually 125% (yup, I saw y’all 18454reaching for that calculator there). However, the special number ‘1.0’ 18455is used to signal that this buffer should soak up all the rest of the 18456space available after the rest of the buffers have taken whatever they 18457need. There should be only one buffer with the ‘1.0’ size spec per 18458split. 18459 18460 Point will be put in the buffer that has the optional third element 18461‘point’. In a ‘frame’ split, the last subsplit having a leaf split 18462where the tag ‘frame-focus’ is a member (i.e., is the third or fourth 18463element in the list, depending on whether the ‘point’ tag is present) 18464gets focus. 18465 18466 Here’s a more complicated example: 18467 18468 (article (vertical 1.0 (group 4) 18469 (summary 0.25 point) 18470 (article 1.0))) 18471 18472 If the size spec is an integer instead of a floating point number, 18473then that number will be used to say how many lines a buffer should 18474occupy, not a percentage. 18475 18476 If the “split” looks like something that can be ‘eval’ed (to be 18477precise—if the ‘car’ of the split is a function or a subr), this split 18478will be ‘eval’ed. If the result is non-‘nil’, it will be used as a 18479split. 18480 18481 Not complicated enough for you? Well, try this on for size: 18482 18483 (article (horizontal 1.0 18484 (vertical 0.5 18485 (group 1.0)) 18486 (vertical 1.0 18487 (summary 0.25 point) 18488 (article 1.0)))) 18489 18490 Whoops. Two buffers with the mystery 100% tag. And what’s that 18491‘horizontal’ thingie? 18492 18493 If the first element in one of the split is ‘horizontal’, Gnus will 18494split the window horizontally, giving you two windows side-by-side. 18495Inside each of these strips you may carry on all you like in the normal 18496fashion. The number following ‘horizontal’ says what percentage of the 18497screen is to be given to this strip. 18498 18499 For each split, there _must_ be one element that has the 100% tag. 18500The splitting is never accurate, and this buffer will eat any leftover 18501lines from the splits. 18502 18503 To be slightly more formal, here’s a definition of what a valid split 18504may look like: 18505 18506 split = frame | horizontal | vertical | buffer | form 18507 frame = "(frame " size *split ")" 18508 horizontal = "(horizontal " size *split ")" 18509 vertical = "(vertical " size *split ")" 18510 buffer = "(" buf-name " " size *[ "point" ] *[ "frame-focus"] ")" 18511 size = number | frame-params 18512 buf-name = group | article | summary ... 18513 18514 The limitations are that the ‘frame’ split can only appear as the 18515top-level split. FORM should be an Emacs Lisp form that should return a 18516valid split. We see that each split is fully recursive, and may contain 18517any number of ‘vertical’ and ‘horizontal’ splits. 18518 18519 Finding the right sizes can be a bit complicated. No window may be 18520less than ‘gnus-window-min-height’ (default 1) characters high, and all 18521windows must be at least ‘gnus-window-min-width’ (default 1) characters 18522wide. Gnus will try to enforce this before applying the splits. If you 18523want to use the normal Emacs window width/height limit, you can just set 18524these two variables to ‘nil’. 18525 18526 If you’re not familiar with Emacs terminology, ‘horizontal’ and 18527‘vertical’ splits may work the opposite way of what you’d expect. 18528Windows inside a ‘horizontal’ split are shown side-by-side, and windows 18529within a ‘vertical’ split are shown above each other. 18530 18531 If you want to experiment with window placement, a good tip is to 18532call ‘gnus-configure-frame’ directly with a split. This is the function 18533that does all the real work when splitting buffers. Below is a pretty 18534nonsensical configuration with 5 windows; two for the group buffer and 18535three for the article buffer. (I said it was nonsensical.) If you 18536‘eval’ the statement below, you can get an idea of how that would look 18537straight away, without going through the normal Gnus channels. Play 18538with it until you’re satisfied, and then use ‘gnus-add-configuration’ to 18539add your new creation to the buffer configuration list. 18540 18541 (gnus-configure-frame 18542 '(horizontal 1.0 18543 (vertical 10 18544 (group 1.0) 18545 (article 0.3 point)) 18546 (vertical 1.0 18547 (article 1.0) 18548 (horizontal 4 18549 (group 1.0) 18550 (article 10))))) 18551 18552 You might want to have several frames as well. No prob—just use the 18553‘frame’ split: 18554 18555 (gnus-configure-frame 18556 '(frame 1.0 18557 (vertical 1.0 18558 (summary 0.25 point frame-focus) 18559 (article 1.0)) 18560 (vertical ((height . 5) (width . 15) 18561 (user-position . t) 18562 (left . -1) (top . 1)) 18563 (picon 1.0)))) 18564 18565 18566 This split will result in the familiar summary/article window 18567configuration in the first (or “main”) frame, while a small additional 18568frame will be created where picons will be shown. As you can see, 18569instead of the normal ‘1.0’ top-level spec, each additional split should 18570have a frame parameter alist as the size spec. *Note Frame Parameters: 18571(elisp)Frame Parameters. The list of all possible keys for 18572‘gnus-buffer-configuration’ can be found in its default value. 18573 18574 Note that the ‘message’ key is used for both ‘gnus-group-mail’ and 18575‘gnus-summary-mail-other-window’. If it is desirable to distinguish 18576between the two, something like this might be used: 18577 18578 (message (horizontal 1.0 18579 (vertical 1.0 (message 1.0 point)) 18580 (vertical 0.24 18581 (if (buffer-live-p gnus-summary-buffer) 18582 '(summary 0.5)) 18583 (group 1.0)))) 18584 18585 One common desire for a multiple frame split is to have a separate 18586frame for composing mail and news while leaving the original frame 18587intact. To accomplish that, something like the following can be done: 18588 18589 (message 18590 (frame 1.0 18591 (if (not (buffer-live-p gnus-summary-buffer)) 18592 (car (cdr (assoc 'group gnus-buffer-configuration))) 18593 (car (cdr (assoc 'summary gnus-buffer-configuration)))) 18594 (vertical ((user-position . t) (top . 1) (left . 1) 18595 (name . "Message")) 18596 (message 1.0 point)))) 18597 18598 Since the ‘gnus-buffer-configuration’ variable is so long and 18599complicated, there’s a function you can use to ease changing the config 18600of a single setting: ‘gnus-add-configuration’. If, for instance, you 18601want to change the ‘article’ setting, you could say: 18602 18603 (gnus-add-configuration 18604 '(article (vertical 1.0 18605 (group 4) 18606 (summary .25 point) 18607 (article 1.0)))) 18608 18609 You’d typically stick these ‘gnus-add-configuration’ calls in your 18610‘~/.gnus.el’ file or in some startup hook—they should be run after Gnus 18611has been loaded. 18612 18613 If all windows mentioned in the configuration are already visible, 18614Gnus won’t change the window configuration. If you always want to force 18615the “right” window configuration, you can set 18616‘gnus-always-force-window-configuration’ to non-‘nil’. 18617 18618 If you’re using tree displays (*note Tree Display::), and the tree 18619window is displayed vertically next to another window, you may also want 18620to fiddle with ‘gnus-tree-minimize-window’ to avoid having the windows 18621resized. 18622 18623 Lastly, it’s possible to make Gnus window layouts “atomic” (*note 18624Atomic Windows: (elisp)Atomic Windows.) by setting 18625‘gnus-use-atomic-windows’ to ‘t’. This will ensure that pop-up buffers 18626(e.g. help or completion buffers), will appear below or to the side of 18627the entire Gnus window layout and not, for example, squashed between the 18628summary and article buffers. 18629 186309.5.1 Window Configuration Names 18631-------------------------------- 18632 18633Here’s a list of most of the currently known window configurations, and 18634when they’re used: 18635 18636‘group’ 18637 The group buffer. 18638 18639‘summary’ 18640 Entering a group and showing only the summary. 18641 18642‘article’ 18643 Selecting an article. 18644 18645‘server’ 18646 The server buffer. 18647 18648‘browse’ 18649 Browsing groups from the server buffer. 18650 18651‘message’ 18652 Composing a (new) message. 18653 18654‘only-article’ 18655 Showing only the article buffer. 18656 18657‘edit-article’ 18658 Editing an article. 18659 18660‘edit-form’ 18661 Editing group parameters and the like. 18662 18663‘edit-score’ 18664 Editing a server definition. 18665 18666‘post’ 18667 Composing a news message. 18668 18669‘reply’ 18670 Replying or following up an article without yanking the text. 18671 18672‘forward’ 18673 Forwarding a message. 18674 18675‘reply-yank’ 18676 Replying or following up an article with yanking the text. 18677 18678‘mail-bound’ 18679 Bouncing a message. 18680 18681‘pipe’ 18682 Sending an article to an external process. 18683 18684‘bug’ 18685 Sending a bug report. 18686 18687‘score-trace’ 18688 Displaying the score trace. 18689 18690‘score-words’ 18691 Displaying the score words. 18692 18693‘split-trace’ 18694 Displaying the split trace. 18695 18696‘compose-bounce’ 18697 Composing a bounce message. 18698 18699‘mml-preview’ 18700 Previewing a MIME part. 18701 187029.5.2 Example Window Configurations 18703----------------------------------- 18704 18705 • Narrow left hand side occupied by group buffer. Right hand side 18706 split between summary buffer (top one-sixth) and article buffer 18707 (bottom). 18708 18709 +---+---------+ 18710 | G | Summary | 18711 | r +---------+ 18712 | o | | 18713 | u | Article | 18714 | p | | 18715 +---+---------+ 18716 18717 (gnus-add-configuration 18718 '(article 18719 (horizontal 1.0 18720 (vertical 25 (group 1.0)) 18721 (vertical 1.0 18722 (summary 0.16 point) 18723 (article 1.0))))) 18724 18725 (gnus-add-configuration 18726 '(summary 18727 (horizontal 1.0 18728 (vertical 25 (group 1.0)) 18729 (vertical 1.0 (summary 1.0 point))))) 18730 18731 18732File: gnus.info, Node: Tabbed Interface, Next: Faces and Fonts, Prev: Window Layout, Up: Various 18733 187349.6 Tabbed Interface 18735==================== 18736 18737Gnus supports display of different buffers in dedicated tabs that you 18738can select using the tab bar. 18739 18740 To open the group buffer in a new tab named ‘Gnus’, use: 18741 18742 (push '("\\`\\*Group\\*\\'" . 18743 (display-buffer-in-tab 18744 (tab-name . "Gnus"))) 18745 display-buffer-alist) 18746 18747 To read every summary in a separate explicitly named tab, use: 18748 18749 (push '("\\`\\*Summary .*\\*\\'" . 18750 (display-buffer-in-tab 18751 (tab-name . (lambda (buffer _alist) 18752 (setq buffer (buffer-name buffer)) 18753 (when (string-match "\\`\\*Summary \\(.*\\)\\*\\'" buffer) 18754 (format "Group %s" (match-string 1 buffer))))))) 18755 display-buffer-alist) 18756 18757 18758File: gnus.info, Node: Faces and Fonts, Next: Mode Lines, Prev: Tabbed Interface, Up: Various 18759 187609.7 Faces and Fonts 18761=================== 18762 18763Fiddling with fonts and faces used to be very difficult, but these days 18764it is very simple. You simply say ‘M-x customize-face’, pick out the 18765face you want to alter, and alter it via the standard Customize 18766interface. 18767 18768 18769File: gnus.info, Node: Mode Lines, Next: Highlighting and Menus, Prev: Faces and Fonts, Up: Various 18770 187719.8 Mode Lines 18772============== 18773 18774‘gnus-updated-mode-lines’ says what buffers should keep their mode lines 18775updated. It is a list of symbols. Supported symbols include ‘group’, 18776‘article’, ‘summary’, ‘server’, ‘browse’, and ‘tree’. If the 18777corresponding symbol is present, Gnus will keep that mode line updated 18778with information that may be pertinent. If this variable is ‘nil’, 18779screen refresh may be quicker. 18780 18781 By default, Gnus displays information on the current article in the 18782mode lines of the summary and article buffers. The information Gnus 18783wishes to display (e.g., the subject of the article) is often longer 18784than the mode lines, and therefore have to be cut off at some point. 18785The ‘gnus-mode-non-string-length’ variable says how long the other 18786elements on the line is (i.e., the non-info part). If you put 18787additional elements on the mode line (e.g., a clock), you should modify 18788this variable: 18789 18790 (add-hook 'display-time-hook 18791 (lambda () (setq gnus-mode-non-string-length 18792 (+ 21 18793 (if line-number-mode 5 0) 18794 (if column-number-mode 4 0) 18795 (length display-time-string))))) 18796 18797 If this variable is ‘nil’ (which is the default), the mode line 18798strings won’t be chopped off, and they won’t be padded either. Note 18799that the default is unlikely to be desirable, as even the percentage 18800complete in the buffer may be crowded off the mode line; the user should 18801configure this variable appropriately for her configuration. 18802 18803 18804File: gnus.info, Node: Highlighting and Menus, Next: Daemons, Prev: Mode Lines, Up: Various 18805 188069.9 Highlighting and Menus 18807========================== 18808 18809The ‘gnus-visual’ variable controls most of the Gnus-prettifying 18810aspects. If ‘nil’, Gnus won’t attempt to create menus or use fancy 18811colors or fonts. This will also inhibit loading the ‘gnus-vis.el’ file. 18812 18813 This variable can be a list of visual properties that are enabled. 18814The following elements are valid, and are all included by default: 18815 18816‘group-highlight’ 18817 Do highlights in the group buffer. 18818‘summary-highlight’ 18819 Do highlights in the summary buffer. 18820‘article-highlight’ 18821 Do highlights in the article buffer. 18822‘highlight’ 18823 Turn on highlighting in all buffers. 18824‘group-menu’ 18825 Create menus in the group buffer. 18826‘summary-menu’ 18827 Create menus in the summary buffers. 18828‘article-menu’ 18829 Create menus in the article buffer. 18830‘browse-menu’ 18831 Create menus in the browse buffer. 18832‘server-menu’ 18833 Create menus in the server buffer. 18834‘score-menu’ 18835 Create menus in the score buffers. 18836‘menu’ 18837 Create menus in all buffers. 18838 18839 So if you only want highlighting in the article buffer and menus in 18840all buffers, you could say something like: 18841 18842 (setq gnus-visual '(article-highlight menu)) 18843 18844 If you want highlighting only and no menus whatsoever, you’d say: 18845 18846 (setq gnus-visual '(highlight)) 18847 18848 If ‘gnus-visual’ is ‘t’, highlighting and menus will be used in all 18849Gnus buffers. 18850 18851 Other general variables that influence the look of all buffers 18852include: 18853 18854‘gnus-mouse-face’ 18855 This is the face (i.e., font) used for mouse highlighting in Gnus. 18856 No mouse highlights will be done if ‘gnus-visual’ is ‘nil’. 18857 18858 There are hooks associated with the creation of all the different 18859menus: 18860 18861‘gnus-article-menu-hook’ 18862 Hook called after creating the article mode menu. 18863 18864‘gnus-group-menu-hook’ 18865 Hook called after creating the group mode menu. 18866 18867‘gnus-summary-menu-hook’ 18868 Hook called after creating the summary mode menu. 18869 18870‘gnus-server-menu-hook’ 18871 Hook called after creating the server mode menu. 18872 18873‘gnus-browse-menu-hook’ 18874 Hook called after creating the browse mode menu. 18875 18876‘gnus-score-menu-hook’ 18877 Hook called after creating the score mode menu. 18878 18879 18880File: gnus.info, Node: Daemons, Next: Undo, Prev: Highlighting and Menus, Up: Various 18881 188829.10 Daemons 18883============ 18884 18885Gnus, being larger than any program ever written (allegedly), does lots 18886of strange stuff that you may wish to have done while you’re not 18887present. For instance, you may want it to check for new mail once in a 18888while. Or you may want it to close down all connections to all servers 18889when you leave Emacs idle. And stuff like that. 18890 18891 Gnus will let you do stuff like that by defining various “handlers”. 18892Each handler consists of three elements: A FUNCTION, a TIME, and an IDLE 18893parameter. 18894 18895 Here’s an example of a handler that closes connections when Emacs has 18896been idle for thirty minutes: 18897 18898 (gnus-demon-close-connections nil 30) 18899 18900 Here’s a handler that scans for PGP headers every hour when Emacs is 18901idle: 18902 18903 (gnus-demon-scan-pgp 60 t) 18904 18905 This TIME parameter and that IDLE parameter work together in a 18906strange, but wonderful fashion. Basically, if IDLE is ‘nil’, then the 18907function will be called every TIME minutes. 18908 18909 If IDLE is ‘t’, then the function will be called after TIME minutes 18910only if Emacs is idle. So if Emacs is never idle, the function will 18911never be called. But once Emacs goes idle, the function will be called 18912every TIME minutes. 18913 18914 If IDLE is a number and TIME is a number, the function will be called 18915every TIME minutes only when Emacs has been idle for IDLE minutes. 18916 18917 If IDLE is a number and TIME is ‘nil’, the function will be called 18918once every time Emacs has been idle for IDLE minutes. 18919 18920 And if TIME is a string, it should look like ‘07:31’, and the 18921function will then be called once every day somewhere near that time. 18922Modified by the IDLE parameter, of course. 18923 18924 (When I say “minute” here, I really mean ‘gnus-demon-timestep’ 18925seconds. This is 60 by default. If you change that variable, all the 18926timings in the handlers will be affected.) 18927 18928 So, if you want to add a handler, you could put something like this 18929in your ‘~/.gnus.el’ file: 18930 18931 (gnus-demon-add-handler 'gnus-demon-close-connections 30 t) 18932 18933 Some ready-made functions to do this have been created: 18934‘gnus-demon-add-disconnection’, ‘gnus-demon-add-nntp-close-connection’, 18935‘gnus-demon-add-scan-timestamps’, ‘gnus-demon-add-rescan’, and 18936‘gnus-demon-add-scanmail’. Just put those functions in your 18937‘~/.gnus.el’ if you want those abilities. 18938 18939 If you add handlers to ‘gnus-demon-handlers’ directly, you should run 18940‘gnus-demon-init’ to make the changes take hold. To cancel all daemons, 18941you can use the ‘gnus-demon-cancel’ function. 18942 18943 Note that adding daemons can be pretty naughty if you over do it. 18944Adding functions that scan all news and mail from all servers every two 18945seconds is a sure-fire way of getting booted off any respectable system. 18946So behave. 18947 18948 18949File: gnus.info, Node: Undo, Next: Predicate Specifiers, Prev: Daemons, Up: Various 18950 189519.11 Undo 18952========= 18953 18954It is very useful to be able to undo actions one has done. In normal 18955Emacs buffers, it’s easy enough—you just push the ‘undo’ button. In 18956Gnus buffers, however, it isn’t that simple. 18957 18958 The things Gnus displays in its buffer is of no value whatsoever to 18959Gnus—it’s all just data designed to look nice to the user. Killing a 18960group in the group buffer with ‘C-k’ makes the line disappear, but 18961that’s just a side-effect of the real action—the removal of the group in 18962question from the internal Gnus structures. Undoing something like that 18963can’t be done by the normal Emacs ‘undo’ function. 18964 18965 Gnus tries to remedy this somewhat by keeping track of what the user 18966does and coming up with actions that would reverse the actions the user 18967takes. When the user then presses the ‘undo’ key, Gnus will run the 18968code to reverse the previous action, or the previous actions. However, 18969not all actions are easily reversible, so Gnus currently offers a few 18970key functions to be undoable. These include killing groups, yanking 18971groups, and changing the list of read articles of groups. That’s it, 18972really. More functions may be added in the future, but each added 18973function means an increase in data to be stored, so Gnus will never be 18974totally undoable. 18975 18976 The undoability is provided by the ‘gnus-undo-mode’ minor mode. It 18977is used if ‘gnus-use-undo’ is non-‘nil’, which is the default. The 18978‘C-M-_’ key performs the ‘gnus-undo’ command, which should feel kinda 18979like the normal Emacs ‘undo’ command. 18980 18981 18982File: gnus.info, Node: Predicate Specifiers, Next: Moderation, Prev: Undo, Up: Various 18983 189849.12 Predicate Specifiers 18985========================= 18986 18987Some Gnus variables are “predicate specifiers”. This is a special form 18988that allows flexible specification of predicates without having to type 18989all that much. 18990 18991 These specifiers are lists consisting of functions, symbols and 18992lists. 18993 18994 Here’s an example: 18995 18996 (or gnus-article-unseen-p 18997 gnus-article-unread-p) 18998 18999 The available symbols are ‘or’, ‘and’ and ‘not’. The functions all 19000take one parameter. 19001 19002 Internally, Gnus calls ‘gnus-make-predicate’ on these specifiers to 19003create a function that can be called. This input parameter to this 19004function will be passed along to all the functions in the predicate 19005specifier. 19006 19007 19008File: gnus.info, Node: Moderation, Next: Fetching a Group, Prev: Predicate Specifiers, Up: Various 19009 190109.13 Moderation 19011=============== 19012 19013If you are a moderator, you can use the ‘gnus-mdrtn.el’ package. It is 19014not included in the standard Gnus package. Write a mail to 19015‘larsi@gnus.org’ and state what group you moderate, and you’ll get a 19016copy. 19017 19018 The moderation package is implemented as a minor mode for summary 19019buffers. Put 19020 19021 (add-hook 'gnus-summary-mode-hook 'gnus-moderate) 19022 19023 in your ‘~/.gnus.el’ file. 19024 19025 If you are the moderator of ‘rec.zoofle’, this is how it’s supposed 19026to work: 19027 19028 1. You split your incoming mail by matching on 19029 ‘Newsgroups:.*rec.zoofle’, which will put all the to-be-posted 19030 articles in some mail group—for instance, ‘nnml:rec.zoofle’. 19031 19032 2. You enter that group once in a while and post articles using the 19033 ‘e’ (edit-and-post) or ‘s’ (just send unedited) commands. 19034 19035 3. If, while reading the ‘rec.zoofle’ newsgroup, you happen upon some 19036 articles that weren’t approved by you, you can cancel them with the 19037 ‘c’ command. 19038 19039 To use moderation mode in these two groups, say: 19040 19041 (setq gnus-moderated-list 19042 "^nnml:rec.zoofle$\\|^rec.zoofle$") 19043 19044 19045File: gnus.info, Node: Fetching a Group, Next: Image Enhancements, Prev: Moderation, Up: Various 19046 190479.14 Fetching a Group 19048===================== 19049 19050It is sometimes convenient to be able to just say “I want to read this 19051group and I don’t care whether Gnus has been started or not”. This is 19052perhaps more useful for people who write code than for users, but the 19053command ‘gnus-fetch-group’ provides this functionality in any case. It 19054takes the group name as a parameter. 19055 19056 19057File: gnus.info, Node: Image Enhancements, Next: Fuzzy Matching, Prev: Fetching a Group, Up: Various 19058 190599.15 Image Enhancements 19060======================= 19061 19062Emacs 21(1) and up are able to display pictures and stuff, so Gnus has 19063taken advantage of that. 19064 19065* Menu: 19066 19067* X-Face:: Display a funky, teensy black-and-white image. 19068* Face:: Display a funkier, teensier colored image. 19069* Smileys:: Show all those happy faces the way they were meant to be shown. 19070* Picons:: How to display pictures of what you’re reading. 19071* Gravatars:: Display the avatar of people you read. 19072 19073 ---------- Footnotes ---------- 19074 19075 (1) Emacs 21 on MS Windows doesn’t support images, Emacs 22 does. 19076 19077 19078File: gnus.info, Node: X-Face, Next: Face, Up: Image Enhancements 19079 190809.15.1 X-Face 19081------------- 19082 19083‘X-Face’ headers describe a 48x48 pixel black-and-white (1 bit depth) 19084image that’s supposed to represent the author of the message. It seems 19085to be supported by an ever-growing number of mail and news readers. 19086 19087 Viewing an ‘X-Face’ header either requires an Emacs that has 19088‘compface’ support, or that you have suitable conversion or display 19089programs installed. If your Emacs has image support the default action 19090is to display the face before the ‘From’ header. If there’s no native 19091‘X-Face’ support, Gnus will try to convert the ‘X-Face’ header using 19092external programs from the ‘pbmplus’ package and friends, see below. 19093The default action under Emacs without image support is to fork off the 19094‘display’ program. 19095 19096 On a GNU/Linux system, the ‘display’ program is included in the 19097ImageMagick package. For external conversion programs look for packages 19098with names like ‘netpbm’, ‘libgr-progs’ and ‘compface’. On Windows, you 19099may use the packages ‘netpbm’ and ‘compface’ from 19100<http://gnuwin32.sourceforge.net>. You need to add the ‘bin’ directory 19101to your ‘PATH’ environment variable. 19102 19103 The variable ‘gnus-article-x-face-command’ controls which programs 19104are used to display the ‘X-Face’ header. If this variable is a string, 19105this string will be executed in a sub-shell. If it is a function, this 19106function will be called with the face as the argument. If 19107‘gnus-article-x-face-too-ugly’ (which is a regexp) matches the ‘From’ 19108header, the face will not be shown. 19109 19110 (Note: ‘x-face’ is used in the variable/function names, not ‘xface’). 19111 19112Face and variable: 19113 19114‘gnus-x-face’ 19115 Face to show X-Face. The colors from this face are used as the 19116 foreground and background colors of the displayed X-Faces. The 19117 default colors are black and white. 19118 19119‘gnus-face-properties-alist’ 19120 Alist of image types and properties applied to Face (*note Face::) 19121 and X-Face images. The default value is ‘((pbm . (:face 19122 gnus-x-face)) (png . nil))’. Here are examples: 19123 19124 ;; Specify the altitude of Face and X-Face images in the From header. 19125 (setq gnus-face-properties-alist 19126 '((pbm . (:face gnus-x-face :ascent 80)) 19127 (png . (:ascent 80)))) 19128 19129 ;; Show Face and X-Face images as pressed buttons. 19130 (setq gnus-face-properties-alist 19131 '((pbm . (:face gnus-x-face :relief -2)) 19132 (png . (:relief -2)))) 19133 19134 *Note (elisp)Image Descriptors::, for the valid properties for 19135 various image types. Currently, ‘pbm’ is used for X-Face images 19136 and ‘png’ is used for Face images in Emacs. 19137 19138 If you use posting styles, you can use an ‘x-face-file’ entry in 19139‘gnus-posting-styles’, *Note Posting Styles::. If you don’t, Gnus 19140provides a few convenience functions and variables to allow easier 19141insertion of X-Face headers in outgoing messages. You also need the 19142above mentioned ImageMagick, netpbm or other image conversion packages 19143(depending the values of the variables below) for these functions. 19144 19145 ‘gnus-random-x-face’ goes through all the ‘pbm’ files in 19146‘gnus-x-face-directory’ and picks one at random, and then converts it to 19147the X-Face format by using the ‘gnus-convert-pbm-to-x-face-command’ 19148shell command. The ‘pbm’ files should be 48x48 pixels big. It returns 19149the X-Face header data as a string. 19150 19151 ‘gnus-insert-random-x-face-header’ calls ‘gnus-random-x-face’ and 19152inserts a ‘X-Face’ header with the randomly generated data. 19153 19154 ‘gnus-x-face-from-file’ takes a GIF file as the parameter, and then 19155converts the file to X-Face format by using the 19156‘gnus-convert-image-to-x-face-command’ shell command. 19157 19158 Here’s how you would typically use the first function. Put something 19159like the following in your ‘~/.gnus.el’ file: 19160 19161 (setq message-required-news-headers 19162 (nconc message-required-news-headers 19163 (list '(X-Face . gnus-random-x-face)))) 19164 19165 Using the last function would be something like this: 19166 19167 (setq message-required-news-headers 19168 (nconc message-required-news-headers 19169 (list '(X-Face . (lambda () 19170 (gnus-x-face-from-file 19171 "~/My-face.gif")))))) 19172 19173 19174File: gnus.info, Node: Face, Next: Smileys, Prev: X-Face, Up: Image Enhancements 19175 191769.15.2 Face 19177----------- 19178 19179‘Face’ headers are essentially a funkier version of ‘X-Face’ ones. They 19180describe a 48x48 pixel colored image that’s supposed to represent the 19181author of the message. 19182 19183 The contents of a ‘Face’ header must be a base64 encoded PNG image. 19184See <https://quimby.gnus.org/circus/face/> for the precise 19185specifications. 19186 19187 The ‘gnus-face-properties-alist’ variable affects the appearance of 19188displayed Face images. *Note X-Face::. 19189 19190 Viewing a ‘Face’ header requires an Emacs that is able to display PNG 19191images. 19192 19193 Gnus provides a few convenience functions and variables to allow 19194easier insertion of Face headers in outgoing messages. 19195 19196 ‘gnus-convert-png-to-face’ takes a 48x48 PNG image, no longer than 19197726 bytes long, and converts it to a face. 19198 19199 ‘gnus-face-from-file’ takes a JPEG file as the parameter, and then 19200converts the file to Face format by using the 19201‘gnus-convert-image-to-face-command’ shell command. 19202 19203 Here’s how you would typically use this function. Put something like 19204the following in your ‘~/.gnus.el’ file: 19205 19206 (setq message-required-news-headers 19207 (nconc message-required-news-headers 19208 (list '(Face . (lambda () 19209 (gnus-face-from-file "~/face.jpg")))))) 19210 19211 19212File: gnus.info, Node: Smileys, Next: Picons, Prev: Face, Up: Image Enhancements 19213 192149.15.3 Smileys 19215-------------- 19216 19217“Smiley” is a package separate from Gnus, but since Gnus is currently 19218the only package that uses Smiley, it is documented here. 19219 19220 In short—to use Smiley in Gnus, put the following in your 19221‘~/.gnus.el’ file: 19222 19223 (setq gnus-treat-display-smileys t) 19224 19225 Smiley maps text smiley faces—‘:-)’, ‘8-)’, ‘:-(’ and the like—to 19226pictures and displays those instead of the text smiley faces. The 19227conversion is controlled by a list of regexps that matches text and maps 19228that to file names. 19229 19230 The alist used is specified by the ‘smiley-regexp-alist’ variable. 19231The first item in each element is the regexp to be matched; the second 19232element is the regexp match group that is to be replaced by the picture; 19233and the third element is the name of the file to be displayed. 19234 19235 The following variables customize the appearance of the smileys: 19236 19237‘smiley-style’ 19238 Specifies the smiley style. Predefined smiley styles include 19239 ‘low-color’ (small 13x14 pixel, three-color images), ‘medium’ (more 19240 colorful images, 16x16 pixel), and ‘grayscale’ (grayscale images, 19241 14x14 pixel). The default depends on the height of the default 19242 face. 19243 19244‘smiley-data-directory’ 19245 Where Smiley will look for smiley faces files. You shouldn’t set 19246 this variable anymore. Customize ‘smiley-style’ instead. 19247 19248‘gnus-smiley-file-types’ 19249 List of suffixes on smiley file names to try. 19250 19251 19252File: gnus.info, Node: Picons, Next: Gravatars, Prev: Smileys, Up: Image Enhancements 19253 192549.15.4 Picons 19255------------- 19256 19257So... You want to slow down your news reader even more! This is a good 19258way to do so. It’s also a great way to impress people staring over your 19259shoulder as you read news. 19260 19261 What are Picons? To quote directly from the Picons Web site: 19262 19263 “Picons” is short for “personal icons”. They’re small, constrained 19264 images used to represent users and domains on the net, organized 19265 into databases so that the appropriate image for a given e-mail 19266 address can be found. Besides users and domains, there are picon 19267 databases for Usenet newsgroups and weather forecasts. The picons 19268 are in either monochrome ‘XBM’ format or color ‘XPM’ and ‘GIF’ 19269 formats. 19270 19271 For instructions on obtaining and installing the picons databases, 19272point your Web browser at <https://cs.indiana.edu/ftp/faces/picons/>. 19273 19274 If you are using Debian GNU/Linux, saying ‘apt-get install picon-.*’ 19275will install the picons where Gnus can find them. 19276 19277 To enable displaying picons, simply make sure that 19278‘gnus-picon-databases’ points to the directory containing the Picons 19279databases. 19280 19281 The variable ‘gnus-picon-style’ controls how picons are displayed. 19282If ‘inline’, the textual representation is replaced. If ‘right’, picons 19283are added right to the textual representation. 19284 19285 The value of the variable ‘gnus-picon-properties’ is a list of 19286properties applied to picons. 19287 19288 The following variables offer control over where things are located. 19289 19290‘gnus-picon-databases’ 19291 The location of the picons database. This is a list of directories 19292 containing the ‘news’, ‘domains’, ‘users’ (and so on) 19293 subdirectories. Defaults to ‘("/usr/lib/picon" 19294 "/usr/local/faces")’. 19295 19296‘gnus-picon-news-directories’ 19297 List of subdirectories to search in ‘gnus-picon-databases’ for 19298 newsgroups faces. ‘("news")’ is the default. 19299 19300‘gnus-picon-user-directories’ 19301 List of subdirectories to search in ‘gnus-picon-databases’ for user 19302 faces. ‘("users" "usenix" "local" "misc")’ is the default. 19303 19304‘gnus-picon-domain-directories’ 19305 List of subdirectories to search in ‘gnus-picon-databases’ for 19306 domain name faces. Defaults to ‘("domains")’. Some people may 19307 want to add ‘"unknown"’ to this list. 19308 19309‘gnus-picon-file-types’ 19310 Ordered list of suffixes on picon file names to try. Defaults to 19311 ‘("xpm" "gif" "xbm")’ minus those not built-in your Emacs. 19312 19313‘gnus-picon-inhibit-top-level-domains’ 19314 If non-‘nil’ (which is the default), don’t display picons for 19315 things like ‘.net’ and ‘.de’, which aren’t usually very 19316 interesting. 19317 19318 19319File: gnus.info, Node: Gravatars, Prev: Picons, Up: Image Enhancements 19320 193219.15.5 Gravatars 19322---------------- 19323 19324A gravatar is an image registered to an e-mail address. 19325 19326 You can submit yours on-line at <https://en.gravatar.com/>. 19327 19328 The following variables offer control over how things are displayed. 19329 19330‘gnus-gravatar-size’ 19331 The size in pixels of gravatars. Gravatars are always square, so 19332 one number for the size is enough. If ‘nil’, this defaults to the 19333 value of ‘gravatar-size’. 19334 19335‘gnus-gravatar-properties’ 19336 List of image properties applied to Gravatar images (*note 19337 (elisp)Image Descriptors::). 19338 19339‘gnus-gravatar-too-ugly’ 19340 Regexp that matches mail addresses or names of people whose avatars 19341 should not be displayed, or ‘nil’ to display all avatars. It 19342 defaults to the value of ‘gnus-article-x-face-too-ugly’ (*note 19343 X-Face::). 19344 19345 If you want to see gravatars in the From field, set: 19346 19347 (setq gnus-treat-from-gravatar 'head) 19348 19349 If you want to see them in the Cc and To fields, set: 19350 19351 (setq gnus-treat-mail-gravatar 'head) 19352 193539.15.5.1 Toolbar 19354................ 19355 19356‘gnus-use-toolbar’ 19357 This variable specifies the position to display the toolbar. If 19358 ‘nil’, don’t display toolbars. If it is non-‘nil’, it should be 19359 one of the symbols ‘default’, ‘top’, ‘bottom’, ‘right’, and ‘left’. 19360 ‘default’ means to use the default toolbar, the rest mean to 19361 display the toolbar on the place which those names show. The 19362 default is ‘default’. 19363 19364‘gnus-toolbar-thickness’ 19365 Cons of the height and the width specifying the thickness of a 19366 toolbar. The height is used for the toolbar displayed on the top 19367 or the bottom, the width is used for the toolbar displayed on the 19368 right or the left. The default is that of the default toolbar. 19369 19370‘gnus-group-toolbar’ 19371 The toolbar in the group buffer. 19372 19373‘gnus-summary-toolbar’ 19374 The toolbar in the summary buffer. 19375 19376‘gnus-summary-mail-toolbar’ 19377 The toolbar in the summary buffer of mail groups. 19378 19379 19380File: gnus.info, Node: Fuzzy Matching, Next: Thwarting Email Spam, Prev: Image Enhancements, Up: Various 19381 193829.16 Fuzzy Matching 19383=================== 19384 19385Gnus provides “fuzzy matching” of ‘Subject’ lines when doing things like 19386scoring, thread gathering and thread comparison. 19387 19388 As opposed to regular expression matching, fuzzy matching is very 19389fuzzy. It’s so fuzzy that there’s not even a definition of what 19390“fuzziness” means, and the implementation has changed over time. 19391 19392 Basically, it tries to remove all noise from lines before comparing. 19393‘Re: ’, parenthetical remarks, white space, and so on, are filtered out 19394of the strings before comparing the results. This often leads to 19395adequate results—even when faced with strings generated by text manglers 19396masquerading as newsreaders. 19397 19398 19399File: gnus.info, Node: Thwarting Email Spam, Next: Spam Package, Prev: Fuzzy Matching, Up: Various 19400 194019.17 Thwarting Email Spam 19402========================= 19403 19404In these last days of the Usenet, commercial vultures are hanging about 19405and grepping through news like crazy to find email addresses they can 19406foist off their scams and products to. As a reaction to this, many 19407people have started putting nonsense addresses into their ‘From’ lines. 19408I think this is counterproductive—it makes it difficult for people to 19409send you legitimate mail in response to things you write, as well as 19410making it difficult to see who wrote what. This rewriting may perhaps 19411be a bigger menace than the unsolicited commercial email itself in the 19412end. 19413 19414 The biggest problem I have with email spam is that it comes in under 19415false pretenses. I press ‘g’ and Gnus merrily informs me that I have 10 19416new emails. I say “Golly gee! Happy is me!” and select the mail group, 19417only to find two pyramid schemes, seven advertisements (“New! Miracle 19418tonic for growing full, lustrous hair on your toes!”) and one mail 19419asking me to repent and find some god. 19420 19421 This is annoying. Here’s what you can do about it. 19422 19423* Menu: 19424 19425* The problem of spam:: Some background, and some solutions 19426* Anti-Spam Basics:: Simple steps to reduce the amount of spam. 19427* SpamAssassin:: How to use external anti-spam tools. 19428* Hashcash:: Reduce spam by burning CPU time. 19429 19430 19431File: gnus.info, Node: The problem of spam, Next: Anti-Spam Basics, Up: Thwarting Email Spam 19432 194339.17.1 The problem of spam 19434-------------------------- 19435 19436First, some background on spam. 19437 19438 If you have access to e-mail, you are familiar with spam (technically 19439termed UCE, Unsolicited Commercial E-mail). Simply put, it exists 19440because e-mail delivery is very cheap compared to paper mail, so only a 19441very small percentage of people need to respond to an UCE to make it 19442worthwhile to the advertiser. Ironically, one of the most common spams 19443is the one offering a database of e-mail addresses for further spamming. 19444Senders of spam are usually called _spammers_, but terms like _vermin_, 19445_scum_, _sociopaths_, and _morons_ are in common use as well. 19446 19447 Spam comes from a wide variety of sources. It is simply impossible 19448to dispose of all spam without discarding useful messages. A good 19449example is the TMDA system, which requires senders unknown to you to 19450confirm themselves as legitimate senders before their e-mail can reach 19451you. Without getting into the technical side of TMDA, a downside is 19452clearly that e-mail from legitimate sources may be discarded if those 19453sources can’t or won’t confirm themselves through the TMDA system. 19454Another problem with TMDA is that it requires its users to have a basic 19455understanding of e-mail delivery and processing. 19456 19457 The simplest approach to filtering spam is filtering, at the mail 19458server or when you sort through incoming mail. If you get 200 spam 19459messages per day from ‘random-address@vmadmin.com’, you block 19460‘vmadmin.com’. If you get 200 messages about ‘VIAGRA’, you discard all 19461messages with ‘VIAGRA’ in the message. If you get lots of spam from 19462Bulgaria, for example, you try to filter all mail from Bulgarian IPs. 19463 19464 This, unfortunately, is a great way to discard legitimate e-mail. 19465The risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, 19466etc.) or even a continent (Asia, Africa, Europe, etc.) from contacting 19467you should be obvious, so don’t do it if you have the choice. 19468 19469 In another instance, the very informative and useful RISKS digest has 19470been blocked by overzealous mail filters because it *contained* words 19471that were common in spam messages. Nevertheless, in isolated cases, 19472with great care, direct filtering of mail can be useful. 19473 19474 Another approach to filtering e-mail is the distributed spam 19475processing, for instance DCC implements such a system. In essence, N 19476systems around the world agree that a machine X in Ghana, Estonia, or 19477California is sending out spam e-mail, and these N systems enter X or 19478the spam e-mail from X into a database. The criteria for spam detection 19479vary—it may be the number of messages sent, the content of the messages, 19480and so on. When a user of the distributed processing system wants to 19481find out if a message is spam, he consults one of those N systems. 19482 19483 Distributed spam processing works very well against spammers that 19484send a large number of messages at once, but it requires the user to set 19485up fairly complicated checks. There are commercial and free distributed 19486spam processing systems. Distributed spam processing has its risks as 19487well. For instance legitimate e-mail senders have been accused of 19488sending spam, and their web sites and mailing lists have been shut down 19489for some time because of the incident. 19490 19491 The statistical approach to spam filtering is also popular. It is 19492based on a statistical analysis of previous spam messages. Usually the 19493analysis is a simple word frequency count, with perhaps pairs of words 19494or 3-word combinations thrown into the mix. Statistical analysis of 19495spam works very well in most of the cases, but it can classify 19496legitimate e-mail as spam in some cases. It takes time to run the 19497analysis, the full message must be analyzed, and the user has to store 19498the database of spam analysis. Statistical analysis on the server is 19499gaining popularity. This has the advantage of letting the user Just 19500Read Mail, but has the disadvantage that it’s harder to tell the server 19501that it has misclassified mail. 19502 19503 Fighting spam is not easy, no matter what anyone says. There is no 19504magic switch that will distinguish Viagra ads from Mom’s e-mails. Even 19505people are having a hard time telling spam apart from non-spam, because 19506spammers are actively looking to fool us into thinking they are Mom, 19507essentially. Spamming is irritating, irresponsible, and idiotic 19508behavior from a bunch of people who think the world owes them a favor. 19509We hope the following sections will help you in fighting the spam 19510plague. 19511 19512 19513File: gnus.info, Node: Anti-Spam Basics, Next: SpamAssassin, Prev: The problem of spam, Up: Thwarting Email Spam 19514 195159.17.2 Anti-Spam Basics 19516----------------------- 19517 19518One way of dealing with spam is having Gnus split out all spam into a 19519‘spam’ mail group (*note Splitting Mail::). 19520 19521 First, pick one (1) valid mail address that you can be reached at, 19522and put it in your ‘From’ header of all your news articles. (I’ve 19523chosen ‘larsi@trym.ifi.uio.no’, but for many addresses on the form 19524‘larsi+usenet@ifi.uio.no’ will be a better choice. Ask your sysadmin 19525whether your sendmail installation accepts keywords in the local part of 19526the mail address.) 19527 19528 (setq message-default-news-headers 19529 "From: Lars Magne Ingebrigtsen <larsi@trym.ifi.uio.no>\n") 19530 19531 Then put the following split rule in ‘nnmail-split-fancy’ (*note 19532Fancy Mail Splitting::): 19533 19534 (... 19535 (to "larsi@trym.ifi.uio.no" 19536 (| ("subject" "re:.*" "misc") 19537 ("references" ".*@.*" "misc") 19538 "spam")) 19539 ...) 19540 19541 This says that all mail to this address is suspect, but if it has a 19542‘Subject’ that starts with a ‘Re:’ or has a ‘References’ header, it’s 19543probably ok. All the rest goes to the ‘spam’ group. (This idea 19544probably comes from Tim Pierce.) 19545 19546 In addition, many mail spammers talk directly to your SMTP server and 19547do not include your email address explicitly in the ‘To’ header. Why 19548they do this is unknown—perhaps it’s to thwart this thwarting scheme? 19549In any case, this is trivial to deal with—you just put anything not 19550addressed to you in the ‘spam’ group by ending your fancy split rule in 19551this way: 19552 19553 ( 19554 ... 19555 (to "larsi" "misc") 19556 "spam") 19557 19558 In my experience, this will sort virtually everything into the right 19559group. You still have to check the ‘spam’ group from time to time to 19560check for legitimate mail, though. If you feel like being a good net 19561citizen, you can even send off complaints to the proper authorities on 19562each unsolicited commercial email—at your leisure. 19563 19564 This works for me. It allows people an easy way to contact me (they 19565can just press ‘r’ in the usual way), and I’m not bothered at all with 19566spam. It’s a win-win situation. Forging ‘From’ headers to point to 19567non-existent domains is yucky, in my opinion. 19568 19569 Be careful with this approach. Spammers are wise to it. 19570 19571 19572File: gnus.info, Node: SpamAssassin, Next: Hashcash, Prev: Anti-Spam Basics, Up: Thwarting Email Spam 19573 195749.17.3 SpamAssassin, Vipul’s Razor, DCC, etc 19575-------------------------------------------- 19576 19577The days where the hints in the previous section were sufficient in 19578avoiding spam are coming to an end. There are many tools out there that 19579claim to reduce the amount of spam you get. This section could easily 19580become outdated fast, as new products replace old, but fortunately most 19581of these tools seem to have similar interfaces. Even though this 19582section will use SpamAssassin as an example, it should be easy to adapt 19583it to most other tools. 19584 19585 Note that this section does not involve the ‘spam.el’ package, which 19586is discussed in the next section. If you don’t care for all the 19587features of ‘spam.el’, you can make do with these simple recipes. 19588 19589 If the tool you are using is not installed on the mail server, you 19590need to invoke it yourself. Ideas on how to use the ‘:postscript’ mail 19591source parameter (*note Mail Source Specifiers::) follow. 19592 19593 (setq mail-sources 19594 '((file :prescript "formail -bs spamassassin < /var/mail/%u") 19595 (pop :user "jrl" 19596 :server "pophost" 19597 :postscript 19598 "mv %t /tmp/foo; formail -bs spamc < /tmp/foo > %t"))) 19599 19600 Once you manage to process your incoming spool somehow, thus making 19601the mail contain, e.g., a header indicating it is spam, you are ready to 19602filter it out. Using normal split methods (*note Splitting Mail::): 19603 19604 (setq nnmail-split-methods '(("spam" "^X-Spam-Flag: YES") 19605 ...)) 19606 19607 Or using fancy split methods (*note Fancy Mail Splitting::): 19608 19609 (setq nnmail-split-methods 'nnmail-split-fancy 19610 nnmail-split-fancy '(| ("X-Spam-Flag" "YES" "spam") 19611 ...)) 19612 19613 Some people might not like the idea of piping the mail through 19614various programs using a ‘:prescript’ (if some program is buggy, you 19615might lose all mail). If you are one of them, another solution is to 19616call the external tools during splitting. Example fancy split method: 19617 19618 (setq nnmail-split-fancy '(| (: kevin-spamassassin) 19619 ...)) 19620 (defun kevin-spamassassin () 19621 (save-excursion 19622 (save-restriction 19623 (widen) 19624 (if (eq 1 (call-process-region (point-min) (point-max) 19625 "spamc" nil nil nil "-c")) 19626 "spam")))) 19627 19628 Note that with the nnimap back end, message bodies will not be 19629downloaded by default. You need to set ‘nnimap-split-download-body’ to 19630‘t’ to do that (*note Client-Side IMAP Splitting::). 19631 19632 That is about it. As some spam is likely to get through anyway, you 19633might want to have a nifty function to call when you happen to read 19634spam. And here is the nifty function: 19635 19636 (defun my-gnus-raze-spam () 19637 "Submit SPAM to Vipul's Razor, then mark it as expirable." 19638 (interactive) 19639 (gnus-summary-save-in-pipe "razor-report -f -d" t) 19640 (gnus-summary-mark-as-expirable 1)) 19641 19642 19643File: gnus.info, Node: Hashcash, Prev: SpamAssassin, Up: Thwarting Email Spam 19644 196459.17.4 Hashcash 19646--------------- 19647 19648A novel technique to fight spam is to require senders to do something 19649costly and demonstrably unique for each message they send. This has the 19650obvious drawback that you cannot rely on everyone in the world using 19651this technique, since it is not part of the Internet standards, but it 19652may be useful in smaller communities. 19653 19654 While the tools in the previous section work well in practice, they 19655work only because the tools are constantly maintained and updated as new 19656form of spam appears. This means that a small percentage of spam will 19657always get through. It also means that somewhere, someone needs to read 19658lots of spam to update these tools. Hashcash avoids that, but instead 19659prefers that everyone you contact through e-mail supports the scheme. 19660You can view the two approaches as pragmatic vs dogmatic. The 19661approaches have their own advantages and disadvantages, but as often in 19662the real world, a combination of them is stronger than either one of 19663them separately. 19664 19665 The “something costly” is to burn CPU time, more specifically to 19666compute a hash collision up to a certain number of bits. The resulting 19667hashcash cookie is inserted in a ‘X-Hashcash:’ header. For more 19668details, and for the external application ‘hashcash’ you need to install 19669to use this feature, see <http://www.hashcash.org/>. 19670 19671 If you wish to generate hashcash for each message you send, you can 19672customize ‘message-generate-hashcash’ (*note Mail Headers: (message)Mail 19673Headers.), as in: 19674 19675 (setq message-generate-hashcash t) 19676 19677 You will need to set up some additional variables as well: 19678 19679‘hashcash-default-payment’ 19680 This variable indicates the default number of bits the hash 19681 collision should consist of. By default this is 20. Suggested 19682 useful values include 17 to 29. 19683 19684‘hashcash-payment-alist’ 19685 Some receivers may require you to spend burn more CPU time than the 19686 default. This variable contains a list of ‘(ADDR AMOUNT)’ cells, 19687 where ADDR is the receiver (email address or newsgroup) and AMOUNT 19688 is the number of bits in the collision that is needed. It can also 19689 contain ‘(ADDR STRING AMOUNT)’ cells, where the STRING is the 19690 string to use (normally the email address or newsgroup name is 19691 used). 19692 19693‘hashcash-path’ 19694 Where the ‘hashcash’ binary is installed. This variable should be 19695 automatically set by ‘executable-find’, but if it’s ‘nil’ (usually 19696 because the ‘hashcash’ binary is not in your path) you’ll get a 19697 warning when you check hashcash payments and an error when you 19698 generate hashcash payments. 19699 19700 Gnus can verify hashcash cookies, although this can also be done by 19701hand customized mail filtering scripts. To verify a hashcash cookie in 19702a message, use the ‘mail-check-payment’ function in the ‘hashcash.el’ 19703library. You can also use the ‘spam.el’ package with the 19704‘spam-use-hashcash’ back end to validate hashcash cookies in incoming 19705mail and filter mail accordingly (*note Anti-spam Hashcash Payments::). 19706 19707 19708File: gnus.info, Node: Spam Package, Next: The Gnus Registry, Prev: Thwarting Email Spam, Up: Various 19709 197109.18 Spam Package 19711================= 19712 19713The Spam package provides Gnus with a centralized mechanism for 19714detecting and filtering spam. It filters new mail, and processes 19715messages according to whether they are spam or ham. (“Ham” is the name 19716used throughout this manual to indicate non-spam messages.) 19717 19718* Menu: 19719 19720* Spam Package Introduction:: 19721* Filtering Incoming Mail:: 19722* Detecting Spam in Groups:: 19723* Spam and Ham Processors:: 19724* Spam Package Configuration Examples:: 19725* Spam Back Ends:: 19726* Extending the Spam package:: 19727* Spam Statistics Package:: 19728 19729 19730File: gnus.info, Node: Spam Package Introduction, Next: Filtering Incoming Mail, Up: Spam Package 19731 197329.18.1 Spam Package Introduction 19733-------------------------------- 19734 19735You must read this section to understand how the Spam package works. Do 19736not skip, speed-read, or glance through this section. 19737 19738 Make sure you read the section on the ‘spam.el’ sequence of events. 19739*Note Extending the Spam package::. 19740 19741 To use the Spam package, you *must* first run the function 19742‘spam-initialize’: 19743 19744 (spam-initialize) 19745 19746 This autoloads ‘spam.el’ and installs the various hooks necessary to 19747let the Spam package do its job. In order to make use of the Spam 19748package, you have to set up certain group parameters and variables, 19749which we will describe below. All of the variables controlling the Spam 19750package can be found in the ‘spam’ customization group. 19751 19752 There are two “contact points” between the Spam package and the rest 19753of Gnus: checking new mail for spam, and leaving a group. 19754 19755 Checking new mail for spam is done in one of two ways: while 19756splitting incoming mail, or when you enter a group. 19757 19758 The first way, checking for spam while splitting incoming mail, is 19759suited to mail back ends such as ‘nnml’ or ‘nnimap’, where new mail 19760appears in a single spool file. The Spam package processes incoming 19761mail, and sends mail considered to be spam to a designated “spam” group. 19762*Note Filtering Incoming Mail::. 19763 19764 The second way is suited to back ends such as ‘nntp’, which have no 19765incoming mail spool, or back ends where the server is in charge of 19766splitting incoming mail. In this case, when you enter a Gnus group, the 19767unseen or unread messages in that group are checked for spam. Detected 19768spam messages are marked as spam. *Note Detecting Spam in Groups::. 19769 19770 In either case, you have to tell the Spam package what method to use 19771to detect spam messages. There are several methods, or “spam back ends” 19772(not to be confused with Gnus back ends!) to choose from: spam 19773“blacklists” and “whitelists”, dictionary-based filters, and so forth. 19774*Note Spam Back Ends::. 19775 19776 In the Gnus summary buffer, messages that have been identified as 19777spam always appear with a ‘$’ symbol. 19778 19779 The Spam package divides Gnus groups into three categories: ham 19780groups, spam groups, and unclassified groups. You should mark each of 19781the groups you subscribe to as either a ham group or a spam group, using 19782the ‘spam-contents’ group parameter (*note Group Parameters::). Spam 19783groups have a special property: when you enter a spam group, all unseen 19784articles are marked as spam. Thus, mail split into a spam group is 19785automatically marked as spam. 19786 19787 Identifying spam messages is only half of the Spam package’s job. 19788The second half comes into play whenever you exit a group buffer. At 19789this point, the Spam package does several things: 19790 19791 First, it calls “spam and ham processors” to process the articles 19792according to whether they are spam or ham. There is a pair of spam and 19793ham processors associated with each spam back end, and what the 19794processors do depends on the back end. At present, the main role of 19795spam and ham processors is for dictionary-based spam filters: they add 19796the contents of the messages in the group to the filter’s dictionary, to 19797improve its ability to detect future spam. The ‘spam-process’ group 19798parameter specifies what spam processors to use. *Note Spam and Ham 19799Processors::. 19800 19801 If the spam filter failed to mark a spam message, you can mark it 19802yourself, so that the message is processed as spam when you exit the 19803group: 19804 19805‘$’ 19806‘M-d’ 19807‘M s x’ 19808‘S x’ 19809 Mark current article as spam, showing it with the ‘$’ mark 19810 (‘gnus-summary-mark-as-spam’). 19811 19812Similarly, you can unmark an article if it has been erroneously marked 19813as spam. *Note Setting Marks::. 19814 19815 Normally, a ham message found in a non-ham group is not processed as 19816ham—the rationale is that it should be moved into a ham group for 19817further processing (see below). However, you can force these articles 19818to be processed as ham by setting ‘spam-process-ham-in-spam-groups’ and 19819‘spam-process-ham-in-nonham-groups’. 19820 19821 The second thing that the Spam package does when you exit a group is 19822to move ham articles out of spam groups, and spam articles out of ham 19823groups. Ham in a spam group is moved to the group specified by the 19824variable ‘gnus-ham-process-destinations’, or the group parameter 19825‘ham-process-destination’. Spam in a ham group is moved to the group 19826specified by the variable ‘gnus-spam-process-destinations’, or the group 19827parameter ‘spam-process-destination’. If these variables are not set, 19828the articles are left in their current group. If an article cannot be 19829moved (e.g., with a read-only backend such as NNTP), it is copied. 19830 19831 If an article is moved to another group, it is processed again when 19832you visit the new group. Normally, this is not a problem, but if you 19833want each article to be processed only once, load the ‘gnus-registry.el’ 19834package and set the variable ‘spam-log-to-registry’ to ‘t’. *Note Spam 19835Package Configuration Examples::. 19836 19837 Normally, spam groups ignore ‘gnus-spam-process-destinations’. 19838However, if you set ‘spam-move-spam-nonspam-groups-only’ to ‘nil’, spam 19839will also be moved out of spam groups, depending on the 19840‘spam-process-destination’ parameter. 19841 19842 The final thing the Spam package does is to mark spam articles as 19843expired, which is usually the right thing to do. 19844 19845 If all this seems confusing, don’t worry. Soon it will be as natural 19846as typing Lisp one-liners on a neural interface... err, sorry, that’s 50 19847years in the future yet. Just trust us, it’s not so bad. 19848 19849 19850File: gnus.info, Node: Filtering Incoming Mail, Next: Detecting Spam in Groups, Prev: Spam Package Introduction, Up: Spam Package 19851 198529.18.2 Filtering Incoming Mail 19853------------------------------ 19854 19855To use the Spam package to filter incoming mail, you must first set up 19856fancy mail splitting. *Note Fancy Mail Splitting::. The Spam package 19857defines a special splitting function that you can add to your fancy 19858split variable (either ‘nnmail-split-fancy’ or ‘nnimap-split-fancy’, 19859depending on your mail back end): 19860 19861 (: spam-split) 19862 19863The ‘spam-split’ function scans incoming mail according to your chosen 19864spam back end(s), and sends messages identified as spam to a spam group. 19865By default, the spam group is a group named ‘spam’, but you can change 19866this by customizing ‘spam-split-group’. Make sure the contents of 19867‘spam-split-group’ are an unqualified group name. For instance, in an 19868‘nnimap’ server ‘your-server’, the value ‘spam’ means 19869‘nnimap+your-server:spam’. The value ‘nnimap+server:spam’ is therefore 19870wrong—it gives the group ‘nnimap+your-server:nnimap+server:spam’. 19871 19872 ‘spam-split’ does not modify the contents of messages in any way. 19873 19874 Note for IMAP users: if you use the ‘spam-check-bogofilter’, 19875‘spam-check-ifile’, and ‘spam-check-stat’ spam back ends, you should 19876also set the variable ‘nnimap-split-download-body’ to ‘t’. These spam 19877back ends are most useful when they can “scan” the full message body. 19878By default, the nnimap back end only retrieves the message headers; 19879‘nnimap-split-download-body’ tells it to retrieve the message bodies as 19880well. We don’t set this by default because it will slow IMAP down, and 19881that is not an appropriate decision to make on behalf of the user. 19882*Note Client-Side IMAP Splitting::. 19883 19884 You have to specify one or more spam back ends for ‘spam-split’ to 19885use, by setting the ‘spam-use-*’ variables. *Note Spam Back Ends::. 19886Normally, ‘spam-split’ simply uses all the spam back ends you enabled in 19887this way. However, you can tell ‘spam-split’ to use only some of them. 19888Why this is useful? Suppose you are using the ‘spam-use-regex-headers’ 19889and ‘spam-use-blackholes’ spam back ends, and the following split rule: 19890 19891 nnimap-split-fancy '(| 19892 (any "ding" "ding") 19893 (: spam-split) 19894 ;; default mailbox 19895 "mail") 19896 19897The problem is that you want all ding messages to make it to the ding 19898folder. But that will let obvious spam (for example, spam detected by 19899SpamAssassin, and ‘spam-use-regex-headers’) through, when it’s sent to 19900the ding list. On the other hand, some messages to the ding list are 19901from a mail server in the blackhole list, so the invocation of 19902‘spam-split’ can’t be before the ding rule. 19903 19904 The solution is to let SpamAssassin headers supersede ding rules, and 19905perform the other ‘spam-split’ rules (including a second invocation of 19906the regex-headers check) after the ding rule. This is done by passing a 19907parameter to ‘spam-split’: 19908 19909 nnimap-split-fancy 19910 '(| 19911 ;; spam detected by ‘spam-use-regex-headers’ goes to ‘regex-spam’ 19912 (: spam-split "regex-spam" 'spam-use-regex-headers) 19913 (any "ding" "ding") 19914 ;; all other spam detected by spam-split goes to ‘spam-split-group’ 19915 (: spam-split) 19916 ;; default mailbox 19917 "mail") 19918 19919This lets you invoke specific ‘spam-split’ checks depending on your 19920particular needs, and target the results of those checks to a particular 19921spam group. You don’t have to throw all mail into all the spam tests. 19922Another reason why this is nice is that messages to mailing lists you 19923have rules for don’t have to have resource-intensive blackhole checks 19924performed on them. You could also specify different spam checks for 19925your nnmail split vs. your nnimap split. Go crazy. 19926 19927 You should set the ‘spam-use-*’ variables for whatever spam back ends 19928you intend to use. The reason is that when loading ‘spam.el’, some 19929conditional loading is done depending on what ‘spam-use-xyz’ variables 19930you have set. *Note Spam Back Ends::. 19931 19932 19933File: gnus.info, Node: Detecting Spam in Groups, Next: Spam and Ham Processors, Prev: Filtering Incoming Mail, Up: Spam Package 19934 199359.18.3 Detecting Spam in Groups 19936------------------------------- 19937 19938To detect spam when visiting a group, set the group’s ‘spam-autodetect’ 19939and ‘spam-autodetect-methods’ group parameters. These are accessible 19940with ‘G c’ or ‘G p’, as usual (*note Group Parameters::). 19941 19942 You should set the ‘spam-use-*’ variables for whatever spam back ends 19943you intend to use. The reason is that when loading ‘spam.el’, some 19944conditional loading is done depending on what ‘spam-use-xyz’ variables 19945you have set. 19946 19947 By default, only unseen articles are processed for spam. You can 19948force Gnus to recheck all messages in the group by setting the variable 19949‘spam-autodetect-recheck-messages’ to ‘t’. 19950 19951 If you use the ‘spam-autodetect’ method of checking for spam, you can 19952specify different spam detection methods for different groups. For 19953instance, the ‘ding’ group may have ‘spam-use-BBDB’ as the autodetection 19954method, while the ‘suspect’ group may have the ‘spam-use-blacklist’ and 19955‘spam-use-bogofilter’ methods enabled. Unlike with ‘spam-split’, you 19956don’t have any control over the _sequence_ of checks, but this is 19957probably unimportant. 19958 19959 19960File: gnus.info, Node: Spam and Ham Processors, Next: Spam Package Configuration Examples, Prev: Detecting Spam in Groups, Up: Spam Package 19961 199629.18.4 Spam and Ham Processors 19963------------------------------ 19964 19965Spam and ham processors specify special actions to take when you exit a 19966group buffer. Spam processors act on spam messages, and ham processors 19967on ham messages. At present, the main role of these processors is to 19968update the dictionaries of dictionary-based spam back ends such as 19969Bogofilter (*note Bogofilter::) and the Spam Statistics package (*note 19970Spam Statistics Filtering::). 19971 19972 The spam and ham processors that apply to each group are determined 19973by the group’s‘spam-process’ group parameter. If this group parameter 19974is not defined, they are determined by the variable 19975‘gnus-spam-process-newsgroups’. 19976 19977 Gnus learns from the spam you get. You have to collect your spam in 19978one or more spam groups, and set or customize the variable 19979‘spam-junk-mailgroups’ as appropriate. You can also declare groups to 19980contain spam by setting their group parameter ‘spam-contents’ to 19981‘gnus-group-spam-classification-spam’, or by customizing the 19982corresponding variable ‘gnus-spam-newsgroup-contents’. The 19983‘spam-contents’ group parameter and the ‘gnus-spam-newsgroup-contents’ 19984variable can also be used to declare groups as _ham_ groups if you set 19985their classification to ‘gnus-group-spam-classification-ham’. If groups 19986are not classified by means of ‘spam-junk-mailgroups’, ‘spam-contents’, 19987or ‘gnus-spam-newsgroup-contents’, they are considered _unclassified_. 19988All groups are unclassified by default. 19989 19990 In spam groups, all messages are considered to be spam by default: 19991they get the ‘$’ mark (‘gnus-spam-mark’) when you enter the group. If 19992you have seen a message, had it marked as spam, then unmarked it, it 19993won’t be marked as spam when you enter the group thereafter. You can 19994disable that behavior, so all unread messages will get the ‘$’ mark, if 19995you set the ‘spam-mark-only-unseen-as-spam’ parameter to ‘nil’. You 19996should remove the ‘$’ mark when you are in the group summary buffer for 19997every message that is not spam after all. To remove the ‘$’ mark, you 19998can use ‘M-u’ to “unread” the article, or ‘d’ for declaring it read the 19999non-spam way. When you leave a group, all spam-marked (‘$’) articles 20000are sent to a spam processor which will study them as spam samples. 20001 20002 Messages may also be deleted in various other ways, and unless 20003‘ham-marks’ group parameter gets overridden below, marks ‘R’ and ‘r’ for 20004default read or explicit delete, marks ‘X’ and ‘K’ for automatic or 20005explicit kills, as well as mark ‘Y’ for low scores, are all considered 20006to be associated with articles which are not spam. This assumption 20007might be false, in particular if you use kill files or score files as 20008means for detecting genuine spam, you should then adjust the ‘ham-marks’ 20009group parameter. 20010 20011 -- Variable: ham-marks 20012 You can customize this group or topic parameter to be the list of 20013 marks you want to consider ham. By default, the list contains the 20014 deleted, read, killed, kill-filed, and low-score marks (the idea is 20015 that these articles have been read, but are not spam). It can be 20016 useful to also include the tick mark in the ham marks. It is not 20017 recommended to make the unread mark a ham mark, because it normally 20018 indicates a lack of classification. But you can do it, and we’ll 20019 be happy for you. 20020 20021 -- Variable: spam-marks 20022 You can customize this group or topic parameter to be the list of 20023 marks you want to consider spam. By default, the list contains 20024 only the spam mark. It is not recommended to change that, but you 20025 can if you really want to. 20026 20027 When you leave _any_ group, regardless of its ‘spam-contents’ 20028classification, all spam-marked articles are sent to a spam processor, 20029which will study these as spam samples. If you explicit kill a lot, you 20030might sometimes end up with articles marked ‘K’ which you never saw, and 20031which might accidentally contain spam. Best is to make sure that real 20032spam is marked with ‘$’, and nothing else. 20033 20034 When you leave a _spam_ group, all spam-marked articles are marked as 20035expired after processing with the spam processor. This is not done for 20036_unclassified_ or _ham_ groups. Also, any *ham* articles in a spam 20037group will be moved to a location determined by either the 20038‘ham-process-destination’ group parameter or a match in the 20039‘gnus-ham-process-destinations’ variable, which is a list of regular 20040expressions matched with group names (it’s easiest to customize this 20041variable with ‘M-x customize-variable <RET> 20042gnus-ham-process-destinations’). Each group name list is a standard 20043Lisp list, if you prefer to customize the variable manually. If the 20044‘ham-process-destination’ parameter is not set, ham articles are left in 20045place. If the ‘spam-mark-ham-unread-before-move-from-spam-group’ 20046parameter is set, the ham articles are marked as unread before being 20047moved. 20048 20049 If ham can not be moved—because of a read-only back end such as NNTP, 20050for example, it will be copied. 20051 20052 Note that you can use multiples destinations per group or regular 20053expression! This enables you to send your ham to a regular mail group 20054and to a _ham training_ group. 20055 20056 When you leave a _ham_ group, all ham-marked articles are sent to a 20057ham processor, which will study these as non-spam samples. 20058 20059 By default the variable ‘spam-process-ham-in-spam-groups’ is ‘nil’. 20060Set it to ‘t’ if you want ham found in spam groups to be processed. 20061Normally this is not done, you are expected instead to send your ham to 20062a ham group and process it there. 20063 20064 By default the variable ‘spam-process-ham-in-nonham-groups’ is ‘nil’. 20065Set it to ‘t’ if you want ham found in non-ham (spam or unclassified) 20066groups to be processed. Normally this is not done, you are expected 20067instead to send your ham to a ham group and process it there. 20068 20069 When you leave a _ham_ or _unclassified_ group, all *spam* articles 20070are moved to a location determined by either the 20071‘spam-process-destination’ group parameter or a match in the 20072‘gnus-spam-process-destinations’ variable, which is a list of regular 20073expressions matched with group names (it’s easiest to customize this 20074variable with ‘M-x customize-variable <RET> 20075gnus-spam-process-destinations’). Each group name list is a standard 20076Lisp list, if you prefer to customize the variable manually. If the 20077‘spam-process-destination’ parameter is not set, the spam articles are 20078only expired. The group name is fully qualified, meaning that if you 20079see ‘nntp:servername’ before the group name in the group buffer then you 20080need it here as well. 20081 20082 If spam can not be moved—because of a read-only back end such as 20083NNTP, for example, it will be copied. 20084 20085 Note that you can use multiples destinations per group or regular 20086expression! This enables you to send your spam to multiple _spam 20087training_ groups. 20088 20089 The problem with processing ham and spam is that Gnus doesn’t track 20090this processing by default. Enable the ‘spam-log-to-registry’ variable 20091so ‘spam.el’ will use ‘gnus-registry.el’ to track what articles have 20092been processed, and avoid processing articles multiple times. Keep in 20093mind that if you limit the number of registry entries, this won’t work 20094as well as it does without a limit. 20095 20096 Set this variable if you want only unseen articles in spam groups to 20097be marked as spam. By default, it is set. If you set it to ‘nil’, 20098unread articles will also be marked as spam. 20099 20100 Set this variable if you want ham to be unmarked before it is moved 20101out of the spam group. This is very useful when you use something like 20102the tick mark ‘!’ to mark ham—the article will be placed in your 20103‘ham-process-destination’, unmarked as if it came fresh from the mail 20104server. 20105 20106 When autodetecting spam, this variable tells ‘spam.el’ whether only 20107unseen articles or all unread articles should be checked for spam. It 20108is recommended that you leave it off. 20109 20110 20111File: gnus.info, Node: Spam Package Configuration Examples, Next: Spam Back Ends, Prev: Spam and Ham Processors, Up: Spam Package 20112 201139.18.5 Spam Package Configuration Examples 20114------------------------------------------ 20115 20116Ted’s setup 20117........... 20118 20119From Ted Zlatanov <tzz@lifelogs.com>. 20120 ;; for ‘gnus-registry-split-fancy-with-parent’ and spam autodetection 20121 ;; see ‘gnus-registry.el’ for more information 20122 (gnus-registry-initialize) 20123 (spam-initialize) 20124 20125 (setq 20126 spam-log-to-registry t ; for spam autodetection 20127 spam-use-BBDB t 20128 spam-use-regex-headers t ; catch X-Spam-Flag (SpamAssassin) 20129 ;; all groups with ‘spam’ in the name contain spam 20130 gnus-spam-newsgroup-contents 20131 '(("spam" gnus-group-spam-classification-spam)) 20132 ;; see documentation for these 20133 spam-move-spam-nonspam-groups-only nil 20134 spam-mark-only-unseen-as-spam t 20135 spam-mark-ham-unread-before-move-from-spam-group t 20136 ;; understand what this does before you copy it to your own setup! 20137 ;; for nnimap you’ll probably want to set nnimap-split-methods, see the manual 20138 nnimap-split-fancy '(| 20139 ;; trace references to parents and put in their group 20140 (: gnus-registry-split-fancy-with-parent) 20141 ;; this will catch server-side SpamAssassin tags 20142 (: spam-split 'spam-use-regex-headers) 20143 (any "ding" "ding") 20144 ;; note that spam by default will go to ‘spam’ 20145 (: spam-split) 20146 ;; default mailbox 20147 "mail")) 20148 20149 ;; my parameters, set with ‘G p’ 20150 20151 ;; all nnml groups, and all nnimap groups except 20152 ;; ‘nnimap+mail.lifelogs.com:train’ and 20153 ;; ‘nnimap+mail.lifelogs.com:spam’: any spam goes to nnimap training, 20154 ;; because it must have been detected manually 20155 20156 ((spam-process-destination . "nnimap+mail.lifelogs.com:train")) 20157 20158 ;; all NNTP groups 20159 ;; autodetect spam with the blacklist and ham with the BBDB 20160 ((spam-autodetect-methods spam-use-blacklist spam-use-BBDB) 20161 ;; send all spam to the training group 20162 (spam-process-destination . "nnimap+mail.lifelogs.com:train")) 20163 20164 ;; only some NNTP groups, where I want to autodetect spam 20165 ((spam-autodetect . t)) 20166 20167 ;; my nnimap ‘nnimap+mail.lifelogs.com:spam’ group 20168 20169 ;; this is a spam group 20170 ((spam-contents gnus-group-spam-classification-spam) 20171 20172 ;; any spam (which happens when I enter for all unseen messages, 20173 ;; because of the ‘gnus-spam-newsgroup-contents’ setting above), goes to 20174 ;; ‘nnimap+mail.lifelogs.com:train’ unless I mark it as ham 20175 20176 (spam-process-destination "nnimap+mail.lifelogs.com:train") 20177 20178 ;; any ham goes to my ‘nnimap+mail.lifelogs.com:mail’ folder, but 20179 ;; also to my ‘nnimap+mail.lifelogs.com:trainham’ folder for training 20180 20181 (ham-process-destination "nnimap+mail.lifelogs.com:mail" 20182 "nnimap+mail.lifelogs.com:trainham") 20183 ;; in this group, only ‘!’ marks are ham 20184 (ham-marks 20185 (gnus-ticked-mark)) 20186 ;; remembers senders in the blacklist on the way out—this is 20187 ;; definitely not needed, it just makes me feel better 20188 (spam-process (gnus-group-spam-exit-processor-blacklist))) 20189 20190 ;; Later, on the IMAP server I use the ‘train’ group for training 20191 ;; SpamAssassin to recognize spam, and the ‘trainham’ group fora 20192 ;; recognizing ham—but Gnus has nothing to do with it. 20193 20194 20195Using ‘spam.el’ on an IMAP server with a statistical filter on the server 20196......................................................................... 20197 20198From Reiner Steib <reiner.steib@gmx.de>. 20199 20200 My provider has set up bogofilter (in combination with DCC) on the 20201mail server (IMAP). Recognized spam goes to ‘spam.detected’, the rest 20202goes through the normal filter rules, i.e., to ‘some.folder’ or to 20203‘INBOX’. Training on false positives or negatives is done by copying or 20204moving the article to ‘training.ham’ or ‘training.spam’ respectively. A 20205cron job on the server feeds those to bogofilter with the suitable ham 20206or spam options and deletes them from the ‘training.ham’ and 20207‘training.spam’ folders. 20208 20209 With the following entries in ‘gnus-parameters’, ‘spam.el’ does most 20210of the job for me: 20211 20212 ("nnimap:spam\\.detected" 20213 (gnus-article-sort-functions '(gnus-article-sort-by-chars)) 20214 (ham-process-destination "nnimap:INBOX" "nnimap:training.ham") 20215 (spam-contents gnus-group-spam-classification-spam)) 20216 ("nnimap:\\(INBOX\\|other-folders\\)" 20217 (spam-process-destination . "nnimap:training.spam") 20218 (spam-contents gnus-group-spam-classification-ham)) 20219 20220 • The Spam folder: 20221 20222 In the folder ‘spam.detected’, I have to check for false positives 20223 (i.e., legitimate mails, that were wrongly judged as spam by 20224 bogofilter or DCC). 20225 20226 Because of the ‘gnus-group-spam-classification-spam’ entry, all 20227 messages are marked as spam (with ‘$’). When I find a false 20228 positive, I mark the message with some other ham mark (‘ham-marks’, 20229 *note Spam and Ham Processors::). On group exit, those messages 20230 are copied to both groups, ‘INBOX’ (where I want to have the 20231 article) and ‘training.ham’ (for training bogofilter) and deleted 20232 from the ‘spam.detected’ folder. 20233 20234 The ‘gnus-article-sort-by-chars’ entry simplifies detection of 20235 false positives for me. I receive lots of worms (sweN, ...), that 20236 all have a similar size. Grouping them by size (i.e., chars) makes 20237 finding other false positives easier. (Of course worms aren’t spam 20238 (UCE, UBE) strictly speaking. Anyhow, bogofilter is an excellent 20239 tool for filtering those unwanted mails for me.) 20240 20241 • Ham folders: 20242 20243 In my ham folders, I just hit ‘S x’ (‘gnus-summary-mark-as-spam’) 20244 whenever I see an unrecognized spam mail (false negative). On 20245 group exit, those messages are moved to ‘training.spam’. 20246 20247Reporting spam articles in Gmane groups with ‘spam-report.el’ 20248............................................................. 20249 20250From Reiner Steib <reiner.steib@gmx.de>. 20251 20252 With following entry in ‘gnus-parameters’, ‘S x’ 20253(‘gnus-summary-mark-as-spam’) marks articles in ‘gmane.*’ groups as spam 20254and reports the to Gmane at group exit: 20255 20256 ("^gmane\\." 20257 (spam-process (gnus-group-spam-exit-processor-report-gmane))) 20258 20259 Additionally, I use ‘(setq spam-report-gmane-use-article-number nil)’ 20260because I don’t read the groups directly from news.gmane.org, but 20261through my local news server (leafnode). I.e., the article numbers are 20262not the same as on news.gmane.org, thus ‘spam-report.el’ has to check 20263the ‘X-Report-Spam’ header to find the correct number. 20264 20265 20266File: gnus.info, Node: Spam Back Ends, Next: Extending the Spam package, Prev: Spam Package Configuration Examples, Up: Spam Package 20267 202689.18.6 Spam Back Ends 20269--------------------- 20270 20271The spam package offers a variety of back ends for detecting spam. Each 20272back end defines a set of methods for detecting spam (*note Filtering 20273Incoming Mail::, *note Detecting Spam in Groups::), and a pair of spam 20274and ham processors (*note Spam and Ham Processors::). 20275 20276* Menu: 20277 20278* Blacklists and Whitelists:: 20279* BBDB Whitelists:: 20280* Gmane Spam Reporting:: 20281* Anti-spam Hashcash Payments:: 20282* Blackholes:: 20283* Regular Expressions Header Matching:: 20284* Bogofilter:: 20285* SpamAssassin back end:: 20286* ifile spam filtering:: 20287* Spam Statistics Filtering:: 20288* SpamOracle:: 20289 20290 20291File: gnus.info, Node: Blacklists and Whitelists, Next: BBDB Whitelists, Up: Spam Back Ends 20292 202939.18.6.1 Blacklists and Whitelists 20294.................................. 20295 20296 -- Variable: spam-use-blacklist 20297 20298 Set this variable to ‘t’ if you want to use blacklists when 20299 splitting incoming mail. Messages whose senders are in the 20300 blacklist will be sent to the ‘spam-split-group’. This is an 20301 explicit filter, meaning that it acts only on mail senders 20302 _declared_ to be spammers. 20303 20304 -- Variable: spam-use-whitelist 20305 20306 Set this variable to ‘t’ if you want to use whitelists when 20307 splitting incoming mail. Messages whose senders are not in the 20308 whitelist will be sent to the next spam-split rule. This is an 20309 explicit filter, meaning that unless someone is in the whitelist, 20310 their messages are not assumed to be spam or ham. 20311 20312 -- Variable: spam-use-whitelist-exclusive 20313 20314 Set this variable to ‘t’ if you want to use whitelists as an 20315 implicit filter, meaning that every message will be considered spam 20316 unless the sender is in the whitelist. Use with care. 20317 20318 -- Variable: gnus-group-spam-exit-processor-blacklist 20319 20320 Add this symbol to a group’s ‘spam-process’ parameter by 20321 customizing the group parameters or the 20322 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20323 to a group’s ‘spam-process’ parameter, the senders of spam-marked 20324 articles will be added to the blacklist. 20325 20326 _WARNING_ 20327 20328 Instead of the obsolete ‘gnus-group-spam-exit-processor-blacklist’, 20329 it is recommended that you use ‘(spam spam-use-blacklist)’. 20330 Everything will work the same way, we promise. 20331 20332 -- Variable: gnus-group-ham-exit-processor-whitelist 20333 20334 Add this symbol to a group’s ‘spam-process’ parameter by 20335 customizing the group parameters or the 20336 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20337 to a group’s ‘spam-process’ parameter, the senders of ham-marked 20338 articles in _ham_ groups will be added to the whitelist. 20339 20340 _WARNING_ 20341 20342 Instead of the obsolete ‘gnus-group-ham-exit-processor-whitelist’, 20343 it is recommended that you use ‘(ham spam-use-whitelist)’. 20344 Everything will work the same way, we promise. 20345 20346 Blacklists are lists of regular expressions matching addresses you 20347consider to be spam senders. For instance, to block mail from any 20348sender at ‘vmadmin.com’, you can put ‘vmadmin.com’ in your blacklist. 20349You start out with an empty blacklist. Blacklist entries use the Emacs 20350regular expression syntax. 20351 20352 Conversely, whitelists tell Gnus what addresses are considered 20353legitimate. All messages from whitelisted addresses are considered 20354non-spam. Also see *note BBDB Whitelists::. Whitelist entries use the 20355Emacs regular expression syntax. 20356 20357 The blacklist and whitelist file locations can be customized with the 20358‘spam-directory’ variable (‘~/News/spam’ by default), or the 20359‘spam-whitelist’ and ‘spam-blacklist’ variables directly. The whitelist 20360and blacklist files will by default be in the ‘spam-directory’ 20361directory, named ‘whitelist’ and ‘blacklist’ respectively. 20362 20363 20364File: gnus.info, Node: BBDB Whitelists, Next: Gmane Spam Reporting, Prev: Blacklists and Whitelists, Up: Spam Back Ends 20365 203669.18.6.2 BBDB Whitelists 20367........................ 20368 20369 -- Variable: spam-use-BBDB 20370 20371 Analogous to ‘spam-use-whitelist’ (*note Blacklists and 20372 Whitelists::), but uses the BBDB as the source of whitelisted 20373 addresses, without regular expressions. You must have the BBDB 20374 loaded for ‘spam-use-BBDB’ to work properly. Messages whose 20375 senders are not in the BBDB will be sent to the next spam-split 20376 rule. This is an explicit filter, meaning that unless someone is 20377 in the BBDB, their messages are not assumed to be spam or ham. 20378 20379 -- Variable: spam-use-BBDB-exclusive 20380 20381 Set this variable to ‘t’ if you want to use the BBDB as an implicit 20382 filter, meaning that every message will be considered spam unless 20383 the sender is in the BBDB. Use with care. Only sender addresses 20384 in the BBDB will be allowed through; all others will be classified 20385 as spammers. 20386 20387 While ‘spam-use-BBDB-exclusive’ _can_ be used as an alias for 20388 ‘spam-use-BBDB’ as far as ‘spam.el’ is concerned, it is _not_ a 20389 separate back end. If you set ‘spam-use-BBDB-exclusive’ to ‘t’, 20390 _all_ your BBDB splitting will be exclusive. 20391 20392 -- Variable: gnus-group-ham-exit-processor-BBDB 20393 20394 Add this symbol to a group’s ‘spam-process’ parameter by 20395 customizing the group parameters or the 20396 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20397 to a group’s ‘spam-process’ parameter, the senders of ham-marked 20398 articles in _ham_ groups will be added to the BBDB. 20399 20400 _WARNING_ 20401 20402 Instead of the obsolete ‘gnus-group-ham-exit-processor-BBDB’, it is 20403 recommended that you use ‘(ham spam-use-BBDB)’. Everything will 20404 work the same way, we promise. 20405 20406 20407File: gnus.info, Node: Gmane Spam Reporting, Next: Anti-spam Hashcash Payments, Prev: BBDB Whitelists, Up: Spam Back Ends 20408 204099.18.6.3 Gmane Spam Reporting 20410............................. 20411 20412 -- Variable: gnus-group-spam-exit-processor-report-gmane 20413 20414 Add this symbol to a group’s ‘spam-process’ parameter by 20415 customizing the group parameters or the 20416 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20417 to a group’s ‘spam-process’ parameter, the spam-marked articles 20418 groups will be reported to the Gmane administrators via a HTTP 20419 request. 20420 20421 Gmane was formerly found at <http://gmane.org>. 20422 20423 _WARNING_ 20424 20425 Instead of the obsolete 20426 ‘gnus-group-spam-exit-processor-report-gmane’, it is recommended 20427 that you use ‘(spam spam-use-gmane)’. Everything will work the 20428 same way, we promise. 20429 20430 -- Variable: spam-report-gmane-use-article-number 20431 20432 This variable is ‘t’ by default. Set it to ‘nil’ if you are 20433 running your own news server, for instance, and the local article 20434 numbers don’t correspond to the Gmane article numbers. When 20435 ‘spam-report-gmane-use-article-number’ is ‘nil’, ‘spam-report.el’ 20436 will fetch the number from the article headers. 20437 20438 -- Variable: spam-report-user-mail-address 20439 20440 Mail address exposed in the User-Agent spam reports to Gmane. It 20441 allows the Gmane administrators to contact you in case of 20442 misreports. The default is ‘user-mail-address’. 20443 20444 20445File: gnus.info, Node: Anti-spam Hashcash Payments, Next: Blackholes, Prev: Gmane Spam Reporting, Up: Spam Back Ends 20446 204479.18.6.4 Anti-spam Hashcash Payments 20448.................................... 20449 20450 -- Variable: spam-use-hashcash 20451 20452 Similar to ‘spam-use-whitelist’ (*note Blacklists and 20453 Whitelists::), but uses hashcash tokens for whitelisting messages 20454 instead of the sender address. Messages without a hashcash payment 20455 token will be sent to the next spam-split rule. This is an 20456 explicit filter, meaning that unless a hashcash token is found, the 20457 messages are not assumed to be spam or ham. 20458 20459 20460File: gnus.info, Node: Blackholes, Next: Regular Expressions Header Matching, Prev: Anti-spam Hashcash Payments, Up: Spam Back Ends 20461 204629.18.6.5 Blackholes 20463................... 20464 20465 -- Variable: spam-use-blackholes 20466 20467 This option is disabled by default. You can let Gnus consult the 20468 blackhole-type distributed spam processing systems (DCC, for 20469 instance) when you set this option. The variable 20470 ‘spam-blackhole-servers’ holds the list of blackhole servers Gnus 20471 will consult. The current list is fairly comprehensive, but make 20472 sure to let us know if it contains outdated servers. 20473 20474 The blackhole check uses the ‘dig.el’ package, but you can tell 20475 ‘spam.el’ to use ‘dns.el’ instead for better performance if you set 20476 ‘spam-use-dig’ to ‘nil’. It is not recommended at this time to set 20477 ‘spam-use-dig’ to ‘nil’ despite the possible performance 20478 improvements, because some users may be unable to use it, but you 20479 can try it and see if it works for you. 20480 20481 -- Variable: spam-blackhole-servers 20482 20483 The list of servers to consult for blackhole checks. 20484 20485 -- Variable: spam-blackhole-good-server-regex 20486 20487 A regular expression for IPs that should not be checked against the 20488 blackhole server list. When set to ‘nil’, it has no effect. 20489 20490 -- Variable: spam-use-dig 20491 20492 Use the ‘dig.el’ package instead of the ‘dns.el’ package. The 20493 default setting of ‘t’ is recommended. 20494 20495 Blackhole checks are done only on incoming mail. There is no spam or 20496ham processor for blackholes. 20497 20498 20499File: gnus.info, Node: Regular Expressions Header Matching, Next: Bogofilter, Prev: Blackholes, Up: Spam Back Ends 20500 205019.18.6.6 Regular Expressions Header Matching 20502............................................ 20503 20504 -- Variable: spam-use-regex-headers 20505 20506 This option is disabled by default. You can let Gnus check the 20507 message headers against lists of regular expressions when you set 20508 this option. The variables ‘spam-regex-headers-spam’ and 20509 ‘spam-regex-headers-ham’ hold the list of regular expressions. 20510 Gnus will check against the message headers to determine if the 20511 message is spam or ham, respectively. 20512 20513 -- Variable: spam-regex-headers-spam 20514 20515 The list of regular expressions that, when matched in the headers 20516 of the message, positively identify it as spam. 20517 20518 -- Variable: spam-regex-headers-ham 20519 20520 The list of regular expressions that, when matched in the headers 20521 of the message, positively identify it as ham. 20522 20523 Regular expression header checks are done only on incoming mail. 20524There is no specific spam or ham processor for regular expressions. 20525 20526 20527File: gnus.info, Node: Bogofilter, Next: SpamAssassin back end, Prev: Regular Expressions Header Matching, Up: Spam Back Ends 20528 205299.18.6.7 Bogofilter 20530................... 20531 20532 -- Variable: spam-use-bogofilter 20533 20534 Set this variable if you want ‘spam-split’ to use Eric Raymond’s 20535 speedy Bogofilter. 20536 20537 With a minimum of care for associating the ‘$’ mark for spam 20538 articles only, Bogofilter training all gets fairly automatic. You 20539 should do this until you get a few hundreds of articles in each 20540 category, spam or not. The command ‘S t’ in summary mode, either 20541 for debugging or for curiosity, shows the _spamicity_ score of the 20542 current article (between 0.0 and 1.0). 20543 20544 Bogofilter determines if a message is spam based on a specific 20545 threshold. That threshold can be customized, consult the 20546 Bogofilter documentation. 20547 20548 If the ‘bogofilter’ executable is not in your path, Bogofilter 20549 processing will be turned off. 20550 20551 You should not enable this if you use 20552 ‘spam-use-bogofilter-headers’. 20553 20554‘M s t’ 20555‘S t’ 20556 Get the Bogofilter spamicity score (‘spam-bogofilter-score’). 20557 20558 -- Variable: spam-use-bogofilter-headers 20559 20560 Set this variable if you want ‘spam-split’ to use Eric Raymond’s 20561 speedy Bogofilter, looking only at the message headers. It works 20562 similarly to ‘spam-use-bogofilter’, but the ‘X-Bogosity’ header 20563 must be in the message already. Normally you would do this with a 20564 procmail recipe or something similar; consult the Bogofilter 20565 installation documents for details. 20566 20567 You should not enable this if you use ‘spam-use-bogofilter’. 20568 20569 -- Variable: gnus-group-spam-exit-processor-bogofilter 20570 Add this symbol to a group’s ‘spam-process’ parameter by 20571 customizing the group parameters or the 20572 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20573 to a group’s ‘spam-process’ parameter, spam-marked articles will be 20574 added to the Bogofilter spam database. 20575 20576 _WARNING_ 20577 20578 Instead of the obsolete 20579 ‘gnus-group-spam-exit-processor-bogofilter’, it is recommended that 20580 you use ‘(spam spam-use-bogofilter)’. Everything will work the 20581 same way, we promise. 20582 20583 -- Variable: gnus-group-ham-exit-processor-bogofilter 20584 Add this symbol to a group’s ‘spam-process’ parameter by 20585 customizing the group parameters or the 20586 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20587 to a group’s ‘spam-process’ parameter, the ham-marked articles in 20588 _ham_ groups will be added to the Bogofilter database of non-spam 20589 messages. 20590 20591 _WARNING_ 20592 20593 Instead of the obsolete ‘gnus-group-ham-exit-processor-bogofilter’, 20594 it is recommended that you use ‘(ham spam-use-bogofilter)’. 20595 Everything will work the same way, we promise. 20596 20597 -- Variable: spam-bogofilter-database-directory 20598 20599 This is the directory where Bogofilter will store its databases. 20600 It is not specified by default, so Bogofilter will use its own 20601 default database directory. 20602 20603 The Bogofilter mail classifier is similar to ‘ifile’ in intent and 20604purpose. A ham and a spam processor are provided, plus the 20605‘spam-use-bogofilter’ and ‘spam-use-bogofilter-headers’ variables to 20606indicate to spam-split that Bogofilter should either be used, or has 20607already been used on the article. The 0.9.2.1 version of Bogofilter was 20608used to test this functionality. 20609 20610 20611File: gnus.info, Node: SpamAssassin back end, Next: ifile spam filtering, Prev: Bogofilter, Up: Spam Back Ends 20612 206139.18.6.8 SpamAssassin back end 20614.............................. 20615 20616 -- Variable: spam-use-spamassassin 20617 20618 Set this variable if you want ‘spam-split’ to use SpamAssassin. 20619 20620 SpamAssassin assigns a score to each article based on a set of 20621 rules and tests, including a Bayesian filter. The Bayesian filter 20622 can be trained by associating the ‘$’ mark for spam articles. The 20623 spam score can be viewed by using the command ‘S t’ in summary 20624 mode. 20625 20626 If you set this variable, each article will be processed by 20627 SpamAssassin when ‘spam-split’ is called. If your mail is 20628 preprocessed by SpamAssassin, and you want to just use the 20629 SpamAssassin headers, set ‘spam-use-spamassassin-headers’ instead. 20630 20631 You should not enable this if you use 20632 ‘spam-use-spamassassin-headers’. 20633 20634 -- Variable: spam-use-spamassassin-headers 20635 20636 Set this variable if your mail is preprocessed by SpamAssassin and 20637 want ‘spam-split’ to split based on the SpamAssassin headers. 20638 20639 You should not enable this if you use ‘spam-use-spamassassin’. 20640 20641 -- Variable: spam-spamassassin-program 20642 20643 This variable points to the SpamAssassin executable. If you have 20644 ‘spamd’ running, you can set this variable to the ‘spamc’ 20645 executable for faster processing. See the SpamAssassin 20646 documentation for more information on ‘spamd’/‘spamc’. 20647 20648 SpamAssassin is a powerful and flexible spam filter that uses a wide 20649variety of tests to identify spam. A ham and a spam processors are 20650provided, plus the ‘spam-use-spamassassin’ and 20651‘spam-use-spamassassin-headers’ variables to indicate to spam-split that 20652SpamAssassin should be either used, or has already been used on the 20653article. The 2.63 version of SpamAssassin was used to test this 20654functionality. 20655 20656 20657File: gnus.info, Node: ifile spam filtering, Next: Spam Statistics Filtering, Prev: SpamAssassin back end, Up: Spam Back Ends 20658 206599.18.6.9 ifile spam filtering 20660............................. 20661 20662 -- Variable: spam-use-ifile 20663 20664 Enable this variable if you want ‘spam-split’ to use ‘ifile’, a 20665 statistical analyzer similar to Bogofilter. 20666 20667 -- Variable: spam-ifile-all-categories 20668 20669 Enable this variable if you want ‘spam-use-ifile’ to give you all 20670 the ifile categories, not just spam/non-spam. If you use this, 20671 make sure you train ifile as described in its documentation. 20672 20673 -- Variable: spam-ifile-spam-category 20674 20675 This is the category of spam messages as far as ifile is concerned. 20676 The actual string used is irrelevant, but you probably want to 20677 leave the default value of ‘spam’. 20678 20679 -- Variable: spam-ifile-database 20680 20681 This is the filename for the ifile database. It is not specified 20682 by default, so ifile will use its own default database name. 20683 20684 The ifile mail classifier is similar to Bogofilter in intent and 20685purpose. A ham and a spam processor are provided, plus the 20686‘spam-use-ifile’ variable to indicate to spam-split that ifile should be 20687used. The 1.2.1 version of ifile was used to test this functionality. 20688 20689 20690File: gnus.info, Node: Spam Statistics Filtering, Next: SpamOracle, Prev: ifile spam filtering, Up: Spam Back Ends 20691 206929.18.6.10 Spam Statistics Filtering 20693................................... 20694 20695This back end uses the Spam Statistics Emacs Lisp package to perform 20696statistics-based filtering (*note Spam Statistics Package::). Before 20697using this, you may want to perform some additional steps to initialize 20698your Spam Statistics dictionary. *Note Creating a spam-stat 20699dictionary::. 20700 20701 -- Variable: spam-use-stat 20702 20703 -- Variable: gnus-group-spam-exit-processor-stat 20704 Add this symbol to a group’s ‘spam-process’ parameter by 20705 customizing the group parameters or the 20706 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20707 to a group’s ‘spam-process’ parameter, the spam-marked articles 20708 will be added to the spam-stat database of spam messages. 20709 20710 _WARNING_ 20711 20712 Instead of the obsolete ‘gnus-group-spam-exit-processor-stat’, it 20713 is recommended that you use ‘(spam spam-use-stat)’. Everything 20714 will work the same way, we promise. 20715 20716 -- Variable: gnus-group-ham-exit-processor-stat 20717 Add this symbol to a group’s ‘spam-process’ parameter by 20718 customizing the group parameters or the 20719 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20720 to a group’s ‘spam-process’ parameter, the ham-marked articles in 20721 _ham_ groups will be added to the spam-stat database of non-spam 20722 messages. 20723 20724 _WARNING_ 20725 20726 Instead of the obsolete ‘gnus-group-ham-exit-processor-stat’, it is 20727 recommended that you use ‘(ham spam-use-stat)’. Everything will 20728 work the same way, we promise. 20729 20730 This enables ‘spam.el’ to cooperate with ‘spam-stat.el’. 20731‘spam-stat.el’ provides an internal (Lisp-only) spam database, which 20732unlike ifile or Bogofilter does not require external programs. A spam 20733and a ham processor, and the ‘spam-use-stat’ variable for ‘spam-split’ 20734are provided. 20735 20736 20737File: gnus.info, Node: SpamOracle, Prev: Spam Statistics Filtering, Up: Spam Back Ends 20738 207399.18.6.11 Using SpamOracle with Gnus 20740.................................... 20741 20742An easy way to filter out spam is to use SpamOracle. SpamOracle is an 20743statistical mail filtering tool written by Xavier Leroy and needs to be 20744installed separately. 20745 20746 There are several ways to use SpamOracle with Gnus. In all cases, 20747your mail is piped through SpamOracle in its _mark_ mode. SpamOracle 20748will then enter an ‘X-Spam’ header indicating whether it regards the 20749mail as a spam mail or not. 20750 20751 One possibility is to run SpamOracle as a ‘:prescript’ from the *Note 20752Mail Source Specifiers::, (*note SpamAssassin::). This method has the 20753advantage that the user can see the _X-Spam_ headers. 20754 20755 The easiest method is to make ‘spam.el’ (*note Spam Package::) call 20756SpamOracle. 20757 20758 To enable SpamOracle usage by ‘spam.el’, set the variable 20759‘spam-use-spamoracle’ to ‘t’ and configure the ‘nnmail-split-fancy’ or 20760‘nnimap-split-fancy’. *Note Spam Package::. In this example the 20761‘INBOX’ of an nnimap server is filtered using SpamOracle. Mails 20762recognized as spam mails will be moved to ‘spam-split-group’, ‘Junk’ in 20763this case. Ham messages stay in ‘INBOX’: 20764 20765 (setq spam-use-spamoracle t 20766 spam-split-group "Junk" 20767 ;; for nnimap you’ll probably want to set nnimap-split-methods, see the manual 20768 nnimap-split-inbox '("INBOX") 20769 nnimap-split-fancy '(| (: spam-split) "INBOX")) 20770 20771 -- Variable: spam-use-spamoracle 20772 Set to ‘t’ if you want Gnus to enable spam filtering using 20773 SpamOracle. 20774 20775 -- Variable: spam-spamoracle-binary 20776 Gnus uses the SpamOracle binary called ‘spamoracle’ found in the 20777 user’s PATH. Using the variable ‘spam-spamoracle-binary’, this can 20778 be customized. 20779 20780 -- Variable: spam-spamoracle-database 20781 By default, SpamOracle uses the file ‘~/.spamoracle.db’ as a 20782 database to store its analysis. This is controlled by the variable 20783 ‘spam-spamoracle-database’ which defaults to ‘nil’. That means the 20784 default SpamOracle database will be used. In case you want your 20785 database to live somewhere special, set ‘spam-spamoracle-database’ 20786 to this path. 20787 20788 SpamOracle employs a statistical algorithm to determine whether a 20789message is spam or ham. In order to get good results, meaning few false 20790hits or misses, SpamOracle needs training. SpamOracle learns the 20791characteristics of your spam mails. Using the _add_ mode (training 20792mode) one has to feed good (ham) and spam mails to SpamOracle. This can 20793be done by pressing ‘|’ in the Summary buffer and pipe the mail to a 20794SpamOracle process or using ‘spam.el’’s spam- and ham-processors, which 20795is much more convenient. For a detailed description of spam- and 20796ham-processors, *Note Spam Package::. 20797 20798 -- Variable: gnus-group-spam-exit-processor-spamoracle 20799 Add this symbol to a group’s ‘spam-process’ parameter by 20800 customizing the group parameter or the 20801 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20802 to a group’s ‘spam-process’ parameter, spam-marked articles will be 20803 sent to SpamOracle as spam samples. 20804 20805 _WARNING_ 20806 20807 Instead of the obsolete 20808 ‘gnus-group-spam-exit-processor-spamoracle’, it is recommended that 20809 you use ‘(spam spam-use-spamoracle)’. Everything will work the 20810 same way, we promise. 20811 20812 -- Variable: gnus-group-ham-exit-processor-spamoracle 20813 Add this symbol to a group’s ‘spam-process’ parameter by 20814 customizing the group parameter or the 20815 ‘gnus-spam-process-newsgroups’ variable. When this symbol is added 20816 to a group’s ‘spam-process’ parameter, the ham-marked articles in 20817 _ham_ groups will be sent to the SpamOracle as samples of ham 20818 messages. 20819 20820 _WARNING_ 20821 20822 Instead of the obsolete ‘gnus-group-ham-exit-processor-spamoracle’, 20823 it is recommended that you use ‘(ham spam-use-spamoracle)’. 20824 Everything will work the same way, we promise. 20825 20826 _Example:_ These are the Group Parameters of a group that has been 20827classified as a ham group, meaning that it should only contain ham 20828messages. 20829 ((spam-contents gnus-group-spam-classification-ham) 20830 (spam-process ((ham spam-use-spamoracle) 20831 (spam spam-use-spamoracle)))) 20832 For this group the ‘spam-use-spamoracle’ is installed for both ham 20833and spam processing. If the group contains spam message (e.g., because 20834SpamOracle has not had enough sample messages yet) and the user marks 20835some messages as spam messages, these messages will be processed by 20836SpamOracle. The processor sends the messages to SpamOracle as new 20837samples for spam. 20838 20839 20840File: gnus.info, Node: Extending the Spam package, Next: Spam Statistics Package, Prev: Spam Back Ends, Up: Spam Package 20841 208429.18.7 Extending the Spam package 20843--------------------------------- 20844 20845Say you want to add a new back end called blackbox. For filtering 20846incoming mail, provide the following: 20847 20848 1. Code 20849 20850 (defvar spam-use-blackbox nil 20851 "True if blackbox should be used.") 20852 20853 Write ‘spam-check-blackbox’ if Blackbox can check incoming mail. 20854 20855 Write ‘spam-blackbox-register-routine’ and 20856 ‘spam-blackbox-unregister-routine’ using the bogofilter 20857 register/unregister routines as a start, or other 20858 register/unregister routines more appropriate to Blackbox, if 20859 Blackbox can register/unregister spam and ham. 20860 20861 2. Functionality 20862 20863 The ‘spam-check-blackbox’ function should return ‘nil’ or 20864 ‘spam-split-group’, observing the other conventions. See the 20865 existing ‘spam-check-*’ functions for examples of what you can do, 20866 and stick to the template unless you fully understand the reasons 20867 why you aren’t. 20868 20869 For processing spam and ham messages, provide the following: 20870 20871 1. Code 20872 20873 Note you don’t have to provide a spam or a ham processor. Only 20874 provide them if Blackbox supports spam or ham processing. 20875 20876 Also, ham and spam processors are being phased out as single 20877 variables. Instead the form ‘(spam spam-use-blackbox)’ or ‘(ham 20878 spam-use-blackbox)’ is favored. For now, spam/ham processor 20879 variables are still around but they won’t be for long. 20880 20881 (defvar gnus-group-spam-exit-processor-blackbox "blackbox-spam" 20882 "The Blackbox summary exit spam processor. 20883 Only applicable to spam groups.") 20884 20885 (defvar gnus-group-ham-exit-processor-blackbox "blackbox-ham" 20886 "The whitelist summary exit ham processor. 20887 Only applicable to non-spam (unclassified and ham) groups.") 20888 20889 20890 2. Gnus parameters 20891 20892 Add 20893 (const :tag "Spam: Blackbox" (spam spam-use-blackbox)) 20894 (const :tag "Ham: Blackbox" (ham spam-use-blackbox)) 20895 to the ‘spam-process’ group parameter in ‘gnus.el’. Make sure you 20896 do it twice, once for the parameter and once for the variable 20897 customization. 20898 20899 Add 20900 (variable-item spam-use-blackbox) 20901 to the ‘spam-autodetect-methods’ group parameter in ‘gnus.el’ if 20902 Blackbox can check incoming mail for spam contents. 20903 20904 Finally, use the appropriate ‘spam-install-*-backend’ function in 20905 ‘spam.el’. Here are the available functions. 20906 20907 1. ‘spam-install-backend-alias’ 20908 20909 This function will simply install an alias for a back end that 20910 does everything like the original back end. It is currently 20911 only used to make ‘spam-use-BBDB-exclusive’ act like 20912 ‘spam-use-BBDB’. 20913 20914 2. ‘spam-install-nocheck-backend’ 20915 20916 This function installs a back end that has no check function, 20917 but can register/unregister ham or spam. The ‘spam-use-gmane’ 20918 back end is such a back end. 20919 20920 3. ‘spam-install-checkonly-backend’ 20921 20922 This function will install a back end that can only check 20923 incoming mail for spam contents. It can’t register or 20924 unregister messages. ‘spam-use-blackholes’ and 20925 ‘spam-use-hashcash’ are such back ends. 20926 20927 4. ‘spam-install-statistical-checkonly-backend’ 20928 20929 This function installs a statistical back end (one which 20930 requires the full body of a message to check it) that can only 20931 check incoming mail for contents. ‘spam-use-regex-body’ is 20932 such a filter. 20933 20934 5. ‘spam-install-statistical-backend’ 20935 20936 This function install a statistical back end with incoming 20937 checks and registration/unregistration routines. 20938 ‘spam-use-bogofilter’ is set up this way. 20939 20940 6. ‘spam-install-backend’ 20941 20942 This is the most normal back end installation, where a back 20943 end that can check and register/unregister messages is set up 20944 without statistical abilities. The ‘spam-use-BBDB’ is such a 20945 back end. 20946 20947 7. ‘spam-install-mover-backend’ 20948 20949 Mover back ends are internal to ‘spam.el’ and specifically 20950 move articles around when the summary is exited. You will 20951 very probably never install such a back end. 20952 20953 20954File: gnus.info, Node: Spam Statistics Package, Prev: Extending the Spam package, Up: Spam Package 20955 209569.18.8 Spam Statistics Package 20957------------------------------ 20958 20959Paul Graham has written an excellent essay about spam filtering using 20960statistics: A Plan for Spam (http://www.paulgraham.com/spam.html). In 20961it he describes the inherent deficiency of rule-based filtering as used 20962by SpamAssassin, for example: Somebody has to write the rules, and 20963everybody else has to install these rules. You are always late. It 20964would be much better, he argues, to filter mail based on whether it 20965somehow resembles spam or non-spam. One way to measure this is word 20966distribution. He then goes on to describe a solution that checks 20967whether a new mail resembles any of your other spam mails or not. 20968 20969 The basic idea is this: Create a two collections of your mail, one 20970with spam, one with non-spam. Count how often each word appears in 20971either collection, weight this by the total number of mails in the 20972collections, and store this information in a dictionary. For every word 20973in a new mail, determine its probability to belong to a spam or a 20974non-spam mail. Use the 15 most conspicuous words, compute the total 20975probability of the mail being spam. If this probability is higher than 20976a certain threshold, the mail is considered to be spam. 20977 20978 The Spam Statistics package adds support to Gnus for this kind of 20979filtering. It can be used as one of the back ends of the Spam package 20980(*note Spam Package::), or by itself. 20981 20982 Before using the Spam Statistics package, you need to set it up. 20983First, you need two collections of your mail, one with spam, one with 20984non-spam. Then you need to create a dictionary using these two 20985collections, and save it. And last but not least, you need to use this 20986dictionary in your fancy mail splitting rules. 20987 20988* Menu: 20989 20990* Creating a spam-stat dictionary:: 20991* Splitting mail using spam-stat:: 20992* Low-level interface to the spam-stat dictionary:: 20993 20994 20995File: gnus.info, Node: Creating a spam-stat dictionary, Next: Splitting mail using spam-stat, Up: Spam Statistics Package 20996 209979.18.8.1 Creating a spam-stat dictionary 20998........................................ 20999 21000Before you can begin to filter spam based on statistics, you must create 21001these statistics based on two mail collections, one with spam, one with 21002non-spam. These statistics are then stored in a dictionary for later 21003use. In order for these statistics to be meaningful, you need several 21004hundred emails in both collections. 21005 21006 Gnus currently supports only the nnml back end for automated 21007dictionary creation. The nnml back end stores all mails in a directory, 21008one file per mail. Use the following: 21009 21010 -- Function: spam-stat-process-spam-directory 21011 Create spam statistics for every file in this directory. Every 21012 file is treated as one spam mail. 21013 21014 -- Function: spam-stat-process-non-spam-directory 21015 Create non-spam statistics for every file in this directory. Every 21016 file is treated as one non-spam mail. 21017 21018 -- Variable: spam-stat-process-directory-age 21019 Maximum age of files to be processed, in days. Without this 21020 filter, re-training spam-stat with several thousand messages could 21021 take a long time. The default is 90, but you might want to set 21022 this to a bigger value during the initial training. 21023 21024 Usually you would call ‘spam-stat-process-spam-directory’ on a 21025directory such as ‘~/Mail/mail/spam’ (this usually corresponds to the 21026group ‘nnml:mail.spam’), and you would call 21027‘spam-stat-process-non-spam-directory’ on a directory such as 21028‘~/Mail/mail/misc’ (this usually corresponds to the group 21029‘nnml:mail.misc’). 21030 21031 When you are using IMAP, you won’t have the mails available locally, 21032so that will not work. One solution is to use the Gnus Agent to cache 21033the articles. Then you can use directories such as 21034‘"~/News/agent/nnimap/mail.yourisp.com/personal_spam"’ for 21035‘spam-stat-process-spam-directory’. *Note Agent as Cache::. 21036 21037 -- Variable: spam-stat 21038 This variable holds the hash-table with all the statistics—the 21039 dictionary we have been talking about. For every word in either 21040 collection, this hash-table stores a vector describing how often 21041 the word appeared in spam and often it appeared in non-spam mails. 21042 21043 If you want to regenerate the statistics from scratch, you need to 21044reset the dictionary. 21045 21046 -- Function: spam-stat-reset 21047 Reset the ‘spam-stat’ hash-table, deleting all the statistics. 21048 21049 When you are done, you must save the dictionary. The dictionary may 21050be rather large. If you will not update the dictionary incrementally 21051(instead, you will recreate it once a month, for example), then you can 21052reduce the size of the dictionary by deleting all words that did not 21053appear often enough or that do not clearly belong to only spam or only 21054non-spam mails. 21055 21056 -- Function: spam-stat-reduce-size 21057 Reduce the size of the dictionary. Use this only if you do not 21058 want to update the dictionary incrementally. 21059 21060 -- Function: spam-stat-save 21061 Save the dictionary. 21062 21063 -- Variable: spam-stat-file 21064 The filename used to store the dictionary. This defaults to 21065 ‘~/.spam-stat.el’. 21066 21067 21068File: gnus.info, Node: Splitting mail using spam-stat, Next: Low-level interface to the spam-stat dictionary, Prev: Creating a spam-stat dictionary, Up: Spam Statistics Package 21069 210709.18.8.2 Splitting mail using spam-stat 21071....................................... 21072 21073This section describes how to use the Spam statistics _independently_ of 21074the *Note Spam Package::. 21075 21076 First, add the following to your ‘~/.gnus.el’ file: 21077 21078 (require 'spam-stat) 21079 (spam-stat-load) 21080 21081 This will load the necessary Gnus code, and the dictionary you 21082created. 21083 21084 Next, you need to adapt your fancy splitting rules: You need to 21085determine how to use ‘spam-stat’. The following examples are for the 21086nnml back end. Using the nnimap back end works just as well. Just use 21087‘nnimap-split-fancy’ instead of ‘nnmail-split-fancy’. 21088 21089 In the simplest case, you only have two groups, ‘mail.misc’ and 21090‘mail.spam’. The following expression says that mail is either spam or 21091it should go into ‘mail.misc’. If it is spam, then 21092‘spam-stat-split-fancy’ will return ‘mail.spam’. 21093 21094 (setq nnmail-split-fancy 21095 `(| (: spam-stat-split-fancy) 21096 "mail.misc")) 21097 21098 -- Variable: spam-stat-split-fancy-spam-group 21099 The group to use for spam. Default is ‘mail.spam’. 21100 21101 If you also filter mail with specific subjects into other groups, use 21102the following expression. Only mails not matching the regular 21103expression are considered potential spam. 21104 21105 (setq nnmail-split-fancy 21106 `(| ("Subject" "\\bspam-stat\\b" "mail.emacs") 21107 (: spam-stat-split-fancy) 21108 "mail.misc")) 21109 21110 If you want to filter for spam first, then you must be careful when 21111creating the dictionary. Note that ‘spam-stat-split-fancy’ must 21112consider both mails in ‘mail.emacs’ and in ‘mail.misc’ as non-spam, 21113therefore both should be in your collection of non-spam mails, when 21114creating the dictionary! 21115 21116 (setq nnmail-split-fancy 21117 `(| (: spam-stat-split-fancy) 21118 ("Subject" "\\bspam-stat\\b" "mail.emacs") 21119 "mail.misc")) 21120 21121 You can combine this with traditional filtering. Here, we move all 21122HTML-only mails into the ‘mail.spam.filtered’ group. Note that since 21123‘spam-stat-split-fancy’ will never see them, the mails in 21124‘mail.spam.filtered’ should be neither in your collection of spam mails, 21125nor in your collection of non-spam mails, when creating the dictionary! 21126 21127 (setq nnmail-split-fancy 21128 `(| ("Content-Type" "text/html" "mail.spam.filtered") 21129 (: spam-stat-split-fancy) 21130 ("Subject" "\\bspam-stat\\b" "mail.emacs") 21131 "mail.misc")) 21132 21133 21134File: gnus.info, Node: Low-level interface to the spam-stat dictionary, Prev: Splitting mail using spam-stat, Up: Spam Statistics Package 21135 211369.18.8.3 Low-level interface to the spam-stat dictionary 21137........................................................ 21138 21139The main interface to using ‘spam-stat’, are the following functions: 21140 21141 -- Function: spam-stat-buffer-is-spam 21142 Called in a buffer, that buffer is considered to be a new spam 21143 mail. Use this for new mail that has not been processed before. 21144 21145 -- Function: spam-stat-buffer-is-no-spam 21146 Called in a buffer, that buffer is considered to be a new non-spam 21147 mail. Use this for new mail that has not been processed before. 21148 21149 -- Function: spam-stat-buffer-change-to-spam 21150 Called in a buffer, that buffer is no longer considered to be 21151 normal mail but spam. Use this to change the status of a mail that 21152 has already been processed as non-spam. 21153 21154 -- Function: spam-stat-buffer-change-to-non-spam 21155 Called in a buffer, that buffer is no longer considered to be spam 21156 but normal mail. Use this to change the status of a mail that has 21157 already been processed as spam. 21158 21159 -- Function: spam-stat-save 21160 Save the hash table to the file. The filename used is stored in 21161 the variable ‘spam-stat-file’. 21162 21163 -- Function: spam-stat-load 21164 Load the hash table from a file. The filename used is stored in 21165 the variable ‘spam-stat-file’. 21166 21167 -- Function: spam-stat-score-word 21168 Return the spam score for a word. 21169 21170 -- Function: spam-stat-score-buffer 21171 Return the spam score for a buffer. 21172 21173 -- Function: spam-stat-split-fancy 21174 Use this function for fancy mail splitting. Add the rule ‘(: 21175 spam-stat-split-fancy)’ to ‘nnmail-split-fancy’ 21176 21177 Make sure you load the dictionary before using it. This requires the 21178following in your ‘~/.gnus.el’ file: 21179 21180 (require 'spam-stat) 21181 (spam-stat-load) 21182 21183 Typical test will involve calls to the following functions: 21184 21185 Reset: (setq spam-stat (make-hash-table :test 'equal)) 21186 Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam") 21187 Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc") 21188 Save table: (spam-stat-save) 21189 File size: (file-attribute-size (file-attributes spam-stat-file)) 21190 Number of words: (hash-table-count spam-stat) 21191 Test spam: (spam-stat-test-directory "~/Mail/mail/spam") 21192 Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc") 21193 Reduce table size: (spam-stat-reduce-size) 21194 Save table: (spam-stat-save) 21195 File size: (file-attribute-size (file-attributes spam-stat-file)) 21196 Number of words: (hash-table-count spam-stat) 21197 Test spam: (spam-stat-test-directory "~/Mail/mail/spam") 21198 Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc") 21199 21200 Here is how you would create your dictionary: 21201 21202 Reset: (setq spam-stat (make-hash-table :test 'equal)) 21203 Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam") 21204 Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc") 21205 Repeat for any other non-spam group you need... 21206 Reduce table size: (spam-stat-reduce-size) 21207 Save table: (spam-stat-save) 21208 21209 21210File: gnus.info, Node: The Gnus Registry, Next: The Gnus Cloud, Prev: Spam Package, Up: Various 21211 212129.19 The Gnus Registry 21213====================== 21214 21215The Gnus registry is a package that tracks messages by their Message-ID 21216across all backends. This allows Gnus users to do several cool things, 21217be the envy of the locals, get free haircuts, and be experts on world 21218issues. Well, maybe not all of those, but the features are pretty cool. 21219 21220 Although they will be explained in detail shortly, here’s a quick 21221list of said features in case your attention span is... never mind. 21222 21223 1. Split messages to their parent 21224 21225 This keeps discussions in the same group. You can use the subject 21226 and the sender in addition to the Message-ID. Several strategies 21227 are available. 21228 21229 2. Refer to messages by ID 21230 21231 Commands like ‘gnus-summary-refer-parent-article’ can take 21232 advantage of the registry to jump to the referred article, 21233 regardless of the group the message is in. 21234 21235 3. Store custom flags and keywords 21236 21237 The registry can store custom flags and keywords for a message. 21238 For instance, you can mark a message “To-Do” this way and the flag 21239 will persist whether the message is in the nnimap, nnml, nnmaildir, 21240 etc. backends. 21241 21242 4. Store arbitrary data 21243 21244 Through a simple ELisp API, the registry can remember any data for 21245 a message. A built-in inverse map, when activated, allows quick 21246 lookups of all messages matching a particular set of criteria. 21247 21248* Menu: 21249 21250* Gnus Registry Setup:: 21251* Registry Article Refer Method:: 21252* Fancy splitting to parent:: 21253* Store custom flags and keywords:: 21254* Store arbitrary data:: 21255 21256 21257File: gnus.info, Node: Gnus Registry Setup, Next: Registry Article Refer Method, Up: The Gnus Registry 21258 212599.19.1 Gnus Registry Setup 21260-------------------------- 21261 21262Fortunately, setting up the Gnus registry is pretty easy: 21263 21264 (setq gnus-registry-max-entries 2500) 21265 21266 (gnus-registry-initialize) 21267 21268 This adds registry saves to Gnus newsrc saves (which happen on exit 21269and when you press ‘s’ from the ‘*Group*’ buffer. It also adds registry 21270calls to article actions in Gnus (copy, move, etc.) so it’s not easy to 21271undo the initialization. See ‘gnus-registry-initialize’ for the gory 21272details. 21273 21274 Here are other settings used by the author of the registry 21275(understand what they do before you copy them blindly). 21276 21277 (setq 21278 gnus-registry-split-strategy 'majority 21279 gnus-registry-ignored-groups '(("nntp" t) 21280 ("nnrss" t) 21281 ("spam" t) 21282 ("train" t)) 21283 gnus-registry-max-entries 500000 21284 ;; this is the default 21285 gnus-registry-track-extra '(sender subject)) 21286 21287 They say: keep a lot of messages around, track messages by sender and 21288subject (not just parent Message-ID), and when the registry splits 21289incoming mail, use a majority rule to decide where messages should go if 21290there’s more than one possibility. In addition, the registry should 21291ignore messages in groups that match “nntp”, “nnrss”, “spam”, or 21292“train.” 21293 21294 You are doubtless impressed by all this, but you ask: “I am a Gnus 21295user, I customize to live. Give me more.” Here you go, these are the 21296general settings. 21297 21298 -- Variable: gnus-registry-unfollowed-groups 21299 The groups that will not be followed by 21300 ‘gnus-registry-split-fancy-with-parent’. They will still be 21301 remembered by the registry. This is a list of regular expressions. 21302 By default any group name that ends with “delayed”, “drafts”, 21303 “queue”, or “INBOX”, belongs to the nnmairix backend, or contains 21304 the word “archive” is not followed. 21305 21306 -- Variable: gnus-registry-max-entries 21307 The number (an integer or ‘nil’ for unlimited) of entries the 21308 registry will keep. If the registry has reached or exceeded this 21309 size, it will reject insertion of new entries. 21310 21311 -- Variable: gnus-registry-prune-factor 21312 This option (a float between 0 and 1) controls how much the 21313 registry is cut back during pruning. In order to prevent constant 21314 pruning, the registry will be pruned back to less than 21315 ‘gnus-registry-max-entries’. This option controls exactly how much 21316 less: the target is calculated as the maximum number of entries 21317 minus the maximum number times this factor. The default is 0.1: 21318 i.e., if your registry is limited to 50000 entries, pruning will 21319 try to cut back to 45000 entries. Entries with keys marked as 21320 precious will not be pruned. 21321 21322 -- Variable: gnus-registry-default-sort-function 21323 This option specifies how registry entries are sorted during 21324 pruning. If a function is given, it should sort least valuable 21325 entries first, as pruning starts from the beginning of the list. 21326 The default value is ‘gnus-registry-sort-by-creation-time’, which 21327 proposes the oldest entries for pruning. Set to nil to perform no 21328 sorting, which will speed up the pruning process. 21329 21330 -- Variable: gnus-registry-cache-file 21331 The file where the registry will be stored between Gnus sessions. 21332 By default the file name is ‘.gnus.registry.eieio’ in the same 21333 directory as your ‘.newsrc.eld’. 21334 21335 21336File: gnus.info, Node: Registry Article Refer Method, Next: Fancy splitting to parent, Prev: Gnus Registry Setup, Up: The Gnus Registry 21337 213389.19.2 Fetching by ‘Message-ID’ Using the Registry 21339-------------------------------------------------- 21340 21341The registry knows how to map each ‘Message-ID’ to the group it’s in. 21342This can be leveraged to enhance the “article refer method”, the thing 21343that tells Gnus how to look up an article given its Message-ID (*note 21344Finding the Parent::). 21345 21346 The ‘nnregistry’ refer method does exactly that. It has the 21347advantage that an article may be found regardless of the group it’s 21348in—provided its ‘Message-ID’ is known to the registry. It can be 21349enabled by augmenting the start-up file with something along these 21350lines: 21351 21352 ;; Keep enough entries to have a good hit rate when referring to an 21353 ;; article using the registry. Use long group names so that Gnus 21354 ;; knows where the article is. 21355 (setq gnus-registry-max-entries 2500) 21356 21357 (gnus-registry-initialize) 21358 21359 (setq gnus-refer-article-method 21360 '(current 21361 (nnregistry) 21362 (nnweb "gmane" (nnweb-type gmane)))) 21363 21364 The example above instructs Gnus to first look up the article in the 21365current group, or, alternatively, using the registry, and finally, if 21366all else fails, using Gmane. 21367 21368 21369File: gnus.info, Node: Fancy splitting to parent, Next: Store custom flags and keywords, Prev: Registry Article Refer Method, Up: The Gnus Registry 21370 213719.19.3 Fancy splitting to parent 21372-------------------------------- 21373 21374Simply put, this lets you put followup e-mail where it belongs. 21375 21376 Every message has a Message-ID, which is unique, and the registry 21377remembers it. When the message is moved or copied, the registry will 21378notice this and offer the new group as a choice to the splitting 21379strategy. 21380 21381 When a followup is made, usually it mentions the original message’s 21382Message-ID in the headers. The registry knows this and uses that 21383mention to find the group where the original message lives. You only 21384have to put a rule like this: 21385 21386 (setq nnimap-my-split-fancy '(| 21387 21388 ;; split to parent: you need this 21389 (: gnus-registry-split-fancy-with-parent) 21390 21391 ;; other rules, as an example 21392 (: spam-split) 21393 ;; default mailbox 21394 "mail") 21395 21396 in your fancy split setup. In addition, you may want to customize 21397the following variables. 21398 21399 -- Variable: gnus-registry-track-extra 21400 This is a list of symbols, so it’s best to change it from the 21401 Customize interface. By default it’s ‘(subject sender recipient)’, 21402 which may work for you. It can be annoying if your mail flow is 21403 large and people don’t stick to the same groups. 21404 21405 When you decide to stop tracking any of those extra data, you can 21406 use the command ‘gnus-registry-remove-extra-data’ to purge it from 21407 the existing registry entries. 21408 21409 -- Variable: gnus-registry-split-strategy 21410 This is a symbol, so it’s best to change it from the Customize 21411 interface. By default it’s ‘nil’, but you may want to set it to 21412 ‘majority’ or ‘first’ to split by sender or subject based on the 21413 majority of matches or on the first found. I find ‘majority’ works 21414 best. 21415 21416 21417File: gnus.info, Node: Store custom flags and keywords, Next: Store arbitrary data, Prev: Fancy splitting to parent, Up: The Gnus Registry 21418 214199.19.4 Store custom flags and keywords 21420-------------------------------------- 21421 21422The registry lets you set custom flags and keywords per message. You 21423can use the Gnus->Registry Marks menu or the ‘M M x’ keyboard shortcuts, 21424where ‘x’ is the first letter of the mark’s name. 21425 21426 -- Variable: gnus-registry-marks 21427 The custom marks that the registry can use. You can modify the 21428 default list, if you like. If you do, you’ll have to exit Emacs 21429 before they take effect (you can also unload the registry and 21430 reload it or evaluate the specific macros you’ll need, but you 21431 probably don’t want to bother). Use the Customize interface to 21432 modify the list. 21433 21434 By default this list has the ‘Important’, ‘Work’, ‘Personal’, 21435 ‘To-Do’, and ‘Later’ marks. They all have keyboard shortcuts like 21436 ‘M M i’ for Important, using the first letter. 21437 21438 -- Function: gnus-registry-mark-article 21439 Call this function to mark an article with a custom registry mark. 21440 It will offer the available marks for completion. 21441 21442 You can use ‘defalias’ to install a summary line formatting function 21443that will show the registry marks. There are two flavors of this 21444function, either showing the marks as single characters, using their 21445‘:char’ property, or showing the marks as full strings. 21446 21447 ;; show the marks as single characters (see the :char property in 21448 ;; 'gnus-registry-marks'): 21449 ;; (defalias 'gnus-user-format-function-M 'gnus-registry-article-marks-to-chars) 21450 21451 ;; show the marks by name (see 'gnus-registry-marks'): 21452 ;; (defalias 'gnus-user-format-function-M 'gnus-registry-article-marks-to-names) 21453 21454 21455File: gnus.info, Node: Store arbitrary data, Prev: Store custom flags and keywords, Up: The Gnus Registry 21456 214579.19.5 Store arbitrary data 21458--------------------------- 21459 21460The registry has a simple API that uses a Message-ID as the key to store 21461arbitrary data (as long as it can be converted to a list for storage). 21462 21463 -- Function: gnus-registry-set-id-key (id key value) 21464 Store ‘value’ under ‘key’ for message ‘id’. 21465 21466 -- Function: gnus-registry-get-id-key (id key) 21467 Get the data under ‘key’ for message ‘id’. 21468 21469 -- Variable: gnus-registry-extra-entries-precious 21470 If any extra entries are precious, their presence will make the 21471 registry keep the whole entry forever, even if there are no groups 21472 for the Message-ID and if the size limit of the registry is 21473 reached. By default this is just ‘(mark)’ so the custom registry 21474 marks are precious. 21475 21476 21477File: gnus.info, Node: The Gnus Cloud, Next: Other modes, Prev: The Gnus Registry, Up: Various 21478 214799.20 The Gnus Cloud 21480=================== 21481 21482The Gnus Cloud is a way to synchronize marks and general files and data 21483across multiple machines. 21484 21485 Very often, you want all your marks (what articles you’ve read, which 21486ones were important, and so on) to be synchronized between several 21487machines. With IMAP, that’s built into the protocol, so you can read 21488nnimap groups from many machines and they are automatically 21489synchronized. But NNTP, nnrss, and many other backends do not store 21490marks, so you have to do it locally. 21491 21492 The Gnus Cloud package stores the marks, plus any files you choose, 21493on an IMAP server in a special folder. It’s like a 21494DropTorrentSyncBoxOakTree(TM).(1) 21495 21496* Menu: 21497 21498* Gnus Cloud Setup:: 21499* Gnus Cloud Usage:: 21500 21501 ---------- Footnotes ---------- 21502 21503 (1) The name “Gnus Cloud” parodizes but otherwise has little to do 21504with “cloud computing”, a misleading term normally best avoided 21505(https://www.gnu.org/philosophy/words-to-avoid.html#CloudComputing). 21506 21507 21508File: gnus.info, Node: Gnus Cloud Setup, Next: Gnus Cloud Usage, Up: The Gnus Cloud 21509 215109.20.1 Gnus Cloud Setup 21511----------------------- 21512 21513Setting up the Gnus Cloud takes less than a minute. From the Group 21514buffer: 21515 21516 Press ‘^’ to go to the Server buffer. Here you’ll see all the 21517servers that Gnus knows. *Note Server Buffer::. 21518 21519 Then press ‘i’ to mark any servers as cloud-synchronized (their marks 21520are synchronized). 21521 21522 Then press ‘I’ to mark a single server as the cloud host (it must be 21523an IMAP server, and will host a special IMAP folder with all the 21524synchronization data). This will set the variable ‘gnus-cloud-method’ 21525(using the Customize facilities), then ask you to optionally upload your 21526first CloudSynchronizationDataPack(TM). 21527 21528 21529File: gnus.info, Node: Gnus Cloud Usage, Prev: Gnus Cloud Setup, Up: The Gnus Cloud 21530 215319.20.2 Gnus Cloud Usage 21532----------------------- 21533 21534After setting up, you can use these shortcuts from the Group buffer: 21535 21536‘~ <RET>’ 21537‘~ d’ 21538 Download the latest Gnus Cloud data. 21539 21540‘~ u’ 21541‘~ ~’ 21542 Upload the local Gnus Cloud data. Creates a new 21543 CloudSynchronizationDataPack(TM). 21544 21545 But wait, there’s more. Of course there’s more. So much more. You 21546can customize all of the following. 21547 21548 -- Variable: gnus-cloud-synced-files 21549 These are the files that will be part of every 21550 CloudSynchronizationDataPack(TM). They are included in every 21551 upload, so don’t synchronize a lot of large files. Files under 21552 100Kb are best. 21553 21554 -- Variable: gnus-cloud-storage-method 21555 This is a choice from several storage methods. It’s highly 21556 recommended to use the EPG facilities. It will be automatic if 21557 have GnuPG installed and EPG loaded. Otherwise, you could use 21558 Base64+gzip, Base64, or no encoding. 21559 21560 -- Variable: gnus-cloud-interactive 21561 When this is set, and by default it is, the Gnus Cloud package will 21562 ask you for confirmation here and there. Leave it on until you’re 21563 comfortable with the package. 21564 21565 -- Variable: gnus-cloud-method 21566 The name of the IMAP server to store the 21567 CloudSynchronizationDataPack(TM)s. It’s easiest to set this from 21568 the Server buffer (*note Gnus Cloud Setup::). 21569 21570 21571File: gnus.info, Node: Other modes, Next: Various Various, Prev: The Gnus Cloud, Up: Various 21572 215739.21 Interaction with other modes 21574================================= 21575 215769.21.1 Dired 21577------------ 21578 21579‘gnus-dired-minor-mode’ provides some useful functions for dired 21580buffers. It is enabled with 21581 (add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) 21582 21583‘C-c C-m C-a’ 21584 Send dired’s marked files as an attachment (‘gnus-dired-attach’). 21585 You will be prompted for a message buffer. 21586 21587‘C-c C-m C-l’ 21588 Visit a file according to the appropriate mailcap entry 21589 (‘gnus-dired-find-file-mailcap’). With prefix, open file in a new 21590 buffer. 21591 21592‘C-c C-m C-p’ 21593 Print file according to the mailcap entry (‘gnus-dired-print’). If 21594 there is no print command, print in a PostScript image. 21595 21596 21597File: gnus.info, Node: Various Various, Prev: Other modes, Up: Various 21598 215999.22 Various Various 21600==================== 21601 21602‘gnus-home-directory’ 21603 All Gnus file and directory variables will be initialized from this 21604 variable, which defaults to ‘~/’. 21605 21606‘gnus-directory’ 21607 Most Gnus storage file and directory variables will be initialized 21608 from this variable, which defaults to the ‘SAVEDIR’ environment 21609 variable, or ‘~/News/’ if that variable isn’t set. 21610 21611 Note that Gnus is mostly loaded when the ‘~/.gnus.el’ file is read. 21612 This means that other directory variables that are initialized from 21613 this variable won’t be set properly if you set this variable in 21614 ‘~/.gnus.el’. Set this variable in ‘.emacs’ instead. 21615 21616‘gnus-default-directory’ 21617 Not related to the above variable at all—this variable says what 21618 the default directory of all Gnus buffers should be. If you issue 21619 commands like ‘C-x C-f’, the prompt you’ll get starts in the 21620 current buffer’s default directory. If this variable is ‘nil’ 21621 (which is the default), the default directory will be the default 21622 directory of the buffer you were in when you started Gnus. 21623 21624‘gnus-verbose’ 21625 This variable is an integer between zero and ten. The higher the 21626 value, the more messages will be displayed. If this variable is 21627 zero, Gnus will never flash any messages, if it is seven (which is 21628 the default), most important messages will be shown, and if it is 21629 ten, Gnus won’t ever shut up, but will flash so many messages it 21630 will make your head swim. 21631 21632‘gnus-verbose-backends’ 21633 This variable works the same way as ‘gnus-verbose’, but it applies 21634 to the Gnus back ends instead of Gnus proper. 21635 21636‘gnus-add-timestamp-to-message’ 21637 This variable controls whether to add timestamps to messages that 21638 are controlled by ‘gnus-verbose’ and ‘gnus-verbose-backends’ and 21639 are issued. The default value is ‘nil’ which means never to add 21640 timestamp. If it is ‘log’, add timestamps to only the messages 21641 that go into the ‘*Messages*’ buffer. If it is neither ‘nil’ nor 21642 ‘log’, add timestamps not only to log messages but also to the ones 21643 displayed in the echo area. 21644 21645‘nnheader-max-head-length’ 21646 When the back ends read straight heads of articles, they all try to 21647 read as little as possible. This variable (default 8192) specifies 21648 the absolute max length the back ends will try to read before 21649 giving up on finding a separator line between the head and the 21650 body. If this variable is ‘nil’, there is no upper read bound. If 21651 it is ‘t’, the back ends won’t try to read the articles piece by 21652 piece, but read the entire articles. This makes sense with some 21653 versions of ‘ange-ftp’ or ‘efs’. 21654 21655‘nnheader-head-chop-length’ 21656 This variable (default 2048) says how big a piece of each article 21657 to read when doing the operation described above. 21658 21659‘nnheader-file-name-translation-alist’ 21660 This is an alist that says how to translate characters in file 21661 names. For instance, if ‘:’ is invalid as a file character in file 21662 names on your system (you MS Windows user you), you could say 21663 something like: 21664 21665 (setq nnheader-file-name-translation-alist 21666 '((?: . ?_))) 21667 21668 In fact, this is (part of) the default value for this variable on 21669 MS Windows (phooey) systems. 21670 21671‘gnus-hidden-properties’ 21672 This is a list of properties to use to hide “invisible” text. It 21673 is ‘(invisible t intangible t)’ by default on most systems, which 21674 makes invisible text invisible and intangible. 21675 21676‘gnus-parse-headers-hook’ 21677 A hook called before parsing headers. It can be used, for 21678 instance, to gather statistics on the headers fetched, or perhaps 21679 you’d like to prune some headers. I don’t see why you’d want that, 21680 though. 21681 21682‘gnus-shell-command-separator’ 21683 String used to separate two shell commands. The default is ‘;’. 21684 21685‘gnus-invalid-group-regexp’ 21686 21687 Regexp to match “invalid” group names when querying user for a 21688 group name. The default value catches some *really* invalid group 21689 names who could possibly mess up Gnus internally (like allowing ‘:’ 21690 in a group name, which is normally used to delimit method and 21691 group). 21692 21693 IMAP users might want to allow ‘/’ in group names though. 21694 21695‘gnus-safe-html-newsgroups’ 21696 Groups in which links in html articles are considered all safe. 21697 The value may be a regexp matching those groups, a list of group 21698 names, or ‘nil’. This overrides ‘mm-w3m-safe-url-regexp’. The 21699 default value is ‘"\\`nnrss[+:]"’. This is effective only when 21700 emacs-w3m renders html articles, i.e., in the case 21701 ‘mm-text-html-renderer’ is set to ‘w3m’. *Note Display 21702 Customization: (emacs-mime)Display Customization. 21703 21704 21705File: gnus.info, Node: The End, Next: Appendices, Prev: Various, Up: Top 21706 2170710 The End 21708********** 21709 21710Well, that’s the manual—you can get on with your life now. Keep in 21711touch. Say hello to your cats from me. 21712 21713 My *ghod*—I just can’t stand goodbyes. Sniffle. 21714 21715 Ol’ Charles Reznikoff said it pretty well, so I leave the floor to 21716him: 21717 21718 *Te Deum* 21719 21720 21721 Not because of victories 21722 I sing, 21723 having none, 21724 but for the common sunshine, 21725 the breeze, 21726 the largess of the spring. 21727 21728 21729 Not for victory 21730 but for the day’s work done 21731 as well as I was able; 21732 not for a seat upon the dais 21733 but at the common table. 21734 21735 21736File: gnus.info, Node: Appendices, Next: GNU Free Documentation License, Prev: The End, Up: Top 21737 2173811 Appendices 21739************* 21740 21741* Menu: 21742 21743* History:: How Gnus got where it is today. 21744* On Writing Manuals:: Why this is not a beginner’s guide. 21745* Terminology:: We use really difficult, like, words here. 21746* Customization:: Tailoring Gnus to your needs. 21747* Troubleshooting:: What you might try if things do not work. 21748* Gnus Reference Guide:: Rilly, rilly technical stuff. 21749* Emacs for Heathens:: A short introduction to Emacsian terms. 21750* Frequently Asked Questions:: The Gnus FAQ 21751 21752 21753File: gnus.info, Node: History, Next: On Writing Manuals, Up: Appendices 21754 2175511.1 History 21756============ 21757 21758GNUS was written by Masanobu UMEDA. When autumn crept up in ’94, Lars 21759Magne Ingebrigtsen grew bored and decided to rewrite Gnus. 21760 21761 If you want to investigate the person responsible for this outrage, 21762you can point your (feh!) web browser to <https://quimby.gnus.org/>. 21763This is also the primary distribution point for the new and spiffy 21764versions of Gnus, and is known as The Site That Destroys Newsrcs And 21765Drives People Mad. 21766 21767 During the first extended alpha period of development, the new Gnus 21768was called “(ding) Gnus”. “(ding)” is, of course, short for “ding is 21769not Gnus”, which is a total and utter lie, but who cares? (Besides, the 21770“Gnus” in this abbreviation should probably be pronounced “news” as 21771UMEDA intended, which makes it a more appropriate name, don’t you 21772think?) 21773 21774 In any case, after spending all that energy on coming up with a new 21775and spunky name, we decided that the name was _too_ spunky, so we 21776renamed it back again to “Gnus”. But in mixed case. “Gnus” vs. 21777“GNUS”. New vs. old. 21778 21779* Menu: 21780 21781* Gnus Versions:: What Gnus versions have been released. 21782* Why?:: What’s the point of Gnus? 21783* Compatibility:: Just how compatible is Gnus with GNUS? 21784* Conformity:: Gnus tries to conform to all standards. 21785* Emacsen:: Gnus can be run on a few modern Emacsen. 21786* Gnus Development:: How Gnus is developed. 21787* Contributors:: Oodles of people. 21788* New Features:: Pointers to some of the new stuff in Gnus. 21789 21790 21791File: gnus.info, Node: Gnus Versions, Next: Why?, Up: History 21792 2179311.1.1 Gnus Versions 21794-------------------- 21795 21796The first “proper” release of Gnus 5 was done in November 1995 when it 21797was included in the Emacs 19.30 distribution (132 (ding) Gnus releases 21798plus 15 Gnus 5.0 releases). 21799 21800 In May 1996 the next Gnus generation (aka. “September Gnus” (after 2180199 releases)) was released under the name “Gnus 5.2” (40 releases). 21802 21803 On July 28th 1996 work on Red Gnus was begun, and it was released on 21804January 25th 1997 (after 84 releases) as “Gnus 5.4” (67 releases). 21805 21806 On September 13th 1997, Quassia Gnus was started and lasted 37 21807releases. It was released as “Gnus 5.6” on March 8th 1998 (46 21808releases). 21809 21810 Gnus 5.6 begat Pterodactyl Gnus on August 29th 1998 and was released 21811as “Gnus 5.8” (after 99 releases and a CVS repository) on December 3rd 218121999. 21813 21814 On the 26th of October 2000, Oort Gnus was begun and was released as 21815Gnus 5.10 on May 1st 2003 (24 releases). 21816 21817 On the January 4th 2004, No Gnus was begun. 21818 21819 On April 19, 2010 Gnus development was moved to Git. 21820 21821 On the January 31th 2012, Ma Gnus was begun. 21822 21823 If you happen upon a version of Gnus that has a prefixed name—“(ding) 21824Gnus”, “September Gnus”, “Red Gnus”, “Quassia Gnus”, “Pterodactyl Gnus”, 21825“Oort Gnus”, “No Gnus”, “Ma Gnus”—don’t panic. Don’t let it know that 21826you’re frightened. Back away. Slowly. Whatever you do, don’t run. 21827Walk away, calmly, until you’re out of its reach. Find a proper 21828released version of Gnus and snuggle up to that instead. 21829 21830 21831File: gnus.info, Node: Why?, Next: Compatibility, Prev: Gnus Versions, Up: History 21832 2183311.1.2 Why? 21834----------- 21835 21836What’s the point of Gnus? 21837 21838 I want to provide a “rad”, “happening”, “way cool” and “hep” 21839newsreader, that lets you do anything you can think of. That was my 21840original motivation, but while working on Gnus, it has become clear to 21841me that this generation of newsreaders really belong in the stone age. 21842Newsreaders haven’t developed much since the infancy of the net. If the 21843volume continues to rise with the current rate of increase, all current 21844newsreaders will be pretty much useless. How do you deal with 21845newsgroups that have thousands of new articles each day? How do you 21846keep track of millions of people who post? 21847 21848 Gnus offers no real solutions to these questions, but I would very 21849much like to see Gnus being used as a testing ground for new methods of 21850reading and fetching news. Expanding on UMEDA-san’s wise decision to 21851separate the newsreader from the back ends, Gnus now offers a simple 21852interface for anybody who wants to write new back ends for fetching mail 21853and news from different sources. I have added hooks for customizations 21854everywhere I could imagine it being useful. By doing so, I’m inviting 21855every one of you to explore and invent. 21856 21857 May Gnus never be complete. ‘C-u 100 M-x all-hail-emacs’. 21858 21859 21860File: gnus.info, Node: Compatibility, Next: Conformity, Prev: Why?, Up: History 21861 2186211.1.3 Compatibility 21863-------------------- 21864 21865Gnus was designed to be fully compatible with GNUS. Almost all key 21866bindings have been kept. More key bindings have been added, of course, 21867but only in one or two obscure cases have old bindings been changed. 21868 21869 Our motto is: 21870 In a cloud bones of steel. 21871 21872 All commands have kept their names. Some internal functions have 21873changed their names. 21874 21875 The ‘gnus-uu’ package has changed drastically. *Note Decoding 21876Articles::. 21877 21878 One major compatibility question is the presence of several summary 21879buffers. All variables relevant while reading a group are buffer-local 21880to the summary buffer they belong in. Although many important variables 21881have their values copied into their global counterparts whenever a 21882command is executed in the summary buffer, this change might lead to 21883incorrect values being used unless you are careful. 21884 21885 All code that relies on knowledge of GNUS internals will probably 21886fail. To take two examples: Sorting ‘gnus-newsrc-alist’ (or changing it 21887in any way, as a matter of fact) is strictly verboten. Gnus maintains a 21888hash table that points to the entries in this alist (which speeds up 21889many functions), and changing the alist directly will lead to peculiar 21890results. 21891 21892 Old hilit19 code does not work at all. In fact, you should probably 21893remove all hilit code from all Gnus hooks (‘gnus-group-prepare-hook’ and 21894‘gnus-summary-prepare-hook’). Gnus provides various integrated 21895functions for highlighting. These are faster and more accurate. To 21896make life easier for everybody, Gnus will by default remove all hilit 21897calls from all hilit hooks. Uncleanliness! Away! 21898 21899 Packages like ‘expire-kill’ will no longer work. As a matter of 21900fact, you should probably remove all old GNUS packages (and other code) 21901when you start using Gnus. More likely than not, Gnus already does what 21902you have written code to make GNUS do. (Snicker.) 21903 21904 Even though old methods of doing things are still supported, only the 21905new methods are documented in this manual. If you detect a new method 21906of doing something while reading this manual, that does not mean you 21907have to stop doing it the old way. 21908 21909 Gnus understands all GNUS startup files. 21910 21911 Overall, a casual user who hasn’t written much code that depends on 21912GNUS internals should suffer no problems. If problems occur, please let 21913me know by issuing that magic command ‘M-x gnus-bug’. 21914 21915 21916File: gnus.info, Node: Conformity, Next: Emacsen, Prev: Compatibility, Up: History 21917 2191811.1.4 Conformity 21919----------------- 21920 21921No rebels without a clue here, ma’am. We conform to all standards known 21922to (wo)man. Except for those standards and/or conventions we disagree 21923with, of course. 21924 21925*RFC 822* 21926 There are no known breaches of this standard or its successors 21927 (currently RFCs 2822 and 5322). 21928 21929*RFC 1036* 21930 There are no known breaches of this (now-obsolete) standard, 21931 either. 21932 21933*RFC 5536* 21934 We do have some breaches of this standard, the successor of RFC 21935 1036. 21936 21937 _X-Newsreader_ 21938 _User-Agent_ 21939 These are considered to be “vanity headers”, while I consider 21940 them to be consumer information. After seeing so many badly 21941 formatted articles coming from ‘tin’ and ‘Netscape’ I know not 21942 to use either of those for posting articles. I would not have 21943 known that if it wasn’t for the ‘X-Newsreader’ header. 21944 21945*USEFOR* 21946 USEFOR was an IETF working group that produced Internet RFCs 5536 21947 and 5537. The Gnus towers will look into implementing the changes 21948 embodied by these standards. 21949 21950*MIME—RFC 2045–2049 etc* 21951 All the various MIME RFCs are supported. 21952 21953*Disposition Notifications—RFC 2298* 21954 Message Mode is able to request notifications from the receiver. 21955 21956*PGP—RFC 1991 and RFC 2440* 21957 RFC 1991 is the original PGP message specification, published as an 21958 informational RFC. RFC 2440 was the follow-up, now called Open 21959 PGP, and put on the Standards Track. Both document a non-MIME 21960 aware PGP format. Gnus supports both encoding (signing and 21961 encryption) and decoding (verification and decryption). 21962 21963*PGP/MIME—RFC 2015/3156* 21964 RFC 2015 (superseded by 3156 which references RFC 2440 instead of 21965 RFC 1991) describes the MIME-wrapping around the RFC 1991/2440 21966 format. Gnus supports both encoding and decoding. 21967 21968*S/MIME—RFC 2633* 21969 RFC 2633 describes the S/MIME format. 21970 21971*IMAP—RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731* 21972 RFC 1730 is IMAP version 4, updated somewhat by RFC 2060 (IMAP 4 21973 revision 1). RFC 2195 describes CRAM-MD5 authentication for IMAP. 21974 RFC 2086 describes access control lists (ACLs) for IMAP. RFC 2359 21975 describes a IMAP protocol enhancement. RFC 2595 describes the 21976 proper TLS integration (STARTTLS) with IMAP. RFC 1731 describes 21977 the GSSAPI/Kerberos4 mechanisms for IMAP. 21978 21979 If you ever notice Gnus acting non-compliant with regards to the 21980texts mentioned above, don’t hesitate to drop a note to Gnus Towers and 21981let us know. 21982 21983 21984File: gnus.info, Node: Emacsen, Next: Gnus Development, Prev: Conformity, Up: History 21985 2198611.1.5 Emacsen 21987-------------- 21988 21989This version of Gnus should work on: 21990 21991 • Emacs 23.1 and up. 21992 21993 This Gnus version will absolutely not work on any Emacsen older than 21994that. Not reliably, at least. Older versions of Gnus may work on older 21995Emacs versions. Particularly, Gnus 5.10.8 should also work on Emacs 2199620.7. 21997 21998 21999File: gnus.info, Node: Gnus Development, Next: Contributors, Prev: Emacsen, Up: History 22000 2200111.1.6 Gnus Development 22002----------------------- 22003 22004Gnus is developed in a two-phased cycle. The first phase involves much 22005discussion on the development mailing list ‘ding@gnus.org’, where people 22006propose changes and new features, post patches and new back ends. This 22007phase is called the “alpha” phase, since the Gnusae released in this 22008phase are “alpha releases”, or (perhaps more commonly in other circles) 22009“snapshots”. During this phase, Gnus is assumed to be unstable and 22010should not be used by casual users. Gnus alpha releases have names like 22011“Oort Gnus” and “No Gnus”. *Note Gnus Versions::. 22012 22013 After futzing around for 10–100 alpha releases, Gnus is declared 22014“frozen”, and only bug fixes are applied. Gnus loses the prefix, and is 22015called things like “Gnus 5.10.1” instead. Normal people are supposed to 22016be able to use these, and these are mostly discussed on the 22017‘gnu.emacs.gnus’ newsgroup. This newgroup is mirrored to the mailing 22018list ‘info-gnus-english@gnu.org’ which is carried on Gmane as 22019‘gmane.emacs.gnus.user’. These releases are finally integrated in 22020Emacs. 22021 22022 Some variable defaults differ between alpha Gnusae and released 22023Gnusae, in particular, ‘mail-source-delete-incoming’. This is to 22024prevent lossage of mail if an alpha release hiccups while handling the 22025mail. *Note Mail Source Customization::. 22026 22027 The division of discussion between the ding mailing list and the Gnus 22028newsgroup is not purely based on publicity concerns. It’s true that 22029having people write about the horrible things that an alpha Gnus release 22030can do (sometimes) in a public forum may scare people off, but more 22031importantly, talking about new experimental features that have been 22032introduced may confuse casual users. New features are frequently 22033introduced, fiddled with, and judged to be found wanting, and then 22034either discarded or totally rewritten. People reading the mailing list 22035usually keep up with these rapid changes, while people on the newsgroup 22036can’t be assumed to do so. 22037 22038 So if you have problems with or questions about the alpha versions, 22039direct those to the ding mailing list ‘ding@gnus.org’. This list is 22040also available on Gmane as ‘gmane.emacs.gnus.general’. 22041 22042 Some variable defaults differ between alpha Gnusae and released 22043Gnusae, in particular, ‘mail-source-delete-incoming’. This is to 22044prevent lossage of mail if an alpha release hiccups while handling the 22045mail. *Note Mail Source Customization::. 22046 22047 22048File: gnus.info, Node: Contributors, Next: New Features, Prev: Gnus Development, Up: History 22049 2205011.1.7 Contributors 22051------------------- 22052 22053The new Gnus version couldn’t have been done without the help of all the 22054people on the (ding) mailing list. Every day for over a year I have 22055gotten billions of nice bug reports from them, filling me with joy, 22056every single one of them. Smooches. The people on the list have been 22057tried beyond endurance, what with my “oh, that’s a neat idea <type 22058type>, yup, I’ll release it right away <ship off> no wait, that doesn’t 22059work at all <type type>, yup, I’ll ship that one off right away <ship 22060off> no, wait, that absolutely does not work” policy for releases. 22061Micro$oft—bah. Amateurs. I’m _much_ worse. (Or is that “worser”? 22062“much worser”? “worsest”?) 22063 22064 I would like to take this opportunity to thank the Academy for... 22065oops, wrong show. 22066 22067 • Masanobu UMEDA—the writer of the original GNUS. 22068 22069 • Shenghuo Zhu—uudecode.el, mm-uu.el, rfc1843.el, nnwarchive and 22070 many, many other things connected with MIME and other types of 22071 en/decoding, as well as general bug fixing, new functionality and 22072 stuff. 22073 22074 • Per Abrahamsen—custom, scoring, highlighting and SOUP code (as well 22075 as numerous other things). 22076 22077 • Luis Fernandes—design and graphics. 22078 22079 • Joe Reiss—creator of the smiley faces. 22080 22081 • Justin Sheehy—the FAQ maintainer. 22082 22083 • Erik Naggum—help, ideas, support, code and stuff. 22084 22085 • Wes Hardaker—‘gnus-picon.el’ and the manual section on “picons” 22086 (*note Picons::). 22087 22088 • Kim-Minh Kaplan—further work on the picon code. 22089 22090 • Brad Miller—‘gnus-gl.el’ and the GroupLens manual section. 22091 22092 • Sudish Joseph—innumerable bug fixes. 22093 22094 • Ilja Weis—‘gnus-topic.el’. 22095 22096 • Steven L. Baur—lots and lots and lots of bug detection and fixes. 22097 22098 • Vladimir Alexiev—the refcard and reference booklets. 22099 22100 • Felix Lee & Jamie Zawinski—I stole some pieces from the XGnus 22101 distribution by Felix Lee and JWZ. 22102 22103 • Scott Byer—‘nnfolder.el’ enhancements & rewrite. 22104 22105 • Peter Mutsaers—orphan article scoring code. 22106 22107 • Ken Raeburn—POP mail support. 22108 22109 • Hallvard B Furuseth—various bits and pieces, especially dealing 22110 with .newsrc files. 22111 22112 • Brian Edmonds—‘gnus-bbdb.el’. 22113 22114 • David Moore—rewrite of ‘nnvirtual.el’ and many other things. 22115 22116 • Kevin Davidson—came up with the name “ding”, so blame him. 22117 22118 • François Pinard—many, many interesting and thorough bug reports, as 22119 well as autoconf support. 22120 22121 This manual was proof-read by Adrian Aichner, with Ricardo Nassif, 22122Mark Borges, and Jost Krieger proof-reading parts of the manual. 22123 22124 The following people have contributed many patches and suggestions: 22125 22126 Christopher Davis, Andrew Eskilsson, Kai Grossjohann, Kevin Greiner, 22127Jesper Harder, Paul Jarc, Simon Josefsson, David Kågedal, Richard Pieri, 22128Fabrice Popineau, Daniel Quinlan, Michael Shields, Reiner Steib, Jason 22129L. Tibbitts, III, Jack Vinson, Katsumi Yamaoka, and Teodor Zlatanov. 22130 22131 Also thanks to the following for patches and stuff: 22132 22133 Jari Aalto, Adrian Aichner, Vladimir Alexiev, Russ Allbery, Peter 22134Arius, Matt Armstrong, Marc Auslander, Miles Bader, Alexei V. Barantsev, 22135Frank Bennett, Robert Bihlmeyer, Chris Bone, Mark Borges, Mark Boyns, 22136Lance A. Brown, Rob Browning, Kees de Bruin, Martin Buchholz, Joe 22137Buehler, Kevin Buhr, Alastair Burt, Joao Cachopo, Zlatko Calusic, 22138Massimo Campostrini, Castor, David Charlap, Dan Christensen, Kevin 22139Christian, Jae-you Chung, James H. Cloos, Jr., Laura Conrad, Michael R. 22140Cook, Glenn Coombs, Andrew J. Cosgriff, Neil Crellin, Frank D. Cringle, 22141Geoffrey T. Dairiki, Andre Deparade, Ulrik Dickow, Dave Disser, Rui-Tao 22142Dong, Joev Dubach, Michael Welsh Duggan, Dave Edmondson, Paul Eggert, 22143Mark W. Eichin, Karl Eichwalder, Enami Tsugutomo, Michael Ernst, Luc Van 22144Eycken, Sam Falkner, Nelson Jose dos Santos Ferreira, Sigbjorn Finne, 22145Sven Fischer, Paul Fisher, Decklin Foster, Gary D. Foster, Paul 22146Franklin, Guy Geens, Arne Georg Gleditsch, David S. Goldberg, 22147Michelangelo Grigni, Dale Hagglund, D. Hall, Magnus Hammerin, Kenichi 22148Handa, Raja R. Harinath, Yoshiki Hayashi, P. E. Jareth Hein, Hisashige 22149Kenji, Scott Hofmann, Tassilo Horn, Marc Horowitz, Gunnar Horrigmo, 22150Richard Hoskins, Brad Howes, Miguel de Icaza, François Felix Ingrand, 22151Tatsuya Ichikawa, Ishikawa Ichiro, Lee Iverson, Iwamuro Motonori, 22152Rajappa Iyer, Andreas Jaeger, Adam P. Jenkins, Randell Jesup, Fred 22153Johansen, Gareth Jones, Greg Klanderman, Karl Kleinpaste, Michael 22154Klingbeil, Peter Skov Knudsen, Shuhei Kobayashi, Petr Konecny, Koseki 22155Yoshinori, Thor Kristoffersen, Jens Lautenbacher, Martin Larose, 22156Seokchan Lee, Joerg Lenneis, Carsten Leonhardt, James LewisMoss, 22157Christian Limpach, Markus Linnala, Dave Love, Mike McEwan, Tonny Madsen, 22158Shlomo Mahlab, Nat Makarevitch, Istvan Marko, David Martin, Jason R. 22159Mastaler, Gordon Matzigkeit, Timo Metzemakers, Richard Mlynarik, Lantz 22160Moore, Morioka Tomohiko, Erik Toubro Nielsen, Hrvoje Nikšić, Andy 22161Norman, Fred Oberhauser, C. R. Oldham, Alexandre Oliva, Ken Olstad, 22162Masaharu Onishi, Hideki Ono, Ettore Perazzoli, William Perry, Stephen 22163Peters, Jens-Ulrik Holger Petersen, Ulrich Pfeifer, Matt Pharr, Andy 22164Piper, John McClary Prevost, Bill Pringlemeir, Mike Pullen, Jim Radford, 22165Colin Rafferty, Lasse Rasinen, Lars Balker Rasmussen, Joe Reiss, Renaud 22166Rioboo, Roland B. Roberts, Bart Robinson, Christian von Roques, Markus 22167Rost, Jason Rumney, Wolfgang Rupprecht, Jay Sachs, Dewey M. Sasser, 22168Conrad Sauerwald, Loren Schall, Dan Schmidt, Ralph Schleicher, Philippe 22169Schnoebelen, Andreas Schwab, Randal L. Schwartz, Danny Siu, Matt 22170Simmons, Paul D. Smith, Jeff Sparkes, Toby Speight, Michael Sperber, 22171Darren Stalder, Richard Stallman, Greg Stark, Sam Steingold, Paul 22172Stevenson, Jonas Steverud, Paul Stodghill, Kiyokazu Suto, Kurt Swanson, 22173Samuel Tardieu, Teddy, Chuck Thompson, Tozawa Akihiko, Philippe Troin, 22174James Troup, Trung Tran-Duc, Jack Twilley, Aaron M. Ucko, Aki Vehtari, 22175Didier Verna, Vladimir Volovich, Jan Vroonhof, Stefan Waldherr, Pete 22176Ware, Barry A. Warsaw, Christoph Wedler, Joe Wells, Lee Willis, and 22177Lloyd Zusman. 22178 22179 For a full overview of what each person has done, the ChangeLogs 22180included in the Gnus alpha distributions should give ample reading 22181(550kB and counting). 22182 22183 Apologies to everybody that I’ve forgotten, of which there are many, 22184I’m sure. 22185 22186 Gee, that’s quite a list of people. I guess that must mean that 22187there actually are people who are using Gnus. Who’d’a thunk it! 22188 22189 22190File: gnus.info, Node: New Features, Prev: Contributors, Up: History 22191 2219211.1.8 New Features 22193------------------- 22194 22195* Menu: 22196 22197* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. 22198* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3. 22199* Red Gnus:: Third time best—Gnus 5.4/5.5. 22200* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. 22201* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. 22202* Oort Gnus:: It’s big. It’s far out. Gnus 5.10/5.11. 22203* No Gnus:: Very punny. Gnus 5.12/5.13. 22204* Ma Gnus:: Celebrating 25 years of Gnus. 22205 22206For summaries of more recent changes, see the normal Emacs ‘NEWS’ files. 22207 22208 These lists are, of course, just _short_ overviews of the _most_ 22209important new features. No, really. There are tons more. Yes, we have 22210feeping creaturism in full effect. 22211 22212 22213File: gnus.info, Node: ding Gnus, Next: September Gnus, Up: New Features 22214 2221511.1.8.1 (ding) Gnus 22216.................... 22217 22218New features in Gnus 5.0/5.1: 22219 22220 • The look of all buffers can be changed by setting format-like 22221 variables (*note Group Buffer Format:: and *note Summary Buffer 22222 Format::). 22223 22224 • Local spool and several NNTP servers can be used at once (*note 22225 Select Methods::). 22226 22227 • You can combine groups into virtual groups (*note Virtual 22228 Groups::). 22229 22230 • You can read a number of different mail formats (*note Getting 22231 Mail::). All the mail back ends implement a convenient mail expiry 22232 scheme (*note Expiring Mail::). 22233 22234 • Gnus can use various strategies for gathering threads that have 22235 lost their roots (thereby gathering loose sub-threads into one 22236 thread) or it can go back and retrieve enough headers to build a 22237 complete thread (*note Customizing Threading::). 22238 22239 • Killed groups can be displayed in the group buffer, and you can 22240 read them as well (*note Listing Groups::). 22241 22242 • Gnus can do partial group updates—you do not have to retrieve the 22243 entire active file just to check for new articles in a few groups 22244 (*note The Active File::). 22245 22246 • Gnus implements a sliding scale of subscribedness to groups (*note 22247 Group Levels::). 22248 22249 • You can score articles according to any number of criteria (*note 22250 Scoring::). You can even get Gnus to find out how to score 22251 articles for you (*note Adaptive Scoring::). 22252 22253 • Gnus maintains a dribble buffer that is auto-saved the normal Emacs 22254 manner, so it should be difficult to lose much data on what you 22255 have read if your machine should go down (*note Auto Save::). 22256 22257 • Gnus now has its own startup file (‘~/.gnus.el’) to avoid 22258 cluttering up the ‘.emacs’ file. 22259 22260 • You can set the process mark on both groups and articles and 22261 perform operations on all the marked items (*note 22262 Process/Prefix::). 22263 22264 • You can list subsets of groups according to, well, anything (*note 22265 Listing Groups::). 22266 22267 • You can browse foreign servers and subscribe to groups from those 22268 servers (*note Browse Foreign Server::). 22269 22270 • Gnus can fetch articles, asynchronously, on a second connection to 22271 the server (*note Asynchronous Fetching::). 22272 22273 • You can cache articles locally (*note Article Caching::). 22274 22275 • The uudecode functions have been expanded and generalized (*note 22276 Decoding Articles::). 22277 22278 • You can still post uuencoded articles, which was a little-known 22279 feature of GNUS’ past (*note Uuencoding and Posting::). 22280 22281 • Fetching parents (and other articles) now actually works without 22282 glitches (*note Finding the Parent::). 22283 22284 • Gnus can fetch FAQs and group descriptions (*note Group 22285 Information::). 22286 22287 • Digests (and other files) can be used as the basis for groups 22288 (*note Document Groups::). 22289 22290 • Articles can be highlighted and customized (*note Customizing 22291 Articles::). 22292 22293 • URLs and other external references can be buttonized (*note Article 22294 Buttons::). 22295 22296 • You can do lots of strange stuff with the Gnus window & frame 22297 configuration (*note Window Layout::). 22298 22299 22300File: gnus.info, Node: September Gnus, Next: Red Gnus, Prev: ding Gnus, Up: New Features 22301 2230211.1.8.2 September Gnus 22303....................... 22304 22305New features in Gnus 5.2/5.3: 22306 22307 • A new message composition mode is used. All old customization 22308 variables for ‘mail-mode’, ‘rnews-reply-mode’ and ‘gnus-msg’ are 22309 now obsolete. 22310 22311 • Gnus is now able to generate “sparse” threads—threads where missing 22312 articles are represented by empty nodes (*note Customizing 22313 Threading::). 22314 22315 (setq gnus-build-sparse-threads 'some) 22316 22317 • Outgoing articles are stored on a special archive server (*note 22318 Archived Messages::). 22319 22320 • Partial thread regeneration now happens when articles are referred. 22321 22322 • Gnus can make use of GroupLens predictions. 22323 22324 • Picons (personal icons) can be displayed (*note Picons::). 22325 22326 • A ‘trn’-like tree buffer can be displayed (*note Tree Display::). 22327 22328 (setq gnus-use-trees t) 22329 22330 • An ‘nn’-like pick-and-read minor mode is available for the summary 22331 buffers (*note Pick and Read::). 22332 22333 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) 22334 22335 • In binary groups you can use a special binary minor mode (*note 22336 Binary Groups::). 22337 22338 • Groups can be grouped in a folding topic hierarchy (*note Group 22339 Topics::). 22340 22341 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) 22342 22343 • Gnus can re-send and bounce mail (*note Summary Mail Commands::). 22344 22345 • Groups can now have a score, and bubbling based on entry frequency 22346 is possible (*note Group Score::). 22347 22348 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) 22349 22350 • Groups can be process-marked, and commands can be performed on 22351 groups of groups (*note Marking Groups::). 22352 22353 • Caching is possible in virtual groups. 22354 22355 • ‘nndoc’ now understands all kinds of digests, mail boxes, rnews 22356 news batches, ClariNet briefs collections, and just about 22357 everything else (*note Document Groups::). 22358 22359 • Gnus has a new back end (‘nnsoup’) to create/read SOUP packets. 22360 22361 • The Gnus cache is much faster. 22362 22363 • Groups can be sorted according to many criteria (*note Sorting 22364 Groups::). 22365 22366 • New group parameters have been introduced to set list-addresses and 22367 expiry times (*note Group Parameters::). 22368 22369 • All formatting specs allow specifying faces to be used (*note 22370 Formatting Fonts::). 22371 22372 • There are several more commands for setting/removing/acting on 22373 process marked articles on the ‘M P’ submap (*note Setting Process 22374 Marks::). 22375 22376 • The summary buffer can be limited to show parts of the available 22377 articles based on a wide range of criteria. These commands have 22378 been bound to keys on the ‘/’ submap (*note Limiting::). 22379 22380 • Articles can be made persistent with the ‘*’ command (*note 22381 Persistent Articles::). 22382 22383 • All functions for hiding article elements are now toggles. 22384 22385 • Article headers can be buttonized (*note Article Washing::). 22386 22387 • All mail back ends support fetching articles by ‘Message-ID’. 22388 22389 • Duplicate mail can now be treated properly (*note Duplicates::). 22390 22391 • All summary mode commands are available directly from the article 22392 buffer (*note Article Keymap::). 22393 22394 • Frames can be part of ‘gnus-buffer-configuration’ (*note Window 22395 Layout::). 22396 22397 • Mail can be re-scanned by a daemonic process (*note Daemons::). 22398 22399 • Groups can be made permanently visible (*note Listing Groups::). 22400 22401 (setq gnus-permanently-visible-groups "^nnml:") 22402 22403 • Many new hooks have been introduced to make customizing easier. 22404 22405 • Gnus respects the ‘Mail-Copies-To’ header. 22406 22407 • Threads can be gathered by looking at the ‘References’ header 22408 (*note Customizing Threading::). 22409 22410 (setq gnus-summary-thread-gathering-function 22411 'gnus-gather-threads-by-references) 22412 22413 • Read articles can be stored in a special backlog buffer to avoid 22414 refetching (*note Article Backlog::). 22415 22416 (setq gnus-keep-backlog 50) 22417 22418 • A clean copy of the current article is always stored in a separate 22419 buffer to allow easier treatment. 22420 22421 • Gnus can suggest where to save articles (*note Saving Articles::). 22422 22423 • Gnus doesn’t have to do as much prompting when saving (*note Saving 22424 Articles::). 22425 22426 (setq gnus-prompt-before-saving t) 22427 22428 • ‘gnus-uu’ can view decoded files asynchronously while fetching 22429 articles (*note Other Decode Variables::). 22430 22431 (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view) 22432 22433 • Filling in the article buffer now works properly on cited text 22434 (*note Article Washing::). 22435 22436 • Hiding cited text adds buttons to toggle hiding, and how much cited 22437 text to hide is now customizable (*note Article Hiding::). 22438 22439 (setq gnus-cited-lines-visible 2) 22440 22441 • Boring headers can be hidden (*note Article Hiding::). 22442 22443 • Default scoring values can now be set from the menu bar. 22444 22445 • Further syntax checking of outgoing articles have been added. 22446 22447 22448File: gnus.info, Node: Red Gnus, Next: Quassia Gnus, Prev: September Gnus, Up: New Features 22449 2245011.1.8.3 Red Gnus 22451................. 22452 22453New features in Gnus 5.4/5.5: 22454 22455 • ‘nntp.el’ has been totally rewritten in an asynchronous fashion. 22456 22457 • Article prefetching functionality has been moved up into Gnus 22458 (*note Asynchronous Fetching::). 22459 22460 • Scoring can now be performed with logical operators like ‘and’, 22461 ‘or’, ‘not’, and parent redirection (*note Advanced Scoring::). 22462 22463 • Article washing status can be displayed in the article mode line 22464 (*note Misc Article::). 22465 22466 • ‘gnus.el’ has been split into many smaller files. 22467 22468 • Suppression of duplicate articles based on Message-ID can be done 22469 (*note Duplicate Suppression::). 22470 22471 (setq gnus-suppress-duplicates t) 22472 22473 • New variables for specifying what score and adapt files are to be 22474 considered home score and adapt files (*note Home Score File::) 22475 have been added. 22476 22477 • ‘nndoc’ was rewritten to be easily extensible (*note Document 22478 Server Internals::). 22479 22480 • Groups can inherit group parameters from parent topics (*note Topic 22481 Parameters::). 22482 22483 • Article editing has been revamped and is now actually usable. 22484 22485 • Signatures can be recognized in more intelligent fashions (*note 22486 Article Signature::). 22487 22488 • Summary pick mode has been made to look more ‘nn’-like. Line 22489 numbers are displayed and the ‘.’ command can be used to pick 22490 articles (‘Pick and Read’). 22491 22492 • Commands for moving the ‘.newsrc.eld’ from one server to another 22493 have been added (*note Changing Servers::). 22494 22495 • There’s a way now to specify that “uninteresting” fields be 22496 suppressed when generating lines in buffers (*note Advanced 22497 Formatting::). 22498 22499 • Several commands in the group buffer can be undone with ‘C-M-_’ 22500 (*note Undo::). 22501 22502 • Scoring can be done on words using the new score type ‘w’ (*note 22503 Score File Format::). 22504 22505 • Adaptive scoring can be done on a Subject word-by-word basis (*note 22506 Adaptive Scoring::). 22507 22508 (setq gnus-use-adaptive-scoring '(word)) 22509 22510 • Scores can be decayed (*note Score Decays::). 22511 22512 (setq gnus-decay-scores t) 22513 22514 • Scoring can be performed using a regexp on the Date header. The 22515 Date is normalized to compact ISO 8601 format first (*note Score 22516 File Format::). 22517 22518 • A new command has been added to remove all data on articles from 22519 the native server (*note Changing Servers::). 22520 22521 • A new command for reading collections of documents (‘nndoc’ with 22522 ‘nnvirtual’ on top) has been added—‘C-M-d’ (*note Really Various 22523 Summary Commands::). 22524 22525 • Process mark sets can be pushed and popped (*note Setting Process 22526 Marks::). 22527 22528 • A new mail-to-news back end makes it possible to post even when the 22529 NNTP server doesn’t allow posting (*note Mail-To-News Gateways::). 22530 22531 • A new back end for reading searches from Web search engines 22532 (“DejaNews”, “Alta Vista”, “InReference”) has been added (*note Web 22533 Searches::). 22534 22535 • Groups inside topics can now be sorted using the standard sorting 22536 functions, and each topic can be sorted independently (*note Topic 22537 Sorting::). 22538 22539 • Subsets of the groups can be sorted independently (‘Sorting 22540 Groups’). 22541 22542 • Cached articles can be pulled into the groups (*note Summary 22543 Generation Commands::). 22544 22545 • Score files are now applied in a more reliable order (*note Score 22546 Variables::). 22547 22548 • Reports on where mail messages end up can be generated (*note 22549 Splitting Mail::). 22550 22551 • More hooks and functions have been added to remove junk from 22552 incoming mail before saving the mail (*note Washing Mail::). 22553 22554 • Emphasized text can be properly fontisized: 22555 22556 22557File: gnus.info, Node: Quassia Gnus, Next: Pterodactyl Gnus, Prev: Red Gnus, Up: New Features 22558 2255911.1.8.4 Quassia Gnus 22560..................... 22561 22562New features in Gnus 5.6: 22563 22564 • New functionality for using Gnus as an offline newsreader has been 22565 added. A plethora of new commands and modes have been added. 22566 *Note Gnus Unplugged::, for the full story. 22567 22568 • The ‘nndraft’ back end has returned, but works differently from 22569 before. All Message buffers are now also articles in the ‘nndraft’ 22570 group, which is created automatically. 22571 22572 • ‘gnus-alter-header-function’ can now be used to alter header 22573 values. 22574 22575 • ‘gnus-summary-goto-article’ now accept Message-IDs. 22576 22577 • A new Message command for deleting text in the body of a message 22578 outside the region: ‘C-c C-v’. 22579 22580 • You can now post to component group in ‘nnvirtual’ groups with ‘C-u 22581 C-c C-c’. 22582 22583 • ‘nntp-rlogin-program’—new variable to ease customization. 22584 22585 • ‘C-u C-c C-c’ in ‘gnus-article-edit-mode’ will now inhibit 22586 re-highlighting of the article buffer. 22587 22588 • New element in ‘gnus-boring-article-headers’—‘long-to’. 22589 22590 • ‘M-i’ symbolic prefix command. *Note Symbolic Prefixes::, for 22591 details. 22592 22593 • ‘L’ and ‘I’ in the summary buffer now take the symbolic prefix ‘a’ 22594 to add the score rule to the ‘all.SCORE’ file. 22595 22596 • ‘gnus-simplify-subject-functions’ variable to allow greater control 22597 over simplification. 22598 22599 • ‘A T’—new command for fetching the current thread. 22600 22601 • ‘/ T’—new command for including the current thread in the limit. 22602 22603 • ‘M-<RET>’ is a new Message command for breaking cited text. 22604 22605 • ‘\\1’-expressions are now valid in ‘nnmail-split-methods’. 22606 22607 • The ‘custom-face-lookup’ function has been removed. If you used 22608 this function in your initialization files, you must rewrite them 22609 to use ‘face-spec-set’ instead. 22610 22611 • Canceling now uses the current select method. Symbolic prefix ‘a’ 22612 forces normal posting method. 22613 22614 • New command to translate M******** sm*rtq**t*s into proper text—‘W 22615 d’. 22616 22617 • For easier debugging of ‘nntp’, you can set ‘nntp-record-commands’ 22618 to a non-‘nil’ value. 22619 22620 • ‘nntp’ now uses ‘~/.authinfo’, a ‘.netrc’-like file, for 22621 controlling where and how to send AUTHINFO to NNTP servers. 22622 22623 • A command for editing group parameters from the summary buffer has 22624 been added. 22625 22626 • A history of where mails have been split is available. 22627 22628 • A new article date command has been added—‘article-date-iso8601’. 22629 22630 • Subjects can be simplified when threading by setting 22631 ‘gnus-score-thread-simplify’. 22632 22633 • A new function for citing in Message has been 22634 added—‘message-cite-original-without-signature’. 22635 22636 • ‘article-strip-all-blank-lines’—new article command. 22637 22638 • A new Message command to kill to the end of the article has been 22639 added. 22640 22641 • A minimum adaptive score can be specified by using the 22642 ‘gnus-adaptive-word-minimum’ variable. 22643 22644 • The “lapsed date” article header can be kept continually updated by 22645 the ‘gnus-start-date-timer’ command. 22646 22647 • Web listserv archives can be read with the ‘nnlistserv’ back end. 22648 22649 • Old dejanews archives can now be read by ‘nnweb’. 22650 22651 22652File: gnus.info, Node: Pterodactyl Gnus, Next: Oort Gnus, Prev: Quassia Gnus, Up: New Features 22653 2265411.1.8.5 Pterodactyl Gnus 22655......................... 22656 22657New features in Gnus 5.8: 22658 22659 • The mail-fetching functions have changed. See the manual for the 22660 many details. In particular, all procmail fetching variables are 22661 gone. 22662 22663 If you used procmail like in 22664 22665 (setq nnmail-use-procmail t) 22666 (setq nnmail-spool-file 'procmail) 22667 (setq nnmail-procmail-directory "~/mail/incoming/") 22668 (setq nnmail-procmail-suffix "\\.in") 22669 22670 this now has changed to 22671 22672 (setq mail-sources 22673 '((directory :path "~/mail/incoming/" 22674 :suffix ".in"))) 22675 22676 *Note Mail Source Specifiers::. 22677 22678 • Gnus is now a MIME-capable reader. This affects many parts of 22679 Gnus, and adds a slew of new commands. See the manual for details. 22680 22681 • Gnus has also been multilingualized. This also affects too many 22682 parts of Gnus to summarize here, and adds many new variables. 22683 22684 • ‘gnus-auto-select-first’ can now be a function to be called to 22685 position point. 22686 22687 • The user can now decide which extra headers should be included in 22688 summary buffers and NOV files. 22689 22690 • ‘gnus-article-display-hook’ has been removed. Instead, a number of 22691 variables starting with ‘gnus-treat-’ have been added. 22692 22693 • The Gnus posting styles have been redone again and now works in a 22694 subtly different manner. 22695 22696 • New web-based back ends have been added: ‘nnslashdot’, ‘nnwarchive’ 22697 and ‘nnultimate’. nnweb has been revamped, again, to keep up with 22698 ever-changing layouts. 22699 22700 • Gnus can now read IMAP mail via ‘nnimap’. 22701 22702 22703File: gnus.info, Node: Oort Gnus, Next: No Gnus, Prev: Pterodactyl Gnus, Up: New Features 22704 2270511.1.8.6 Oort Gnus 22706.................. 22707 22708New features in Gnus 5.10: 22709 22710 • Installation changes 22711 22712 • Upgrading from previous (stable) version if you have used 22713 Oort. 22714 22715 If you have tried Oort (the unstable Gnus branch leading to 22716 this release) but went back to a stable version, be careful 22717 when upgrading to this version. In particular, you will 22718 probably want to remove all ‘.marks’ (nnml) and ‘.mrk’ 22719 (nnfolder) files, so that flags are read from your 22720 ‘.newsrc.eld’ instead of from the ‘.marks’/‘.mrk’ file where 22721 this release store flags. See a later entry for more 22722 information about marks. Note that downgrading isn’t save in 22723 general. 22724 22725 • Lisp files are now installed in ‘.../site-lisp/gnus/’ by 22726 default. It defaulted to ‘.../site-lisp/’ formerly. In 22727 addition to this, the new installer issues a warning if other 22728 Gnus installations which will shadow the latest one are 22729 detected. You can then remove those shadows manually or 22730 remove them using ‘make remove-installed-shadows’. 22731 22732 • ‘~/News/overview/’ not used. 22733 22734 As a result of the following change, the ‘~/News/overview/’ 22735 directory is not used any more. You can safely delete the 22736 entire hierarchy. 22737 22738 • ‘(require 'gnus-load)’ 22739 22740 If you use a stand-alone Gnus distribution, you’d better add 22741 ‘(require 'gnus-load)’ into your ‘~/.emacs’ after adding the 22742 Gnus lisp directory into load-path. 22743 22744 File ‘gnus-load.el’ contains autoload commands, functions and 22745 variables, some of which may not be included in distributions 22746 of Emacsen. 22747 22748 • New packages and libraries within Gnus 22749 22750 • The revised Gnus FAQ is included in the manual, *Note 22751 Frequently Asked Questions::. 22752 22753 • TLS wrapper shipped with Gnus 22754 22755 TLS/SSL is now supported in IMAP and NNTP via ‘tls.el’ and 22756 GnuTLS. 22757 22758 • Improved anti-spam features. 22759 22760 Gnus is now able to take out spam from your mail and news 22761 streams using a wide variety of programs and filter rules. 22762 Among the supported methods are RBL blocklists, bogofilter and 22763 white/blacklists. Hooks for easy use of external packages 22764 such as SpamAssassin and Hashcash are also new. *note 22765 Thwarting Email Spam:: and *note Spam Package::. 22766 22767 • Gnus supports server-side mail filtering using Sieve. 22768 22769 Sieve rules can be added as Group Parameters for groups, and 22770 the complete Sieve script is generated using ‘D g’ from the 22771 Group buffer, and then uploaded to the server using ‘C-c C-l’ 22772 in the generated Sieve buffer. *Note Sieve Commands::, and 22773 the new Sieve manual *note Top: (sieve)Top. 22774 22775 • Changes in group mode 22776 22777 • ‘gnus-group-read-ephemeral-group’ can be called interactively, 22778 using ‘G M’. 22779 22780 • Retrieval of charters and control messages 22781 22782 There are new commands for fetching newsgroup charters (‘H c’) 22783 and control messages (‘H C’). 22784 22785 • The new variable ‘gnus-parameters’ can be used to set group 22786 parameters. 22787 22788 Earlier this was done only via ‘G p’ (or ‘G c’), which stored 22789 the parameters in ‘~/.newsrc.eld’, but via this variable you 22790 can enjoy the powers of customize, and simplified backups 22791 since you set the variable in ‘~/.gnus.el’ instead of 22792 ‘~/.newsrc.eld’. The variable maps regular expressions 22793 matching group names to group parameters, a’la: 22794 (setq gnus-parameters 22795 '(("mail\\..*" 22796 (gnus-show-threads nil) 22797 (gnus-use-scoring nil)) 22798 ("^nnimap:\\(foo.bar\\)$" 22799 (to-group . "\\1")))) 22800 22801 • Unread count correct in nnimap groups. 22802 22803 The estimated number of unread articles in the group buffer 22804 should now be correct for nnimap groups. This is achieved by 22805 calling ‘nnimap-fixup-unread-after-getting-new-news’ from the 22806 ‘gnus-setup-news-hook’ (called on startup) and 22807 ‘gnus-after-getting-new-news-hook’ (called after getting new 22808 mail). If you have modified those variables from the default, 22809 you may want to add 22810 ‘nnimap-fixup-unread-after-getting-new-news’ again. If you 22811 were happy with the estimate and want to save some (minimal) 22812 time when getting new mail, remove the function. 22813 22814 • Group names are treated as UTF-8 by default. 22815 22816 This is supposedly what USEFOR wanted to migrate to. See 22817 ‘gnus-group-name-charset-group-alist’ and 22818 ‘gnus-group-name-charset-method-alist’ for customization. 22819 22820 • ‘gnus-group-charset-alist’ and 22821 ‘gnus-group-ignored-charsets-alist’. 22822 22823 The regexps in these variables are compared with full group 22824 names instead of real group names in 5.8. Users who customize 22825 these variables should change those regexps accordingly. For 22826 example: 22827 ("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr) 22828 22829 • Old intermediate incoming mail files (‘Incoming*’) are deleted 22830 after a couple of days, not immediately. *Note Mail Source 22831 Customization::. (New in Gnus 5.10.10 / Emacs 22.2) 22832 22833 • Changes in summary and article mode 22834 22835 • ‘F’ (‘gnus-article-followup-with-original’) and ‘R’ 22836 (‘gnus-article-reply-with-original’) only yank the text in the 22837 region if the region is active. 22838 22839 • In draft groups, ‘e’ is now bound to 22840 ‘gnus-draft-edit-message’. Use ‘B w’ for 22841 ‘gnus-summary-edit-article’ instead. 22842 22843 • Article Buttons 22844 22845 More buttons for URLs, mail addresses, Message-IDs, Info 22846 links, man pages and Emacs or Gnus related references. *Note 22847 Article Buttons::. The variables ‘gnus-button-*-level’ can be 22848 used to control the appearance of all article buttons. *Note 22849 Article Button Levels::. 22850 22851 • Single-part yenc encoded attachments can be decoded. 22852 22853 • Picons 22854 22855 The picons code has been reimplemented to work in GNU 22856 Emacs—some of the previous options have been removed or 22857 renamed. 22858 22859 Picons are small “personal icons” representing users, domain 22860 and newsgroups, which can be displayed in the Article buffer. 22861 *Note Picons::. 22862 22863 • If the new option ‘gnus-treat-body-boundary’ is non-‘nil’, a 22864 boundary line is drawn at the end of the headers. 22865 22866 • Signed article headers (X-PGP-Sig) can be verified with ‘W p’. 22867 22868 • The Summary Buffer uses an arrow in the fringe to indicate the 22869 current article. Use ‘(setq gnus-summary-display-arrow nil)’ 22870 to disable it. 22871 22872 • Warn about email replies to news 22873 22874 Do you often find yourself replying to news by email by 22875 mistake? Then the new option 22876 ‘gnus-confirm-mail-reply-to-news’ is just the thing for you. 22877 22878 • If the new option ‘gnus-summary-display-while-building’ is 22879 non-‘nil’, the summary buffer is shown and updated as it’s 22880 being built. 22881 22882 • Gnus supports RFC 2369 mailing list headers, and adds a number 22883 of related commands in mailing list groups. *Note Mailing 22884 List::. 22885 22886 • The Date header can be displayed in a format that can be read 22887 aloud in English. *Note Article Date::. 22888 22889 • diffs are automatically highlighted in groups matching 22890 ‘mm-uu-diff-groups-regexp’ 22891 22892 • Better handling of Microsoft citation styles 22893 22894 Gnus now tries to recognize the mangled header block that some 22895 Microsoft mailers use to indicate that the rest of the message 22896 is a citation, even though it is not quoted in any way. The 22897 variable ‘gnus-cite-unsightly-citation-regexp’ matches the 22898 start of these citations. 22899 22900 The new command ‘W Y f’ 22901 (‘gnus-article-outlook-deuglify-article’) allows deuglifying 22902 broken Outlook (Express) articles. 22903 22904 • ‘gnus-article-skip-boring’ 22905 22906 If you set ‘gnus-article-skip-boring’ to ‘t’, then Gnus will 22907 not scroll down to show you a page that contains only boring 22908 text, which by default means cited text and signature. You 22909 can customize what is skippable using 22910 ‘gnus-article-boring-faces’. 22911 22912 This feature is especially useful if you read many articles 22913 that consist of a little new content at the top with a long, 22914 untrimmed message cited below. 22915 22916 • Smileys (‘:-)’, ‘;-)’ etc.) are now displayed graphically in 22917 Emacs too. 22918 22919 Put ‘(setq gnus-treat-display-smileys nil)’ in ‘~/.gnus.el’ to 22920 disable it. 22921 22922 • Face headers handling. *Note Face::. 22923 22924 • In the summary buffer, the new command ‘/ N’ inserts new 22925 messages and ‘/ o’ inserts old messages. 22926 22927 • Gnus decodes morse encoded messages if you press ‘W m’. 22928 22929 • ‘gnus-summary-line-format’ 22930 22931 The default value changed to ‘%U%R%z%I%(%[%4L: %-23,23f%]%) 22932 %s\n’. Moreover ‘gnus-extra-headers’, ‘nnmail-extra-headers’ 22933 and ‘gnus-ignored-from-addresses’ changed their default so 22934 that the users name will be replaced by the recipient’s name 22935 or the group name posting to for NNTP groups. 22936 22937 • Deleting of attachments. 22938 22939 The command ‘gnus-mime-save-part-and-strip’ (bound to ‘C-o’ on 22940 MIME buttons) saves a part and replaces the part with an 22941 external one. ‘gnus-mime-delete-part’ (bound to ‘d’ on MIME 22942 buttons) removes a part. It works only on back ends that 22943 support editing. 22944 22945 • ‘gnus-default-charset’ 22946 22947 The default value is determined from the 22948 ‘current-language-environment’ variable, instead of 22949 ‘iso-8859-1’. Also the ‘.*’ item in 22950 ‘gnus-group-charset-alist’ is removed. 22951 22952 • Printing capabilities are enhanced. 22953 22954 Gnus supports Muttprint natively with ‘O P’ from the Summary 22955 and Article buffers. Also, each individual MIME part can be 22956 printed using ‘p’ on the MIME button. 22957 22958 • Extended format specs. 22959 22960 Format spec ‘%&user-date;’ is added into 22961 ‘gnus-summary-line-format-alist’. Also, user defined extended 22962 format specs are supported. The extended format specs look 22963 like ‘%u&foo;’, which invokes function 22964 ‘gnus-user-format-function-FOO’. Because ‘&’ is used as the 22965 escape character, old user defined format ‘%u&’ is no longer 22966 supported. 22967 22968 • ‘/ *’ (‘gnus-summary-limit-include-cached’) is rewritten. 22969 22970 It was aliased to ‘Y c’ 22971 (‘gnus-summary-insert-cached-articles’). The new function 22972 filters out other articles. 22973 22974 • Some limiting commands accept a ‘C-u’ prefix to negate the 22975 match. 22976 22977 If ‘C-u’ is used on subject, author or extra headers, i.e., ‘/ 22978 s’, ‘/ a’, and ‘/ x’ 22979 (‘gnus-summary-limit-to-{subject,author,extra}’) respectively, 22980 the result will be to display all articles that do not match 22981 the expression. 22982 22983 • Gnus inlines external parts (message/external). 22984 22985 • Changes in Message mode and related Gnus features 22986 22987 • Delayed articles 22988 22989 You can delay the sending of a message with ‘C-c C-j’ in the 22990 Message buffer. The messages are delivered at specified time. 22991 This is useful for sending yourself reminders. *Note Delayed 22992 Articles::. 22993 22994 • If the new option ‘nnml-use-compressed-files’ is non-‘nil’, 22995 the nnml back end allows compressed message files. 22996 22997 • The new option ‘gnus-gcc-mark-as-read’ automatically marks Gcc 22998 articles as read. 22999 23000 • Externalizing of attachments 23001 23002 If ‘gnus-gcc-externalize-attachments’ or 23003 ‘message-fcc-externalize-attachments’ is non-‘nil’, attach 23004 local files as external parts. 23005 23006 • The envelope sender address can be customized when using 23007 Sendmail. *Note Mail Variables: (message)Mail Variables. 23008 23009 • Gnus no longer generate the Sender: header automatically. 23010 23011 Earlier it was generated when the user configurable email 23012 address was different from the Gnus guessed default user 23013 address. As the guessing algorithm is rarely correct these 23014 days, and (more controversially) the only use of the Sender: 23015 header was to check if you are entitled to cancel/supersede 23016 news (which is now solved by Cancel Locks instead, see another 23017 entry), generation of the header has been disabled by default. 23018 See the variables ‘message-required-headers’, 23019 ‘message-required-news-headers’, and 23020 ‘message-required-mail-headers’. 23021 23022 • Features from third party ‘message-utils.el’ added to 23023 ‘message.el’. 23024 23025 Message now asks if you wish to remove ‘(was: <old subject>)’ 23026 from subject lines (see ‘message-subject-trailing-was-query’). 23027 ‘C-c M-m’ and ‘C-c M-f’ inserts markers indicating included 23028 text. ‘C-c C-f a’ adds a X-No-Archive: header. ‘C-c C-f x’ 23029 inserts appropriate headers and a note in the body for 23030 cross-postings and followups (see the variables 23031 ‘message-cross-post-*’). 23032 23033 • References and X-Draft-From headers are no longer generated 23034 when you start composing messages and 23035 ‘message-generate-headers-first’ is ‘nil’. 23036 23037 • Easy inclusion of X-Faces headers. *Note X-Face::. 23038 23039 • Group Carbon Copy (GCC) quoting 23040 23041 To support groups that contains <SPC> and other weird 23042 characters, groups are quoted before they are placed in the 23043 Gcc: header. This means variables such as 23044 ‘gnus-message-archive-group’ should no longer contain quote 23045 characters to make groups containing <SPC> work. Also, if you 23046 are using the string ‘nnml:foo, nnml:bar’ (indicating Gcc into 23047 two groups) you must change it to return the list ‘("nnml:foo" 23048 "nnml:bar")’, otherwise the Gcc: line will be quoted 23049 incorrectly. Note that returning the string ‘nnml:foo, 23050 nnml:bar’ was incorrect earlier, it just didn’t generate any 23051 problems since it was inserted directly. 23052 23053 • ‘message-insinuate-rmail’ 23054 23055 Adding ‘(message-insinuate-rmail)’ and ‘(setq mail-user-agent 23056 'gnus-user-agent)’ in ‘.emacs’ convinces Rmail to compose, 23057 reply and forward messages in message-mode, where you can 23058 enjoy the power of MML. 23059 23060 • ‘message-minibuffer-local-map’ 23061 23062 The line below enables BBDB in resending a message: 23063 (define-key message-minibuffer-local-map [(tab)] 23064 'bbdb-complete-name) 23065 23066 • ‘gnus-posting-styles’ 23067 23068 Add a new format of match like 23069 ((header "to" "larsi.*org") 23070 (Organization "Somewhere, Inc.")) 23071 The old format like the lines below is obsolete, but still 23072 accepted. 23073 (header "to" "larsi.*org" 23074 (Organization "Somewhere, Inc.")) 23075 23076 • ‘message-ignored-news-headers’ and 23077 ‘message-ignored-mail-headers’ 23078 23079 ‘X-Draft-From’ and ‘X-Gnus-Agent-Meta-Information’ have been 23080 added into these two variables. If you customized those, 23081 perhaps you need add those two headers too. 23082 23083 • Gnus supports the “format=flowed” (RFC 2646) parameter. On 23084 composing messages, it is enabled by ‘use-hard-newlines’. 23085 Decoding format=flowed was present but not documented in 23086 earlier versions. 23087 23088 • The option ‘mm-fill-flowed’ can be used to disable treatment 23089 of “format=flowed” messages. Also, flowed text is disabled 23090 when sending inline PGP signed messages. *Note Flowed text: 23091 (emacs-mime)Flowed text. (New in Gnus 5.10.7) 23092 23093 • Gnus supports the generation of RFC 2298 Disposition 23094 Notification requests. 23095 23096 This is invoked with the ‘C-c M-n’ key binding from message 23097 mode. 23098 23099 • Message supports the Importance: (RFC 2156) header. 23100 23101 In the message buffer, ‘C-c C-f C-i’ or ‘C-c C-u’ cycles 23102 through the valid values. 23103 23104 • Gnus supports Cancel Locks in News. 23105 23106 This means a header ‘Cancel-Lock’ is inserted in news posting. 23107 It is used to determine if you wrote an article or not (for 23108 canceling and superseding). Gnus generates a random password 23109 string the first time you post a message, and saves it in your 23110 ‘~/.emacs’ using the Custom system. While the variable is 23111 called ‘canlock-password’, it is not security sensitive data. 23112 Publishing your canlock string on the web will not allow 23113 anyone to be able to anything she could not already do. The 23114 behavior can be changed by customizing 23115 ‘message-insert-canlock’. 23116 23117 • Gnus supports PGP (RFC 1991/2440), PGP/MIME (RFC 2015/3156) 23118 and S/MIME (RFC 2630–2633). 23119 23120 It needs an external S/MIME and OpenPGP implementation, but no 23121 additional Lisp libraries. This add several menu items to the 23122 Attachments menu, and ‘C-c <RET>’ key bindings, when composing 23123 messages. This also obsoletes ‘gnus-article-hide-pgp-hook’. 23124 23125 • MML (Mime compose) prefix changed from ‘M-m’ to ‘C-c C-m’. 23126 23127 This change was made to avoid conflict with the standard 23128 binding of ‘back-to-indentation’, which is also useful in 23129 message mode. 23130 23131 • The default for ‘message-forward-show-mml’ changed to the 23132 symbol ‘best’. 23133 23134 The behavior for the ‘best’ value is to show MML (i.e., 23135 convert to MIME) when appropriate. MML will not be used when 23136 forwarding signed or encrypted messages, as the conversion 23137 invalidate the digital signature. 23138 23139 • If ‘auto-compression-mode’ is enabled, attachments are 23140 automatically decompressed when activated. 23141 23142 • Support for non-ASCII domain names 23143 23144 Message supports non-ASCII domain names in From:, To: and Cc: 23145 and will query you whether to perform encoding when you try to 23146 send a message. The variable ‘message-use-idna’ controls 23147 this. Gnus will also decode non-ASCII domain names in From:, 23148 To: and Cc: when you view a message. The variable 23149 ‘gnus-use-idna’ controls this. 23150 23151 • You can now drag and drop attachments to the Message buffer. 23152 See ‘mml-dnd-protocol-alist’ and ‘mml-dnd-attach-options’. 23153 *Note MIME: (message)MIME. 23154 23155 • ‘auto-fill-mode’ is enabled by default in Message mode. See 23156 ‘message-fill-column’. *Note Message Headers: 23157 (message)Various Message Variables. 23158 23159 • Changes in back ends 23160 23161 • Gnus can display RSS newsfeeds as a newsgroup. *Note RSS::. 23162 23163 • The nndoc back end now supports mailman digests and exim 23164 bounces. 23165 23166 • Gnus supports Maildir groups. 23167 23168 Gnus includes a new back end ‘nnmaildir.el’. *Note Maildir::. 23169 23170 • The nnml and nnfolder back ends store marks for each groups. 23171 23172 This makes it possible to take backup of nnml/nnfolder 23173 servers/groups separately of ‘~/.newsrc.eld’, while preserving 23174 marks. It also makes it possible to share articles and marks 23175 between users (without sharing the ‘~/.newsrc.eld’ file) 23176 within, e.g., a department. It works by storing the marks 23177 stored in ‘~/.newsrc.eld’ in a per-group file ‘.marks’ (for 23178 nnml) and ‘GROUPNAME.mrk’ (for nnfolder, named GROUPNAME). If 23179 the nnml/nnfolder is moved to another machine, Gnus will 23180 automatically use the ‘.marks’ or ‘.mrk’ file instead of the 23181 information in ‘~/.newsrc.eld’. The new server variables 23182 ‘nnml-marks-is-evil’ and ‘nnfolder-marks-is-evil’ can be used 23183 to disable this feature. 23184 23185 • Appearance 23186 23187 • The menu bar item (in Group and Summary buffer) named “Misc” 23188 has been renamed to “Gnus”. 23189 23190 • The menu bar item (in Message mode) named “MML” has been 23191 renamed to “Attachments”. Note that this menu also contains 23192 security related stuff, like signing and encryption (*note 23193 Security: (message)Security.). 23194 23195 • The tool bars have been updated to use GNOME icons in Group, 23196 Summary and Message mode. You can also customize the tool 23197 bars: ‘M-x customize-apropos <RET> -tool-bar$’ should get you 23198 started. This is a new feature in Gnus 5.10.10. 23199 23200 • The tool bar icons are now (de)activated correctly in the 23201 group buffer, see the variable ‘gnus-group-update-tool-bar’. 23202 Its default value depends on your Emacs version. This is a 23203 new feature in Gnus 5.10.9. 23204 23205 • Miscellaneous changes 23206 23207 • ‘gnus-agent’ 23208 23209 The Gnus Agent has seen a major updated and is now enabled by 23210 default, and all nntp and nnimap servers from 23211 ‘gnus-select-method’ and ‘gnus-secondary-select-method’ are 23212 agentized by default. Earlier only the server in 23213 ‘gnus-select-method’ was agentized by the default, and the 23214 agent was disabled by default. When the agent is enabled, 23215 headers are now also retrieved from the Agent cache instead of 23216 the back ends when possible. Earlier this only happened in 23217 the unplugged state. You can enroll or remove servers with ‘J 23218 a’ and ‘J r’ in the server buffer. Gnus will not download 23219 articles into the Agent cache, unless you instruct it to do 23220 so, though, by using ‘J u’ or ‘J s’ from the Group buffer. 23221 You revert to the old behavior of having the Agent disabled 23222 with ‘(setq gnus-agent nil)’. Note that putting 23223 ‘(gnus-agentize)’ in ‘~/.gnus.el’ is not needed any more. 23224 23225 • Gnus reads the NOV and articles in the Agent if plugged. 23226 23227 If one reads an article while plugged, and the article already 23228 exists in the Agent, it won’t get downloaded once more. 23229 ‘(setq gnus-agent-cache nil)’ reverts to the old behavior. 23230 23231 • Dired integration 23232 23233 ‘gnus-dired-minor-mode’ (see *note Other modes::) installs key 23234 bindings in dired buffers to send a file as an attachment, 23235 open a file using the appropriate mailcap entry, and print a 23236 file using the mailcap entry. 23237 23238 • The format spec ‘%C’ for positioning point has changed to 23239 ‘%*’. 23240 23241 • ‘gnus-slave-unplugged’ 23242 23243 A new command which starts Gnus offline in slave mode. 23244 23245 23246File: gnus.info, Node: No Gnus, Next: Ma Gnus, Prev: Oort Gnus, Up: New Features 23247 2324811.1.8.7 No Gnus 23249................ 23250 23251New features in No Gnus: 23252 23253 • Supported Emacs versions The following Emacs versions are supported 23254 by No Gnus: 23255 23256 • Emacs 22 and up 23257 23258 • Installation changes 23259 23260 • Upgrading from previous (stable) version if you have used No 23261 Gnus. 23262 23263 If you have tried No Gnus (the unstable Gnus branch leading to 23264 this release) but went back to a stable version, be careful 23265 when upgrading to this version. In particular, you will 23266 probably want to remove the ‘~/News/marks’ directory (perhaps 23267 selectively), so that flags are read from your ‘~/.newsrc.eld’ 23268 instead of from the stale marks file, where this release will 23269 store flags for nntp. See a later entry for more information 23270 about nntp marks. Note that downgrading isn’t safe in 23271 general. 23272 23273 • Incompatibility when switching from Emacs 23 to Emacs 22 In 23274 Emacs 23, Gnus uses Emacs’s new internal coding system 23275 ‘utf-8-emacs’ for saving articles drafts and ‘~/.newsrc.eld’. 23276 These files may not be read correctly in Emacs 22 and below. 23277 If you want to use Gnus across different Emacs versions, you 23278 may set ‘mm-auto-save-coding-system’ to ‘emacs-mule’. 23279 23280 • Lisp files are now installed in ‘.../site-lisp/gnus/’ by 23281 default. It defaulted to ‘.../site-lisp/’ formerly. In 23282 addition to this, the new installer issues a warning if other 23283 Gnus installations which will shadow the latest one are 23284 detected. You can then remove those shadows manually or 23285 remove them using ‘make remove-installed-shadows’. 23286 23287 • The installation directory’s name is allowed to have spaces 23288 and/or tabs. 23289 23290 • New packages and libraries within Gnus 23291 23292 • New version of ‘nnimap’ 23293 23294 ‘nnimap’ has been reimplemented in a mostly-compatible way. 23295 See the Gnus manual for a description of the new interface. 23296 In particular, ‘nnimap-inbox’ and the client side split method 23297 has changed. 23298 23299 • Gnus includes the Emacs Lisp SASL library. 23300 23301 This provides a clean API to SASL mechanisms from within 23302 Emacs. The user visible aspects of this, compared to the 23303 earlier situation, include support for DIGEST-MD5 and NTLM. 23304 *Note Emacs SASL: (sasl)Top. 23305 23306 • ManageSieve connections uses the SASL library by default. 23307 23308 The primary change this brings is support for DIGEST-MD5 and 23309 NTLM, when the server supports it. 23310 23311 • Gnus includes a password cache mechanism in password.el. 23312 23313 It is enabled by default (see ‘password-cache’), with a short 23314 timeout of 16 seconds (see ‘password-cache-expiry’). If PGG 23315 is used as the PGP back end, the PGP passphrase is managed by 23316 this mechanism. Passwords for ManageSieve connections are 23317 managed by this mechanism, after querying the user about 23318 whether to do so. 23319 23320 • Using EasyPG with Gnus When EasyPG, is available, Gnus will 23321 use it instead of PGG. EasyPG is an Emacs user interface to 23322 GNU Privacy Guard. *Note EasyPG Assistant user’s manual: 23323 (epa)Top. EasyPG is included in Emacs 23 and available 23324 separately as well. 23325 23326 • Changes in group mode 23327 23328 • Symbols like ‘gcc-self’ now have the same precedence rules in 23329 ‘gnus-parameters’ as other “real” variables: The last match 23330 wins instead of the first match. 23331 23332 • Old intermediate incoming mail files (‘Incoming*’) are deleted 23333 after a couple of days, not immediately. *Note Mail Source 23334 Customization::. (New in Gnus 5.10.10 / No Gnus 0.8) 23335 23336 • Changes in summary and article mode 23337 23338 • There’s now only one variable that determines how HTML is 23339 rendered: ‘mm-text-html-renderer’. 23340 23341 • Gnus now supports sticky article buffers. Those are article 23342 buffers that are not reused when you select another article. 23343 *Note Sticky Articles::. 23344 23345 • Gnus can selectively display ‘text/html’ articles with a WWW 23346 browser with ‘K H’. *Note MIME Commands::. 23347 23348 • International host names (IDNA) can now be decoded inside 23349 article bodies using ‘W i’ (‘gnus-summary-idna-message’). 23350 This requires that GNU Libidn 23351 (<https://www.gnu.org/software/libidn/>) has been installed. 23352 23353 • The non-ASCII group names handling has been much improved. 23354 The back ends that fully support non-ASCII group names are now 23355 ‘nntp’, ‘nnml’, and ‘nnrss’. Also the agent, the cache, and 23356 the marks features work with those back ends. *Note Non-ASCII 23357 Group Names::. 23358 23359 • Gnus now displays DNS master files sent as text/dns using 23360 dns-mode. 23361 23362 • Gnus supports new limiting commands in the Summary buffer: ‘/ 23363 r’ (‘gnus-summary-limit-to-replied’) and ‘/ R’ 23364 (‘gnus-summary-limit-to-recipient’). *Note Limiting::. 23365 23366 • You can now fetch all ticked articles from the server using ‘Y 23367 t’ (‘gnus-summary-insert-ticked-articles’). *Note Summary 23368 Generation Commands::. 23369 23370 • Gnus supports a new sort command in the Summary buffer: ‘C-c 23371 C-s C-t’ (‘gnus-summary-sort-by-recipient’). *Note Summary 23372 Sorting::. 23373 23374 • S/MIME now features LDAP user certificate searches. You need 23375 to configure the server in ‘smime-ldap-host-list’. 23376 23377 • URLs inside OpenPGP headers are retrieved and imported to your 23378 PGP key ring when you click on them. 23379 23380 • Picons can be displayed right from the textual address, see 23381 ‘gnus-picon-style’. *Note Picons::. 23382 23383 • ANSI SGR control sequences can be transformed using ‘W A’. 23384 23385 ANSI sequences are used in some Chinese hierarchies for 23386 highlighting articles (‘gnus-article-treat-ansi-sequences’). 23387 23388 • Gnus now MIME decodes articles even when they lack 23389 "MIME-Version" header. This changes the default of 23390 ‘gnus-article-loose-mime’. 23391 23392 • ‘gnus-decay-scores’ can be a regexp matching score files. For 23393 example, set it to ‘\\.ADAPT\\'’ and only adaptive score files 23394 will be decayed. *Note Score Decays::. 23395 23396 • Strings prefixing to the ‘To’ and ‘Newsgroup’ headers in 23397 summary lines when using ‘gnus-ignored-from-addresses’ can be 23398 customized with ‘gnus-summary-to-prefix’ and 23399 ‘gnus-summary-newsgroup-prefix’. *Note To From Newsgroups::. 23400 23401 • You can replace MIME parts with external bodies. See 23402 ‘gnus-mime-replace-part’ and ‘gnus-article-replace-part’. 23403 *Note MIME Commands::, *note Using MIME::. 23404 23405 • The option ‘mm-fill-flowed’ can be used to disable treatment 23406 of format=flowed messages. Also, flowed text is disabled when 23407 sending inline PGP signed messages. *Note Flowed text: 23408 (emacs-mime)Flowed text. (New in Gnus 5.10.7) 23409 23410 • Now the new command ‘S W’ 23411 (‘gnus-article-wide-reply-with-original’) for a wide reply in 23412 the article buffer yanks a text that is in the active region, 23413 if it is set, as well as the ‘R’ 23414 (‘gnus-article-reply-with-original’) command. Note that the 23415 ‘R’ command in the article buffer no longer accepts a prefix 23416 argument, which was used to make it do a wide reply. *Note 23417 Article Keymap::. 23418 23419 • The new command ‘C-h b’ (‘gnus-article-describe-bindings’) 23420 used in the article buffer now shows not only the article 23421 commands but also the real summary commands that are 23422 accessible from the article buffer. 23423 23424 • Changes in Message mode 23425 23426 • Gnus now defaults to saving all outgoing messages in per-month 23427 nnfolder archives. 23428 23429 • Gnus now supports the “hashcash” client puzzle anti-spam 23430 mechanism. Use ‘(setq message-generate-hashcash t)’ to 23431 enable. *Note Hashcash::. 23432 23433 • You can now drag and drop attachments to the Message buffer. 23434 See ‘mml-dnd-protocol-alist’ and ‘mml-dnd-attach-options’. 23435 *Note MIME: (message)MIME. 23436 23437 • The option ‘message-yank-empty-prefix’ now controls how empty 23438 lines are prefixed in cited text. *Note Insertion Variables: 23439 (message)Insertion Variables. 23440 23441 • Gnus uses narrowing to hide headers in Message buffers. The 23442 ‘References’ header is hidden by default. To make all headers 23443 visible, use ‘(setq message-hidden-headers nil)’. *Note 23444 Message Headers: (message)Message Headers. 23445 23446 • You can highlight different levels of citations like in the 23447 article buffer. See ‘gnus-message-highlight-citation’. 23448 23449 • ‘auto-fill-mode’ is enabled by default in Message mode. See 23450 ‘message-fill-column’. *Note Message Headers: 23451 (message)Various Message Variables. 23452 23453 • You can now store signature files in a special directory named 23454 ‘message-signature-directory’. 23455 23456 • The option ‘message-citation-line-format’ controls the format 23457 of the "Whomever writes:" line. You need to set 23458 ‘message-citation-line-function’ to 23459 ‘message-insert-formatted-citation-line’ as well. 23460 23461 • Changes in Browse Server mode 23462 23463 • Gnus’ sophisticated subscription methods are now available in 23464 Browse Server buffers as well using the variable 23465 ‘gnus-browse-subscribe-newsgroup-method’. 23466 23467 • Changes in back ends 23468 23469 • The nntp back end stores article marks in ‘~/News/marks’. 23470 23471 The directory can be changed using the (customizable) variable 23472 ‘nntp-marks-directory’, and marks can be disabled using the 23473 (back end) variable ‘nntp-marks-is-evil’. The advantage of 23474 this is that you can copy ‘~/News/marks’ (using rsync, scp or 23475 whatever) to another Gnus installation, and it will realize 23476 what articles you have read and marked. The data in 23477 ‘~/News/marks’ has priority over the same data in 23478 ‘~/.newsrc.eld’. 23479 23480 • You can import and export your RSS subscriptions from OPML 23481 files. *Note RSS::. 23482 23483 • IMAP identity (RFC 2971) is supported. 23484 23485 By default, Gnus does not send any information about itself, 23486 but you can customize it using the variable ‘nnimap-id’. 23487 23488 • The ‘nnrss’ back end now supports multilingual text. 23489 Non-ASCII group names for the ‘nnrss’ groups are also 23490 supported. *Note RSS::. 23491 23492 • Retrieving mail with POP3 is supported over SSL/TLS and with 23493 StartTLS. 23494 23495 • The nnml back end allows other compression programs beside 23496 ‘gzip’ for compressed message files. *Note Mail Spool::. 23497 23498 • The nnml back end supports group compaction. 23499 23500 This feature, accessible via the functions 23501 ‘gnus-group-compact-group’ (‘G z’ in the group buffer) and 23502 ‘gnus-server-compact-server’ (‘z’ in the server buffer) 23503 renumbers all articles in a group, starting from 1 and 23504 removing gaps. As a consequence, you get a correct total 23505 article count (until messages are deleted again). 23506 23507 • Appearance 23508 23509 • The tool bar has been updated to use GNOME icons. You can 23510 also customize the tool bars: ‘M-x customize-apropos <RET> 23511 -tool-bar$’ should get you started. 23512 23513 • The tool bar icons are now (de)activated correctly in the 23514 group buffer, see the variable ‘gnus-group-update-tool-bar’. 23515 Its default value depends on your Emacs version. 23516 23517 • Miscellaneous changes 23518 23519 • Having edited the select-method for the foreign server in the 23520 server buffer is immediately reflected to the subscription of 23521 the groups which use the server in question. For instance, if 23522 you change ‘nntp-via-address’ into ‘bar.example.com’ from 23523 ‘foo.example.com’, Gnus will connect to the news host by way 23524 of the intermediate host ‘bar.example.com’ from next time. 23525 23526 • The ‘all.SCORE’ file can be edited from the group buffer using 23527 ‘W e’. 23528 23529 • You can set ‘gnus-mark-copied-or-moved-articles-as-expirable’ 23530 to a non-‘nil’ value so that articles that have been read may 23531 be marked as expirable automatically when copying or moving 23532 them to a group that has auto-expire turned on. The default 23533 is ‘nil’ and copying and moving of articles behave as before; 23534 i.e., the expirable marks will be unchanged except that the 23535 marks will be removed when copying or moving articles to a 23536 group that has not turned auto-expire on. *Note Expiring 23537 Mail::. 23538 23539 • NoCeM support has been removed. 23540 23541 • Carpal mode has been removed. 23542 23543 23544File: gnus.info, Node: Ma Gnus, Prev: No Gnus, Up: New Features 23545 2354611.1.8.8 Ma Gnus 23547................ 23548 23549I’m sure there will be lots of text here. It’s really spelled 真 Gnus. 23550 23551 New features in Ma Gnus: 23552 23553 • Changes in summary and article mode 23554 23555 • By default, MIME part buttons for attachments (if any) will 23556 appear in the end of the article header in addition to the 23557 bottom of the article body, so you can easily find them 23558 without scrolling the article again and again. *Note MIME 23559 Commands::. 23560 23561 • Changes in Message mode and related Gnus features 23562 23563 • The new hooks ‘gnus-gcc-pre-body-encode-hook’ and 23564 ‘gnus-gcc-post-body-encode-hook’ are run before/after encoding 23565 the message body of the Gcc copy of a sent message. See *Note 23566 Archived Messages::. 23567 23568 23569File: gnus.info, Node: On Writing Manuals, Next: Terminology, Prev: History, Up: Appendices 23570 2357111.2 On Writing Manuals 23572======================= 23573 23574I guess most manuals are written after-the-fact; documenting a program 23575that’s already there. This is not how this manual is written. When 23576implementing something, I write the manual entry for that something 23577straight away. I then see that it’s difficult to explain the 23578functionality, so I write how it’s supposed to be, and then I change the 23579implementation. Writing the documentation and writing the code go hand 23580in hand. 23581 23582 This, of course, means that this manual has no, or little, flow. It 23583documents absolutely everything in Gnus, but often not where you’re 23584looking for it. It is a reference manual, and not a guide to how to get 23585started with Gnus. 23586 23587 That would be a totally different book, that should be written using 23588the reference manual as source material. It would look quite different. 23589 23590 23591File: gnus.info, Node: Terminology, Next: Customization, Prev: On Writing Manuals, Up: Appendices 23592 2359311.3 Terminology 23594================ 23595 23596“news” 23597 This is what you are supposed to use this thing for—reading news. 23598 News is generally fetched from a nearby NNTP server, and is 23599 generally publicly available to everybody. If you post news, the 23600 entire world is likely to read just what you have written, and 23601 they’ll all snigger mischievously. Behind your back. 23602 23603“mail” 23604 Everything that’s delivered to you personally is mail. Some 23605 news/mail readers (like Gnus) blur the distinction between mail and 23606 news, but there is a difference. Mail is private. News is public. 23607 Mailing is not posting, and replying is not following up. 23608 23609“reply” 23610 Send a mail to the person who has written what you are reading. 23611 23612“follow up” 23613 Post an article to the current newsgroup responding to the article 23614 you are reading. 23615 23616“back end” 23617 Gnus considers mail and news to be mostly the same, really. The 23618 only difference is how to access the actual articles. News 23619 articles are commonly fetched via the protocol NNTP, whereas mail 23620 messages could be read from a file on the local disk. The internal 23621 architecture of Gnus thus comprises a “front end” and a number of 23622 “back ends”. Internally, when you enter a group (by hitting <RET>, 23623 say), you thereby invoke a function in the front end in Gnus. The 23624 front end then “talks” to a back end and says things like “Give me 23625 the list of articles in the foo group” or “Show me article number 23626 4711”. 23627 23628 So a back end mainly defines either a protocol (the ‘nntp’ back end 23629 accesses news via NNTP, the ‘nnimap’ back end accesses mail via 23630 IMAP) or a file format and directory layout (the ‘nnspool’ back end 23631 accesses news via the common “spool directory” format, the ‘nnml’ 23632 back end access mail via a file format and directory layout that’s 23633 quite similar). 23634 23635 Gnus does not handle the underlying media, so to speak—this is all 23636 done by the back ends. A back end is a collection of functions to 23637 access the articles. 23638 23639 However, sometimes the term “back end” is also used where “server” 23640 would have been more appropriate. And then there is the term 23641 “select method” which can mean either. The Gnus terminology can be 23642 quite confusing. 23643 23644“native” 23645 Gnus will always use one method (and back end) as the “native”, or 23646 default, way of getting news. Groups from the native select method 23647 have names like ‘gnu.emacs.gnus’. 23648 23649“foreign” 23650 You can also have any number of foreign groups active at the same 23651 time. These are groups that use non-native non-secondary back ends 23652 for getting news. Foreign groups have names like 23653 ‘nntp+news.gmane.org:gmane.emacs.gnus.devel’. 23654 23655“secondary” 23656 Secondary back ends are somewhere half-way between being native and 23657 being foreign, but they mostly act like they are native, but they, 23658 too have names like ‘nntp+news.gmane.org:gmane.emacs.gnus.devel’. 23659 23660“article” 23661 A message that has been posted as news. 23662 23663“mail message” 23664 A message that has been mailed. 23665 23666“message” 23667 A mail message or news article 23668 23669“head” 23670 The top part of a message, where administrative information (etc.) 23671 is put. 23672 23673“body” 23674 The rest of an article. Everything not in the head is in the body. 23675 23676“header” 23677 A line from the head of an article. 23678 23679“headers” 23680 A collection of such lines, or a collection of heads. Or even a 23681 collection of NOV lines. 23682 23683“NOV” 23684 NOV stands for News OverView, which is a type of news server header 23685 which provide datas containing the condensed header information of 23686 articles. They are produced by the server itself; in the ‘nntp’ 23687 back end Gnus uses the ones that the NNTP server makes, but Gnus 23688 makes them by itself for some backends (in particular, ‘nnml’). 23689 23690 When Gnus enters a group, it asks the back end for the headers of 23691 all unread articles in the group. Most servers support the News 23692 OverView format, which is more compact and much faster to read and 23693 parse than the normal HEAD format. 23694 23695 The NOV data consist of one or more text lines (*note Motion by 23696 Text Lines: (elisp)Text Lines.) where each line has the header 23697 information of one article. The header information is a 23698 tab-separated series of the header’s contents including an article 23699 number, a subject, an author, a date, a message-id, references, 23700 etc. 23701 23702 Those data enable Gnus to generate summary lines quickly. However, 23703 if the server does not support NOV or you disable it purposely or 23704 for some reason, Gnus will try to generate the header information 23705 by parsing each article’s headers one by one. It will take time. 23706 Therefore, it is not usually a good idea to set nn*-nov-is-evil 23707 (*note Slow/Expensive Connection::) to a non-‘nil’ value unless you 23708 know that the server makes wrong NOV data. 23709 23710“level” 23711 Each group is subscribed at some “level” or other (1–9). The ones 23712 that have a lower level are “more” subscribed than the groups with 23713 a higher level. In fact, groups on levels 1–5 are considered 23714 “subscribed”; 6–7 are “unsubscribed”; 8 are “zombies”; and 9 are 23715 “killed”. Commands for listing groups and scanning for new 23716 articles will all use the numeric prefix as “working level”. 23717 23718“killed groups” 23719 No information on killed groups is stored or updated, which makes 23720 killed groups much easier to handle than subscribed groups. 23721 23722“zombie groups” 23723 Just like killed groups, only slightly less dead. 23724 23725“active file” 23726 The news server has to keep track of what articles it carries, and 23727 what groups exist. All this information in stored in the active 23728 file, which is rather large, as you might surmise. 23729 23730“bogus groups” 23731 A group that exists in the ‘.newsrc’ file, but isn’t known to the 23732 server (i.e., it isn’t in the active file), is a _bogus group_. 23733 This means that the group probably doesn’t exist (any more). 23734 23735“activating” 23736 The act of asking the server for info on a group and computing the 23737 number of unread articles is called “activating the group”. 23738 Un-activated groups are listed with ‘*’ in the group buffer. 23739 23740“spool” 23741 News servers store their articles locally in one fashion or other. 23742 One old-fashioned storage method is to have just one file per 23743 article. That’s called a “traditional spool”. 23744 23745“server” 23746 A machine one can connect to and get news (or mail) from. 23747 23748“select method” 23749 A structure that specifies the back end, the server and the virtual 23750 server settings. 23751 23752“virtual server” 23753 A named select method. Since a select method defines all there is 23754 to know about connecting to a (physical) server, taking the thing 23755 as a whole is a virtual server. 23756 23757“washing” 23758 Taking a buffer and running it through a filter of some sort. The 23759 result will (more often than not) be cleaner and more pleasing than 23760 the original. 23761 23762“ephemeral groups” 23763 Most groups store data on what articles you have read. “Ephemeral” 23764 groups are groups that will have no data stored—when you exit the 23765 group, it’ll disappear into the aether. 23766 23767“solid groups” 23768 This is the opposite of ephemeral groups. All groups listed in the 23769 group buffer are solid groups. 23770 23771“sparse articles” 23772 These are article placeholders shown in the summary buffer when 23773 ‘gnus-build-sparse-threads’ has been switched on. 23774 23775“threading” 23776 To put responses to articles directly after the articles they 23777 respond to—in a hierarchical fashion. 23778 23779“root” 23780 The first article in a thread is the root. It is the ancestor of 23781 all articles in the thread. 23782 23783“parent” 23784 An article that has responses. 23785 23786“child” 23787 An article that responds to a different article—its parent. 23788 23789“digest” 23790 A collection of messages in one file. The most common digest 23791 format is specified by RFC 1153. 23792 23793“splitting” 23794 The action of sorting your emails according to certain rules. 23795 Sometimes incorrectly called mail filtering. 23796 23797 23798File: gnus.info, Node: Customization, Next: Troubleshooting, Prev: Terminology, Up: Appendices 23799 2380011.4 Customization 23801================== 23802 23803All variables are properly documented elsewhere in this manual. This 23804section is designed to give general pointers on how to customize Gnus 23805for some quite common situations. 23806 23807* Menu: 23808 23809* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere. 23810* Slow Terminal Connection:: You run a remote Emacs. 23811* Little Disk Space:: You feel that having large setup files is icky. 23812* Slow Machine:: You feel like buying a faster machine. 23813 23814 23815File: gnus.info, Node: Slow/Expensive Connection, Next: Slow Terminal Connection, Up: Customization 23816 2381711.4.1 Slow/Expensive Connection 23818-------------------------------- 23819 23820If you run Emacs on a machine locally, and get your news from a machine 23821over some very thin strings, you want to cut down on the amount of data 23822Gnus has to get from the server. 23823 23824‘gnus-read-active-file’ 23825 Set this to ‘nil’, which will inhibit Gnus from requesting the 23826 entire active file from the server. This file is often very large. 23827 You also have to set ‘gnus-check-new-newsgroups’ and 23828 ‘gnus-check-bogus-newsgroups’ to ‘nil’ to make sure that Gnus 23829 doesn’t suddenly decide to fetch the active file anyway. 23830 23831‘gnus-nov-is-evil’ 23832 Usually this one must _always_ be ‘nil’ (which is the default). 23833 If, for example, you wish to not use NOV (*note Terminology::) with 23834 the ‘nntp’ back end (*note Crosspost Handling::), set 23835 ‘nntp-nov-is-evil’ to a non-‘nil’ value instead of setting this. 23836 But you normally do not need to set ‘nntp-nov-is-evil’ since Gnus 23837 by itself will detect whether the NNTP server supports NOV. 23838 Anyway, grabbing article headers from the NNTP server will not be 23839 very fast if you tell Gnus not to use NOV. 23840 23841 As the variables for the other back ends, there are 23842 ‘nndiary-nov-is-evil’, ‘nndir-nov-is-evil’, ‘nnfolder-nov-is-evil’, 23843 ‘nnimap-nov-is-evil’, ‘nnml-nov-is-evil’, and 23844 ‘nnspool-nov-is-evil’. Note that a non-‘nil’ value for 23845 ‘gnus-nov-is-evil’ overrides all those variables. 23846 23847 23848File: gnus.info, Node: Slow Terminal Connection, Next: Little Disk Space, Prev: Slow/Expensive Connection, Up: Customization 23849 2385011.4.2 Slow Terminal Connection 23851------------------------------- 23852 23853Let’s say you use your home computer for dialing up the system that runs 23854Emacs and Gnus. If your modem is slow, you want to reduce (as much as 23855possible) the amount of data sent over the wires. 23856 23857‘gnus-auto-center-summary’ 23858 Set this to ‘nil’ to inhibit Gnus from re-centering the summary 23859 buffer all the time. If it is ‘vertical’, do only vertical 23860 re-centering. If it is neither ‘nil’ nor ‘vertical’, do both 23861 horizontal and vertical recentering. 23862 23863‘gnus-visible-headers’ 23864 Cut down on the headers included in the articles to the minimum. 23865 You can, in fact, make do without them altogether—most of the 23866 useful data is in the summary buffer, anyway. Set this variable to 23867 ‘^NEVVVVER’ or ‘From:’, or whatever you feel you need. 23868 23869 Use the following to enable all the available hiding features: 23870 (setq gnus-treat-hide-headers 'head 23871 gnus-treat-hide-signature t 23872 gnus-treat-hide-citation t) 23873 23874‘gnus-use-full-window’ 23875 By setting this to ‘nil’, you can make all the windows smaller. 23876 While this doesn’t really cut down much generally, it means that 23877 you have to see smaller portions of articles before deciding that 23878 you didn’t want to read them anyway. 23879 23880‘gnus-thread-hide-subtree’ 23881 If this is non-‘nil’, all threads in the summary buffer will be 23882 hidden initially. 23883 23884‘gnus-updated-mode-lines’ 23885 If this is ‘nil’, Gnus will not put information in the buffer mode 23886 lines, which might save some time. 23887 23888 23889File: gnus.info, Node: Little Disk Space, Next: Slow Machine, Prev: Slow Terminal Connection, Up: Customization 23890 2389111.4.3 Little Disk Space 23892------------------------ 23893 23894The startup files can get rather large, so you may want to cut their 23895sizes a bit if you are running out of space. 23896 23897‘gnus-save-newsrc-file’ 23898 If this is ‘nil’, Gnus will never save ‘.newsrc’—it will only save 23899 ‘.newsrc.eld’. This means that you will not be able to use any 23900 other newsreaders than Gnus. This variable is ‘t’ by default. 23901 23902‘gnus-read-newsrc-file’ 23903 If this is ‘nil’, Gnus will never read ‘.newsrc’—it will only read 23904 ‘.newsrc.eld’. This means that you will not be able to use any 23905 other newsreaders than Gnus. This variable is ‘t’ by default. 23906 23907‘gnus-save-killed-list’ 23908 If this is ‘nil’, Gnus will not save the list of dead groups. You 23909 should also set ‘gnus-check-new-newsgroups’ to ‘ask-server’ and 23910 ‘gnus-check-bogus-newsgroups’ to ‘nil’ if you set this variable to 23911 ‘nil’. This variable is ‘t’ by default. 23912 23913 23914File: gnus.info, Node: Slow Machine, Prev: Little Disk Space, Up: Customization 23915 2391611.4.4 Slow Machine 23917------------------- 23918 23919If you have a slow machine, or are just really impatient, there are a 23920few things you can do to make Gnus run faster. 23921 23922 Set ‘gnus-check-new-newsgroups’ and ‘gnus-check-bogus-newsgroups’ to 23923‘nil’ to make startup faster. 23924 23925 Set ‘gnus-show-threads’, ‘gnus-use-cross-reference’ and 23926‘gnus-nov-is-evil’ to ‘nil’ to make entering and exiting the summary 23927buffer faster. Also *note Slow/Expensive Connection::. 23928 23929 23930File: gnus.info, Node: Troubleshooting, Next: Gnus Reference Guide, Prev: Customization, Up: Appendices 23931 2393211.5 Troubleshooting 23933==================== 23934 23935Gnus works _so_ well straight out of the box—I can’t imagine any 23936problems, really. 23937 23938 Ahem. 23939 23940 1. Make sure your computer is switched on. 23941 23942 2. Make sure that you really load the current Gnus version. If you 23943 have been running GNUS, you need to exit Emacs and start it up 23944 again before Gnus will work. 23945 23946 3. Try doing an ‘M-x gnus-version’. If you get something that looks 23947 like ‘Gnus v5.13’ you have the right files loaded. Otherwise you 23948 have some old ‘.el’ files lying around. Delete these. 23949 23950 4. Read the help group (‘G h’ in the group buffer) for a FAQ and a 23951 how-to. 23952 23953 5. Gnus works on many recursive structures, and in some extreme (and 23954 very rare) cases Gnus may recurse down “too deeply” and Emacs will 23955 beep at you. If this happens to you, set ‘max-lisp-eval-depth’ to 23956 500 or something like that. 23957 23958 If all else fails, report the problem as a bug. 23959 23960 If you find a bug in Gnus, you can report it with the ‘M-x gnus-bug’ 23961command. ‘M-x set-variable <RET> debug-on-error <RET> t <RET>’, and 23962send me the backtrace. I will fix bugs, but I can only fix them if you 23963send me a precise description as to how to reproduce the bug. 23964 23965 You really can never be too detailed in a bug report. Always use the 23966‘M-x gnus-bug’ command when you make bug reports, even if it creates a 2396710Kb mail each time you use it, and even if you have sent me your 23968environment 500 times before. I don’t care. I want the full info each 23969time. 23970 23971 It is also important to remember that I have no memory whatsoever. 23972If you send a bug report, and I send you a reply, and then you just send 23973back “No, it’s not! Moron!”, I will have no idea what you are insulting 23974me about. Always over-explain everything. It’s much easier for all of 23975us—if I don’t have all the information I need, I will just mail you and 23976ask for more info, and everything takes more time. 23977 23978 If the problem you’re seeing is very visual, and you can’t quite 23979explain it, copy the Emacs window to a file (with ‘xwd’, for instance), 23980put it somewhere it can be reached, and include the URL of the picture 23981in the bug report. 23982 23983 If you would like to contribute a patch to fix bugs or make 23984improvements, please produce the patch using ‘diff -u’. 23985 23986 If you want to debug your problem further before reporting, possibly 23987in order to solve the problem yourself and send a patch, you can use 23988edebug. Debugging Lisp code is documented in the Elisp manual (*note 23989Debugging Lisp Programs: (elisp)Debugging.). To get you started with 23990edebug, consider if you discover some weird behavior when pressing ‘c’, 23991the first step is to do ‘C-h k c’ and click on the hyperlink (Emacs 23992only) in the documentation buffer that leads you to the function 23993definition, then press ‘M-x edebug-defun <RET>’ with point inside that 23994function, return to Gnus and press ‘c’ to invoke the code. You will be 23995placed in the lisp buffer and can single step using ‘<SPC>’ and evaluate 23996expressions using ‘M-:’ or inspect variables using ‘C-h v’, abort 23997execution with ‘q’, and resume execution with ‘c’ or ‘g’. 23998 23999 Sometimes, a problem do not directly generate an elisp error but 24000manifests itself by causing Gnus to be very slow. In these cases, you 24001can use ‘M-x toggle-debug-on-quit’ and press ‘C-g’ when things are slow, 24002and then try to analyze the backtrace (repeating the procedure helps 24003isolating the real problem areas). 24004 24005 A fancier approach is to use the elisp profiler, ELP. The profiler 24006is (or should be) fully documented elsewhere, but to get you started 24007there are a few steps that need to be followed. First, instrument the 24008part of Gnus you are interested in for profiling, e.g., ‘M-x 24009elp-instrument-package <RET> gnus’ or ‘M-x elp-instrument-package <RET> 24010message’. Then perform the operation that is slow and press ‘M-x 24011elp-results’. You will then see which operations that takes time, and 24012can debug them further. If the entire operation takes much longer than 24013the time spent in the slowest function in the profiler output, you 24014probably profiled the wrong part of Gnus. To reset profiling 24015statistics, use ‘M-x elp-reset-all’. ‘M-x elp-restore-all’ is supposed 24016to remove profiling, but given the complexities and dynamic code 24017generation in Gnus, it might not always work perfectly. 24018 24019 If you just need help, you are better off asking on ‘gnu.emacs.gnus’. 24020I’m not very helpful. You can also ask on the ding mailing list 24021<ding@gnus.org>. Write to <ding-request@gnus.org> to subscribe. 24022 24023 24024File: gnus.info, Node: Gnus Reference Guide, Next: Emacs for Heathens, Prev: Troubleshooting, Up: Appendices 24025 2402611.6 Gnus Reference Guide 24027========================= 24028 24029It is my hope that other people will figure out smart stuff that Gnus 24030can do, and that other people will write those smart things as well. To 24031facilitate that I thought it would be a good idea to describe the inner 24032workings of Gnus. And some of the not-so-inner workings, while I’m at 24033it. 24034 24035 You can never expect the internals of a program not to change, but I 24036will be defining (in some details) the interface between Gnus and its 24037back ends (this is written in stone), the format of the score files 24038(ditto), data structures (some are less likely to change than others) 24039and general methods of operation. 24040 24041* Menu: 24042 24043* Gnus Utility Functions:: Common functions and variable to use. 24044* Back End Interface:: How Gnus communicates with the servers. 24045* Score File Syntax:: A BNF definition of the score file standard. 24046* Headers:: How Gnus stores headers internally. 24047* Ranges:: A handy format for storing mucho numbers. 24048* Group Info:: The group info format. 24049* Extended Interactive:: Symbolic prefixes and stuff. 24050* Various File Formats:: Formats of files that Gnus use. 24051 24052 24053File: gnus.info, Node: Gnus Utility Functions, Next: Back End Interface, Up: Gnus Reference Guide 24054 2405511.6.1 Gnus Utility Functions 24056----------------------------- 24057 24058When writing small functions to be run from hooks (and stuff), it’s 24059vital to have access to the Gnus internal functions and variables. 24060Below is a list of the most common ones. 24061 24062‘gnus-newsgroup-name’ 24063 This variable holds the name of the current newsgroup. 24064 24065‘gnus-find-method-for-group’ 24066 A function that returns the select method for GROUP. 24067 24068‘gnus-group-real-name’ 24069 Takes a full (prefixed) Gnus group name, and returns the unprefixed 24070 name. 24071 24072‘gnus-group-prefixed-name’ 24073 Takes an unprefixed group name and a select method, and returns the 24074 full (prefixed) Gnus group name. 24075 24076‘gnus-get-info’ 24077 Returns the group info list for GROUP (*note Group Info::). 24078 24079‘gnus-group-unread’ 24080 The number of unread articles in GROUP, or ‘t’ if that is unknown. 24081 24082‘gnus-active’ 24083 The active entry (i.e., a cons cell containing the lowest and 24084 highest article numbers) for GROUP. 24085 24086‘gnus-set-active’ 24087 Set the active entry for GROUP. 24088 24089‘gnus-add-current-to-buffer-list’ 24090 Adds the current buffer to the list of buffers to be killed on Gnus 24091 exit. 24092 24093‘gnus-continuum-version’ 24094 Takes a Gnus version string as a parameter and returns a floating 24095 point number. Earlier versions will always get a lower number than 24096 later versions. 24097 24098‘gnus-group-read-only-p’ 24099 Says whether GROUP is read-only or not. 24100 24101‘gnus-news-group-p’ 24102 Says whether GROUP came from a news back end. 24103 24104‘gnus-ephemeral-group-p’ 24105 Says whether GROUP is ephemeral or not. 24106 24107‘gnus-server-to-method’ 24108 Returns the select method corresponding to SERVER. 24109 24110‘gnus-server-equal’ 24111 Says whether two virtual servers are essentially equal. For 24112 instance, two virtual servers may have server parameters in 24113 different order, but this function will consider them equal. 24114 24115‘gnus-group-native-p’ 24116 Says whether GROUP is native or not. 24117 24118‘gnus-group-secondary-p’ 24119 Says whether GROUP is secondary or not. 24120 24121‘gnus-group-foreign-p’ 24122 Says whether GROUP is foreign or not. 24123 24124‘gnus-group-find-parameter’ 24125 Returns the parameter list of GROUP (*note Group Parameters::). If 24126 given a second parameter, returns the value of that parameter for 24127 GROUP. 24128 24129‘gnus-group-set-parameter’ 24130 Takes three parameters; GROUP, PARAMETER and VALUE. 24131 24132‘gnus-narrow-to-body’ 24133 Narrows the current buffer to the body of the article. 24134 24135‘gnus-check-backend-function’ 24136 Takes two parameters, FUNCTION and GROUP. If the back end GROUP 24137 comes from supports FUNCTION, return non-‘nil’. 24138 24139 (gnus-check-backend-function "request-scan" "nnml:misc") 24140 ⇒ t 24141 24142‘gnus-read-method’ 24143 Prompts the user for a select method. 24144 24145 24146File: gnus.info, Node: Back End Interface, Next: Score File Syntax, Prev: Gnus Utility Functions, Up: Gnus Reference Guide 24147 2414811.6.2 Back End Interface 24149------------------------- 24150 24151Gnus doesn’t know anything about NNTP, spools, mail or virtual groups. 24152It only knows how to talk to “virtual servers”. A virtual server is a 24153“back end” and some “back end variables”. As examples of the first, we 24154have ‘nntp’, ‘nnspool’ and ‘nnmbox’. As examples of the latter we have 24155‘nntp-port-number’ and ‘nnmbox-directory’. 24156 24157 When Gnus asks for information from a back end—say ‘nntp’—on 24158something, it will normally include a virtual server name in the 24159function parameters. (If not, the back end should use the “current” 24160virtual server.) For instance, ‘nntp-request-list’ takes a virtual 24161server as its only (optional) parameter. If this virtual server hasn’t 24162been opened, the function should fail. 24163 24164 Note that a virtual server name has no relation to some physical 24165server name. Take this example: 24166 24167 (nntp "odd-one" 24168 (nntp-address "ifi.uio.no") 24169 (nntp-port-number 4324)) 24170 24171 Here the virtual server name is ‘odd-one’ while the name of the 24172physical server is ‘ifi.uio.no’. 24173 24174 The back ends should be able to switch between several virtual 24175servers. The standard back ends implement this by keeping an alist of 24176virtual server environments that they pull down/push up when needed. 24177 24178 There are two groups of interface functions: “required functions”, 24179which must be present, and “optional functions”, which Gnus will always 24180check for presence before attempting to call ’em. 24181 24182 All these functions are expected to return data in the buffer 24183‘nntp-server-buffer’ (‘ *nntpd*’), which is somewhat unfortunately 24184named, but we’ll have to live with it. When I talk about “resulting 24185data”, I always refer to the data in that buffer. When I talk about 24186“return value”, I talk about the function value returned by the function 24187call. Functions that fail should return ‘nil’ as the return value. 24188 24189 Some back ends could be said to be “server-forming” back ends, and 24190some might be said not to be. The latter are back ends that generally 24191only operate on one group at a time, and have no concept of “server”; 24192they have a group, and they deliver info on that group and nothing more. 24193 24194 Gnus identifies each message by way of group name and article number. 24195A few remarks about these article numbers might be useful. First of 24196all, the numbers are positive integers. Secondly, it is normally not 24197possible for later articles to “re-use” older article numbers without 24198confusing Gnus. That is, if a group has ever contained a message 24199numbered 42, then no other message may get that number, or Gnus will get 24200mightily confused.(1) Third, article numbers must be assigned in order 24201of arrival in the group; this is not necessarily the same as the date of 24202the message. 24203 24204 The previous paragraph already mentions all the “hard” restrictions 24205that article numbers must fulfill. But it seems that it might be useful 24206to assign _consecutive_ article numbers, for Gnus gets quite confused if 24207there are holes in the article numbering sequence. However, due to the 24208“no-reuse” restriction, holes cannot be avoided altogether. It’s also 24209useful for the article numbers to start at 1 to avoid running out of 24210numbers as long as possible. 24211 24212 Note that by convention, back ends are named ‘nnsomething’, but Gnus 24213also comes with some ‘nnnotbackends’, such as ‘nnheader.el’, ‘nnmail.el’ 24214and ‘nnoo.el’. 24215 24216 In the examples and definitions I will refer to the imaginary back 24217end ‘nnchoke’. 24218 24219* Menu: 24220 24221* Required Back End Functions:: Functions that must be implemented. 24222* Optional Back End Functions:: Functions that need not be implemented. 24223* Error Messaging:: How to get messages and report errors. 24224* Writing New Back Ends:: Extending old back ends. 24225* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end. 24226* Mail-like Back Ends:: Some tips on mail back ends. 24227 24228 ---------- Footnotes ---------- 24229 24230 (1) See the function ‘nnchoke-request-update-info’, *note Optional 24231Back End Functions::. 24232 24233 24234File: gnus.info, Node: Required Back End Functions, Next: Optional Back End Functions, Up: Back End Interface 24235 2423611.6.2.1 Required Back End Functions 24237.................................... 24238 24239‘(nnchoke-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD)’ 24240 24241 ARTICLES is either a range of article numbers or a list of 24242 ‘Message-ID’s. Current back ends do not fully support either—only 24243 sequences (lists) of article numbers, and most back ends do not 24244 support retrieval of ‘Message-ID’s. But they should try for both. 24245 24246 The result data should either be HEADs or NOV lines, and the result 24247 value should either be ‘headers’ or ‘nov’ to reflect this. This 24248 might later be expanded to ‘various’, which will be a mixture of 24249 HEADs and NOV lines, but this is currently not supported by Gnus. 24250 24251 If FETCH-OLD is non-‘nil’ it says to try fetching “extra headers”, 24252 in some meaning of the word. This is generally done by fetching 24253 (at most) FETCH-OLD extra headers less than the smallest article 24254 number in ‘articles’, and filling the gaps as well. The presence 24255 of this parameter can be ignored if the back end finds it 24256 cumbersome to follow the request. If this is non-‘nil’ and not a 24257 number, do maximum fetches. 24258 24259 Here’s an example HEAD: 24260 24261 221 1056 Article retrieved. 24262 Path: ifi.uio.no!sturles 24263 From: sturles@ifi.uio.no (Sturle Sunde) 24264 Newsgroups: ifi.discussion 24265 Subject: Re: Something very droll 24266 Date: 27 Oct 1994 14:02:57 +0100 24267 Organization: Dept. of Informatics, University of Oslo, Norway 24268 Lines: 26 24269 Message-ID: <38o8e1$a0o@holmenkollen.ifi.uio.no> 24270 References: <38jdmq$4qu@visbur.ifi.uio.no> 24271 NNTP-Posting-Host: holmenkollen.ifi.uio.no 24272 . 24273 24274 So a ‘headers’ return value would imply that there’s a number of 24275 these in the data buffer. 24276 24277 Here’s a BNF definition of such a buffer: 24278 24279 headers = *head 24280 head = error / valid-head 24281 error-message = [ "4" / "5" ] 2number " " <error message> eol 24282 valid-head = valid-message *header "." eol 24283 valid-message = "221 " <number> " Article retrieved." eol 24284 header = <text> eol 24285 24286 (The version of extended BNF used here is ABNF, the one used in 24287 Internet RFCs. See RFC 5234.) 24288 24289 If the return value is ‘nov’, the data buffer should contain 24290 “network overview database” lines. These are basically fields 24291 separated by tabs. 24292 24293 nov-buffer = *nov-line 24294 nov-line = field 7*8[ <TAB> field ] eol 24295 field = <text except TAB> 24296 24297 For a closer look at what should be in those fields, *note 24298 Headers::. 24299 24300‘(nnchoke-open-server SERVER &optional DEFINITIONS)’ 24301 24302 SERVER is here the virtual server name. DEFINITIONS is a list of 24303 ‘(VARIABLE VALUE)’ pairs that define this virtual server. 24304 24305 If the server can’t be opened, no error should be signaled. The 24306 back end may then choose to refuse further attempts at connecting 24307 to this server. In fact, it should do so. 24308 24309 If the server is opened already, this function should return a 24310 non-‘nil’ value. There should be no data returned. 24311 24312‘(nnchoke-close-server &optional SERVER)’ 24313 24314 Close connection to SERVER and free all resources connected to it. 24315 Return ‘nil’ if the server couldn’t be closed for some reason. 24316 24317 There should be no data returned. 24318 24319‘(nnchoke-request-close)’ 24320 24321 Close connection to all servers and free all resources that the 24322 back end have reserved. All buffers that have been created by that 24323 back end should be killed. (Not the ‘nntp-server-buffer’, though.) 24324 This function is generally only called when Gnus is shutting down. 24325 24326 There should be no data returned. 24327 24328‘(nnchoke-server-opened &optional SERVER)’ 24329 24330 If SERVER is the current virtual server, and the connection to the 24331 physical server is alive, then this function should return a 24332 non-‘nil’ value. This function should under no circumstances 24333 attempt to reconnect to a server we have lost connection to. 24334 24335 There should be no data returned. 24336 24337‘(nnchoke-status-message &optional SERVER)’ 24338 24339 This function should return the last error message from SERVER. 24340 24341 There should be no data returned. 24342 24343‘(nnchoke-request-article ARTICLE &optional GROUP SERVER TO-BUFFER)’ 24344 24345 The result data from this function should be the article specified 24346 by ARTICLE. This might either be a ‘Message-ID’ or a number. It 24347 is optional whether to implement retrieval by ‘Message-ID’, but it 24348 would be nice if that were possible. 24349 24350 If TO-BUFFER is non-‘nil’, the result data should be returned in 24351 this buffer instead of the normal data buffer. This is to make it 24352 possible to avoid copying large amounts of data from one buffer to 24353 another, while Gnus mainly requests articles to be inserted 24354 directly into its article buffer. 24355 24356 If it is at all possible, this function should return a cons cell 24357 where the ‘car’ is the group name the article was fetched from, and 24358 the ‘cdr’ is the article number. This will enable Gnus to find out 24359 what the real group and article numbers are when fetching articles 24360 by ‘Message-ID’. If this isn’t possible, ‘t’ should be returned on 24361 successful article retrieval. 24362 24363‘(nnchoke-request-group GROUP &optional SERVER FAST INFO)’ 24364 24365 Get data on GROUP. This function also has the side effect of 24366 making GROUP the current group. 24367 24368 If FAST, don’t bother to return useful data, just make GROUP the 24369 current group. 24370 24371 If INFO, it allows the backend to update the group info structure. 24372 24373 Here’s an example of some result data and a definition of the same: 24374 24375 211 56 1000 1059 ifi.discussion 24376 24377 The first number is the status, which should be 211. Next is the 24378 total number of articles in the group, the lowest article number, 24379 the highest article number, and finally the group name. Note that 24380 the total number of articles may be less than one might think while 24381 just considering the highest and lowest article numbers, but some 24382 articles may have been canceled. Gnus just discards the 24383 total-number, so whether one should take the bother to generate it 24384 properly (if that is a problem) is left as an exercise to the 24385 reader. If the group contains no articles, the lowest article 24386 number should be reported as 1 and the highest as 0. 24387 24388 group-status = [ error / info ] eol 24389 error = [ "4" / "5" ] 2<number> " " <Error message> 24390 info = "211 " 3* [ <number> " " ] <string> 24391 24392‘(nnchoke-close-group GROUP &optional SERVER)’ 24393 24394 Close GROUP and free any resources connected to it. This will be a 24395 no-op on most back ends. 24396 24397 There should be no data returned. 24398 24399‘(nnchoke-request-list &optional SERVER)’ 24400 24401 Return a list of all groups available on SERVER. And that means 24402 _all_. 24403 24404 Here’s an example from a server that only carries two groups: 24405 24406 ifi.test 0000002200 0000002000 y 24407 ifi.discussion 3324 3300 n 24408 24409 On each line we have a group name, then the highest article number 24410 in that group, the lowest article number, and finally a flag. If 24411 the group contains no articles, the lowest article number should be 24412 reported as 1 and the highest as 0. 24413 24414 active-file = *active-line 24415 active-line = name " " <number> " " <number> " " flags eol 24416 name = <string> 24417 flags = "n" / "y" / "m" / "x" / "j" / "=" name 24418 24419 The flag says whether the group is read-only (‘n’), is moderated 24420 (‘m’), is dead (‘x’), is aliased to some other group 24421 (‘=other-group’) or none of the above (‘y’). 24422 24423‘(nnchoke-request-post &optional SERVER)’ 24424 24425 This function should post the current buffer. It might return 24426 whether the posting was successful or not, but that’s not required. 24427 If, for instance, the posting is done asynchronously, it has 24428 generally not been completed by the time this function concludes. 24429 In that case, this function should set up some kind of sentinel to 24430 beep the user loud and clear if the posting could not be completed. 24431 24432 There should be no result data from this function. 24433 24434 24435File: gnus.info, Node: Optional Back End Functions, Next: Error Messaging, Prev: Required Back End Functions, Up: Back End Interface 24436 2443711.6.2.2 Optional Back End Functions 24438.................................... 24439 24440‘(nnchoke-retrieve-groups GROUPS &optional SERVER)’ 24441 24442 GROUPS is a list of groups, and this function should request data 24443 on all those groups. How it does it is of no concern to Gnus, but 24444 it should attempt to do this in a speedy fashion. 24445 24446 The return value of this function can be either ‘active’ or 24447 ‘group’, which says what the format of the result data is. The 24448 former is in the same format as the data from 24449 ‘nnchoke-request-list’, while the latter is a buffer full of lines 24450 in the same format as ‘nnchoke-request-group’ gives. 24451 24452 group-buffer = *active-line / *group-status 24453 24454‘(nnchoke-request-update-info GROUP INFO &optional SERVER)’ 24455 24456 A Gnus group info (*note Group Info::) is handed to the back end 24457 for alterations. This comes in handy if the back end really 24458 carries all the information (as is the case with virtual and imap 24459 groups). This function should destructively alter the info to suit 24460 its needs, and should return a non-‘nil’ value (exceptionally, 24461 ‘nntp-request-update-info’ always returns ‘nil’ not to waste the 24462 network resources). 24463 24464 There should be no result data from this function. 24465 24466‘(nnchoke-request-type GROUP &optional ARTICLE)’ 24467 24468 When the user issues commands for “sending news” (‘F’ in the 24469 summary buffer, for instance), Gnus has to know whether the article 24470 the user is following up on is news or mail. This function should 24471 return ‘news’ if ARTICLE in GROUP is news, ‘mail’ if it is mail and 24472 ‘unknown’ if the type can’t be decided. (The ARTICLE parameter is 24473 necessary in ‘nnvirtual’ groups which might very well combine mail 24474 groups and news groups.) Both GROUP and ARTICLE may be ‘nil’. 24475 24476 There should be no result data from this function. 24477 24478‘(nnchoke-request-set-mark GROUP ACTION &optional SERVER)’ 24479 24480 Set/remove/add marks on articles. Normally Gnus handles the 24481 article marks (such as read, ticked, expired etc.) internally, and 24482 store them in ‘~/.newsrc.eld’. Some back ends (such as IMAP) 24483 however carry all information about the articles on the server, so 24484 Gnus need to propagate the mark information to the server. 24485 24486 ACTION is a list of mark setting requests, having this format: 24487 24488 (RANGE ACTION MARK) 24489 24490 RANGE is a range of articles you wish to update marks on. ACTION 24491 is ‘add’ or ‘del’, used to add marks or remove marks (preserving 24492 all marks not mentioned). MARK is a list of marks; where each mark 24493 is a symbol. Currently used marks are ‘read’, ‘tick’, ‘reply’, 24494 ‘expire’, ‘killed’, ‘dormant’, ‘save’, ‘download’, ‘unsend’, and 24495 ‘forward’, but your back end should, if possible, not limit itself 24496 to these. 24497 24498 Given contradictory actions, the last action in the list should be 24499 the effective one. That is, if your action contains a request to 24500 add the ‘tick’ mark on article 1 and, later in the list, a request 24501 to remove the mark on the same article, the mark should in fact be 24502 removed. 24503 24504 An example action list: 24505 24506 (((5 12 30) 'del '(tick)) 24507 ((10 . 90) 'add '(read expire)) 24508 ((92 94) 'del '(read))) 24509 24510 The function should return a range of articles it wasn’t able to 24511 set the mark on (currently not used for anything). 24512 24513 There should be no result data from this function. 24514 24515‘(nnchoke-request-update-mark GROUP ARTICLE MARK)’ 24516 24517 If the user tries to set a mark that the back end doesn’t like, 24518 this function may change the mark. Gnus will use whatever this 24519 function returns as the mark for ARTICLE instead of the original 24520 MARK. If the back end doesn’t care, it must return the original 24521 MARK, and not ‘nil’ or any other type of garbage. 24522 24523 The only use for this I can see is what ‘nnvirtual’ does with it—if 24524 a component group is auto-expirable, marking an article as read in 24525 the virtual group should result in the article being marked as 24526 expirable. 24527 24528 There should be no result data from this function. 24529 24530‘(nnchoke-request-scan &optional GROUP SERVER)’ 24531 24532 This function may be called at any time (by Gnus or anything else) 24533 to request that the back end check for incoming articles, in one 24534 way or another. A mail back end will typically read the spool file 24535 or query the POP server when this function is invoked. The GROUP 24536 doesn’t have to be heeded—if the back end decides that it is too 24537 much work just scanning for a single group, it may do a total scan 24538 of all groups. It would be nice, however, to keep things local if 24539 that’s practical. 24540 24541 There should be no result data from this function. 24542 24543‘(nnchoke-request-group-description GROUP &optional SERVER)’ 24544 24545 The result data from this function should be a description of 24546 GROUP. 24547 24548 description-line = name <TAB> description eol 24549 name = <string> 24550 description = <text> 24551 24552‘(nnchoke-request-list-newsgroups &optional SERVER)’ 24553 24554 The result data from this function should be the description of all 24555 groups available on the server. 24556 24557 description-buffer = *description-line 24558 24559‘(nnchoke-request-newgroups DATE &optional SERVER)’ 24560 24561 The result data from this function should be all groups that were 24562 created after ‘date’, which is in normal human-readable date format 24563 (i.e., the date format used in mail and news headers, and returned 24564 by the function ‘message-make-date’ by default). The data should 24565 be in the active buffer format. 24566 24567 It is okay for this function to return “too many” groups; some back 24568 ends might find it cheaper to return the full list of groups, 24569 rather than just the new groups. But don’t do this for back ends 24570 with many groups. Normally, if the user creates the groups 24571 herself, there won’t be too many groups, so ‘nnml’ and the like are 24572 probably safe. But for back ends like ‘nntp’, where the groups 24573 have been created by the server, it is quite likely that there can 24574 be many groups. 24575 24576‘(nnchoke-request-create-group GROUP &optional SERVER)’ 24577 24578 This function should create an empty group with name GROUP. 24579 24580 There should be no return data. 24581 24582‘(nnchoke-request-expire-articles ARTICLES &optional GROUP SERVER FORCE)’ 24583 24584 This function should run the expiry process on all articles in the 24585 ARTICLES range (which is currently a simple list of article 24586 numbers.) It is left up to the back end to decide how old articles 24587 should be before they are removed by this function. If FORCE is 24588 non-‘nil’, all ARTICLES should be deleted, no matter how new they 24589 are. 24590 24591 This function should return a list of articles that it did not/was 24592 not able to delete. 24593 24594 There should be no result data returned. 24595 24596‘(nnchoke-request-move-article ARTICLE GROUP SERVER ACCEPT-FORM &optional LAST)’ 24597 24598 This function should move ARTICLE (which is a number) from GROUP by 24599 calling ACCEPT-FORM. 24600 24601 This function should ready the article in question for moving by 24602 removing any header lines it has added to the article, and 24603 generally should “tidy up” the article. Then it should ‘eval’ 24604 ACCEPT-FORM in the buffer where the “tidy” article is. This will 24605 do the actual copying. If this ‘eval’ returns a non-‘nil’ value, 24606 the article should be removed. 24607 24608 If LAST is ‘nil’, that means that there is a high likelihood that 24609 there will be more requests issued shortly, so that allows some 24610 optimizations. 24611 24612 The function should return a cons where the ‘car’ is the group name 24613 and the ‘cdr’ is the article number that the article was entered 24614 as. 24615 24616 There should be no data returned. 24617 24618‘(nnchoke-request-accept-article GROUP &optional SERVER LAST)’ 24619 24620 This function takes the current buffer and inserts it into GROUP. 24621 If LAST in ‘nil’, that means that there will be more calls to this 24622 function in short order. 24623 24624 The function should return a cons where the ‘car’ is the group name 24625 and the ‘cdr’ is the article number that the article was entered 24626 as. 24627 24628 The group should exist before the back end is asked to accept the 24629 article for that group. 24630 24631 There should be no data returned. 24632 24633‘(nnchoke-request-replace-article ARTICLE GROUP BUFFER)’ 24634 24635 This function should remove ARTICLE (which is a number) from GROUP 24636 and insert BUFFER there instead. 24637 24638 There should be no data returned. 24639 24640‘(nnchoke-request-delete-group GROUP FORCE &optional SERVER)’ 24641 24642 This function should delete GROUP. If FORCE, it should really 24643 delete all the articles in the group, and then delete the group 24644 itself. (If there is such a thing as “the group itself”.) 24645 24646 There should be no data returned. 24647 24648‘(nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER)’ 24649 24650 This function should rename GROUP into NEW-NAME. All articles in 24651 GROUP should move to NEW-NAME. 24652 24653 There should be no data returned. 24654 24655 24656File: gnus.info, Node: Error Messaging, Next: Writing New Back Ends, Prev: Optional Back End Functions, Up: Back End Interface 24657 2465811.6.2.3 Error Messaging 24659........................ 24660 24661The back ends should use the function ‘nnheader-report’ to report error 24662conditions—they should not raise errors when they aren’t able to perform 24663a request. The first argument to this function is the back end symbol, 24664and the rest are interpreted as arguments to ‘format’ if there are 24665multiple of them, or just a string if there is one of them. This 24666function must always returns ‘nil’. 24667 24668 (nnheader-report 'nnchoke "You did something totally bogus") 24669 24670 (nnheader-report 'nnchoke "Could not request group %s" group) 24671 24672 Gnus, in turn, will call ‘nnheader-get-report’ when it gets a ‘nil’ 24673back from a server, and this function returns the most recently reported 24674message for the back end in question. This function takes one 24675argument—the server symbol. 24676 24677 Internally, these functions access BACK-END‘-status-string’, so the 24678‘nnchoke’ back end will have its error message stored in 24679‘nnchoke-status-string’. 24680 24681 24682File: gnus.info, Node: Writing New Back Ends, Next: Hooking New Back Ends Into Gnus, Prev: Error Messaging, Up: Back End Interface 24683 2468411.6.2.4 Writing New Back Ends 24685.............................. 24686 24687Many back ends are quite similar. ‘nnml’ is just like ‘nnspool’, but it 24688allows you to edit the articles on the server. ‘nnmh’ is just like 24689‘nnml’, but it doesn’t use an active file, and it doesn’t maintain 24690overview databases. ‘nndir’ is just like ‘nnml’, but it has no concept 24691of “groups”, and it doesn’t allow editing articles. 24692 24693 It would make sense if it were possible to “inherit” functions from 24694back ends when writing new back ends. And, indeed, you can do that if 24695you want to. (You don’t have to if you don’t want to, of course.) 24696 24697 All the back ends declare their public variables and functions by 24698using a package called ‘nnoo’. 24699 24700 To inherit functions from other back ends (and allow other back ends 24701to inherit functions from the current back end), you should use the 24702following macros: 24703 24704‘nnoo-declare’ 24705 This macro declares the first parameter to be a child of the 24706 subsequent parameters. For instance: 24707 24708 (nnoo-declare nndir 24709 nnml nnmh) 24710 24711 ‘nndir’ has declared here that it intends to inherit functions from 24712 both ‘nnml’ and ‘nnmh’. 24713 24714‘defvoo’ 24715 This macro is equivalent to ‘defvar’, but registers the variable as 24716 a public server variable. Most state-oriented variables should be 24717 declared with ‘defvoo’ instead of ‘defvar’. 24718 24719 In addition to the normal ‘defvar’ parameters, it takes a list of 24720 variables in the parent back ends to map the variable to when 24721 executing a function in those back ends. 24722 24723 (defvoo nndir-directory nil 24724 "Where nndir will look for groups." 24725 nnml-current-directory nnmh-current-directory) 24726 24727 This means that ‘nnml-current-directory’ will be set to 24728 ‘nndir-directory’ when an ‘nnml’ function is called on behalf of 24729 ‘nndir’. (The same with ‘nnmh’.) 24730 24731‘nnoo-define-basics’ 24732 This macro defines some common functions that almost all back ends 24733 should have. 24734 24735 (nnoo-define-basics nndir) 24736 24737‘deffoo’ 24738 This macro is just like ‘defun’ and takes the same parameters. In 24739 addition to doing the normal ‘defun’ things, it registers the 24740 function as being public so that other back ends can inherit it. 24741 24742‘nnoo-map-functions’ 24743 This macro allows mapping of functions from the current back end to 24744 functions from the parent back ends. 24745 24746 (nnoo-map-functions nndir 24747 (nnml-retrieve-headers 0 nndir-current-group 0 0) 24748 (nnmh-request-article 0 nndir-current-group 0 0)) 24749 24750 This means that when ‘nndir-retrieve-headers’ is called, the first, 24751 third, and fourth parameters will be passed on to 24752 ‘nnml-retrieve-headers’, while the second parameter is set to the 24753 value of ‘nndir-current-group’. 24754 24755‘nnoo-import’ 24756 This macro allows importing functions from back ends. It should be 24757 the last thing in the source file, since it will only define 24758 functions that haven’t already been defined. 24759 24760 (nnoo-import nndir 24761 (nnmh 24762 nnmh-request-list 24763 nnmh-request-newgroups) 24764 (nnml)) 24765 24766 This means that calls to ‘nndir-request-list’ should just be passed 24767 on to ‘nnmh-request-list’, while all public functions from ‘nnml’ 24768 that haven’t been defined in ‘nndir’ yet should be defined now. 24769 24770 Below is a slightly shortened version of the ‘nndir’ back end. 24771 24772 ;;; nndir.el — single directory newsgroup access for Gnus 24773 ;; Copyright (C) 1995,1996 Free Software Foundation, Inc. 24774 24775 ;;; Code: 24776 24777 (require 'nnheader) 24778 (require 'nnmh) 24779 (require 'nnml) 24780 (require 'nnoo) 24781 (eval-when-compile (require 'cl)) 24782 24783 (nnoo-declare nndir 24784 nnml nnmh) 24785 24786 (defvoo nndir-directory nil 24787 "Where nndir will look for groups." 24788 nnml-current-directory nnmh-current-directory) 24789 24790 (defvoo nndir-nov-is-evil nil 24791 "Non-nil means that nndir will never retrieve NOV headers." 24792 nnml-nov-is-evil) 24793 24794 (defvoo nndir-current-group "" 24795 nil 24796 nnml-current-group nnmh-current-group) 24797 (defvoo nndir-top-directory nil nil nnml-directory nnmh-directory) 24798 (defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail) 24799 24800 (defvoo nndir-status-string "" nil nnmh-status-string) 24801 (defconst nndir-version "nndir 1.0") 24802 24803 ;;; Interface functions. 24804 24805 (nnoo-define-basics nndir) 24806 24807 (deffoo nndir-open-server (server &optional defs) 24808 (setq nndir-directory 24809 (or (cadr (assq 'nndir-directory defs)) 24810 server)) 24811 (unless (assq 'nndir-directory defs) 24812 (push `(nndir-directory ,server) defs)) 24813 (push `(nndir-current-group 24814 ,(file-name-nondirectory 24815 (directory-file-name nndir-directory))) 24816 defs) 24817 (push `(nndir-top-directory 24818 ,(file-name-directory (directory-file-name nndir-directory))) 24819 defs) 24820 (nnoo-change-server 'nndir server defs)) 24821 24822 (nnoo-map-functions nndir 24823 (nnml-retrieve-headers 0 nndir-current-group 0 0) 24824 (nnmh-request-article 0 nndir-current-group 0 0) 24825 (nnmh-request-group nndir-current-group 0 0) 24826 (nnmh-close-group nndir-current-group 0)) 24827 24828 (nnoo-import nndir 24829 (nnmh 24830 nnmh-status-message 24831 nnmh-request-list 24832 nnmh-request-newgroups)) 24833 24834 (provide 'nndir) 24835 24836 24837File: gnus.info, Node: Hooking New Back Ends Into Gnus, Next: Mail-like Back Ends, Prev: Writing New Back Ends, Up: Back End Interface 24838 2483911.6.2.5 Hooking New Back Ends Into Gnus 24840........................................ 24841 24842Having Gnus start using your new back end is rather easy—you just 24843declare it with the ‘gnus-declare-backend’ functions. This will enter 24844the back end into the ‘gnus-valid-select-methods’ variable. 24845 24846 ‘gnus-declare-backend’ takes two parameters—the back end name and an 24847arbitrary number of “abilities”. 24848 24849 Here’s an example: 24850 24851 (gnus-declare-backend "nnchoke" 'mail 'respool 'address) 24852 24853 The above line would then go in the ‘nnchoke.el’ file. 24854 24855 The abilities can be: 24856 24857‘mail’ 24858 This is a mailish back end—followups should (probably) go via mail. 24859‘post’ 24860 This is a newsish back end—followups should (probably) go via news. 24861‘post-mail’ 24862 This back end supports both mail and news. 24863‘none’ 24864 This is neither a post nor mail back end—it’s something completely 24865 different. 24866‘respool’ 24867 It supports respooling—or rather, it is able to modify its source 24868 articles and groups. 24869‘address’ 24870 The name of the server should be in the virtual server name. This 24871 is true for almost all back ends. 24872‘prompt-address’ 24873 The user should be prompted for an address when doing commands like 24874 ‘B’ in the group buffer. This is true for back ends like ‘nntp’, 24875 but not ‘nnmbox’, for instance. 24876 24877 24878File: gnus.info, Node: Mail-like Back Ends, Prev: Hooking New Back Ends Into Gnus, Up: Back End Interface 24879 2488011.6.2.6 Mail-like Back Ends 24881............................ 24882 24883One of the things that separate the mail back ends from the rest of the 24884back ends is the heavy dependence by most of the mail back ends on 24885common functions in ‘nnmail.el’. For instance, here’s the definition of 24886‘nnml-request-scan’: 24887 24888 (deffoo nnml-request-scan (&optional group server) 24889 (setq nnml-article-file-alist nil) 24890 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group)) 24891 24892 It simply calls ‘nnmail-get-new-mail’ with a few parameters, and 24893‘nnmail’ takes care of all the moving and splitting of the mail. 24894 24895 This function takes four parameters. 24896 24897METHOD 24898 This should be a symbol to designate which back end is responsible 24899 for the call. 24900 24901EXIT-FUNCTION 24902 This function should be called after the splitting has been 24903 performed. 24904 24905TEMP-DIRECTORY 24906 Where the temporary files should be stored. 24907 24908GROUP 24909 This optional argument should be a group name if the splitting is 24910 to be performed for one group only. 24911 24912 ‘nnmail-get-new-mail’ will call BACK-END‘-save-mail’ to save each 24913article. BACK-END‘-active-number’ will be called to find the article 24914number assigned to this article. 24915 24916 The function also uses the following variables: 24917BACK-END‘-get-new-mail’ (to see whether to get new mail for this back 24918end); and BACK-END‘-group-alist’ and BACK-END‘-active-file’ to generate 24919the new active file. BACK-END‘-group-alist’ should be a group-active 24920alist, like this: 24921 24922 (("a-group" (1 . 10)) 24923 ("some-group" (34 . 39))) 24924 24925 24926File: gnus.info, Node: Score File Syntax, Next: Headers, Prev: Back End Interface, Up: Gnus Reference Guide 24927 2492811.6.3 Score File Syntax 24929------------------------ 24930 24931Score files are meant to be easily parsable, but yet extremely 24932malleable. It was decided that something that had the same read syntax 24933as an Emacs Lisp list would fit that spec. 24934 24935 Here’s a typical score file: 24936 24937 (("summary" 24938 ("Windows 95" -10000 nil s) 24939 ("Gnus")) 24940 ("from" 24941 ("Lars" -1000)) 24942 (mark -100)) 24943 24944 BNF definition of a score file: 24945 24946 score-file = "" / "(" *element ")" 24947 element = rule / atom 24948 rule = string-rule / number-rule / date-rule 24949 string-rule = "(" quote string-header quote space *string-match ")" 24950 number-rule = "(" quote number-header quote space *number-match ")" 24951 date-rule = "(" quote date-header quote space *date-match ")" 24952 quote = <ascii 34> 24953 string-header = "subject" / "from" / "references" / "message-id" / 24954 "xref" / "body" / "head" / "all" / "followup" 24955 number-header = "lines" / "chars" 24956 date-header = "date" 24957 string-match = "(" quote <string> quote [ "" / [ space score [ "" / 24958 space date [ "" / [ space string-match-t ] ] ] ] ] ")" 24959 score = "nil" / <integer> 24960 date = "nil" / <natural number> 24961 string-match-t = "nil" / "s" / "substring" / "S" / "Substring" / 24962 "r" / "regex" / "R" / "Regex" / 24963 "e" / "exact" / "E" / "Exact" / 24964 "f" / "fuzzy" / "F" / "Fuzzy" 24965 number-match = "(" <integer> [ "" / [ space score [ "" / 24966 space date [ "" / [ space number-match-t ] ] ] ] ] ")" 24967 number-match-t = "nil" / "=" / "<" / ">" / ">=" / "<=" 24968 date-match = "(" quote <string> quote [ "" / [ space score [ "" / 24969 space date [ "" / [ space date-match-t ] ] ] ] ")" 24970 date-match-t = "nil" / "at" / "before" / "after" 24971 atom = "(" [ required-atom / optional-atom ] ")" 24972 required-atom = mark / expunge / mark-and-expunge / files / 24973 exclude-files / read-only / touched 24974 optional-atom = adapt / local / eval 24975 mark = "mark" space nil-or-number 24976 nil-or-number = "nil" / <integer> 24977 expunge = "expunge" space nil-or-number 24978 mark-and-expunge = "mark-and-expunge" space nil-or-number 24979 files = "files" *[ space <string> ] 24980 exclude-files = "exclude-files" *[ space <string> ] 24981 read-only = "read-only" [ space "nil" / space "t" ] 24982 adapt = "adapt" [ space "ignore" / space "t" / space adapt-rule ] 24983 adapt-rule = "(" *[ <string> *[ "(" <string> <integer> ")" ] ")" 24984 local = "local" *[ space "(" <string> space <form> ")" ] 24985 eval = "eval" space <form> 24986 space = *[ " " / <TAB> / <NEWLINE> ] 24987 24988 Any unrecognized elements in a score file should be ignored, but not 24989discarded. 24990 24991 As you can see, white space is needed, but the type and amount of 24992white space is irrelevant. This means that formatting of the score file 24993is left up to the programmer—if it’s simpler to just spew it all out on 24994one looong line, then that’s ok. 24995 24996 The meaning of the various atoms are explained elsewhere in this 24997manual (*note Score File Format::). 24998 24999 25000File: gnus.info, Node: Headers, Next: Ranges, Prev: Score File Syntax, Up: Gnus Reference Guide 25001 2500211.6.4 Headers 25003-------------- 25004 25005Internally Gnus uses a format for storing article headers that 25006corresponds to the NOV format in a mysterious fashion. One could almost 25007suspect that the author looked at the NOV specification and just 25008shamelessly _stole_ the entire thing, and one would be right. 25009 25010 “Header” is a severely overloaded term. “Header” is used in RFC 5536 25011to talk about lines in the head of an article (e.g., ‘From’). It is 25012used by many people as a synonym for “head”—“the header and the body”. 25013(That should be avoided, in my opinion.) And Gnus uses a format 25014internally that it calls “header”, which is what I’m talking about here. 25015This is a 9-element vector, basically, with each header (ouch) having 25016one slot. 25017 25018 These slots are, in order: ‘number’, ‘subject’, ‘from’, ‘date’, ‘id’, 25019‘references’, ‘chars’, ‘lines’, ‘xref’, and ‘extra’. There are macros 25020for accessing and setting these slots—they all have predictable names 25021beginning with ‘mail-header-’ and ‘mail-header-set-’, respectively. 25022 25023 All these slots contain strings, except the ‘extra’ slot, which 25024contains an alist of header/value pairs (*note To From Newsgroups::). 25025 25026 25027File: gnus.info, Node: Ranges, Next: Group Info, Prev: Headers, Up: Gnus Reference Guide 25028 2502911.6.5 Ranges 25030------------- 25031 25032GNUS introduced a concept that I found so useful that I’ve started using 25033it a lot and have elaborated on it greatly. 25034 25035 The question is simple: If you have a large amount of objects that 25036are identified by numbers (say, articles, to take a _wild_ example) that 25037you want to qualify as being “included”, a normal sequence isn’t very 25038useful. (A 200,000 length sequence is a bit long-winded.) 25039 25040 The solution is as simple as the question: You just collapse the 25041sequence. 25042 25043 (1 2 3 4 5 6 10 11 12) 25044 25045 is transformed into 25046 25047 ((1 . 6) (10 . 12)) 25048 25049 To avoid having those nasty ‘(13 . 13)’ elements to denote a lonesome 25050object, a ‘13’ is a valid element: 25051 25052 ((1 . 6) 7 (10 . 12)) 25053 25054 This means that comparing two ranges to find out whether they are 25055equal is slightly tricky: 25056 25057 ((1 . 5) 7 8 (10 . 12)) 25058 25059 and 25060 25061 ((1 . 5) (7 . 8) (10 . 12)) 25062 25063 are equal. In fact, any non-descending list is a range: 25064 25065 (1 2 3 4 5) 25066 25067 is a perfectly valid range, although a pretty long-winded one. This 25068is also valid: 25069 25070 (1 . 5) 25071 25072 and is equal to the previous range. 25073 25074 Here’s a BNF definition of ranges. Of course, one must remember the 25075semantic requirement that the numbers are non-descending. (Any number 25076of repetition of the same number is allowed, but apt to disappear in 25077range handling.) 25078 25079 range = simple-range / normal-range 25080 simple-range = "(" number " . " number ")" 25081 normal-range = "(" start-contents ")" 25082 contents = "" / simple-range *[ " " contents ] / 25083 number *[ " " contents ] 25084 25085 Gnus currently uses ranges to keep track of read articles and article 25086marks. I plan on implementing a number of range operators in C if The 25087Powers That Be are willing to let me. (I haven’t asked yet, because I 25088need to do some more thinking on what operators I need to make life 25089totally range-based without ever having to convert back to normal 25090sequences.) 25091 25092 25093File: gnus.info, Node: Group Info, Next: Extended Interactive, Prev: Ranges, Up: Gnus Reference Guide 25094 2509511.6.6 Group Info 25096----------------- 25097 25098Gnus stores all permanent info on groups in a “group info” list. This 25099list is from three to six elements (or more) long and exhaustively 25100describes the group. 25101 25102 Here are two example group infos; one is a very simple group while 25103the second is a more complex one: 25104 25105 ("no.group" 5 ((1 . 54324))) 25106 25107 ("nnml:my.mail" 3 ((1 . 5) 9 (20 . 55)) 25108 ((tick (15 . 19)) (replied 3 6 (19 . 3))) 25109 (nnml "") 25110 ((auto-expire . t) (to-address . "ding@gnus.org"))) 25111 25112 The first element is the “group name”—as Gnus knows the group, 25113anyway. The second element is the “subscription level”, which normally 25114is a small integer. (It can also be the “rank”, which is a cons cell 25115where the ‘car’ is the level and the ‘cdr’ is the score.) The third 25116element is a list of ranges of read articles. The fourth element is a 25117list of lists of article marks of various kinds. The fifth element is 25118the select method (or virtual server, if you like). The sixth element 25119is a list of “group parameters”, which is what this section is about. 25120 25121 Any of the last three elements may be missing if they are not 25122required. In fact, the vast majority of groups will normally only have 25123the first three elements, which saves quite a lot of cons cells. 25124 25125 Here’s a BNF definition of the group info format: 25126 25127 info = "(" group space ralevel space read 25128 [ "" / [ space marks-list [ "" / [ space method [ "" / 25129 space parameters ] ] ] ] ] ")" 25130 group = quote <string> quote 25131 ralevel = rank / level 25132 level = <integer in the range of 1 to inf> 25133 rank = "(" level "." score ")" 25134 score = <integer in the range of 1 to inf> 25135 read = range 25136 marks-lists = nil / "(" *marks ")" 25137 marks = "(" <string> range ")" 25138 method = "(" <string> *elisp-forms ")" 25139 parameters = "(" *elisp-forms ")" 25140 25141 Actually that ‘marks’ rule is a fib. A ‘marks’ is a ‘<string>’ 25142consed on to a ‘range’, but that’s a bitch to say in pseudo-BNF. 25143 25144 If you have a Gnus info and want to access the elements, Gnus offers 25145a series of macros for getting/setting these elements. 25146 25147‘gnus-info-group’ 25148‘gnus-info-set-group’ 25149 Get/set the group name. 25150 25151‘gnus-info-rank’ 25152‘gnus-info-set-rank’ 25153 Get/set the group rank (*note Group Score::). 25154 25155‘gnus-info-level’ 25156‘gnus-info-set-level’ 25157 Get/set the group level. 25158 25159‘gnus-info-score’ 25160‘gnus-info-set-score’ 25161 Get/set the group score (*note Group Score::). 25162 25163‘gnus-info-read’ 25164‘gnus-info-set-read’ 25165 Get/set the ranges of read articles. 25166 25167‘gnus-info-marks’ 25168‘gnus-info-set-marks’ 25169 Get/set the lists of ranges of marked articles. 25170 25171‘gnus-info-method’ 25172‘gnus-info-set-method’ 25173 Get/set the group select method. 25174 25175‘gnus-info-params’ 25176‘gnus-info-set-params’ 25177 Get/set the group parameters. 25178 25179 All the getter functions take one parameter—the info list. The 25180setter functions take two parameters—the info list and the new value. 25181 25182 The last three elements in the group info aren’t mandatory, so it may 25183be necessary to extend the group info before setting the element. If 25184this is necessary, you can just pass on a non-‘nil’ third parameter to 25185the three final setter functions to have this happen automatically. 25186 25187 25188File: gnus.info, Node: Extended Interactive, Next: Various File Formats, Prev: Group Info, Up: Gnus Reference Guide 25189 2519011.6.7 Extended Interactive 25191--------------------------- 25192 25193Gnus extends the standard Emacs ‘interactive’ specification slightly to 25194allow easy use of the symbolic prefix (*note Symbolic Prefixes::). 25195Here’s an example of how this is used: 25196 25197 (defun gnus-summary-increase-score (&optional score symp) 25198 (interactive (gnus-interactive "P\ny")) 25199 ... 25200 ) 25201 25202 The best thing to do would have been to implement ‘gnus-interactive’ 25203as a macro which would have returned an ‘interactive’ form, but this 25204isn’t possible since Emacs checks whether a function is interactive or 25205not by simply doing an ‘assq’ on the lambda form. So, instead we have 25206‘gnus-interactive’ function that takes a string and returns values that 25207are usable to ‘interactive’. 25208 25209 This function accepts (almost) all normal ‘interactive’ specs, but 25210adds a few more. 25211 25212‘y’ 25213 The current symbolic prefix—the ‘gnus-current-prefix-symbol’ 25214 variable. 25215 25216‘Y’ 25217 A list of the current symbolic prefixes—the 25218 ‘gnus-current-prefix-symbol’ variable. 25219 25220‘A’ 25221 The current article number—the ‘gnus-summary-article-number’ 25222 function. 25223 25224‘H’ 25225 The current article header—the ‘gnus-summary-article-header’ 25226 function. 25227 25228‘g’ 25229 The current group name—the ‘gnus-group-group-name’ function. 25230 25231 25232File: gnus.info, Node: Various File Formats, Prev: Extended Interactive, Up: Gnus Reference Guide 25233 2523411.6.8 Various File Formats 25235--------------------------- 25236 25237* Menu: 25238 25239* Active File Format:: Information on articles and groups available. 25240* Newsgroups File Format:: Group descriptions. 25241 25242 25243File: gnus.info, Node: Active File Format, Next: Newsgroups File Format, Up: Various File Formats 25244 2524511.6.8.1 Active File Format 25246........................... 25247 25248The active file lists all groups available on the server in question. 25249It also lists the highest and lowest current article numbers in each 25250group. 25251 25252 Here’s an excerpt from a typical active file: 25253 25254 soc.motss 296030 293865 y 25255 alt.binaries.pictures.fractals 3922 3913 n 25256 comp.sources.unix 1605 1593 m 25257 comp.binaries.ibm.pc 5097 5089 y 25258 no.general 1000 900 y 25259 25260 Here’s a pseudo-BNF definition of this file: 25261 25262 active = *group-line 25263 group-line = group spc high-number spc low-number spc flag <NEWLINE> 25264 group = <non-white-space string> 25265 spc = " " 25266 high-number = <non-negative integer> 25267 low-number = <positive integer> 25268 flag = "y" / "n" / "m" / "j" / "x" / "=" group 25269 25270 For a full description of this file, see the manual pages for ‘innd’, 25271in particular ‘active(5)’. 25272 25273 25274File: gnus.info, Node: Newsgroups File Format, Prev: Active File Format, Up: Various File Formats 25275 2527611.6.8.2 Newsgroups File Format 25277............................... 25278 25279The newsgroups file lists groups along with their descriptions. Not all 25280groups on the server have to be listed, and not all groups in the file 25281have to exist on the server. The file is meant purely as information to 25282the user. 25283 25284 The format is quite simple; a group name, a tab, and the description. 25285Here’s the definition: 25286 25287 newsgroups = *line 25288 line = group tab description <NEWLINE> 25289 group = <non-white-space string> 25290 tab = <TAB> 25291 description = <string> 25292 25293 25294File: gnus.info, Node: Emacs for Heathens, Next: Frequently Asked Questions, Prev: Gnus Reference Guide, Up: Appendices 25295 2529611.7 Emacs for Heathens 25297======================= 25298 25299Believe it or not, but some people who use Gnus haven’t really used 25300Emacs much before they embarked on their journey on the Gnus Love Boat. 25301If you are one of those unfortunates to whom “‘C-M-a’”, “kill the 25302region”, and “set ‘gnus-flargblossen’ to an alist where the key is a 25303regexp that is used for matching on the group name” are magical phrases 25304with little or no meaning, then this appendix is for you. If you are 25305already familiar with Emacs, just ignore this and go fondle your cat 25306instead. 25307 25308* Menu: 25309 25310* Keystrokes:: Entering text and executing commands. 25311* Emacs Lisp:: The built-in Emacs programming language. 25312 25313 25314File: gnus.info, Node: Keystrokes, Next: Emacs Lisp, Up: Emacs for Heathens 25315 2531611.7.1 Keystrokes 25317----------------- 25318 25319 • Q: What is an experienced Emacs user? 25320 25321 • A: A person who wishes that the terminal had pedals. 25322 25323 Yes, when you use Emacs, you are apt to use the control key, the 25324shift key and the meta key a lot. This is very annoying to some people 25325(notably ‘vi’le users), and the rest of us just love the hell out of it. 25326Just give up and submit. Emacs really does stand for 25327“Escape-Meta-Alt-Control-Shift”, and not “Editing Macros”, as you may 25328have heard from other disreputable sources (like the Emacs author). 25329 25330 The shift keys are normally located near your pinky fingers, and are 25331normally used to get capital letters and stuff. You probably use it all 25332the time. The control key is normally marked “CTRL” or something like 25333that. The meta key is, funnily enough, never marked as such on any 25334keyboard. The one I’m currently at has a key that’s marked “Alt”, which 25335is the meta key on this keyboard. It’s usually located somewhere to the 25336left hand side of the keyboard, usually on the bottom row. 25337 25338 Now, us Emacs people don’t say “press the meta-control-m key”, 25339because that’s just too inconvenient. We say “press the ‘C-M-m’ key”. 25340‘M-’ is the prefix that means “meta” and “C-” is the prefix that means 25341“control”. So “press ‘C-k’” means “press down the control key, and hold 25342it down while you press ‘k’”. “Press ‘C-M-k’” means “press down and 25343hold down the meta key and the control key and then press ‘k’”. Simple, 25344ay? 25345 25346 This is somewhat complicated by the fact that not all keyboards have 25347a meta key. In that case you can use the “escape” key. Then ‘M-k’ 25348means “press escape, release escape, press ‘k’”. That’s much more work 25349than if you have a meta key, so if that’s the case, I respectfully 25350suggest you get a real keyboard with a meta key. You can’t live without 25351it. 25352 25353 25354File: gnus.info, Node: Emacs Lisp, Prev: Keystrokes, Up: Emacs for Heathens 25355 2535611.7.2 Emacs Lisp 25357----------------- 25358 25359Emacs is the King of Editors because it’s really a Lisp interpreter. 25360Each and every key you tap runs some Emacs Lisp code snippet, and since 25361Emacs Lisp is an interpreted language, that means that you can configure 25362any key to run any arbitrary code. You just, like, do it. 25363 25364 Gnus is written in Emacs Lisp, and is run as a bunch of interpreted 25365functions. (These are byte-compiled for speed, but it’s still 25366interpreted.) If you decide that you don’t like the way Gnus does 25367certain things, it’s trivial to have it do something a different way. 25368(Well, at least if you know how to write Lisp code.) However, that’s 25369beyond the scope of this manual, so we are simply going to talk about 25370some common constructs that you normally use in your ‘~/.gnus.el’ file 25371to customize Gnus. (You can also use the ‘~/.emacs’ file, but in order 25372to set things of Gnus up, it is much better to use the ‘~/.gnus.el’ 25373file, *Note Startup Files::.) 25374 25375 If you want to set the variable ‘gnus-florgbnize’ to four (4), you 25376write the following: 25377 25378 (setq gnus-florgbnize 4) 25379 25380 This function (really “special form”) ‘setq’ is the one that can set 25381a variable to some value. This is really all you need to know. Now you 25382can go and fill your ‘~/.gnus.el’ file with lots of these to change how 25383Gnus works. 25384 25385 If you have put that thing in your ‘~/.gnus.el’ file, it will be read 25386and ‘eval’ed (which is Lisp-ese for “run”) the next time you start Gnus. 25387If you want to change the variable right away, simply say ‘C-x C-e’ 25388after the closing parenthesis. That will ‘eval’ the previous “form”, 25389which is a simple ‘setq’ statement here. 25390 25391 Go ahead—just try it, if you’re located at your Emacs. After you 25392‘C-x C-e’, you will see ‘4’ appear in the echo area, which is the return 25393value of the form you ‘eval’ed. 25394 25395 Some pitfalls: 25396 25397 If the manual says “set ‘gnus-read-active-file’ to ‘some’”, that 25398means: 25399 25400 (setq gnus-read-active-file 'some) 25401 25402 On the other hand, if the manual says “set ‘gnus-nntp-server-file’ to 25403‘/etc/nntpserver’”, that means: 25404 25405 (setq gnus-nntp-server-file "/etc/nntpserver") 25406 25407 So be careful not to mix up strings (the latter) with symbols (the 25408former). The manual is unambiguous, but it can be confusing. 25409 25410 25411File: gnus.info, Node: Frequently Asked Questions, Prev: Emacs for Heathens, Up: Appendices 25412 2541311.8 Frequently Asked Questions 25414=============================== 25415 25416* Menu: 25417 25418* FAQ - Changes:: 25419* FAQ - Introduction:: About Gnus and this FAQ. 25420* FAQ 1 - Installation FAQ:: Installation of Gnus. 25421* FAQ 2 - Startup / Group buffer:: Start up questions and the 25422 first buffer Gnus shows you. 25423* FAQ 3 - Getting Messages:: Making Gnus read your mail 25424 and news. 25425* FAQ 4 - Reading messages:: How to efficiently read 25426 messages. 25427* FAQ 5 - Composing messages:: Composing mails or Usenet 25428 postings. 25429* FAQ 6 - Old messages:: Importing, archiving, 25430 searching and deleting messages. 25431* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while 25432 offline. 25433* FAQ 8 - Getting help:: When this FAQ isn’t enough. 25434* FAQ 9 - Tuning Gnus:: How to make Gnus faster. 25435* FAQ - Glossary:: Terms used in the FAQ 25436 explained. 25437 25438Abstract 25439-------- 25440 25441This is the new Gnus Frequently Asked Questions list. 25442 25443 Please submit features and suggestions to the ding list 25444<ding@gnus.org>. 25445 25446 25447File: gnus.info, Node: FAQ - Changes, Next: FAQ - Introduction, Up: Frequently Asked Questions 25448 2544911.8.1 Changes 25450-------------- 25451 25452 • 2008-06-15: Adjust for message-fill-column. Add x-face-file. 25453 Clarify difference between ding and gnu.emacs.gnus. Remove 25454 reference to discontinued service. 25455 25456 • 2006-04-15: Added tip on how to delete sent buffer on exit. 25457 25458 25459File: gnus.info, Node: FAQ - Introduction, Next: FAQ 1 - Installation FAQ, Prev: FAQ - Changes, Up: Frequently Asked Questions 25460 2546111.8.2 Introduction 25462------------------- 25463 25464This is the Gnus Frequently Asked Questions list. 25465 25466 Gnus is a Usenet Newsreader and Electronic Mail User Agent 25467implemented as a part of Emacs. It’s been around in some form for 25468almost a decade now, and has been distributed as a standard part of 25469Emacs for much of that time. Gnus 5 is the latest (and greatest) 25470incarnation. The original version was called GNUS, and was written by 25471Masanobu UMEDA. When autumn crept up in ’94, Lars Magne Ingebrigtsen 25472grew bored and decided to rewrite Gnus. 25473 25474 Its biggest strength is the fact that it is extremely customizable. 25475It is somewhat intimidating at first glance, but most of the complexity 25476can be ignored until you’re ready to take advantage of it. If you 25477receive a reasonable volume of e-mail (you’re on various mailing lists), 25478or you would like to read high-volume mailing lists but cannot keep up 25479with them, or read high volume newsgroups or are just bored, then Gnus 25480is what you want. 25481 25482 This FAQ was maintained by Justin Sheehy until March 2002. He would 25483like to thank Steve Baur and Per Abrahamsen for doing a wonderful job 25484with this FAQ before him. We would like to do the same: thanks, Justin! 25485 25486 This version is much nicer than the unofficial hypertext versions 25487that are archived at Utrecht, Oxford, Smart Pages, Ohio State, and other 25488FAQ archives. See the resources question below if you want information 25489on obtaining it in another format. 25490 25491 The information contained here was compiled with the assistance of 25492the Gnus development mailing list, and any errors or misprints are the 25493Gnus team’s fault, sorry. 25494 25495 25496File: gnus.info, Node: FAQ 1 - Installation FAQ, Next: FAQ 2 - Startup / Group buffer, Prev: FAQ - Introduction, Up: Frequently Asked Questions 25497 2549811.8.3 Installation FAQ 25499----------------------- 25500 25501* Menu: 25502 25503* FAQ 1-1:: What is the latest version of Gnus? 25504* FAQ 1-2:: What’s new in 5.10? 25505* FAQ 1-3:: Where and how to get Gnus? 25506* FAQ 1-4:: What to do with the tarball now? 25507* FAQ 1-5:: I sometimes read references to No Gnus and Oort Gnus, 25508 what are those? 25509* FAQ 1-6:: Which version of Emacs do I need? 25510 25511 25512File: gnus.info, Node: FAQ 1-1, Next: FAQ 1-2, Up: FAQ 1 - Installation FAQ 25513 25514Question 1.1 25515............ 25516 25517What is the latest version of Gnus? 25518 25519Answer 25520...... 25521 25522Jingle please: Gnus 5.10 is released, get it while it’s hot! As well as 25523the step in version number is rather small, Gnus 5.10 has tons of new 25524features which you shouldn’t miss. The current release (5.13) should be 25525at least as stable as the latest release of the 5.8 series. 25526 25527 25528File: gnus.info, Node: FAQ 1-2, Next: FAQ 1-3, Prev: FAQ 1-1, Up: FAQ 1 - Installation FAQ 25529 25530Question 1.2 25531............ 25532 25533What’s new in 5.10? 25534 25535Answer 25536...... 25537 25538First of all, you should have a look into the file GNUS-NEWS in the 25539toplevel directory of the Gnus tarball, there the most important changes 25540are listed. Here’s a short list of the changes I find especially 25541important/interesting: 25542 25543 • Major rewrite of the Gnus agent, Gnus agent is now active by 25544 default. 25545 25546 • Many new article washing functions for dealing with ugly formatted 25547 articles. 25548 25549 • Anti Spam features. 25550 25551 • Message-utils now included in Gnus. 25552 25553 • New format specifiers for summary lines, e.g., %B for a complex 25554 trn-style thread tree. 25555 25556 25557File: gnus.info, Node: FAQ 1-3, Next: FAQ 1-4, Prev: FAQ 1-2, Up: FAQ 1 - Installation FAQ 25558 25559Question 1.3 25560............ 25561 25562Where and how to get Gnus? 25563 25564Answer 25565...... 25566 25567Gnus is released independent from releases of Emacs. Therefore, the 25568version bundled with Emacs might not be up to date (e.g., Gnus 5.9 25569bundled with Emacs 21 is outdated). You can get the latest released 25570version of Gnus from <https://www.gnus.org/dist/gnus.tar.gz> or from 25571<https://ftp.gnus.org/pub/gnus/gnus.tar.gz>. 25572 25573 25574File: gnus.info, Node: FAQ 1-4, Next: FAQ 1-5, Prev: FAQ 1-3, Up: FAQ 1 - Installation FAQ 25575 25576Question 1.4 25577............ 25578 25579What to do with the tarball now? 25580 25581Answer 25582...... 25583 25584Untar it via ‘tar xvzf gnus.tar.gz’ and do the common ‘./configure; 25585make; make install’ circle. (under MS-Windows either get the Cygwin 25586environment from <https://www.cygwin.com> which allows you to do what’s 25587described above or unpack the tarball with some packer (e.g., Winace) 25588and use the batch-file make.bat included in the tarball to install 25589Gnus.) If you don’t want to (or aren’t allowed to) install Gnus 25590system-wide, you can install it in your home directory and add the 25591following lines to your ~/.emacs: 25592 25593 (add-to-list 'load-path "/path/to/gnus/lisp") 25594 (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/") 25595 25596 Make sure that you don’t have any Gnus related stuff before this 25597line, on MS Windows use something like "C:/path/to/lisp" (yes, "/"). 25598 25599 25600File: gnus.info, Node: FAQ 1-5, Next: FAQ 1-6, Prev: FAQ 1-4, Up: FAQ 1 - Installation FAQ 25601 25602Question 1.5 25603............ 25604 25605I sometimes read references to No Gnus and Oort Gnus, what are those? 25606 25607Answer 25608...... 25609 25610Oort Gnus was the name of the development version of Gnus, which became 25611Gnus 5.10 in autumn 2003. No Gnus is the name of the current 25612development version which will once become Gnus 5.12 or Gnus 6. (If 25613you’re wondering why not 5.11, the odd version numbers are normally used 25614for the Gnus versions bundled with Emacs) 25615 25616 25617File: gnus.info, Node: FAQ 1-6, Prev: FAQ 1-5, Up: FAQ 1 - Installation FAQ 25618 25619Question 1.6 25620............ 25621 25622Which version of Emacs do I need? 25623 25624Answer 25625...... 25626 25627Gnus 5.13 requires an Emacs version that is greater than or equal to 25628Emacs 23.1, although there are some features that only work on Emacs 24. 25629 25630 25631File: gnus.info, Node: FAQ 2 - Startup / Group buffer, Next: FAQ 3 - Getting Messages, Prev: FAQ 1 - Installation FAQ, Up: Frequently Asked Questions 25632 2563311.8.4 Startup / Group buffer 25634----------------------------- 25635 25636* Menu: 25637 25638* FAQ 2-1:: Every time I start Gnus I get a message "Gnus auto-save 25639 file exists. Do you want to read it?", what does this mean and 25640 how to prevent it? 25641* FAQ 2-2:: Gnus doesn’t remember which groups I’m subscribed to, 25642 what’s this? 25643* FAQ 2-3:: How to change the format of the lines in Group buffer? 25644* FAQ 2-4:: My group buffer becomes a bit crowded, is there a way to 25645 sort my groups into categories so I can easier browse through 25646 them? 25647* FAQ 2-5:: How to manually sort the groups in Group buffer? How to 25648 sort the groups in a topic? 25649 25650 25651File: gnus.info, Node: FAQ 2-1, Next: FAQ 2-2, Up: FAQ 2 - Startup / Group buffer 25652 25653Question 2.1 25654............ 25655 25656Every time I start Gnus I get a message "Gnus auto-save file exists. Do 25657you want to read it?", what does this mean and how to prevent it? 25658 25659Answer 25660...... 25661 25662This message means that the last time you used Gnus, it wasn’t properly 25663exited and therefore couldn’t write its information to disk (e.g., which 25664messages you read), you are now asked if you want to restore that 25665information from the auto-save file. 25666 25667 To prevent this message make sure you exit Gnus via ‘q’ in group 25668buffer instead of just killing Emacs. 25669 25670 25671File: gnus.info, Node: FAQ 2-2, Next: FAQ 2-3, Prev: FAQ 2-1, Up: FAQ 2 - Startup / Group buffer 25672 25673Question 2.2 25674............ 25675 25676Gnus doesn’t remember which groups I’m subscribed to, what’s this? 25677 25678Answer 25679...... 25680 25681You get the message described in the q/a pair above while starting Gnus, 25682right? It’s another symptom for the same problem, so read the answer 25683above. 25684 25685 25686File: gnus.info, Node: FAQ 2-3, Next: FAQ 2-4, Prev: FAQ 2-2, Up: FAQ 2 - Startup / Group buffer 25687 25688Question 2.3 25689............ 25690 25691How to change the format of the lines in Group buffer? 25692 25693Answer 25694...... 25695 25696You’ve got to tweak the value of the variable gnus-group-line-format. 25697See the manual node "Group Line Specification" for information on how to 25698do this. An example for this (guess from whose .gnus :-)): 25699 25700 (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") 25701 25702 25703File: gnus.info, Node: FAQ 2-4, Next: FAQ 2-5, Prev: FAQ 2-3, Up: FAQ 2 - Startup / Group buffer 25704 25705Question 2.4 25706............ 25707 25708My group buffer becomes a bit crowded, is there a way to sort my groups 25709into categories so I can easier browse through them? 25710 25711Answer 25712...... 25713 25714Gnus offers the topic mode, it allows you to sort your groups in, well, 25715topics, e.g., all groups dealing with Linux under the topic linux, all 25716dealing with music under the topic music and all dealing with scottish 25717music under the topic scottish which is a subtopic of music. 25718 25719 To enter topic mode, just hit t while in Group buffer. Now you can 25720use ‘T n’ to create a topic at point and ‘T m’ to move a group to a 25721specific topic. For more commands see the manual or the menu. You 25722might want to include the %P specifier at the beginning of your 25723gnus-group-line-format variable to have the groups nicely indented. 25724 25725 25726File: gnus.info, Node: FAQ 2-5, Prev: FAQ 2-4, Up: FAQ 2 - Startup / Group buffer 25727 25728Question 2.5 25729............ 25730 25731How to manually sort the groups in Group buffer? How to sort the groups 25732in a topic? 25733 25734Answer 25735...... 25736 25737Move point over the group you want to move and hit ‘C-k’, now move point 25738to the place where you want the group to be and hit ‘C-y’. 25739 25740 25741File: gnus.info, Node: FAQ 3 - Getting Messages, Next: FAQ 4 - Reading messages, Prev: FAQ 2 - Startup / Group buffer, Up: Frequently Asked Questions 25742 2574311.8.5 Getting Messages 25744----------------------- 25745 25746* Menu: 25747 25748* FAQ 3-1:: I just installed Gnus, started it via ‘M-x gnus’ 25749 but it only says "nntp (news) open error", what to do? 25750* FAQ 3-2:: I’m working under Windows and have no idea what 25751 ~/.gnus.el means. 25752* FAQ 3-3:: My news server requires authentication, how to store 25753 user name and password on disk? 25754* FAQ 3-4:: Gnus seems to start up OK, but I can’t find out how to 25755 subscribe to a group. 25756* FAQ 3-5:: Gnus doesn’t show all groups / Gnus says I’m not allowed 25757 to post on this server as well as I am, what’s that? 25758* FAQ 3-6:: I want Gnus to fetch news from several servers, is this 25759 possible? 25760* FAQ 3-7:: And how about local spool files? 25761* FAQ 3-8:: OK, reading news works now, but I want to be able to 25762 read my mail with Gnus, too. How to do it? 25763* FAQ 3-9:: And what about IMAP? 25764* FAQ 3-10:: At the office we use one of those MS Exchange servers, 25765 can I use Gnus to read my mail from it? 25766* FAQ 3-11:: Can I tell Gnus not to delete the mails on the server it 25767 retrieves via POP3? 25768 25769 25770File: gnus.info, Node: FAQ 3-1, Next: FAQ 3-2, Up: FAQ 3 - Getting Messages 25771 25772Question 3.1 25773............ 25774 25775I just installed Gnus, started it via ‘M-x gnus’ but it only says "nntp 25776(news) open error", what to do? 25777 25778Answer 25779...... 25780 25781You’ve got to tell Gnus where to fetch the news from. Read the 25782documentation for information on how to do this. As a first start, put 25783those lines in ‘~/.gnus.el’: 25784 25785 (setq gnus-select-method '(nntp "news.yourprovider.net")) 25786 (setq user-mail-address "you@yourprovider.net") 25787 (setq user-full-name "Your Name") 25788 25789 25790File: gnus.info, Node: FAQ 3-2, Next: FAQ 3-3, Prev: FAQ 3-1, Up: FAQ 3 - Getting Messages 25791 25792Question 3.2 25793............ 25794 25795I’m working under Windows and have no idea what ‘~/.gnus.el’ means. 25796 25797Answer 25798...... 25799 25800The ~/ means the home directory where Gnus and Emacs look for the 25801configuration files. However, you don’t really need to know what this 25802means, it suffices that Emacs knows what it means :-) You can type ‘C-x 25803C-f ~/.gnus.el <RET>’ (yes, with the forward slash, even on Windows), 25804and Emacs will open the right file for you. (It will most likely be 25805new, and thus empty.) However, I’d discourage you from doing so, since 25806the directory Emacs chooses will most certainly not be what you want, so 25807let’s do it the correct way. The first thing you’ve got to do is to 25808create a suitable directory (no blanks in names please), e.g., 25809c:\myhome. Then you must set the environment variable HOME to this 25810directory. To do this under Windows 9x or Me include the line 25811 25812 SET HOME=C:\myhome 25813 25814 in your autoexec.bat and reboot. Under NT, 2000 and XP, hit 25815Winkey+Pause/Break to enter system options (if it doesn’t work, go to 25816Control Panel -> System -> Advanced). There you’ll find the possibility 25817to set environment variables. Create a new one with name HOME and value 25818C:\myhome. Rebooting is not necessary. 25819 25820 Now to create ‘~/.gnus.el’, say ‘C-x C-f ~/.gnus.el <RET> C-x C-s’. 25821in Emacs. 25822 25823 25824File: gnus.info, Node: FAQ 3-3, Next: FAQ 3-4, Prev: FAQ 3-2, Up: FAQ 3 - Getting Messages 25825 25826Question 3.3 25827............ 25828 25829My news server requires authentication, how to store user name and 25830password on disk? 25831 25832Answer 25833...... 25834 25835Create a file ~/.authinfo which includes for each server a line like 25836this 25837 25838 machine news.yourprovider.net login YourUserName password YourPassword 25839. Make sure that the file isn’t readable to others if you work on an OS 25840which is capable of doing so. (Under Unix say 25841 chmod 600 ~/.authinfo 25842 25843 in a shell.) 25844 25845 25846File: gnus.info, Node: FAQ 3-4, Next: FAQ 3-5, Prev: FAQ 3-3, Up: FAQ 3 - Getting Messages 25847 25848Question 3.4 25849............ 25850 25851Gnus seems to start up OK, but I can’t find out how to subscribe to a 25852group. 25853 25854Answer 25855...... 25856 25857If you know the name of the group say ‘U name.of.group <RET>’ in group 25858buffer (use the tab-completion Luke). Otherwise hit ^ in group buffer, 25859this brings you to the server buffer. Now place point (the cursor) over 25860the server which carries the group you want, hit ‘<RET>’, move point to 25861the group you want to subscribe to and say ‘u’ to subscribe to it. 25862 25863 25864File: gnus.info, Node: FAQ 3-5, Next: FAQ 3-6, Prev: FAQ 3-4, Up: FAQ 3 - Getting Messages 25865 25866Question 3.5 25867............ 25868 25869Gnus doesn’t show all groups / Gnus says I’m not allowed to post on this 25870server as well as I am, what’s that? 25871 25872Answer 25873...... 25874 25875Some providers allow restricted anonymous access and full access only 25876after authorization. To make Gnus send authinfo to those servers append 25877 25878 force yes 25879 25880 to the line for those servers in ~/.authinfo. 25881 25882 25883File: gnus.info, Node: FAQ 3-6, Next: FAQ 3-7, Prev: FAQ 3-5, Up: FAQ 3 - Getting Messages 25884 25885Question 3.6 25886............ 25887 25888I want Gnus to fetch news from several servers, is this possible? 25889 25890Answer 25891...... 25892 25893Of course. You can specify more sources for articles in the variable 25894gnus-secondary-select-methods. Add something like this in ‘~/.gnus.el’: 25895 25896 (add-to-list 'gnus-secondary-select-methods 25897 '(nntp "news.yourSecondProvider.net")) 25898 (add-to-list 'gnus-secondary-select-methods 25899 '(nntp "news.yourThirdProvider.net")) 25900 25901 25902File: gnus.info, Node: FAQ 3-7, Next: FAQ 3-8, Prev: FAQ 3-6, Up: FAQ 3 - Getting Messages 25903 25904Question 3.7 25905............ 25906 25907And how about local spool files? 25908 25909Answer 25910...... 25911 25912No problem, this is just one more select method called nnspool, so you 25913want this: 25914 25915 (add-to-list 'gnus-secondary-select-methods '(nnspool "")) 25916 25917 Or this if you don’t want an NNTP Server as primary news source: 25918 25919 (setq gnus-select-method '(nnspool "")) 25920 25921 Gnus will look for the spool file in /usr/spool/news, if you want 25922something different, change the line above to something like this: 25923 25924 (add-to-list 'gnus-secondary-select-methods 25925 '(nnspool "" 25926 (nnspool-directory "/usr/local/myspoolddir"))) 25927 25928 This sets the spool directory for this server only. You might have 25929to specify more stuff like the program used to post articles, see the 25930Gnus manual on how to do this. 25931 25932 25933File: gnus.info, Node: FAQ 3-8, Next: FAQ 3-9, Prev: FAQ 3-7, Up: FAQ 3 - Getting Messages 25934 25935Question 3.8 25936............ 25937 25938OK, reading news works now, but I want to be able to read my mail with 25939Gnus, too. How to do it? 25940 25941Answer 25942...... 25943 25944That’s a bit harder since there are many possible sources for mail, many 25945possible ways for storing mail and many different ways for sending mail. 25946The most common cases are these: 1: You want to read your mail from a 25947pop3 server and send them directly to a SMTP Server 2: Some program like 25948fetchmail retrieves your mail and stores it on disk from where Gnus 25949shall read it. Outgoing mail is sent by Sendmail, Postfix or some other 25950MTA. Sometimes, you even need a combination of the above cases. 25951 25952 However, the first thing to do is to tell Gnus in which way it should 25953store the mail, in Gnus terminology which back end to use. Gnus 25954supports many different back ends, the most commonly used one is nnml. 25955It stores every mail in one file and is therefore quite fast. However 25956you might prefer a one file per group approach if your file system has 25957problems with many small files, the nnfolder back end is then probably 25958the choice for you. To use nnml add the following to ‘~/.gnus.el’: 25959 25960 (add-to-list 'gnus-secondary-select-methods '(nnml "")) 25961 25962 As you might have guessed, if you want nnfolder, it’s 25963 25964 (add-to-list 'gnus-secondary-select-methods '(nnfolder "")) 25965 25966 Now we need to tell Gnus, where to get its mail from. If it’s a POP3 25967server, then you need something like this: 25968 25969 (with-eval-after-load "mail-source" 25970 (add-to-list 'mail-sources '(pop :server "pop.YourProvider.net" 25971 :user "yourUserName" 25972 :password "yourPassword"))) 25973 25974 Make sure ‘~/.gnus.el’ isn’t readable to others if you store your 25975password there. If you want to read your mail from a traditional spool 25976file on your local machine, it’s 25977 25978 (with-eval-after-load "mail-source" 25979 (add-to-list 'mail-sources '(file :path "/path/to/spool/file")) 25980 25981 If it’s a Maildir, with one file per message as used by postfix, 25982Qmail and (optionally) fetchmail it’s 25983 25984 (with-eval-after-load "mail-source" 25985 (add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" 25986 :subdirs ("cur" "new"))) 25987 25988 And finally if you want to read your mail from several files in one 25989directory, for example because procmail already split your mail, it’s 25990 25991 (with-eval-after-load "mail-source" 25992 (add-to-list 'mail-sources 25993 '(directory :path "/path/to/procmail-dir/" 25994 :suffix ".prcml"))) 25995 25996 Where :suffix ".prcml" tells Gnus only to use files with the suffix 25997.prcml. 25998 25999 OK, now you only need to tell Gnus how to send mail. If you want to 26000send mail via sendmail (or whichever MTA is playing the role of sendmail 26001on your system), you don’t need to do anything. However, if you want to 26002send your mail to an SMTP Server you need the following in your 26003‘~/.gnus.el’ 26004 26005 (setq send-mail-function 'smtpmail-send-it) 26006 (setq message-send-mail-function 'smtpmail-send-it) 26007 (setq smtpmail-default-smtp-server "smtp.yourProvider.net") 26008 26009 26010File: gnus.info, Node: FAQ 3-9, Next: FAQ 3-10, Prev: FAQ 3-8, Up: FAQ 3 - Getting Messages 26011 26012Question 3.9 26013............ 26014 26015And what about IMAP? 26016 26017Answer 26018...... 26019 26020There are two ways of using IMAP with Gnus. The first one is to use 26021IMAP like POP3, that means Gnus fetches the mail from the IMAP server 26022and stores it on disk. If you want to do this (you don’t really want to 26023do this) add the following to ‘~/.gnus.el’ 26024 26025 (add-to-list 'mail-sources '(imap :server "mail.mycorp.com" 26026 :user "username" 26027 :pass "password" 26028 :stream network 26029 :authentication login 26030 :mailbox "INBOX" 26031 :fetchflag "\\Seen")) 26032 26033 You might have to tweak the values for stream and/or authentication, 26034see the Gnus manual node "Mail Source Specifiers" for possible values. 26035 26036 If you want to use IMAP the way it’s intended, you’ve got to follow a 26037different approach. You’ve got to add the nnimap back end to your 26038select method and give the information about the server there. 26039 26040 (add-to-list 'gnus-secondary-select-methods 26041 '(nnimap "Give the baby a name" 26042 (nnimap-address "imap.yourProvider.net") 26043 (nnimap-port 143) 26044 (nnimap-list-pattern "archive.*"))) 26045 26046 Again, you might have to specify how to authenticate to the server if 26047Gnus can’t guess the correct way, see the Manual Node "IMAP" for 26048detailed information. 26049 26050 26051File: gnus.info, Node: FAQ 3-10, Next: FAQ 3-11, Prev: FAQ 3-9, Up: FAQ 3 - Getting Messages 26052 26053Question 3.10 26054............. 26055 26056At the office we use one of those MS Exchange servers, can I use Gnus to 26057read my mail from it? 26058 26059Answer 26060...... 26061 26062Offer your administrator a pair of new running shoes for activating IMAP 26063on the server and follow the instructions above. 26064 26065 26066File: gnus.info, Node: FAQ 3-11, Prev: FAQ 3-10, Up: FAQ 3 - Getting Messages 26067 26068Question 3.11 26069............. 26070 26071Can I tell Gnus not to delete the mails on the server it retrieves via 26072POP3? 26073 26074Answer 26075...... 26076 26077Yes, if the POP3 server supports the UIDL control (maybe almost servers 26078do it nowadays). To do that, add a ‘:leave VALUE’ pair to each POP3 26079mail source. *Note Mail Source Specifiers::, for details on VALUE. 26080 26081 26082File: gnus.info, Node: FAQ 4 - Reading messages, Next: FAQ 5 - Composing messages, Prev: FAQ 3 - Getting Messages, Up: Frequently Asked Questions 26083 2608411.8.6 Reading messages 26085----------------------- 26086 26087* Menu: 26088 26089* FAQ 4-1:: When I enter a group, all read messages are gone. How to 26090 view them again? 26091* FAQ 4-2:: How to tell Gnus to show an important message every time 26092 I enter a group, even when it’s read? 26093* FAQ 4-3:: How to view the headers of a message? 26094* FAQ 4-4:: How to view the raw unformatted message? 26095* FAQ 4-5:: How can I change the headers Gnus displays by default at 26096 the top of the article buffer? 26097* FAQ 4-6:: I’d like Gnus NOT to render HTML-mails but show me the 26098 text part if it’s available. How to do it? 26099* FAQ 4-7:: Can I use some other browser than shr to render my 26100 HTML-mails? 26101* FAQ 4-8:: Is there anything I can do to make poorly formatted 26102 mails more readable? 26103* FAQ 4-9:: Is there a way to automatically ignore posts by specific 26104 authors or with specific words in the subject? And can I 26105 highlight more interesting ones in some way? 26106* FAQ 4-10:: How can I disable threading in some (e.g., mail-) groups, 26107 or set other variables specific for some groups? 26108* FAQ 4-11:: Can I highlight messages written by me and follow-ups to 26109 those? 26110* FAQ 4-12:: The number of total messages in a group which Gnus 26111 displays in group buffer is by far to high, especially in mail 26112 groups. Is this a bug? 26113* FAQ 4-13:: I don’t like the layout of summary and article buffer, 26114 how to change it? Perhaps even a three pane display? 26115* FAQ 4-14:: I don’t like the way the Summary buffer looks, how to 26116 tweak it? 26117* FAQ 4-15:: How to split incoming mails in several groups? 26118* FAQ 4-16:: How can I ensure more contrast when viewing HTML mail? 26119 26120 26121File: gnus.info, Node: FAQ 4-1, Next: FAQ 4-2, Up: FAQ 4 - Reading messages 26122 26123Question 4.1 26124............ 26125 26126When I enter a group, all read messages are gone. How to view them 26127again? 26128 26129Answer 26130...... 26131 26132If you enter the group by saying ‘<RET>’ in group buffer with point over 26133the group, only unread and ticked messages are loaded. Say ‘C-u <RET>’ 26134instead to load all available messages. If you want only the 300 newest 26135say ‘C-u 300 <RET>’ 26136 26137 Loading only unread messages can be annoying if you have threaded 26138view enabled, say 26139 26140 (setq gnus-fetch-old-headers 'some) 26141 26142 in ‘~/.gnus.el’ to load enough old articles to prevent teared 26143threads, replace ’some with ‘t’ to load all articles (Warning: Both 26144settings enlarge the amount of data which is fetched when you enter a 26145group and slow down the process of entering a group). 26146 26147 If you already use Gnus 5.10, you can say ‘/o N’ In summary buffer to 26148load the last N messages, this feature is not available in 5.8.8 26149 26150 If you don’t want all old messages, but the parent of the message 26151you’re just reading, you can say ‘^’, if you want to retrieve the whole 26152thread the message you’re just reading belongs to, ‘A T’ is your friend. 26153 26154 26155File: gnus.info, Node: FAQ 4-2, Next: FAQ 4-3, Prev: FAQ 4-1, Up: FAQ 4 - Reading messages 26156 26157Question 4.2 26158............ 26159 26160How to tell Gnus to show an important message every time I enter a 26161group, even when it’s read? 26162 26163Answer 26164...... 26165 26166You can tick important messages. To do this hit ‘u’ while point is in 26167summary buffer over the message. When you want to remove the mark, hit 26168either ‘d’ (this deletes the tick mark and set’s unread mark) or ‘M c’ 26169(which deletes all marks for the message). 26170 26171 26172File: gnus.info, Node: FAQ 4-3, Next: FAQ 4-4, Prev: FAQ 4-2, Up: FAQ 4 - Reading messages 26173 26174Question 4.3 26175............ 26176 26177How to view the headers of a message? 26178 26179Answer 26180...... 26181 26182Say ‘t’ to show all headers, one more ‘t’ hides them again. 26183 26184 26185File: gnus.info, Node: FAQ 4-4, Next: FAQ 4-5, Prev: FAQ 4-3, Up: FAQ 4 - Reading messages 26186 26187Question 4.4 26188............ 26189 26190How to view the raw unformatted message? 26191 26192Answer 26193...... 26194 26195Say ‘C-u g’ to show the raw message ‘g’ returns to normal view. 26196 26197 26198File: gnus.info, Node: FAQ 4-5, Next: FAQ 4-6, Prev: FAQ 4-4, Up: FAQ 4 - Reading messages 26199 26200Question 4.5 26201............ 26202 26203How can I change the headers Gnus displays by default at the top of the 26204article buffer? 26205 26206Answer 26207...... 26208 26209The variable gnus-visible-headers controls which headers are shown, its 26210value is a regular expression, header lines which match it are shown. 26211So if you want author, subject, date, and if the header exists, 26212Followup-To and MUA / NUA say this in ‘~/.gnus.el’: 26213 26214 (setq gnus-visible-headers 26215 '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To" 26216 "^User-Agent" "^X-Newsreader" "^X-Mailer")) 26217 26218 26219File: gnus.info, Node: FAQ 4-6, Next: FAQ 4-7, Prev: FAQ 4-5, Up: FAQ 4 - Reading messages 26220 26221Question 4.6 26222............ 26223 26224I’d like Gnus NOT to render HTML-mails but show me the text part if it’s 26225available. How to do it? 26226 26227Answer 26228...... 26229 26230Say 26231 26232 (with-eval-after-load "mm-decode" 26233 (add-to-list 'mm-discouraged-alternatives "text/html") 26234 (add-to-list 'mm-discouraged-alternatives "text/richtext")) 26235 26236 in ‘~/.gnus.el’. If you don’t want HTML rendered, even if there’s no 26237text alternative add 26238 26239 (setq mm-automatic-display (remove "text/html" mm-automatic-display)) 26240 26241 too. 26242 26243 26244File: gnus.info, Node: FAQ 4-7, Next: FAQ 4-8, Prev: FAQ 4-6, Up: FAQ 4 - Reading messages 26245 26246Question 4.7 26247............ 26248 26249Can I use some other browser than w3m to render my HTML-mails? 26250 26251Answer 26252...... 26253 26254Only if you use Gnus 5.10 or younger. In this case you’ve got the 26255choice between shr, w3m, links, lynx and html2text, which one is used 26256can be specified in the variable mm-text-html-renderer, so if you want 26257links to render your mail say 26258 26259 (setq mm-text-html-renderer 'links) 26260 26261 26262File: gnus.info, Node: FAQ 4-8, Next: FAQ 4-9, Prev: FAQ 4-7, Up: FAQ 4 - Reading messages 26263 26264Question 4.8 26265............ 26266 26267Is there anything I can do to make poorly formatted mails more readable? 26268 26269Answer 26270...... 26271 26272Gnus offers you several functions to “wash” incoming mail, you can find 26273them if you browse through the menu, item Article->Washing. The most 26274interesting ones are probably “Wrap long lines” (‘W w’), “Decode ROT13” 26275(‘W r’) and “Outlook Deuglify” which repairs the dumb quoting used by 26276many users of Microsoft products (‘W Y f’ gives you full deuglify. See 26277‘W Y C-h’ or have a look at the menus for other deuglifications). 26278Outlook deuglify is only available since Gnus 5.10. 26279 26280 26281File: gnus.info, Node: FAQ 4-9, Next: FAQ 4-10, Prev: FAQ 4-8, Up: FAQ 4 - Reading messages 26282 26283Question 4.9 26284............ 26285 26286Is there a way to automatically ignore posts by specific authors or with 26287specific words in the subject? And can I highlight more interesting 26288ones in some way? 26289 26290Answer 26291...... 26292 26293You want Scoring. Scoring means, that you define rules which assign 26294each message an integer value. Depending on the value the message is 26295highlighted in summary buffer (if it’s high, say +2000) or automatically 26296marked read (if the value is low, say −800) or some other action 26297happens. 26298 26299 There are basically three ways of setting up rules which assign the 26300scoring-value to messages. The first and easiest way is to set up rules 26301based on the article you are just reading. Say you’re reading a message 26302by a guy who always writes nonsense and you want to ignore his messages 26303in the future. Hit ‘L’, to set up a rule which lowers the score. Now 26304Gnus asks you which the criteria for lowering the Score shall be. Hit 26305‘?’ twice to see all possibilities, we want ‘a’ which means the author 26306(the from header). Now Gnus wants to know which kind of matching we 26307want. Hit either ‘e’ for an exact match or ‘s’ for substring-match and 26308delete afterwards everything but the name to score down all authors with 26309the given name no matter which email address is used. Now you need to 26310tell Gnus when to apply the rule and how long it should last, hit ‘p’ to 26311apply the rule now and let it last forever. If you want to raise the 26312score instead of lowering it say ‘I’ instead of ‘L’. 26313 26314 You can also set up rules by hand. To do this say ‘V f’ in summary 26315buffer. Then you are asked for the name of the score file, it’s 26316name.of.group.SCORE for rules valid in only one group or all.Score for 26317rules valid in all groups. See the Gnus manual for the exact syntax, 26318basically it’s one big list whose elements are lists again. the first 26319element of those lists is the header to score on, then one more list 26320with what to match, which score to assign, when to expire the rule and 26321how to do the matching. If you find me very interesting, you could add 26322the following to your all.Score: 26323 26324 (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) 26325 ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) 26326 26327 This would add 999 to the score of messages written by me and 500 to 26328the score of messages which are a (possibly indirect) answer to a 26329message written by me. Of course nobody with a sane mind would do this 26330:-) 26331 26332 The third alternative is adaptive scoring. This means Gnus watches 26333you and tries to find out what you find interesting and what annoying 26334and sets up rules which reflect this. Adaptive scoring can be a huge 26335help when reading high traffic groups. If you want to activate adaptive 26336scoring say 26337 26338 (setq gnus-use-adaptive-scoring t) 26339 26340 in ‘~/.gnus.el’. 26341 26342 26343File: gnus.info, Node: FAQ 4-10, Next: FAQ 4-11, Prev: FAQ 4-9, Up: FAQ 4 - Reading messages 26344 26345Question 4.10 26346............. 26347 26348How can I disable threading in some (e.g., mail-) groups, or set other 26349variables specific for some groups? 26350 26351Answer 26352...... 26353 26354While in group buffer move point over the group and hit ‘G c’, this 26355opens a buffer where you can set options for the group. At the bottom 26356of the buffer you’ll find an item that allows you to set variables 26357locally for the group. To disable threading enter gnus-show-threads as 26358name of variable and ‘nil’ as value. Hit button done at the top of the 26359buffer when you’re ready. 26360 26361 26362File: gnus.info, Node: FAQ 4-11, Next: FAQ 4-12, Prev: FAQ 4-10, Up: FAQ 4 - Reading messages 26363 26364Question 4.11 26365............. 26366 26367Can I highlight messages written by me and follow-ups to those? 26368 26369Answer 26370...... 26371 26372Stop those "Can I ..." questions, the answer is always yes in Gnus 26373Country :-). It’s a three step process: First we make faces 26374(specifications of how summary-line shall look like) for those postings, 26375then we’ll give them some special score and finally we’ll tell Gnus to 26376use the new faces. 26377 26378 26379File: gnus.info, Node: FAQ 4-12, Next: FAQ 4-13, Prev: FAQ 4-11, Up: FAQ 4 - Reading messages 26380 26381Question 4.12 26382............. 26383 26384The number of total messages in a group which Gnus displays in group 26385buffer is by far to high, especially in mail groups. Is this a bug? 26386 26387Answer 26388...... 26389 26390No, that’s a matter of design of Gnus, fixing this would mean 26391reimplementation of major parts of Gnus’ back ends. Gnus thinks 26392“highest-article-number − lowest-article-number = 26393total-number-of-articles”. This works OK for Usenet groups, but if you 26394delete and move many messages in mail groups, this fails. To cure the 26395symptom, enter the group via ‘C-u <RET>’ (this makes Gnus get all 26396messages), then hit ‘M P b’ to mark all messages and then say ‘B m 26397name.of.group’ to move all messages to the group they have been in 26398before, they get new message numbers in this process and the count is 26399right again (until you delete and move your mail to other groups again). 26400 26401 26402File: gnus.info, Node: FAQ 4-13, Next: FAQ 4-14, Prev: FAQ 4-12, Up: FAQ 4 - Reading messages 26403 26404Question 4.13 26405............. 26406 26407I don’t like the layout of summary and article buffer, how to change it? 26408Perhaps even a three pane display? 26409 26410Answer 26411...... 26412 26413You can control the windows configuration by calling the function 26414gnus-add-configuration. The syntax is a bit complicated but explained 26415very well in the manual node "Window Layout". Some popular examples: 26416 26417 Instead 25% summary 75% article buffer 35% summary and 65% article 26418(the 1.0 for article means "take the remaining space"): 26419 26420 (gnus-add-configuration 26421 '(article (vertical 1.0 (summary .35 point) (article 1.0)))) 26422 26423 A three pane layout, Group buffer on the left, summary buffer 26424top-right, article buffer bottom-right: 26425 26426 (gnus-add-configuration 26427 '(article 26428 (horizontal 1.0 26429 (vertical 25 26430 (group 1.0)) 26431 (vertical 1.0 26432 (summary 0.25 point) 26433 (article 1.0))))) 26434 (gnus-add-configuration 26435 '(summary 26436 (horizontal 1.0 26437 (vertical 25 26438 (group 1.0)) 26439 (vertical 1.0 26440 (summary 1.0 point))))) 26441 26442 26443File: gnus.info, Node: FAQ 4-14, Next: FAQ 4-15, Prev: FAQ 4-13, Up: FAQ 4 - Reading messages 26444 26445Question 4.14 26446............. 26447 26448I don’t like the way the Summary buffer looks, how to tweak it? 26449 26450Answer 26451...... 26452 26453You’ve got to play around with the variable gnus-summary-line-format. 26454Its value is a string of symbols which stand for things like author, 26455date, subject etc. A list of the available specifiers can be found in 26456the manual node “Summary Buffer Lines” and the often forgotten node 26457“Formatting Variables” and its sub-nodes. There you’ll find useful 26458things like positioning the cursor and tabulators which allow you a 26459summary in table form, but sadly hard tabulators are broken in 5.8.8. 26460 26461 Since 5.10, Gnus offers you some very nice new specifiers, e.g., %B 26462which draws a thread-tree and %&user-date which gives you a date where 26463the details are dependent of the articles age. Here’s an example which 26464uses both: 26465 26466 (setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n") 26467 26468 resulting in: 26469 26470 :O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 26471 :O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 26472 :R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 26473 :O \-> ... | 21 |Kai Grossjohann | 0:01 26474 :R > Re: Cry for help: deuglify.el - moving stuf| 28 |Lars Magne Ingebrigt |Sat 23:34 26475 :O \-> ... | 115 |Raymond Scholz | 1:24 26476 :O \-> ... | 19 |Lars Magne Ingebrigt |15:33 26477 :O Slow mailing list | 13 |Lars Magne Ingebrigt |Sat 23:49 26478 :O Re: '@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50 26479 :R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 26480 :O \-> ... | 18 |Kai Grossjohann | 0:35 26481 :O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 26482 26483 26484File: gnus.info, Node: FAQ 4-15, Next: FAQ 4-16, Prev: FAQ 4-14, Up: FAQ 4 - Reading messages 26485 26486Question 4.15 26487............. 26488 26489How to split incoming mails in several groups? 26490 26491Answer 26492...... 26493 26494Gnus offers two possibilities for splitting mail, the easy 26495nnmail-split-methods and the more powerful Fancy Mail Splitting. I’ll 26496only talk about the first one, refer to the manual, node "Fancy Mail 26497Splitting" for the latter. 26498 26499 The value of nnmail-split-methods is a list, each element is a list 26500which stands for a splitting rule. Each rule has the form "group where 26501matching articles should go to", "regular expression which has to be 26502matched", the first rule which matches wins. The last rule must always 26503be a general rule (regular expression .*) which denotes where articles 26504should go which don’t match any other rule. If the folder doesn’t exist 26505yet, it will be created as soon as an article lands there. By default 26506the mail will be send to all groups whose rules match. If you don’t 26507want that (you probably don’t want), say 26508 26509 (setq nnmail-crosspost nil) 26510 26511 in ‘~/.gnus.el’. 26512 26513 An example might be better than thousand words, so here’s my 26514nnmail-split-methods. Note that I send duplicates in a special group 26515and that the default group is spam, since I filter all mails out which 26516are from some list I’m subscribed to or which are addressed directly to 26517me before. Those rules kill about 80% of the Spam which reaches me 26518(Email addresses are changed to prevent spammers from using them): 26519 26520 (setq nnmail-split-methods 26521 '(("duplicates" "^Gnus-Warning:.*duplicate") 26522 ("Emacs-devel" "^\\(To:\\|Cc:\\).*localpart@gnu.invalid.*") 26523 ("Gnus-Tut" "^\\(To:\\|Cc:\\).*localpart@socha.invalid.*") 26524 ("tcsh" "^\\(To:\\|Cc:\\).*localpart@mx.gw.invalid.*") 26525 ("BAfH" "^\\(To:\\|Cc:\\).*localpart@.*uni-muenchen.invalid.*") 26526 ("Hamster-src" "^\\(Cc:\\|To:\\).*hamster-sourcen@yahoogroups.\\(de\\|com\\).*") 26527 ("Tagesschau" "^From: tagesschau <localpart@www.tagesschau.invalid>$") 26528 ("Replies" "^\\(Cc:\\|To:\\).*localpart@Frank-Schmitt.invalid.*") 26529 ("EK" "^From:.*\\(localpart@privateprovider.invalid\\|localpart@workplace.invalid\\).*") 26530 ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") 26531 ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*") 26532 ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*") 26533 ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") 26534 ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") 26535 ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*") 26536 ("Spam" "^Delivered-To: GMX delivery to spamtrap@gmx.invalid$") 26537 ("Spam" "^Received: from link2buy.com") 26538 ("Spam" "^Cc: .*azzrael@t-online.invalid") 26539 ("Spam" "^X-Mailer-Version: 1.50 BETA") 26540 ("Uni" "^\\(Cc:\\|To:\\).*localpart@uni-koblenz.invalid.*") 26541 ("Inbox" "^\\(Cc:\\|To:\\).*\\(my\ name\\|address@one.invalid\\|address@two.invalid\\)") 26542 ("Spam" ""))) 26543 26544 26545File: gnus.info, Node: FAQ 4-16, Prev: FAQ 4-15, Up: FAQ 4 - Reading messages 26546 26547Question 4.16 26548............. 26549 26550How can I ensure more contrast when viewing HTML mail? 26551 26552Answer 26553...... 26554 26555Gnus’ built-in simple HTML renderer (you use it if the value of 26556‘mm-text-html-renderer’ is ‘shr’) uses the colors which are declared in 26557the HTML mail. However, it adjusts them in order to prevent situations 26558like dark gray text on black background. In case the results still have 26559a too low contrast for you, increase the values of the variables 26560‘shr-color-visible-distance-min’ and ‘shr-color-visible-luminance-min’. 26561 26562 26563File: gnus.info, Node: FAQ 5 - Composing messages, Next: FAQ 6 - Old messages, Prev: FAQ 4 - Reading messages, Up: Frequently Asked Questions 26564 2656511.8.7 Composing messages 26566------------------------- 26567 26568* Menu: 26569 26570* FAQ 5-1:: What are the basic commands I need to know for sending 26571 mail and postings? 26572* FAQ 5-2:: How to enable automatic word-wrap when composing 26573 messages? 26574* FAQ 5-3:: How to set stuff like From, Organization, Reply-To, 26575 signature...? 26576* FAQ 5-4:: Can I set things like From, Signature etc. group based on 26577 the group I post too? 26578* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly 26579 spell-checking? 26580* FAQ 5-6:: Can I set the dictionary based on the group I’m posting 26581 to? 26582* FAQ 5-7:: Is there some kind of address-book, so I needn’t 26583 remember all those email addresses? 26584* FAQ 5-8:: Sometimes I see little images at the top of article 26585 buffer. What’s that and how can I send one with my postings, 26586 too? 26587* FAQ 5-9:: Sometimes I accidentally hit r instead of f in 26588 newsgroups. Can Gnus warn me, when I’m replying by mail in 26589 newsgroups? 26590* FAQ 5-10:: How to tell Gnus not to generate a sender header? 26591* FAQ 5-11:: I want Gnus to locally store copies of my send mail and 26592 news, how to do it? 26593* FAQ 5-12:: I want Gnus to kill the buffer after successful sending 26594 instead of keeping it alive as "Sent mail to...", how to do it? 26595* FAQ 5-13:: People tell me my Message-IDs are not correct, why 26596 aren’t they and how to fix it? 26597 26598 26599File: gnus.info, Node: FAQ 5-1, Next: FAQ 5-2, Up: FAQ 5 - Composing messages 26600 26601Question 5.1 26602............ 26603 26604What are the basic commands I need to know for sending mail and 26605postings? 26606 26607Answer 26608...... 26609 26610To start composing a new mail hit ‘m’ either in Group or Summary buffer, 26611for a posting, it’s either ‘a’ in Group buffer and filling the 26612Newsgroups header manually or ‘a’ in the Summary buffer of the group 26613where the posting shall be send to. Replying by mail is ‘r’ if you 26614don’t want to cite the author, or import the cited text manually and ‘R’ 26615to cite the text of the original message. For a follow up to a 26616newsgroup, it’s ‘f’ and ‘F’ (analogously to ‘r’ and ‘R’). 26617 26618 Enter new headers above the line saying "–text follows this line–", 26619enter the text below the line. When ready hit ‘C-c C-c’, to send the 26620message, if you want to finish it later hit ‘C-c C-d’ to save it in the 26621drafts group, where you can start editing it again by saying ‘D e’. 26622 26623 26624File: gnus.info, Node: FAQ 5-2, Next: FAQ 5-3, Prev: FAQ 5-1, Up: FAQ 5 - Composing messages 26625 26626Question 5.2 26627............ 26628 26629How to enable automatic word-wrap when composing messages? 26630 26631Answer 26632...... 26633 26634Starting from No Gnus, automatic word-wrap is already enabled by 26635default, see the variable message-fill-column. 26636 26637 For other versions of Gnus, say 26638 26639 (unless (boundp 'message-fill-column) 26640 (add-hook 'message-mode-hook 26641 (lambda () 26642 (setq fill-column 72) 26643 (turn-on-auto-fill)))) 26644 26645 in ‘~/.gnus.el’. 26646 26647 You can reformat a paragraph by hitting ‘M-q’ (as usual). 26648 26649 26650File: gnus.info, Node: FAQ 5-3, Next: FAQ 5-4, Prev: FAQ 5-2, Up: FAQ 5 - Composing messages 26651 26652Question 5.3 26653............ 26654 26655How to set stuff like From, Organization, Reply-To, signature...? 26656 26657Answer 26658...... 26659 26660There are other ways, but you should use posting styles for this. (See 26661below why). This example should make the syntax clear: 26662 26663 (setq gnus-posting-styles 26664 '((".*" 26665 (name "Frank Schmitt") 26666 (address "me@there.invalid") 26667 (organization "Hamme net, kren mer och nimmi") 26668 (signature-file "~/.signature") 26669 ("X-SampleHeader" "foobar") 26670 (eval (setq some-variable "Foo bar"))))) 26671 26672 The ".*" means that this settings are the default ones (see below), 26673valid values for the first element of the following lists are signature, 26674signature-file, organization, address, name or body. The attribute name 26675can also be a string. In that case, this will be used as a header name, 26676and the value will be inserted in the headers of the article; if the 26677value is ‘nil’, the header name will be removed. You can also say (eval 26678(foo bar)), then the function foo will be evaluated with argument bar 26679and the result will be thrown away. 26680 26681 26682File: gnus.info, Node: FAQ 5-4, Next: FAQ 5-5, Prev: FAQ 5-3, Up: FAQ 5 - Composing messages 26683 26684Question 5.4 26685............ 26686 26687Can I set things like From, Signature etc group based on the group I 26688post too? 26689 26690Answer 26691...... 26692 26693That’s the strength of posting styles. Before, we used ".*" to set the 26694default for all groups. You can use a regexp like "^gmane" and the 26695following settings are only applied to postings you send to the gmane 26696hierarchy, use ".*binaries" instead and they will be applied to postings 26697send to groups containing the string binaries in their name etc. 26698 26699 You can instead of specifying a regexp specify a function which is 26700evaluated, only if it returns true, the corresponding settings take 26701effect. Two interesting candidates for this are message-news-p which 26702returns t if the current Group is a newsgroup and the corresponding 26703message-mail-p. 26704 26705 Note that all forms that match are applied, that means in the example 26706below, when I post to gmane.mail.spam.spamassassin.general, the settings 26707under ".*" are applied and the settings under message-news-p and those 26708under "^gmane" and those under 26709"^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because of this put 26710general settings at the top and specific ones at the bottom. 26711 26712 (setq gnus-posting-styles 26713 '((".*" ;;default 26714 (name "Frank Schmitt") 26715 (organization "Hamme net, kren mer och nimmi") 26716 (signature-file "~/.signature")) 26717 ((message-news-p) ;;Usenet news? 26718 (address "mySpamTrap@Frank-Schmitt.invalid") 26719 (reply-to "hereRealRepliesOnlyPlease@Frank-Schmitt.invalid")) 26720 ((message-mail-p) ;;mail? 26721 (address "usedForMails@Frank-Schmitt.invalid")) 26722 ("^gmane" ;;this is mail, too in fact 26723 (address "usedForMails@Frank-Schmitt.invalid") 26724 (reply-to nil)) 26725 ("^gmane\\.mail\\.spam\\.spamassassin\\.general$" 26726 (eval (set (make-local-variable 'message-sendmail-envelope-from) 26727 "Azzrael@rz-online.de"))))) 26728 26729 26730File: gnus.info, Node: FAQ 5-5, Next: FAQ 5-6, Prev: FAQ 5-4, Up: FAQ 5 - Composing messages 26731 26732Question 5.5 26733............ 26734 26735Is there a spell-checker? Perhaps even on-the-fly spell-checking? 26736 26737Answer 26738...... 26739 26740You can use ispell.el to spell-check stuff in Emacs. So the first thing 26741to do is to make sure that you’ve got either ispell 26742(https://www.cs.hmc.edu/~geoff/ispell.html) or aspell 26743(http://aspell.net) installed and in your Path. Then you need ispell.el 26744and for on-the-fly spell-checking flyspell.el 26745(https://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html). 26746Ispell.el is shipped with Emacs, flyspell.el is shipped with Emacs, so 26747there should be no need to install them manually. 26748 26749 Ispell.el assumes you use ispell, if you choose aspell say 26750 26751 (setq ispell-program-name "aspell") 26752 26753 in your Emacs configuration file. 26754 26755 If you want your outgoing messages to be spell-checked, say 26756 26757 (add-hook 'message-send-hook 'ispell-message) 26758 26759 In your ‘~/.gnus.el’, if you prefer on-the-fly spell-checking say 26760 26761 (add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) 26762 26763 26764File: gnus.info, Node: FAQ 5-6, Next: FAQ 5-7, Prev: FAQ 5-5, Up: FAQ 5 - Composing messages 26765 26766Question 5.6 26767............ 26768 26769Can I set the dictionary based on the group I’m posting to? 26770 26771Answer 26772...... 26773 26774Yes, say something like 26775 26776 (add-hook 'gnus-select-group-hook 26777 (lambda () 26778 (cond 26779 ((string-match 26780 "^de\\." (gnus-group-real-name gnus-newsgroup-name)) 26781 (ispell-change-dictionary "deutsch8")) 26782 (t 26783 (ispell-change-dictionary "english"))))) 26784 26785 in ‘~/.gnus.el’. Change "^de\\." and "deutsch8" to something that 26786suits your needs. 26787 26788 26789File: gnus.info, Node: FAQ 5-7, Next: FAQ 5-8, Prev: FAQ 5-6, Up: FAQ 5 - Composing messages 26790 26791Question 5.7 26792............ 26793 26794Is there some kind of address-book, so I needn’t remember all those 26795email addresses? 26796 26797Answer 26798...... 26799 26800There’s a very basic solution for this, mail aliases. You can store 26801your mail addresses in a ~/.mailrc file using a simple alias syntax: 26802 26803 alias al "Al <al@english-heritage.invalid>" 26804 26805 Then typing your alias (followed by a space or punctuation character) 26806on a To: or Cc: line in the message buffer will cause Gnus to insert the 26807full address for you. See the node "Mail Aliases" in Message (not Gnus) 26808manual for details. 26809 26810 However, what you really want is the Insidious Big Brother Database 26811bbdb. Get it from bbdb’s homepage (http://bbdb.sourceforge.net/). Now 26812place the following in ‘~/.gnus.el’, to activate bbdb for Gnus: 26813 26814 (require 'bbdb) 26815 (bbdb-initialize 'gnus 'message) 26816 26817 Now you probably want some general bbdb configuration, place them in 26818~/.emacs: 26819 26820 (require 'bbdb) 26821 ;;If you don't live in Northern America, you should disable the 26822 ;;syntax check for telephone numbers by saying 26823 (setq bbdb-north-american-phone-numbers-p nil) 26824 ;;Tell bbdb about your email address: 26825 (setq bbdb-user-mail-names 26826 (regexp-opt '("Your.Email@here.invalid" 26827 "Your.other@mail.there.invalid"))) 26828 ;;cycling while completing email addresses 26829 (setq bbdb-complete-name-allow-cycling t) 26830 ;;No popup-buffers 26831 (setq bbdb-use-pop-up nil) 26832 26833 Now you should be ready to go. Say ‘M-x bbdb <RET> <RET>’ to open a 26834bbdb buffer showing all entries. Say ‘c’ to create a new entry, ‘b’ to 26835search your BBDB and ‘C-o’ to add a new field to an entry. If you want 26836to add a sender to the BBDB you can also just hit ‘:’ on the posting in 26837the summary buffer and you are done. When you now compose a new mail, 26838hit ‘TAB’ to cycle through know recipients. 26839 26840 26841File: gnus.info, Node: FAQ 5-8, Next: FAQ 5-9, Prev: FAQ 5-7, Up: FAQ 5 - Composing messages 26842 26843Question 5.8 26844............ 26845 26846Sometimes I see little images at the top of article buffer. What’s that 26847and how can I send one with my postings, too? 26848 26849Answer 26850...... 26851 26852Those images are called X-Faces. They are 48*48 pixel b/w pictures, 26853encoded in a header line. If you want to include one in your posts, 26854you’ve got to convert some image to a X-Face. So fire up some image 26855manipulation program (say Gimp), open the image you want to include, cut 26856out the relevant part, reduce color depth to 1 bit, resize to 48*48 and 26857save as bitmap. Now you should get the compface package from this site 26858(ftp://ftp.cs.indiana.edu/pub/faces/). and create the actual X-face by 26859saying 26860 26861 cat file.xbm | xbm2ikon | compface > file.face 26862 cat file.face | sed 's/["\\]/\\&/g' > file.face.quoted 26863 26864 If you can’t use compface, there’s an online X-face converter at 26865<https://www.dairiki.org/xface/>. If you use MS Windows, you could also 26866use the WinFace program, which used to be available from 26867‘http://www.xs4all.nl/~walterln/winface/’. Now you only have to tell 26868Gnus to include the X-face in your postings by saying 26869 26870 (setq message-default-headers 26871 (with-temp-buffer 26872 (insert "X-Face: ") 26873 (insert-file-contents "~/.xface") 26874 (buffer-string))) 26875 26876 in ‘~/.gnus.el’. If you use Gnus 5.10, you can simply add an entry 26877 26878 (x-face-file "~/.xface") 26879 26880 to gnus-posting-styles. 26881 26882 26883File: gnus.info, Node: FAQ 5-9, Next: FAQ 5-10, Prev: FAQ 5-8, Up: FAQ 5 - Composing messages 26884 26885Question 5.9 26886............ 26887 26888Sometimes I accidentally hit r instead of f in newsgroups. Can Gnus 26889warn me, when I’m replying by mail in newsgroups? 26890 26891Answer 26892...... 26893 26894Put this in ‘~/.gnus.el’: 26895 26896 (setq gnus-confirm-mail-reply-to-news t) 26897 26898 if you already use Gnus 5.10, if you still use 5.8.8 or 5.9 try this 26899instead: 26900 26901 (with-eval-after-load "gnus-msg" 26902 (unless (boundp 'gnus-confirm-mail-reply-to-news) 26903 (defadvice gnus-summary-reply (around reply-in-news activate) 26904 "Request confirmation when replying to news." 26905 (interactive) 26906 (when (or (not (gnus-news-group-p gnus-newsgroup-name)) 26907 (y-or-n-p "Really reply by mail to article author? ")) 26908 ad-do-it)))) 26909 26910 26911File: gnus.info, Node: FAQ 5-10, Next: FAQ 5-11, Prev: FAQ 5-9, Up: FAQ 5 - Composing messages 26912 26913Question 5.10 26914............. 26915 26916How to tell Gnus not to generate a sender header? 26917 26918Answer 26919...... 26920 26921Since 5.10 Gnus doesn’t generate a sender header by default. For older 26922Gnus’ try this in ‘~/.gnus.el’: 26923 26924 (with-eval-after-load "message" 26925 (add-to-list 'message-syntax-checks '(sender . disabled))) 26926 26927 26928File: gnus.info, Node: FAQ 5-11, Next: FAQ 5-12, Prev: FAQ 5-10, Up: FAQ 5 - Composing messages 26929 26930Question 5.11 26931............. 26932 26933I want Gnus to locally store copies of my send mail and news, how to do 26934it? 26935 26936Answer 26937...... 26938 26939You must set the variable gnus-message-archive-group to do this. You 26940can set it to a string giving the name of the group where the copies 26941shall go or like in the example below use a function which is evaluated 26942and which returns the group to use. 26943 26944 (setq gnus-message-archive-group 26945 '((if (message-news-p) 26946 "nnml:Send-News" 26947 "nnml:Send-Mail"))) 26948 26949 26950File: gnus.info, Node: FAQ 5-12, Next: FAQ 5-13, Prev: FAQ 5-11, Up: FAQ 5 - Composing messages 26951 26952Question 5.12 26953............. 26954 26955I want Gnus to kill the buffer after successful sending instead of 26956keeping it alive as "Sent mail to...", how to do it? 26957 26958Answer 26959...... 26960 26961Add this to your ~/.gnus: 26962 26963 (setq message-kill-buffer-on-exit t) 26964 26965 26966File: gnus.info, Node: FAQ 5-13, Prev: FAQ 5-12, Up: FAQ 5 - Composing messages 26967 26968Question 5.13 26969............. 26970 26971People tell me my Message-IDs are not correct, why aren’t they and how 26972to fix it? 26973 26974Answer 26975...... 26976 26977The message-ID is a unique identifier for messages you send. To make it 26978unique, Gnus need to know which machine name to put after the "@". If 26979the name of the machine where Gnus is running isn’t suitable (it 26980probably isn’t at most private machines) you can tell Gnus what to use 26981by saying: 26982 26983 (setq message-user-fqdn "yourmachine.yourdomain.tld") 26984 26985 in ‘~/.gnus.el’. If you use Gnus 5.9 or earlier, you can use this 26986instead (works for newer versions as well): 26987 26988 (with-eval-after-load "message" 26989 (let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this! 26990 (if (boundp 'message-user-fqdn) 26991 (setq message-user-fqdn fqdn) 26992 (gnus-message 1 "Redefining `message-make-fqdn'.") 26993 (defun message-make-fqdn () 26994 "Return user's fully qualified domain name." 26995 fqdn)))) 26996 26997 If you have no idea what to insert for "yourmachine.yourdomain.tld", 26998you’ve got several choices. You can either ask your provider if he 26999allows you to use something like yourUserName.userfqdn.provider.net, or 27000you can use somethingUnique.yourdomain.tld if you own the domain 27001yourdomain.tld, or you can register at a service which gives private 27002users a FQDN for free. 27003 27004 Finally you can tell Gnus not to generate a Message-ID for News at 27005all (and letting the server do the job) by saying 27006 27007 (setq message-required-news-headers 27008 (remove' Message-ID message-required-news-headers)) 27009 27010 you can also tell Gnus not to generate Message-IDs for mail by saying 27011 27012 (setq message-required-mail-headers 27013 (remove' Message-ID message-required-mail-headers)) 27014 27015 , however some mail servers don’t generate proper Message-IDs, too, 27016so test if your Mail Server behaves correctly by sending yourself a Mail 27017and looking at the Message-ID. 27018 27019 27020File: gnus.info, Node: FAQ 6 - Old messages, Next: FAQ 7 - Gnus in a dial-up environment, Prev: FAQ 5 - Composing messages, Up: Frequently Asked Questions 27021 2702211.8.8 Old messages 27023------------------- 27024 27025* Menu: 27026 27027* FAQ 6-1:: How to import my old mail into Gnus? 27028* FAQ 6-2:: How to archive interesting messages? 27029* FAQ 6-3:: How to search for a specific message? 27030* FAQ 6-4:: How to get rid of old unwanted mail? 27031* FAQ 6-5:: I want that all read messages are expired (at least in 27032 some groups). How to do it? 27033* FAQ 6-6:: I don’t want expiration to delete my mails but to move 27034 them to another group. 27035 27036 27037File: gnus.info, Node: FAQ 6-1, Next: FAQ 6-2, Up: FAQ 6 - Old messages 27038 27039Question 6.1 27040............ 27041 27042How to import my old mail into Gnus? 27043 27044Answer 27045...... 27046 27047The easiest way is to tell your old mail program to export the messages 27048in mbox format. Most Unix mailers are able to do this, if you come from 27049the MS Windows world, you may find tools at 27050<https://sourceforge.net/projects/mbx2mbox/>. 27051 27052 Now you’ve got to import this mbox file into Gnus. To do this, 27053create a nndoc group based on the mbox file by saying ‘G f 27054/path/file.mbox <RET>’ in Group buffer. You now have read-only access 27055to your mail. If you want to import the messages to your normal Gnus 27056mail groups hierarchy, enter the nndoc group you’ve just created by 27057saying ‘C-u <RET>’ (thus making sure all messages are retrieved), mark 27058all messages by saying ‘M P b’ and either copy them to the desired group 27059by saying ‘B c name.of.group <RET>’ or send them through 27060nnmail-split-methods (respool them) by saying ‘B r’. 27061 27062 27063File: gnus.info, Node: FAQ 6-2, Next: FAQ 6-3, Prev: FAQ 6-1, Up: FAQ 6 - Old messages 27064 27065Question 6.2 27066............ 27067 27068How to archive interesting messages? 27069 27070Answer 27071...... 27072 27073If you stumble across an interesting message, say in gnu.emacs.gnus and 27074want to archive it there are several solutions. The first and easiest 27075is to save it to a file by saying ‘O f’. However, wouldn’t it be much 27076more convenient to have more direct access to the archived message from 27077Gnus? If you say yes, put this snippet by Frank Haun 27078<pille3003@fhaun.de> in ‘~/.gnus.el’: 27079 27080 (defun my-archive-article (&optional n) 27081 "Copies one or more article(s) to a corresponding `nnml:' group, e.g., 27082 `gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes 27083 to `nnml:1.List-gnus-ding'. 27084 27085 Use process marks or mark a region in the summary buffer to archive 27086 more then one article." 27087 (interactive "P") 27088 (let ((archive-name 27089 (format 27090 "nnml:1.%s" 27091 (replace-in-string gnus-newsgroup-name "^.*:" "")))) 27092 (gnus-summary-copy-article n archive-name))) 27093 27094 You can now say ‘M-x my-archive-article’ in summary buffer to archive 27095the article under the cursor in a nnml group. (Change nnml to your 27096preferred back end) 27097 27098 Of course you can also make sure the cache is enabled by saying 27099 27100 (setq gnus-use-cache t) 27101 27102 then you only have to set either the tick or the dormant mark for 27103articles you want to keep, setting the read mark will remove them from 27104cache. 27105 27106 27107File: gnus.info, Node: FAQ 6-3, Next: FAQ 6-4, Prev: FAQ 6-2, Up: FAQ 6 - Old messages 27108 27109Question 6.3 27110............ 27111 27112How to search for a specific message? 27113 27114Answer 27115...... 27116 27117There are several ways for this, too. For a posting from a Usenet group 27118the easiest solution is probably to ask groups.google.com 27119(https://groups.google.com), if you found the posting there, tell Google 27120to display the raw message, look for the message-id, and say ‘M-^ 27121the@message.id <RET>’ in a summary buffer. Since Gnus 5.10 there’s also 27122a Gnus interface for groups.google.com which you can call with ‘G W’) in 27123group buffer. 27124 27125 Another idea which works for both mail and news groups is to enter 27126the group where the message you are searching is and use the standard 27127Emacs search ‘C-s’, it’s smart enough to look at articles in collapsed 27128threads, too. If you want to search bodies, too try ‘M-s’ instead. 27129Further on there are the gnus-summary-limit-to-foo functions, which can 27130help you, too. 27131 27132 Of course you can also use grep to search through your local mail, 27133but this is both slow for big archives and inconvenient since you are 27134not displaying the found mail in Gnus. Here nnir comes into action. 27135Nnir is a front end to search engines like swish-e or swish++ and 27136others. You index your mail with one of those search engines and with 27137the help of nnir you can search through the indexed mail and generate a 27138temporary group with all messages which met your search criteria. If 27139this sounds cool to you, get nnir.el from 27140<ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/>. Instructions 27141on how to use it are at the top of the file. 27142 27143 27144File: gnus.info, Node: FAQ 6-4, Next: FAQ 6-5, Prev: FAQ 6-3, Up: FAQ 6 - Old messages 27145 27146Question 6.4 27147............ 27148 27149How to get rid of old unwanted mail? 27150 27151Answer 27152...... 27153 27154You can of course just mark the mail you don’t need anymore by saying 27155‘#’ with point over the mail and then say ‘B <DEL>’ to get rid of them 27156forever. You could also instead of actually deleting them, send them to 27157a junk-group by saying ‘B m nnml:trash-bin’ which you clear from time to 27158time, but both are not the intended way in Gnus. 27159 27160 In Gnus, we let mail expire like news expires on a news server. That 27161means you tell Gnus the message is expirable (you tell Gnus "I don’t 27162need this mail anymore") by saying ‘E’ with point over the mail in 27163summary buffer. Now when you leave the group, Gnus looks at all 27164messages which you marked as expirable before and if they are old enough 27165(default is older than a week) they are deleted. 27166 27167 27168File: gnus.info, Node: FAQ 6-5, Next: FAQ 6-6, Prev: FAQ 6-4, Up: FAQ 6 - Old messages 27169 27170Question 6.5 27171............ 27172 27173I want that all read messages are expired (at least in some groups). 27174How to do it? 27175 27176Answer 27177...... 27178 27179If you want all read messages to be expired (e.g., in mailing lists 27180where there’s an online archive), you’ve got two choices: auto-expire 27181and total-expire. Auto-expire means, that every article which has no 27182marks set and is selected for reading is marked as expirable, Gnus hits 27183‘E’ for you every time you read a message. Total-expire follows a 27184slightly different approach, here all article where the read mark is set 27185are expirable. 27186 27187 To activate auto-expire, include auto-expire in the Group parameters 27188for the group. (Hit ‘G c’ in summary buffer with point over the group 27189to change group parameters). For total-expire add total-expire to the 27190group-parameters. 27191 27192 Which method you choose is merely a matter of taste: Auto-expire is 27193faster, but it doesn’t play together with Adaptive Scoring, so if you 27194want to use this feature, you should use total-expire. 27195 27196 If you want a message to be excluded from expiration in a group where 27197total or auto expire is active, set either tick (hit ‘u’) or dormant 27198mark (hit ‘u’), when you use auto-expire, you can also set the read mark 27199(hit ‘d’). 27200 27201 27202File: gnus.info, Node: FAQ 6-6, Prev: FAQ 6-5, Up: FAQ 6 - Old messages 27203 27204Question 6.6 27205............ 27206 27207I don’t want expiration to delete my mails but to move them to another 27208group. 27209 27210Answer 27211...... 27212 27213Say something like this in ‘~/.gnus.el’: 27214 27215 (setq nnmail-expiry-target "nnml:expired") 27216 27217 (If you want to change the value of nnmail-expiry-target on a per 27218group basis see the question "How can I disable threading in some (e.g., 27219mail-) groups, or set other variables specific for some groups?") 27220 27221 27222File: gnus.info, Node: FAQ 7 - Gnus in a dial-up environment, Next: FAQ 8 - Getting help, Prev: FAQ 6 - Old messages, Up: Frequently Asked Questions 27223 2722411.8.9 Gnus in a dial-up environment 27225------------------------------------ 27226 27227* Menu: 27228 27229* FAQ 7-1:: I don’t have a permanent connection to the net, how can I 27230 minimize the time I’ve got to be connected? 27231* FAQ 7-2:: So what was this thing about the Agent? 27232* FAQ 7-3:: I want to store article bodies on disk, too. How to do 27233 it? 27234* FAQ 7-4:: How to tell Gnus not to try to send mails / postings 27235 while I’m offline? 27236 27237 27238File: gnus.info, Node: FAQ 7-1, Next: FAQ 7-2, Up: FAQ 7 - Gnus in a dial-up environment 27239 27240Question 7.1 27241............ 27242 27243I don’t have a permanent connection to the net, how can I minimize the 27244time I’ve got to be connected? 27245 27246Answer 27247...... 27248 27249You’ve got basically two options: Either you use the Gnus Agent (see 27250below) for this, or you can install programs which fetch your news and 27251mail to your local disk and Gnus reads the stuff from your local 27252machine. 27253 27254 If you want to follow the second approach, you need a program which 27255fetches news and offers them to Gnus, a program which does the same for 27256mail and a program which receives the mail you write from Gnus and sends 27257them when you’re online. 27258 27259 Let’s talk about Unix systems first: For the news part, the easiest 27260solution is a small nntp server like Leafnode (http://www.leafnode.org/) 27261or sn (http://patrik.iki.fi/sn/), of course you can also install a full 27262featured news server like inn (https://www.isc.org/othersoftware/). 27263Then you want to fetch your Mail, popular choices are fetchmail 27264(http://www.fetchmail.info/) and getmail 27265(http://pyropus.ca/software/getmail/). You should tell those to write 27266the mail to your disk and Gnus to read it from there. Last but not 27267least the mail sending part: This can be done with every MTA like 27268sendmail (https://www.proofpoint.com/us/open-source-email-solution) or 27269exim (https://www.exim.org/). 27270 27271 On windows boxes I’d vote for Hamster 27272(http://www.tglsoft.de/freeware_hamster.html), it’s a small freeware, 27273open-source program which fetches your mail and news from remote servers 27274and offers them to Gnus (or any other mail and/or news reader) via nntp 27275respectively POP3 or IMAP. It also includes a smtp server for receiving 27276mails from Gnus. 27277 27278 27279File: gnus.info, Node: FAQ 7-2, Next: FAQ 7-3, Prev: FAQ 7-1, Up: FAQ 7 - Gnus in a dial-up environment 27280 27281Question 7.2 27282............ 27283 27284So what was this thing about the Agent? 27285 27286Answer 27287...... 27288 27289The Gnus agent is part of Gnus, it allows you to fetch mail and news and 27290store them on disk for reading them later when you’re offline. It kind 27291of mimics offline newsreaders like Forte Agent. If you want to use the 27292Agent place the following in ‘~/.gnus.el’ if you are still using 5.8.8 27293or 5.9 (it’s the default since 5.10): 27294 27295 (setq gnus-agent t) 27296 27297 Now you’ve got to select the servers whose groups can be stored 27298locally. To do this, open the server buffer (that is press ‘^’ while in 27299the group buffer). Now select a server by moving point to the line 27300naming that server. Finally, agentize the server by typing ‘J a’. If 27301you make a mistake, or change your mind, you can undo this action by 27302typing ‘J r’. When you’re done, type ’q’ to return to the group buffer. 27303Now the next time you enter a group on an agentized server, the headers 27304will be stored on disk and read from there the next time you enter the 27305group. 27306 27307 27308File: gnus.info, Node: FAQ 7-3, Next: FAQ 7-4, Prev: FAQ 7-2, Up: FAQ 7 - Gnus in a dial-up environment 27309 27310Question 7.3 27311............ 27312 27313I want to store article bodies on disk, too. How to do it? 27314 27315Answer 27316...... 27317 27318You can tell the agent to automatically fetch the bodies of articles 27319which fulfill certain predicates, this is done in a special buffer which 27320can be reached by saying ‘J c’ in group buffer. Please refer to the 27321documentation for information which predicates are possible and how 27322exactly to do it. 27323 27324 Further on you can tell the agent manually which articles to store on 27325disk. There are two ways to do this: Number one: In the summary buffer, 27326process mark a set of articles that shall be stored in the agent by 27327saying ‘#’ with point over the article and then type ‘J s’. The other 27328possibility is to set, again in the summary buffer, downloadable (%) 27329marks for the articles you want by typing ‘@’ with point over the 27330article and then typing ‘J u’. What’s the difference? Well, process 27331marks are erased as soon as you exit the summary buffer while 27332downloadable marks are permanent. You can actually set downloadable 27333marks in several groups then use fetch session (’J s’ in the GROUP 27334buffer) to fetch all of those articles. The only downside is that fetch 27335session also fetches all of the headers for every selected group on an 27336agentized server. Depending on the volume of headers, the initial fetch 27337session could take hours. 27338 27339 27340File: gnus.info, Node: FAQ 7-4, Prev: FAQ 7-3, Up: FAQ 7 - Gnus in a dial-up environment 27341 27342Question 7.4 27343............ 27344 27345How to tell Gnus not to try to send mails / postings while I’m offline? 27346 27347Answer 27348...... 27349 27350All you’ve got to do is to tell Gnus when you are online (plugged) and 27351when you are offline (unplugged), the rest works automatically. You can 27352toggle plugged/unplugged state by saying ‘J j’ in group buffer. To 27353start Gnus unplugged say ‘M-x gnus-unplugged’ instead of ‘M-x gnus’. 27354Note that for this to work, the agent must be active. 27355 27356 27357File: gnus.info, Node: FAQ 8 - Getting help, Next: FAQ 9 - Tuning Gnus, Prev: FAQ 7 - Gnus in a dial-up environment, Up: Frequently Asked Questions 27358 2735911.8.10 Getting help 27360-------------------- 27361 27362* Menu: 27363 27364* FAQ 8-1:: How to find information and help inside Emacs? 27365* FAQ 8-2:: I can’t find anything in the Gnus manual about X (e.g., 27366 attachments, PGP, MIME...), is it not documented? 27367* FAQ 8-3:: Which websites should I know? 27368* FAQ 8-4:: Which mailing lists and newsgroups are there? 27369* FAQ 8-5:: Where to report bugs? 27370* FAQ 8-6:: I need real-time help, where to find it? 27371 27372 27373File: gnus.info, Node: FAQ 8-1, Next: FAQ 8-2, Up: FAQ 8 - Getting help 27374 27375Question 8.1 27376............ 27377 27378How to find information and help inside Emacs? 27379 27380Answer 27381...... 27382 27383The first stop should be the Gnus manual (Say ‘C-h i d m Gnus <RET>’ to 27384start the Gnus manual, then walk through the menus or do a full-text 27385search with ‘s’). Then there are the general Emacs help commands 27386starting with C-h, type ‘C-h ? ?’ to get a list of all available help 27387commands and their meaning. Finally ‘M-x apropos-command’ lets you 27388search through all available functions and ‘M-x apropos’ searches the 27389bound variables. 27390 27391 27392File: gnus.info, Node: FAQ 8-2, Next: FAQ 8-3, Prev: FAQ 8-1, Up: FAQ 8 - Getting help 27393 27394Question 8.2 27395............ 27396 27397I can’t find anything in the Gnus manual about X (e.g., attachments, 27398PGP, MIME...), is it not documented? 27399 27400Answer 27401...... 27402 27403There’s not only the Gnus manual but also the manuals for message, 27404emacs-mime, sieve, EasyPG Assistant, and pgg. Those packages are 27405distributed with Gnus and used by Gnus but aren’t really part of core 27406Gnus, so they are documented in different info files, you should have a 27407look in those manuals, too. 27408 27409 27410File: gnus.info, Node: FAQ 8-3, Next: FAQ 8-4, Prev: FAQ 8-2, Up: FAQ 8 - Getting help 27411 27412Question 8.3 27413............ 27414 27415Which websites should I know? 27416 27417Answer 27418...... 27419 27420The most important one is the official Gnus website 27421(https://www.gnus.org). 27422 27423 Tell me about other sites which are interesting. 27424 27425 27426File: gnus.info, Node: FAQ 8-4, Next: FAQ 8-5, Prev: FAQ 8-3, Up: FAQ 8 - Getting help 27427 27428Question 8.4 27429............ 27430 27431Which mailing lists and newsgroups are there? 27432 27433Answer 27434...... 27435 27436There’s the newsgroup gnu.emacs.gnus which deals with general Gnus 27437questions. If you have questions about development versions of Gnus, 27438you should better ask on the ding mailing list, see below. 27439 27440 If you want to stay in the big8, news.software.readers is also read 27441by some Gnus users (but chances for qualified help are much better in 27442the above groups). If you speak German, there’s de.comm.software.gnus. 27443 27444 The ding mailing list (ding@gnus.org) deals with development of Gnus. 27445 27446 27447File: gnus.info, Node: FAQ 8-5, Next: FAQ 8-6, Prev: FAQ 8-4, Up: FAQ 8 - Getting help 27448 27449Question 8.5 27450............ 27451 27452Where to report bugs? 27453 27454Answer 27455...... 27456 27457Say ‘M-x gnus-bug’, this will start a message to the gnus bug mailing 27458list <bugs@gnus.org> including information about your environment which 27459make it easier to help you. 27460 27461 27462File: gnus.info, Node: FAQ 8-6, Prev: FAQ 8-5, Up: FAQ 8 - Getting help 27463 27464Question 8.6 27465............ 27466 27467I need real-time help, where to find it? 27468 27469Answer 27470...... 27471 27472Point your IRC client to irc.freenode.net, channel #gnus. 27473 27474 27475File: gnus.info, Node: FAQ 9 - Tuning Gnus, Next: FAQ - Glossary, Prev: FAQ 8 - Getting help, Up: Frequently Asked Questions 27476 2747711.8.11 Tuning Gnus 27478------------------- 27479 27480* Menu: 27481 27482* FAQ 9-1:: Starting Gnus is really slow, how to speed it up? 27483* FAQ 9-2:: How to speed up the process of entering a group? 27484* FAQ 9-3:: Sending mail becomes slower and slower, what’s up? 27485 27486 27487File: gnus.info, Node: FAQ 9-1, Next: FAQ 9-2, Up: FAQ 9 - Tuning Gnus 27488 27489Question 9.1 27490............ 27491 27492Starting Gnus is really slow, how to speed it up? 27493 27494Answer 27495...... 27496 27497The reason for this could be the way Gnus reads its active file, see the 27498node "The Active File" in the Gnus manual for things you might try to 27499speed the process up. An other idea would be to byte compile your 27500‘~/.gnus.el’ (say ‘M-x byte-compile-file <RET> ~/.gnus.el <RET>’ to do 27501it). Finally, if you have require statements in your .gnus, you could 27502replace them with ‘with-eval-after-load’, which loads the stuff not at 27503startup time, but when it’s needed. Say you’ve got this in your 27504‘~/.gnus.el’: 27505 27506 (require 'message) 27507 (add-to-list 'message-syntax-checks '(sender . disabled)) 27508 27509 then as soon as you start Gnus, message.el is loaded. If you replace 27510it with 27511 27512 (with-eval-after-load "message" 27513 (add-to-list 'message-syntax-checks '(sender . disabled))) 27514 27515 it’s loaded when it’s needed. 27516 27517 27518File: gnus.info, Node: FAQ 9-2, Next: FAQ 9-3, Prev: FAQ 9-1, Up: FAQ 9 - Tuning Gnus 27519 27520Question 9.2 27521............ 27522 27523How to speed up the process of entering a group? 27524 27525Answer 27526...... 27527 27528A speed killer is setting the variable gnus-fetch-old-headers to 27529anything different from ‘nil’, so don’t do this if speed is an issue. 27530To speed up building of summary say 27531 27532 (gnus-compile) 27533 27534 at the bottom of your ‘~/.gnus.el’, this will make gnus byte-compile 27535things like gnus-summary-line-format. then you could increase the value 27536of gc-cons-threshold by saying something like 27537 27538 (setq gc-cons-threshold 3500000) 27539 27540 in ~/.emacs. If you don’t care about width of CJK characters or use 27541Gnus 5.10 or younger together with a recent GNU Emacs, you should say 27542 27543 (setq gnus-use-correct-string-widths nil) 27544 27545 in ‘~/.gnus.el’ (thanks to Jesper harder for the last two 27546suggestions). Finally if you are still using 5.8.8 or 5.9 and 27547experience speed problems with summary buffer generation, you definitely 27548should update to 5.10 since there quite some work on improving it has 27549been done. 27550 27551 27552File: gnus.info, Node: FAQ 9-3, Prev: FAQ 9-2, Up: FAQ 9 - Tuning Gnus 27553 27554Question 9.3 27555............ 27556 27557Sending mail becomes slower and slower, what’s up? 27558 27559Answer 27560...... 27561 27562The reason could be that you told Gnus to archive the messages you wrote 27563by setting gnus-message-archive-group. Try to use a nnml group instead 27564of an archive group, this should bring you back to normal speed. 27565 27566 27567File: gnus.info, Node: FAQ - Glossary, Prev: FAQ 9 - Tuning Gnus, Up: Frequently Asked Questions 27568 2756911.8.12 Glossary 27570---------------- 27571 27572“~/.gnus.el” 27573 When the term ‘~/.gnus.el’ is used it just means your Gnus 27574 configuration file. You might as well call it ‘~/.gnus’ or specify 27575 another name. 27576 27577“Back End” 27578 In Gnus terminology a back end is a virtual server, a layer between 27579 core Gnus and the real NNTP-, POP3-, IMAP- or whatever-server which 27580 offers Gnus a standardized interface to functions like "get 27581 message", "get Headers" etc. 27582 27583“Emacs” 27584 When the term Emacs is used in this FAQ, it means GNU Emacs. 27585 27586“Message” 27587 In this FAQ message means either a mail or a posting to a Usenet 27588 Newsgroup or to some other fancy back end, no matter of which kind 27589 it is. 27590 27591“MUA” 27592 MUA is an acronym for Mail User Agent, it’s the program you use to 27593 read and write e-mails. 27594 27595“NUA” 27596 NUA is an acronym for News User Agent, it’s the program you use to 27597 read and write Usenet news. 27598 27599 27600File: gnus.info, Node: GNU Free Documentation License, Next: Index, Prev: Appendices, Up: Top 27601 2760212 GNU Free Documentation License 27603********************************* 27604 27605 Version 1.3, 3 November 2008 27606 27607 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. 27608 <https://fsf.org/> 27609 27610 Everyone is permitted to copy and distribute verbatim copies 27611 of this license document, but changing it is not allowed. 27612 27613 0. PREAMBLE 27614 27615 The purpose of this License is to make a manual, textbook, or other 27616 functional and useful document “free” in the sense of freedom: to 27617 assure everyone the effective freedom to copy and redistribute it, 27618 with or without modifying it, either commercially or 27619 noncommercially. Secondarily, this License preserves for the 27620 author and publisher a way to get credit for their work, while not 27621 being considered responsible for modifications made by others. 27622 27623 This License is a kind of “copyleft”, which means that derivative 27624 works of the document must themselves be free in the same sense. 27625 It complements the GNU General Public License, which is a copyleft 27626 license designed for free software. 27627 27628 We have designed this License in order to use it for manuals for 27629 free software, because free software needs free documentation: a 27630 free program should come with manuals providing the same freedoms 27631 that the software does. But this License is not limited to 27632 software manuals; it can be used for any textual work, regardless 27633 of subject matter or whether it is published as a printed book. We 27634 recommend this License principally for works whose purpose is 27635 instruction or reference. 27636 27637 1. APPLICABILITY AND DEFINITIONS 27638 27639 This License applies to any manual or other work, in any medium, 27640 that contains a notice placed by the copyright holder saying it can 27641 be distributed under the terms of this License. Such a notice 27642 grants a world-wide, royalty-free license, unlimited in duration, 27643 to use that work under the conditions stated herein. The 27644 “Document”, below, refers to any such manual or work. Any member 27645 of the public is a licensee, and is addressed as “you”. You accept 27646 the license if you copy, modify or distribute the work in a way 27647 requiring permission under copyright law. 27648 27649 A “Modified Version” of the Document means any work containing the 27650 Document or a portion of it, either copied verbatim, or with 27651 modifications and/or translated into another language. 27652 27653 A “Secondary Section” is a named appendix or a front-matter section 27654 of the Document that deals exclusively with the relationship of the 27655 publishers or authors of the Document to the Document’s overall 27656 subject (or to related matters) and contains nothing that could 27657 fall directly within that overall subject. (Thus, if the Document 27658 is in part a textbook of mathematics, a Secondary Section may not 27659 explain any mathematics.) The relationship could be a matter of 27660 historical connection with the subject or with related matters, or 27661 of legal, commercial, philosophical, ethical or political position 27662 regarding them. 27663 27664 The “Invariant Sections” are certain Secondary Sections whose 27665 titles are designated, as being those of Invariant Sections, in the 27666 notice that says that the Document is released under this License. 27667 If a section does not fit the above definition of Secondary then it 27668 is not allowed to be designated as Invariant. The Document may 27669 contain zero Invariant Sections. If the Document does not identify 27670 any Invariant Sections then there are none. 27671 27672 The “Cover Texts” are certain short passages of text that are 27673 listed, as Front-Cover Texts or Back-Cover Texts, in the notice 27674 that says that the Document is released under this License. A 27675 Front-Cover Text may be at most 5 words, and a Back-Cover Text may 27676 be at most 25 words. 27677 27678 A “Transparent” copy of the Document means a machine-readable copy, 27679 represented in a format whose specification is available to the 27680 general public, that is suitable for revising the document 27681 straightforwardly with generic text editors or (for images composed 27682 of pixels) generic paint programs or (for drawings) some widely 27683 available drawing editor, and that is suitable for input to text 27684 formatters or for automatic translation to a variety of formats 27685 suitable for input to text formatters. A copy made in an otherwise 27686 Transparent file format whose markup, or absence of markup, has 27687 been arranged to thwart or discourage subsequent modification by 27688 readers is not Transparent. An image format is not Transparent if 27689 used for any substantial amount of text. A copy that is not 27690 “Transparent” is called “Opaque”. 27691 27692 Examples of suitable formats for Transparent copies include plain 27693 ASCII without markup, Texinfo input format, LaTeX input format, 27694 SGML or XML using a publicly available DTD, and standard-conforming 27695 simple HTML, PostScript or PDF designed for human modification. 27696 Examples of transparent image formats include PNG, XCF and JPG. 27697 Opaque formats include proprietary formats that can be read and 27698 edited only by proprietary word processors, SGML or XML for which 27699 the DTD and/or processing tools are not generally available, and 27700 the machine-generated HTML, PostScript or PDF produced by some word 27701 processors for output purposes only. 27702 27703 The “Title Page” means, for a printed book, the title page itself, 27704 plus such following pages as are needed to hold, legibly, the 27705 material this License requires to appear in the title page. For 27706 works in formats which do not have any title page as such, “Title 27707 Page” means the text near the most prominent appearance of the 27708 work’s title, preceding the beginning of the body of the text. 27709 27710 The “publisher” means any person or entity that distributes copies 27711 of the Document to the public. 27712 27713 A section “Entitled XYZ” means a named subunit of the Document 27714 whose title either is precisely XYZ or contains XYZ in parentheses 27715 following text that translates XYZ in another language. (Here XYZ 27716 stands for a specific section name mentioned below, such as 27717 “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) 27718 To “Preserve the Title” of such a section when you modify the 27719 Document means that it remains a section “Entitled XYZ” according 27720 to this definition. 27721 27722 The Document may include Warranty Disclaimers next to the notice 27723 which states that this License applies to the Document. These 27724 Warranty Disclaimers are considered to be included by reference in 27725 this License, but only as regards disclaiming warranties: any other 27726 implication that these Warranty Disclaimers may have is void and 27727 has no effect on the meaning of this License. 27728 27729 2. VERBATIM COPYING 27730 27731 You may copy and distribute the Document in any medium, either 27732 commercially or noncommercially, provided that this License, the 27733 copyright notices, and the license notice saying this License 27734 applies to the Document are reproduced in all copies, and that you 27735 add no other conditions whatsoever to those of this License. You 27736 may not use technical measures to obstruct or control the reading 27737 or further copying of the copies you make or distribute. However, 27738 you may accept compensation in exchange for copies. If you 27739 distribute a large enough number of copies you must also follow the 27740 conditions in section 3. 27741 27742 You may also lend copies, under the same conditions stated above, 27743 and you may publicly display copies. 27744 27745 3. COPYING IN QUANTITY 27746 27747 If you publish printed copies (or copies in media that commonly 27748 have printed covers) of the Document, numbering more than 100, and 27749 the Document’s license notice requires Cover Texts, you must 27750 enclose the copies in covers that carry, clearly and legibly, all 27751 these Cover Texts: Front-Cover Texts on the front cover, and 27752 Back-Cover Texts on the back cover. Both covers must also clearly 27753 and legibly identify you as the publisher of these copies. The 27754 front cover must present the full title with all words of the title 27755 equally prominent and visible. You may add other material on the 27756 covers in addition. Copying with changes limited to the covers, as 27757 long as they preserve the title of the Document and satisfy these 27758 conditions, can be treated as verbatim copying in other respects. 27759 27760 If the required texts for either cover are too voluminous to fit 27761 legibly, you should put the first ones listed (as many as fit 27762 reasonably) on the actual cover, and continue the rest onto 27763 adjacent pages. 27764 27765 If you publish or distribute Opaque copies of the Document 27766 numbering more than 100, you must either include a machine-readable 27767 Transparent copy along with each Opaque copy, or state in or with 27768 each Opaque copy a computer-network location from which the general 27769 network-using public has access to download using public-standard 27770 network protocols a complete Transparent copy of the Document, free 27771 of added material. If you use the latter option, you must take 27772 reasonably prudent steps, when you begin distribution of Opaque 27773 copies in quantity, to ensure that this Transparent copy will 27774 remain thus accessible at the stated location until at least one 27775 year after the last time you distribute an Opaque copy (directly or 27776 through your agents or retailers) of that edition to the public. 27777 27778 It is requested, but not required, that you contact the authors of 27779 the Document well before redistributing any large number of copies, 27780 to give them a chance to provide you with an updated version of the 27781 Document. 27782 27783 4. MODIFICATIONS 27784 27785 You may copy and distribute a Modified Version of the Document 27786 under the conditions of sections 2 and 3 above, provided that you 27787 release the Modified Version under precisely this License, with the 27788 Modified Version filling the role of the Document, thus licensing 27789 distribution and modification of the Modified Version to whoever 27790 possesses a copy of it. In addition, you must do these things in 27791 the Modified Version: 27792 27793 A. Use in the Title Page (and on the covers, if any) a title 27794 distinct from that of the Document, and from those of previous 27795 versions (which should, if there were any, be listed in the 27796 History section of the Document). You may use the same title 27797 as a previous version if the original publisher of that 27798 version gives permission. 27799 27800 B. List on the Title Page, as authors, one or more persons or 27801 entities responsible for authorship of the modifications in 27802 the Modified Version, together with at least five of the 27803 principal authors of the Document (all of its principal 27804 authors, if it has fewer than five), unless they release you 27805 from this requirement. 27806 27807 C. State on the Title page the name of the publisher of the 27808 Modified Version, as the publisher. 27809 27810 D. Preserve all the copyright notices of the Document. 27811 27812 E. Add an appropriate copyright notice for your modifications 27813 adjacent to the other copyright notices. 27814 27815 F. Include, immediately after the copyright notices, a license 27816 notice giving the public permission to use the Modified 27817 Version under the terms of this License, in the form shown in 27818 the Addendum below. 27819 27820 G. Preserve in that license notice the full lists of Invariant 27821 Sections and required Cover Texts given in the Document’s 27822 license notice. 27823 27824 H. Include an unaltered copy of this License. 27825 27826 I. Preserve the section Entitled “History”, Preserve its Title, 27827 and add to it an item stating at least the title, year, new 27828 authors, and publisher of the Modified Version as given on the 27829 Title Page. If there is no section Entitled “History” in the 27830 Document, create one stating the title, year, authors, and 27831 publisher of the Document as given on its Title Page, then add 27832 an item describing the Modified Version as stated in the 27833 previous sentence. 27834 27835 J. Preserve the network location, if any, given in the Document 27836 for public access to a Transparent copy of the Document, and 27837 likewise the network locations given in the Document for 27838 previous versions it was based on. These may be placed in the 27839 “History” section. You may omit a network location for a work 27840 that was published at least four years before the Document 27841 itself, or if the original publisher of the version it refers 27842 to gives permission. 27843 27844 K. For any section Entitled “Acknowledgements” or “Dedications”, 27845 Preserve the Title of the section, and preserve in the section 27846 all the substance and tone of each of the contributor 27847 acknowledgements and/or dedications given therein. 27848 27849 L. Preserve all the Invariant Sections of the Document, unaltered 27850 in their text and in their titles. Section numbers or the 27851 equivalent are not considered part of the section titles. 27852 27853 M. Delete any section Entitled “Endorsements”. Such a section 27854 may not be included in the Modified Version. 27855 27856 N. Do not retitle any existing section to be Entitled 27857 “Endorsements” or to conflict in title with any Invariant 27858 Section. 27859 27860 O. Preserve any Warranty Disclaimers. 27861 27862 If the Modified Version includes new front-matter sections or 27863 appendices that qualify as Secondary Sections and contain no 27864 material copied from the Document, you may at your option designate 27865 some or all of these sections as invariant. To do this, add their 27866 titles to the list of Invariant Sections in the Modified Version’s 27867 license notice. These titles must be distinct from any other 27868 section titles. 27869 27870 You may add a section Entitled “Endorsements”, provided it contains 27871 nothing but endorsements of your Modified Version by various 27872 parties—for example, statements of peer review or that the text has 27873 been approved by an organization as the authoritative definition of 27874 a standard. 27875 27876 You may add a passage of up to five words as a Front-Cover Text, 27877 and a passage of up to 25 words as a Back-Cover Text, to the end of 27878 the list of Cover Texts in the Modified Version. Only one passage 27879 of Front-Cover Text and one of Back-Cover Text may be added by (or 27880 through arrangements made by) any one entity. If the Document 27881 already includes a cover text for the same cover, previously added 27882 by you or by arrangement made by the same entity you are acting on 27883 behalf of, you may not add another; but you may replace the old 27884 one, on explicit permission from the previous publisher that added 27885 the old one. 27886 27887 The author(s) and publisher(s) of the Document do not by this 27888 License give permission to use their names for publicity for or to 27889 assert or imply endorsement of any Modified Version. 27890 27891 5. COMBINING DOCUMENTS 27892 27893 You may combine the Document with other documents released under 27894 this License, under the terms defined in section 4 above for 27895 modified versions, provided that you include in the combination all 27896 of the Invariant Sections of all of the original documents, 27897 unmodified, and list them all as Invariant Sections of your 27898 combined work in its license notice, and that you preserve all 27899 their Warranty Disclaimers. 27900 27901 The combined work need only contain one copy of this License, and 27902 multiple identical Invariant Sections may be replaced with a single 27903 copy. If there are multiple Invariant Sections with the same name 27904 but different contents, make the title of each such section unique 27905 by adding at the end of it, in parentheses, the name of the 27906 original author or publisher of that section if known, or else a 27907 unique number. Make the same adjustment to the section titles in 27908 the list of Invariant Sections in the license notice of the 27909 combined work. 27910 27911 In the combination, you must combine any sections Entitled 27912 “History” in the various original documents, forming one section 27913 Entitled “History”; likewise combine any sections Entitled 27914 “Acknowledgements”, and any sections Entitled “Dedications”. You 27915 must delete all sections Entitled “Endorsements.” 27916 27917 6. COLLECTIONS OF DOCUMENTS 27918 27919 You may make a collection consisting of the Document and other 27920 documents released under this License, and replace the individual 27921 copies of this License in the various documents with a single copy 27922 that is included in the collection, provided that you follow the 27923 rules of this License for verbatim copying of each of the documents 27924 in all other respects. 27925 27926 You may extract a single document from such a collection, and 27927 distribute it individually under this License, provided you insert 27928 a copy of this License into the extracted document, and follow this 27929 License in all other respects regarding verbatim copying of that 27930 document. 27931 27932 7. AGGREGATION WITH INDEPENDENT WORKS 27933 27934 A compilation of the Document or its derivatives with other 27935 separate and independent documents or works, in or on a volume of a 27936 storage or distribution medium, is called an “aggregate” if the 27937 copyright resulting from the compilation is not used to limit the 27938 legal rights of the compilation’s users beyond what the individual 27939 works permit. When the Document is included in an aggregate, this 27940 License does not apply to the other works in the aggregate which 27941 are not themselves derivative works of the Document. 27942 27943 If the Cover Text requirement of section 3 is applicable to these 27944 copies of the Document, then if the Document is less than one half 27945 of the entire aggregate, the Document’s Cover Texts may be placed 27946 on covers that bracket the Document within the aggregate, or the 27947 electronic equivalent of covers if the Document is in electronic 27948 form. Otherwise they must appear on printed covers that bracket 27949 the whole aggregate. 27950 27951 8. TRANSLATION 27952 27953 Translation is considered a kind of modification, so you may 27954 distribute translations of the Document under the terms of section 27955 4. Replacing Invariant Sections with translations requires special 27956 permission from their copyright holders, but you may include 27957 translations of some or all Invariant Sections in addition to the 27958 original versions of these Invariant Sections. You may include a 27959 translation of this License, and all the license notices in the 27960 Document, and any Warranty Disclaimers, provided that you also 27961 include the original English version of this License and the 27962 original versions of those notices and disclaimers. In case of a 27963 disagreement between the translation and the original version of 27964 this License or a notice or disclaimer, the original version will 27965 prevail. 27966 27967 If a section in the Document is Entitled “Acknowledgements”, 27968 “Dedications”, or “History”, the requirement (section 4) to 27969 Preserve its Title (section 1) will typically require changing the 27970 actual title. 27971 27972 9. TERMINATION 27973 27974 You may not copy, modify, sublicense, or distribute the Document 27975 except as expressly provided under this License. Any attempt 27976 otherwise to copy, modify, sublicense, or distribute it is void, 27977 and will automatically terminate your rights under this License. 27978 27979 However, if you cease all violation of this License, then your 27980 license from a particular copyright holder is reinstated (a) 27981 provisionally, unless and until the copyright holder explicitly and 27982 finally terminates your license, and (b) permanently, if the 27983 copyright holder fails to notify you of the violation by some 27984 reasonable means prior to 60 days after the cessation. 27985 27986 Moreover, your license from a particular copyright holder is 27987 reinstated permanently if the copyright holder notifies you of the 27988 violation by some reasonable means, this is the first time you have 27989 received notice of violation of this License (for any work) from 27990 that copyright holder, and you cure the violation prior to 30 days 27991 after your receipt of the notice. 27992 27993 Termination of your rights under this section does not terminate 27994 the licenses of parties who have received copies or rights from you 27995 under this License. If your rights have been terminated and not 27996 permanently reinstated, receipt of a copy of some or all of the 27997 same material does not give you any rights to use it. 27998 27999 10. FUTURE REVISIONS OF THIS LICENSE 28000 28001 The Free Software Foundation may publish new, revised versions of 28002 the GNU Free Documentation License from time to time. Such new 28003 versions will be similar in spirit to the present version, but may 28004 differ in detail to address new problems or concerns. See 28005 <https://www.gnu.org/licenses/>. 28006 28007 Each version of the License is given a distinguishing version 28008 number. If the Document specifies that a particular numbered 28009 version of this License “or any later version” applies to it, you 28010 have the option of following the terms and conditions either of 28011 that specified version or of any later version that has been 28012 published (not as a draft) by the Free Software Foundation. If the 28013 Document does not specify a version number of this License, you may 28014 choose any version ever published (not as a draft) by the Free 28015 Software Foundation. If the Document specifies that a proxy can 28016 decide which future versions of this License can be used, that 28017 proxy’s public statement of acceptance of a version permanently 28018 authorizes you to choose that version for the Document. 28019 28020 11. RELICENSING 28021 28022 “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any 28023 World Wide Web server that publishes copyrightable works and also 28024 provides prominent facilities for anybody to edit those works. A 28025 public wiki that anybody can edit is an example of such a server. 28026 A “Massive Multiauthor Collaboration” (or “MMC”) contained in the 28027 site means any set of copyrightable works thus published on the MMC 28028 site. 28029 28030 “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 28031 license published by Creative Commons Corporation, a not-for-profit 28032 corporation with a principal place of business in San Francisco, 28033 California, as well as future copyleft versions of that license 28034 published by that same organization. 28035 28036 “Incorporate” means to publish or republish a Document, in whole or 28037 in part, as part of another Document. 28038 28039 An MMC is “eligible for relicensing” if it is licensed under this 28040 License, and if all works that were first published under this 28041 License somewhere other than this MMC, and subsequently 28042 incorporated in whole or in part into the MMC, (1) had no cover 28043 texts or invariant sections, and (2) were thus incorporated prior 28044 to November 1, 2008. 28045 28046 The operator of an MMC Site may republish an MMC contained in the 28047 site under CC-BY-SA on the same site at any time before August 1, 28048 2009, provided the MMC is eligible for relicensing. 28049 28050ADDENDUM: How to use this License for your documents 28051==================================================== 28052 28053To use this License in a document you have written, include a copy of 28054the License in the document and put the following copyright and license 28055notices just after the title page: 28056 28057 Copyright (C) YEAR YOUR NAME. 28058 Permission is granted to copy, distribute and/or modify this document 28059 under the terms of the GNU Free Documentation License, Version 1.3 28060 or any later version published by the Free Software Foundation; 28061 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover 28062 Texts. A copy of the license is included in the section entitled ``GNU 28063 Free Documentation License''. 28064 28065 If you have Invariant Sections, Front-Cover Texts and Back-Cover 28066Texts, replace the “with...Texts.” line with this: 28067 28068 with the Invariant Sections being LIST THEIR TITLES, with 28069 the Front-Cover Texts being LIST, and with the Back-Cover Texts 28070 being LIST. 28071 28072 If you have Invariant Sections without Cover Texts, or some other 28073combination of the three, merge those two alternatives to suit the 28074situation. 28075 28076 If your document contains nontrivial examples of program code, we 28077recommend releasing these examples in parallel under your choice of free 28078software license, such as the GNU General Public License, to permit 28079their use in free software. 28080 28081 28082File: gnus.info, Node: Index, Next: Key Index, Prev: GNU Free Documentation License, Up: Top 28083 2808413 Index 28085******** 28086 28087[index] 28088* Menu: 28089 28090* $: Spam and Ham Processors. 28091 (line 31) 28092* %: Group Line Specification. 28093 (line 136) 28094* % <1>: Summary Agent Commands. 28095 (line 13) 28096* %(, %): Formatting Fonts. (line 6) 28097* %<<, %>>, guillemets: Formatting Fonts. (line 18) 28098* %{, %}: Formatting Fonts. (line 12) 28099* *: Group Line Specification. 28100 (line 161) 28101* * <1>: Article Fontisizing. (line 24) 28102* .newsrc: Startup Files. (line 6) 28103* .newsrc.el: Startup Files. (line 6) 28104* .newsrc.eld: Startup Files. (line 6) 28105* /: Article Fontisizing. (line 24) 28106* <: Loose Threads. (line 6) 28107* >: Loose Threads. (line 6) 28108* activating groups: Scanning New Messages. 28109 (line 19) 28110* activating groups <1>: Terminology. (line 146) 28111* active file: The Active File. (line 6) 28112* active file <1>: Terminology. (line 136) 28113* adapt file group parameter: Group Parameters. (line 161) 28114* adaptive scoring: Adaptive Scoring. (line 6) 28115* admin-address: Group Parameters. (line 166) 28116* adopting articles: Loose Threads. (line 16) 28117* advertisements: Article Hiding. (line 43) 28118* agent: Gnus Unplugged. (line 6) 28119* agent expiry: Agent Expiry. (line 6) 28120* Agent Parameters: Category Syntax. (line 11) 28121* agent regeneration: Agent Regeneration. (line 6) 28122* ANSI control sequences: Article Washing. (line 150) 28123* archived messages: Archived Messages. (line 6) 28124* archiving mail: Archiving Mail. (line 6) 28125* article: Terminology. (line 71) 28126* article backlog: Article Backlog. (line 6) 28127* article buffer: Article Buffer. (line 6) 28128* article buffers, several: Misc Article. (line 7) 28129* article caching: Article Caching. (line 6) 28130* article customization: Customizing Articles. 28131 (line 6) 28132* article emphasis: Article Fontisizing. (line 6) 28133* article expiry: Expiring Mail. (line 6) 28134* article hiding: Article Hiding. (line 6) 28135* article history: Choosing Commands. (line 70) 28136* article marking: Marking Articles. (line 6) 28137* article pre-fetch: Asynchronous Fetching. 28138 (line 6) 28139* article scrolling: Paging the Article. (line 6) 28140* article series: Decoding Articles. (line 18) 28141* article signature: Article Signature. (line 6) 28142* article threading: Threading. (line 6) 28143* article ticking: Marking Articles. (line 6) 28144* article washing: Article Washing. (line 6) 28145* article-de-quoted-unreadable: Washing Mail. (line 80) 28146* asterisk: Article Fontisizing. (line 24) 28147* asynchronous article fetching: Asynchronous Fetching. 28148 (line 6) 28149* attachments: MIME Commands. (line 6) 28150* attachments, selection via dired: Other modes. (line 14) 28151* authentication: NNTP. (line 23) 28152* authinfo: NNTP. (line 23) 28153* auto-expire: Group Parameters. (line 128) 28154* auto-save: Auto Save. (line 6) 28155* Babyl: Document Groups. (line 9) 28156* back end: Terminology. (line 27) 28157* backlog: Article Backlog. (line 6) 28158* backup files: Mail Folders. (line 29) 28159* backup of mail: Archiving Mail. (line 6) 28160* banner: Group Parameters. (line 265) 28161* banner <1>: Article Hiding. (line 43) 28162* batch scoring: Group Score Commands. 28163 (line 19) 28164* Bayesian spam filtering, naive: Spam Statistics Package. 28165 (line 6) 28166* BBDB whitelists, spam filtering: BBDB Whitelists. (line 6) 28167* BBDB, spam filtering: BBDB Whitelists. (line 6) 28168* binary groups: Binary Groups. (line 6) 28169* blackholes, spam filtering: Blackholes. (line 6) 28170* blacklists, spam filtering: Blacklists and Whitelists. 28171 (line 6) 28172* BNF: Required Back End Functions. 28173 (line 53) 28174* body: Terminology. (line 84) 28175* body split: Fancy Mail Splitting. 28176 (line 79) 28177* bogofilter, spam filtering: Bogofilter. (line 6) 28178* bogus group: Splitting Mail. (line 32) 28179* bogus groups: Group Maintenance. (line 6) 28180* bogus groups <1>: Terminology. (line 141) 28181* bookmarks: Other Marks. (line 6) 28182* bouncing mail: Summary Mail Commands. 28183 (line 96) 28184* broken-reply-to: Group Parameters. (line 93) 28185* browsing servers: Browse Foreign Server. 28186 (line 6) 28187* browsing the web: Browsing the Web. (line 6) 28188* bugs: Compatibility. (line 52) 28189* bugs <1>: Troubleshooting. (line 31) 28190* bury-buffer: Sticky Articles. (line 27) 28191* button levels: Article Button Levels. 28192 (line 6) 28193* buttons: Article Buttons. (line 6) 28194* caching: Article Caching. (line 6) 28195* calendar: Email Based Diary. (line 6) 28196* canceling articles: Canceling and Superseding. 28197 (line 6) 28198* changing servers: Changing Servers. (line 6) 28199* characters in file names: Various Various. (line 64) 28200* charset: Group Parameters. (line 216) 28201* charset, view article with different charset: Paging the Article. 28202 (line 38) 28203* charsets: Charsets. (line 6) 28204* child: Terminology. (line 197) 28205* ClariNet Briefs: Foreign Groups. (line 67) 28206* cloud: The Gnus Cloud. (line 6) 28207* cloud, download: Gnus Cloud Usage. (line 10) 28208* cloud, download <1>: Gnus Cloud Usage. (line 14) 28209* coding system aliases: Charsets. (line 48) 28210* colors: Faces and Fonts. (line 6) 28211* comment: Group Parameters. (line 211) 28212* compatibility: Compatibility. (line 6) 28213* composing mail: Summary Mail Commands. 28214 (line 6) 28215* composing messages: Composing Messages. (line 6) 28216* composing news: Summary Post Commands. 28217 (line 6) 28218* contributors: Contributors. (line 6) 28219* converting kill files: Converting Kill Files. 28220 (line 6) 28221* copy mail: Mail Group Commands. (line 35) 28222* cross-posting: Crosspost Handling. (line 19) 28223* crosspost: Splitting Mail. (line 61) 28224* crosspost mail: Mail Group Commands. (line 40) 28225* crossposting: Summary Mail Commands. 28226 (line 137) 28227* crossposts: Scoring Tips. (line 7) 28228* customizing: Foreign Groups. (line 39) 28229* customizing nndiary: Customizing NNDiary. (line 6) 28230* customizing threading: Customizing Threading. 28231 (line 6) 28232* daemons: Daemons. (line 6) 28233* date: Score File Format. (line 146) 28234* DCC: SpamAssassin. (line 6) 28235* decays: Score Decays. (line 6) 28236* decoding articles: Decoding Articles. (line 6) 28237* dejanews: Web Searches. (line 6) 28238* delayed sending: Delayed Articles. (line 6) 28239* delete-file: Mail Back End Variables. 28240 (line 46) 28241* deleting headers: Hiding Headers. (line 6) 28242* deleting mail: Mail Group Commands. (line 25) 28243* demons: Daemons. (line 6) 28244* describing groups: Group Information. (line 8) 28245* diary: Email Based Diary. (line 6) 28246* diary articles sorting: Diary Articles Sorting. 28247 (line 6) 28248* diary group parameters: Diary Group Parameters. 28249 (line 6) 28250* diary headers generation: Diary Headers Generation. 28251 (line 6) 28252* diary summary buffer line: Diary Summary Line Format. 28253 (line 6) 28254* diary summary line format: Diary Summary Line Format. 28255 (line 6) 28256* diary summary lines sorting: Diary Articles Sorting. 28257 (line 6) 28258* digest: Terminology. (line 200) 28259* digests: Summary Post Commands. 28260 (line 48) 28261* ding Gnus: Gnus Versions. (line 6) 28262* ding mailing list: Troubleshooting. (line 90) 28263* direct connection functions: Direct Functions. (line 6) 28264* directory groups: Directory Groups. (line 6) 28265* dired: Other modes. (line 9) 28266* disk space: Little Disk Space. (line 6) 28267* display: Group Parameters. (line 172) 28268* display-time: Mode Lines. (line 13) 28269* documentation group: Document Groups. (line 6) 28270* drafts: Drafts. (line 6) 28271* dribble file: Auto Save. (line 6) 28272* duplicate mails: Duplicates. (line 6) 28273* edebug: Troubleshooting. (line 57) 28274* elp: Troubleshooting. (line 70) 28275* Emacs: Emacsen. (line 6) 28276* Emacsen: Emacsen. (line 6) 28277* email based diary: Email Based Diary. (line 6) 28278* email spam: Thwarting Email Spam. 28279 (line 6) 28280* email spam <1>: The problem of spam. (line 6) 28281* email spam <2>: Anti-Spam Basics. (line 6) 28282* emphasis: Article Fontisizing. (line 6) 28283* ephemeral groups: Terminology. (line 173) 28284* Eudora: Washing Mail. (line 69) 28285* excessive crossposting: Summary Mail Commands. 28286 (line 137) 28287* exiting Gnus: Exiting Gnus. (line 6) 28288* exiting groups: Exiting the Summary Buffer. 28289 (line 6) 28290* expirable mark: Read Articles. (line 6) 28291* expiring mail: Group Parameters. (line 128) 28292* expiring mail <1>: Group Parameters. (line 135) 28293* expiring mail <2>: Group Maintenance. (line 18) 28294* expiring mail <3>: Group Maintenance. (line 24) 28295* expiring mail <4>: Topic Commands. (line 129) 28296* expiring mail <5>: Mail Group Commands. (line 13) 28297* expiring mail <6>: Mail Group Commands. (line 19) 28298* expiring mail <7>: Expiring Mail. (line 6) 28299* expiry, in Gnus agent: Agent Expiry. (line 6) 28300* expiry-target: Group Parameters. (line 152) 28301* expiry-wait: Group Parameters. (line 144) 28302* extending the spam elisp package: Extending the Spam package. 28303 (line 6) 28304* face: Face. (line 6) 28305* face <1>: Face. (line 10) 28306* faces: Faces and Fonts. (line 6) 28307* fancy mail splitting: Fancy Mail Splitting. 28308 (line 6) 28309* fetching a group: Fetching a Group. (line 6) 28310* fetching by Message-ID: Finding the Parent. (line 44) 28311* file commands: File Commands. (line 6) 28312* file names: Various Various. (line 64) 28313* filtering approaches, spam: The problem of spam. (line 6) 28314* finding news: Finding the News. (line 6) 28315* firewall: Example Methods. (line 45) 28316* follow up: Terminology. (line 23) 28317* followup: Composing Messages. (line 6) 28318* fonts: Faces and Fonts. (line 6) 28319* foreign: Terminology. (line 60) 28320* foreign groups: Foreign Groups. (line 6) 28321* foreign groups <1>: Select Methods. (line 6) 28322* foreign servers: Browse Foreign Server. 28323 (line 6) 28324* format-time-string: Article Date. (line 26) 28325* formatting variables: Formatting Variables. 28326 (line 6) 28327* forwarded messages: Document Groups. (line 42) 28328* functions: Gnus Utility Functions. 28329 (line 6) 28330* fuzzy article gathering: Loose Threads. (line 60) 28331* fuzzy matching: Fuzzy Matching. (line 6) 28332* gateways: Mail-To-News Gateways. 28333 (line 6) 28334* Gcc: Archived Messages. (line 49) 28335* gcc-self: Group Parameters. (line 111) 28336* general customization: Customization. (line 6) 28337* generating sieve script: Sieve Commands. (line 35) 28338* git commit messages: Document Groups. (line 39) 28339* global score files: Global Score Files. (line 6) 28340* Gmail: Support for IMAP Extensions. 28341 (line 6) 28342* gmane: Foreign Groups. (line 82) 28343* Gmane, gnus-fetch-old-headers: Filling In Threads. (line 25) 28344* Gmane, spam reporting: Gmane Spam Reporting. 28345 (line 6) 28346* Gmane, spam reporting <1>: Gmane Spam Reporting. 28347 (line 6) 28348* gnu.emacs.gnus: Troubleshooting. (line 90) 28349* gnus: Starting Up. (line 9) 28350* Gnus agent: Gnus Unplugged. (line 6) 28351* Gnus agent expiry: Agent Expiry. (line 6) 28352* Gnus agent regeneration: Agent Regeneration. (line 6) 28353* Gnus unplugged: Gnus Unplugged. (line 6) 28354* Gnus utility functions: Gnus Utility Functions. 28355 (line 6) 28356* Gnus versions: Gnus Versions. (line 6) 28357* gnus-activate-all-groups: Scanning New Messages. 28358 (line 19) 28359* gnus-activate-foreign-newsgroups: Foreign Groups. (line 115) 28360* gnus-activate-level: Group Levels. (line 87) 28361* gnus-active: Gnus Utility Functions. 28362 (line 31) 28363* gnus-adaptive-file-suffix: Adaptive Scoring. (line 79) 28364* gnus-adaptive-pretty-print: Adaptive Scoring. (line 83) 28365* gnus-adaptive-word-length-limit: Adaptive Scoring. (line 115) 28366* gnus-adaptive-word-minimum: Adaptive Scoring. (line 124) 28367* gnus-adaptive-word-no-group-words: Adaptive Scoring. (line 128) 28368* gnus-adaptive-word-syntax-table: Adaptive Scoring. (line 120) 28369* gnus-add-configuration: Window Layout. (line 180) 28370* gnus-add-current-to-buffer-list: Gnus Utility Functions. 28371 (line 38) 28372* gnus-add-timestamp-to-message: Various Various. (line 41) 28373* gnus-add-to-list: Group Parameters. (line 63) 28374* gnus-add-to-list <1>: Mail. (line 14) 28375* gnus-after-exiting-gnus-hook: Exiting Gnus. (line 20) 28376* gnus-after-getting-new-news-hook: Scanning New Messages. 28377 (line 29) 28378* gnus-agent: Agent Variables. (line 7) 28379* gnus-agent-add-group: Group Agent Commands. 28380 (line 22) 28381* gnus-agent-add-server: Server Agent Commands. 28382 (line 7) 28383* gnus-agent-auto-agentize-methods: Agent Variables. (line 117) 28384* gnus-agent-batch: Batching Agents. (line 6) 28385* gnus-agent-cache: Agent Variables. (line 35) 28386* gnus-agent-catchup: Summary Agent Commands. 28387 (line 18) 28388* gnus-agent-consider-all-articles: Agent Variables. (line 61) 28389* gnus-agent-directory: Agent Variables. (line 16) 28390* gnus-agent-enable-expiration: Category Variables. (line 46) 28391* gnus-agent-expire: Agent Expiry. (line 6) 28392* gnus-agent-expire-all: Agent Expiry. (line 21) 28393* gnus-agent-expire-days: Category Variables. (line 37) 28394* gnus-agent-expire-days <1>: Agent Expiry. (line 6) 28395* gnus-agent-expire-group: Agent Expiry. (line 6) 28396* gnus-agent-fetch-group: Summary Agent Commands. 28397 (line 22) 28398* gnus-agent-fetch-groups: Group Agent Commands. 28399 (line 7) 28400* gnus-agent-fetch-session: Group Agent Commands. 28401 (line 14) 28402* gnus-agent-fetched-hook: Agent Variables. (line 32) 28403* gnus-agent-go-online: Agent Variables. (line 40) 28404* gnus-agent-handle-level: Agent Variables. (line 20) 28405* gnus-agent-high-score: Category Variables. (line 33) 28406* gnus-agent-long-article: Category Variables. (line 26) 28407* gnus-agent-low-score: Category Variables. (line 29) 28408* gnus-agent-mark-article: Summary Agent Commands. 28409 (line 7) 28410* gnus-agent-mark-unread-after-downloaded: Agent Variables. (line 48) 28411* gnus-agent-max-fetch-size: Agent Variables. (line 71) 28412* gnus-agent-plugged-hook: Agent Variables. (line 26) 28413* gnus-agent-prompt-send-queue: Agent Variables. (line 112) 28414* gnus-agent-queue-mail: Agent Variables. (line 106) 28415* gnus-agent-regenerate: Agent Regeneration. (line 19) 28416* gnus-agent-regenerate-group: Agent Regeneration. (line 24) 28417* gnus-agent-remove-group: Group Agent Commands. 28418 (line 27) 28419* gnus-agent-remove-server: Server Agent Commands. 28420 (line 11) 28421* gnus-agent-short-article: Category Variables. (line 23) 28422* gnus-agent-summary-fetch-group: Summary Agent Commands. 28423 (line 30) 28424* gnus-agent-summary-fetch-series: Summary Agent Commands. 28425 (line 26) 28426* gnus-agent-synchronize-flags: Agent and flags. (line 18) 28427* gnus-agent-synchronize-flags <1>: Agent Variables. (line 54) 28428* gnus-agent-synchronize-flags <2>: Group Agent Commands. 28429 (line 32) 28430* gnus-agent-toggle-mark: Summary Agent Commands. 28431 (line 14) 28432* gnus-agent-toggle-plugged: Agent Commands. (line 6) 28433* gnus-agent-unmark-article: Summary Agent Commands. 28434 (line 10) 28435* gnus-agent-unplugged-hook: Agent Variables. (line 29) 28436* gnus-alter-articles-to-read-function: Various Summary Stuff. 28437 (line 52) 28438* gnus-alter-header-function: Low-Level Threading. (line 10) 28439* gnus-always-force-window-configuration: Window Layout. (line 195) 28440* gnus-always-read-dribble-file: Auto Save. (line 25) 28441* gnus-ancient-mark: Read Articles. (line 16) 28442* gnus-apply-kill-file: Kill Files. (line 62) 28443* gnus-apply-kill-file-unless-scored: Kill Files. (line 62) 28444* gnus-apply-kill-hook: Kill Files. (line 62) 28445* gnus-article-add-buttons: Article Washing. (line 198) 28446* gnus-article-add-buttons-to-head: Article Washing. (line 202) 28447* gnus-article-address-banner-alist: Article Hiding. (line 43) 28448* gnus-article-address-banner-alist <1>: Article Hiding. (line 66) 28449* gnus-article-babel: Article Miscellanea. (line 7) 28450* gnus-article-banner-alist: Article Hiding. (line 43) 28451* gnus-article-boring-faces: Paging the Article. (line 11) 28452* gnus-article-browse-html-article: MIME Commands. (line 44) 28453* gnus-article-button-face: Article Buttons. (line 103) 28454* gnus-article-capitalize-sentences: Article Washing. (line 117) 28455* gnus-article-date-english: Article Date. (line 22) 28456* gnus-article-date-iso8601: Article Date. (line 15) 28457* gnus-article-date-lapsed: Article Date. (line 33) 28458* gnus-article-date-local: Article Date. (line 19) 28459* gnus-article-date-original: Article Date. (line 43) 28460* gnus-article-date-user: Article Date. (line 26) 28461* gnus-article-date-ut: Article Date. (line 11) 28462* gnus-article-de-base64-unreadable: Article Washing. (line 137) 28463* gnus-article-de-quoted-unreadable: Article Washing. (line 127) 28464* gnus-article-decode-charset: MIME Commands. (line 95) 28465* gnus-article-decode-encoded-words: Mail Back End Variables. 28466 (line 15) 28467* gnus-article-decode-hook: Misc Article. (line 15) 28468* gnus-article-decode-HZ: Article Washing. (line 145) 28469* gnus-article-decode-mime-words: MIME Commands. (line 91) 28470* gnus-article-describe-briefly: Article Keymap. (line 39) 28471* gnus-article-display-face: Article Display. (line 32) 28472* gnus-article-display-face <1>: Face. (line 10) 28473* gnus-article-display-x-face: Article Display. (line 28) 28474* gnus-article-display-x-face <1>: X-Face. (line 10) 28475* gnus-article-emphasize: Article Fontisizing. (line 6) 28476* gnus-article-emulate-mime: MIME Commands. (line 128) 28477* gnus-article-encrypt-body: Mail Group Commands. (line 92) 28478* gnus-article-encrypt-protocol: Mail Group Commands. (line 92) 28479* gnus-article-fill-cited-article: Article Washing. (line 108) 28480* gnus-article-fill-long-lines: Article Washing. (line 114) 28481* gnus-article-followup-with-original: Article Keymap. (line 60) 28482* gnus-article-hide: Article Hiding. (line 10) 28483* gnus-article-hide-boring-headers: Article Hiding. (line 19) 28484* gnus-article-hide-boring-headers <1>: Hiding Headers. (line 64) 28485* gnus-article-hide-citation: Article Hiding. (line 80) 28486* gnus-article-hide-citation-in-followups: Article Hiding. (line 119) 28487* gnus-article-hide-citation-maybe: Article Hiding. (line 106) 28488* gnus-article-hide-headers: Article Hiding. (line 15) 28489* gnus-article-hide-list-identifiers: Article Hiding. (line 27) 28490* gnus-article-hide-pem: Article Hiding. (line 39) 28491* gnus-article-hide-signature: Article Hiding. (line 23) 28492* gnus-article-highlight: Article Highlighting. 28493 (line 10) 28494* gnus-article-highlight-citation: Article Highlighting. 28495 (line 25) 28496* gnus-article-highlight-headers: Article Highlighting. 28497 (line 15) 28498* gnus-article-highlight-signature: Article Highlighting. 28499 (line 71) 28500* gnus-article-loose-mime: MIME Commands. (line 122) 28501* gnus-article-mail: Article Keymap. (line 31) 28502* gnus-article-maybe-highlight: Article Highlighting. 28503 (line 10) 28504* gnus-article-menu-hook: Highlighting and Menus. 28505 (line 59) 28506* gnus-article-mime-part-function: MIME Commands. (line 165) 28507* gnus-article-mode-hook: Misc Article. (line 26) 28508* gnus-article-mode-line-format: Misc Article. (line 36) 28509* gnus-article-mode-syntax-table: Misc Article. (line 29) 28510* gnus-article-mouse-face: Article Buttons. (line 106) 28511* gnus-article-next-button: Article Keymap. (line 43) 28512* gnus-article-next-page: Article Keymap. (line 18) 28513* gnus-article-outlook-deuglify-article: Article Washing. (line 87) 28514* gnus-article-outlook-rearrange-citation: Article Washing. (line 104) 28515* gnus-article-outlook-repair-attribution: Article Washing. (line 100) 28516* gnus-article-outlook-unwrap-lines: Article Washing. (line 92) 28517* gnus-article-over-scroll: Misc Article. (line 32) 28518* gnus-article-prepare-hook: Misc Article. (line 19) 28519* gnus-article-press-button: Using MIME. (line 24) 28520* gnus-article-prev-button: Article Keymap. (line 47) 28521* gnus-article-prev-page: Article Keymap. (line 22) 28522* gnus-article-refer-article: Article Keymap. (line 26) 28523* gnus-article-remove-cr: Article Washing. (line 121) 28524* gnus-article-remove-images: Article Display. (line 57) 28525* gnus-article-remove-leading-whitespace: Article Header. (line 19) 28526* gnus-article-remove-trailing-blank-lines: Article Washing. (line 229) 28527* gnus-article-reply-with-original: Article Keymap. (line 50) 28528* gnus-article-save-directory: Saving Articles. (line 177) 28529* gnus-article-show-cursor: HTML. (line 62) 28530* gnus-article-show-summary: Article Keymap. (line 35) 28531* gnus-article-skip-boring: Paging the Article. (line 11) 28532* gnus-article-smartquotes-map: Article Washing. (line 69) 28533* gnus-article-sort-by-author: Sorting the Summary Buffer. 28534 (line 64) 28535* gnus-article-sort-by-date: Sorting the Summary Buffer. 28536 (line 64) 28537* gnus-article-sort-by-most-recent-date: Sorting the Summary Buffer. 28538 (line 64) 28539* gnus-article-sort-by-most-recent-number: Sorting the Summary Buffer. 28540 (line 64) 28541* gnus-article-sort-by-number: Sorting the Summary Buffer. 28542 (line 64) 28543* gnus-article-sort-by-random: Sorting the Summary Buffer. 28544 (line 64) 28545* gnus-article-sort-by-schedule: Diary Articles Sorting. 28546 (line 6) 28547* gnus-article-sort-by-score: Sorting the Summary Buffer. 28548 (line 64) 28549* gnus-article-sort-by-subject: Sorting the Summary Buffer. 28550 (line 64) 28551* gnus-article-sort-functions: Sorting the Summary Buffer. 28552 (line 64) 28553* gnus-article-strip-all-blank-lines: Article Washing. (line 236) 28554* gnus-article-strip-banner: Article Hiding. (line 43) 28555* gnus-article-strip-blank-lines: Article Washing. (line 233) 28556* gnus-article-strip-headers-in-body: Article Washing. (line 216) 28557* gnus-article-strip-leading-blank-lines: Article Washing. (line 220) 28558* gnus-article-strip-leading-space: Article Washing. (line 239) 28559* gnus-article-strip-multiple-blank-lines: Article Washing. (line 224) 28560* gnus-article-strip-trailing-space: Article Washing. (line 243) 28561* gnus-article-time-format: Article Date. (line 26) 28562* gnus-article-treat-ansi-sequences: Article Washing. (line 150) 28563* gnus-article-treat-fold-headers: Article Header. (line 16) 28564* gnus-article-treat-fold-newsgroups: Article Header. (line 12) 28565* gnus-article-treat-non-ascii: Article Washing. (line 80) 28566* gnus-article-treat-overstrike: Article Washing. (line 66) 28567* gnus-article-treat-smartquotes: Article Washing. (line 69) 28568* gnus-article-treat-types: Customizing Articles. 28569 (line 54) 28570* gnus-article-treat-unfold-headers: Article Header. (line 9) 28571* gnus-article-unsplit-urls: Article Washing. (line 155) 28572* gnus-article-verify-x-pgp-sig: Article Washing. (line 206) 28573* gnus-article-wash-html: Article Washing. (line 161) 28574* gnus-article-wide-reply-with-original: Article Keymap. (line 55) 28575* gnus-article-x-face-command: X-Face. (line 10) 28576* gnus-article-x-face-too-ugly: X-Face. (line 10) 28577* gnus-async-post-fetch-function: Asynchronous Fetching. 28578 (line 68) 28579* gnus-async-prefetch-article-p: Asynchronous Fetching. 28580 (line 45) 28581* gnus-async-unread-p: Asynchronous Fetching. 28582 (line 45) 28583* gnus-asynchronous: Asynchronous Fetching. 28584 (line 35) 28585* gnus-auto-center-summary: Summary Maneuvering. (line 63) 28586* gnus-auto-expirable-marks: Expiring Mail. (line 28) 28587* gnus-auto-expirable-newsgroups: Expiring Mail. (line 53) 28588* gnus-auto-extend-newsgroup: Choosing Variables. (line 9) 28589* gnus-auto-goto-ignores: Agent Variables. (line 93) 28590* gnus-auto-select-first: Selecting a Group. (line 83) 28591* gnus-auto-select-next: Summary Maneuvering. (line 33) 28592* gnus-auto-select-on-ephemeral-exit: Really Various Summary Commands. 28593 (line 17) 28594* gnus-auto-select-same: Summary Maneuvering. (line 48) 28595* gnus-auto-select-subject: Selecting a Group. (line 83) 28596* gnus-auto-subscribed-categories: Filtering New Groups. 28597 (line 42) 28598* gnus-auto-subscribed-groups: Filtering New Groups. 28599 (line 32) 28600* gnus-backup-startup-file: Startup Files. (line 46) 28601* gnus-balloon-face-0: Formatting Fonts. (line 18) 28602* gnus-batch-score: Group Score Commands. 28603 (line 19) 28604* gnus-before-resume-hook: Startup Variables. (line 15) 28605* gnus-before-startup-hook: Startup Variables. (line 12) 28606* gnus-binary-mode: Binary Groups. (line 6) 28607* gnus-binary-mode-hook: Binary Groups. (line 15) 28608* gnus-binary-show-article: Binary Groups. (line 12) 28609* gnus-blocked-images: HTML. (line 27) 28610* gnus-body-boundary-delimiter: Customizing Articles. 28611 (line 136) 28612* gnus-boring-article-headers: Hiding Headers. (line 64) 28613* gnus-break-pages: Misc Article. (line 75) 28614* gnus-browse-delete-group: Browse Foreign Server. 28615 (line 49) 28616* gnus-browse-describe-briefly: Browse Foreign Server. 28617 (line 45) 28618* gnus-browse-describe-group: Browse Foreign Server. 28619 (line 42) 28620* gnus-browse-exit: Browse Foreign Server. 28621 (line 39) 28622* gnus-browse-menu-hook: Highlighting and Menus. 28623 (line 71) 28624* gnus-browse-mode: Browse Foreign Server. 28625 (line 11) 28626* gnus-browse-read-group: Browse Foreign Server. 28627 (line 24) 28628* gnus-browse-select-group: Browse Foreign Server. 28629 (line 28) 28630* gnus-browse-subscribe-newsgroup-method: Browse Foreign Server. 28631 (line 31) 28632* gnus-browse-unsubscribe-current-group: Browse Foreign Server. 28633 (line 31) 28634* gnus-buffer-configuration: Window Layout. (line 15) 28635* gnus-bug: Compatibility. (line 52) 28636* gnus-bug <1>: Troubleshooting. (line 31) 28637* gnus-build-sparse-threads: Filling In Threads. (line 35) 28638* gnus-button-alist: Article Buttons. (line 17) 28639* gnus-button-browse-level: Article Button Levels. 28640 (line 22) 28641* gnus-button-emacs-level: Article Button Levels. 28642 (line 28) 28643* gnus-button-man-handler: Article Buttons. (line 11) 28644* gnus-button-man-handler <1>: Article Buttons. (line 74) 28645* gnus-button-man-level: Article Button Levels. 28646 (line 39) 28647* gnus-button-message-level: Article Button Levels. 28648 (line 43) 28649* gnus-button-mid-or-mail-heuristic: Article Buttons. (line 93) 28650* gnus-button-mid-or-mail-heuristic-alist: Article Buttons. (line 99) 28651* gnus-button-mid-or-mail-regexp: Article Buttons. (line 78) 28652* gnus-button-prefer-mid-or-mail: Article Buttons. (line 81) 28653* gnus-button-url-regexp: Article Buttons. (line 70) 28654* gnus-buttonized-mime-types: MIME Commands. (line 145) 28655* gnus-cache-active-file: Article Caching. (line 58) 28656* gnus-cache-directory: Article Caching. (line 15) 28657* gnus-cache-enter-article: Persistent Articles. (line 22) 28658* gnus-cache-enter-articles: Article Caching. (line 29) 28659* gnus-cache-generate-active: Article Caching. (line 58) 28660* gnus-cache-generate-nov-databases: Article Caching. (line 58) 28661* gnus-cache-move-cache: Article Caching. (line 65) 28662* gnus-cache-remove-article: Persistent Articles. (line 25) 28663* gnus-cache-remove-articles: Article Caching. (line 29) 28664* gnus-cacheable-groups: Article Caching. (line 47) 28665* gnus-cached-mark: Other Marks. (line 22) 28666* gnus-canceled-mark: Read Articles. (line 32) 28667* gnus-catchup-mark: Read Articles. (line 29) 28668* gnus-category-add: Category Buffer. (line 26) 28669* gnus-category-copy: Category Buffer. (line 23) 28670* gnus-category-customize-category: Category Buffer. (line 16) 28671* gnus-category-edit-groups: Category Buffer. (line 33) 28672* gnus-category-edit-predicate: Category Buffer. (line 29) 28673* gnus-category-edit-score: Category Buffer. (line 37) 28674* gnus-category-exit: Category Buffer. (line 13) 28675* gnus-category-kill: Category Buffer. (line 20) 28676* gnus-category-line-format: Category Variables. (line 10) 28677* gnus-category-list: Category Buffer. (line 41) 28678* gnus-category-mode-hook: Category Variables. (line 7) 28679* gnus-category-mode-line-format: Category Variables. (line 20) 28680* gnus-check-backend-function: Gnus Utility Functions. 28681 (line 84) 28682* gnus-check-bogus-newsgroups: Startup Variables. (line 30) 28683* gnus-check-new-newsgroups: New Groups. (line 6) 28684* gnus-cite-attribution-face: Article Highlighting. 28685 (line 61) 28686* gnus-cite-attribution-prefix: Article Highlighting. 28687 (line 55) 28688* gnus-cite-attribution-suffix: Article Highlighting. 28689 (line 58) 28690* gnus-cite-face-list: Article Highlighting. 28691 (line 38) 28692* gnus-cite-hide-absolute: Article Hiding. (line 115) 28693* gnus-cite-hide-percentage: Article Hiding. (line 111) 28694* gnus-cite-ignore-quoted-from: Article Highlighting. 28695 (line 65) 28696* gnus-cite-max-prefix: Article Highlighting. 28697 (line 35) 28698* gnus-cite-minimum-match-count: Article Highlighting. 28699 (line 51) 28700* gnus-cite-parse-max-size: Article Highlighting. 28701 (line 29) 28702* gnus-cited-closed-text-button-line-format: Article Hiding. (line 85) 28703* gnus-cited-lines-visible: Article Hiding. (line 100) 28704* gnus-cited-opened-text-button-line-format: Article Hiding. (line 85) 28705* gnus-cloud: The Gnus Cloud. (line 6) 28706* gnus-cloud-download-all-data: Gnus Cloud Usage. (line 10) 28707* gnus-cloud-interactive: Gnus Cloud Usage. (line 32) 28708* gnus-cloud-method: Gnus Cloud Usage. (line 37) 28709* gnus-cloud-storage-method: Gnus Cloud Usage. (line 26) 28710* gnus-cloud-synced-files: Gnus Cloud Usage. (line 20) 28711* gnus-cloud-upload-all-data: Gnus Cloud Usage. (line 14) 28712* gnus-configure-frame: Window Layout. (line 113) 28713* gnus-confirm-mail-reply-to-news: Mail. (line 18) 28714* gnus-confirm-treat-mail-like-news: Mail. (line 29) 28715* gnus-continuum-version: Gnus Utility Functions. 28716 (line 42) 28717* gnus-convert-image-to-face-command: Face. (line 26) 28718* gnus-convert-image-to-x-face-command: X-Face. (line 77) 28719* gnus-convert-pbm-to-x-face-command: X-Face. (line 68) 28720* gnus-convert-png-to-face: Face. (line 23) 28721* gnus-crosspost-complaint: Summary Mail Commands. 28722 (line 140) 28723* gnus-current-home-score-file: Home Score File. (line 54) 28724* gnus-current-prefix-symbol: Extended Interactive. 28725 (line 26) 28726* gnus-current-prefix-symbols: Extended Interactive. 28727 (line 30) 28728* gnus-dead-summary-mode: Exiting the Summary Buffer. 28729 (line 73) 28730* gnus-decay-score: Score Decays. (line 11) 28731* gnus-decay-score-function: Score Decays. (line 11) 28732* gnus-decay-scores: Score Decays. (line 11) 28733* gnus-declare-backend: Hooking New Back Ends Into Gnus. 28734 (line 6) 28735* gnus-default-adaptive-score-alist: Adaptive Scoring. (line 18) 28736* gnus-default-adaptive-word-score-alist: Adaptive Scoring. (line 95) 28737* gnus-default-article-saver: Saving Articles. (line 87) 28738* gnus-default-directory: Various Various. (line 21) 28739* gnus-default-ignored-adaptive-words: Adaptive Scoring. (line 111) 28740* gnus-del-mark: Read Articles. (line 9) 28741* gnus-delay-article: Delayed Articles. (line 13) 28742* gnus-delay-default-delay: Delayed Articles. (line 42) 28743* gnus-delay-default-hour: Delayed Articles. (line 38) 28744* gnus-delay-group: Delayed Articles. (line 46) 28745* gnus-delay-header: Delayed Articles. (line 51) 28746* gnus-delay-initialize: Delayed Articles. (line 68) 28747* gnus-delay-send-queue: Delayed Articles. (line 60) 28748* gnus-demon-add-disconnection: Daemons. (line 54) 28749* gnus-demon-add-handler: Daemons. (line 52) 28750* gnus-demon-add-rescan: Daemons. (line 54) 28751* gnus-demon-add-scan-timestamps: Daemons. (line 54) 28752* gnus-demon-add-scanmail: Daemons. (line 54) 28753* gnus-demon-cancel: Daemons. (line 60) 28754* gnus-demon-handlers: Daemons. (line 60) 28755* gnus-demon-init: Daemons. (line 60) 28756* gnus-demon-timestep: Daemons. (line 45) 28757* gnus-diary: The Gnus Diary Library. 28758 (line 6) 28759* gnus-diary-check-message: Diary Headers Generation. 28760 (line 6) 28761* gnus-diary-delay-format-function: Diary Summary Line Format. 28762 (line 41) 28763* gnus-diary-summary-line-format: Diary Summary Line Format. 28764 (line 32) 28765* gnus-diary-time-format: Diary Summary Line Format. 28766 (line 37) 28767* gnus-directory: Various Various. (line 11) 28768* gnus-dired-attach: Other modes. (line 14) 28769* gnus-dired-find-file-mailcap: Other modes. (line 18) 28770* gnus-dired-print: Other modes. (line 23) 28771* gnus-display-mime: Using MIME. (line 16) 28772* gnus-display-mime-function: Using MIME. (line 16) 28773* gnus-dormant-mark: Unread Articles. (line 21) 28774* gnus-downloadable-mark: Other Marks. (line 43) 28775* gnus-downloaded-mark: Other Marks. (line 32) 28776* gnus-draft-edit-message: Drafts. (line 36) 28777* gnus-draft-send-all-messages: Drafts. (line 43) 28778* gnus-draft-send-message: Drafts. (line 43) 28779* gnus-draft-toggle-sending: Drafts. (line 50) 28780* gnus-dribble-directory: Auto Save. (line 19) 28781* gnus-duplicate-file: Duplicate Suppression. 28782 (line 54) 28783* gnus-duplicate-list-length: Duplicate Suppression. 28784 (line 50) 28785* gnus-duplicate-mark: Read Articles. (line 39) 28786* gnus-emphasis-alist: Article Fontisizing. (line 11) 28787* gnus-emphasis-bold: Article Fontisizing. (line 24) 28788* gnus-emphasis-bold-italic: Article Fontisizing. (line 24) 28789* gnus-emphasis-italic: Article Fontisizing. (line 24) 28790* gnus-emphasis-underline: Article Fontisizing. (line 24) 28791* gnus-emphasis-underline-bold: Article Fontisizing. (line 24) 28792* gnus-emphasis-underline-bold-italic: Article Fontisizing. (line 24) 28793* gnus-emphasis-underline-italic: Article Fontisizing. (line 24) 28794* gnus-empty-thread-mark: Other Marks. (line 50) 28795* gnus-enter-category-buffer: Group Agent Commands. 28796 (line 11) 28797* gnus-ephemeral-group-p: Gnus Utility Functions. 28798 (line 53) 28799* gnus-exit-gnus-hook: Exiting Gnus. (line 20) 28800* gnus-exit-group-hook: Exiting the Summary Buffer. 28801 (line 69) 28802* gnus-expert-user: Interactive. (line 14) 28803* gnus-expirable-mark: Read Articles. (line 48) 28804* gnus-extra-header: To From Newsgroups. (line 22) 28805* gnus-extra-headers: To From Newsgroups. (line 12) 28806* gnus-extract-address-components: Summary Buffer Format. 28807 (line 13) 28808* gnus-extract-address-components <1>: Summary Buffer Format. 28809 (line 13) 28810* gnus-face-0: Formatting Fonts. (line 12) 28811* gnus-face-from-file: Face. (line 26) 28812* gnus-face-properties-alist: X-Face. (line 43) 28813* gnus-fetch-group: Fetching a Group. (line 6) 28814* gnus-fetch-old-ephemeral-headers: Filling In Threads. (line 31) 28815* gnus-fetch-old-headers: Filling In Threads. (line 7) 28816* gnus-fetch-partial-articles: Article Commands. (line 13) 28817* gnus-file-save-name: Saving Articles. (line 106) 28818* gnus-find-method-for-group: Gnus Utility Functions. 28819 (line 14) 28820* gnus-find-subscribed-addresses: Group Parameters. (line 71) 28821* gnus-folder-save-name: Saving Articles. (line 128) 28822* gnus-folder-save-name <1>: Saving Articles. (line 128) 28823* gnus-Folder-save-name: Saving Articles. (line 128) 28824* gnus-forwarded-mark: Other Marks. (line 19) 28825* gnus-gather-threads-by-references: Loose Threads. (line 141) 28826* gnus-gather-threads-by-subject: Loose Threads. (line 137) 28827* gnus-gcc-externalize-attachments: Archived Messages. (line 120) 28828* gnus-gcc-mark-as-read: Archived Messages. (line 117) 28829* gnus-gcc-post-body-encode-hook: Archived Messages. (line 142) 28830* gnus-gcc-pre-body-encode-hook: Archived Messages. (line 141) 28831* gnus-gcc-self-resent-messages: Archived Messages. (line 127) 28832* gnus-generate-horizontal-tree: Tree Display. (line 81) 28833* gnus-generate-tree-function: Tree Display. (line 81) 28834* gnus-generate-vertical-tree: Tree Display. (line 81) 28835* gnus-get-info: Gnus Utility Functions. 28836 (line 25) 28837* gnus-get-new-news-hook: Scanning New Messages. 28838 (line 27) 28839* gnus-global-score-files: Global Score Files. (line 14) 28840* gnus-goto-colon: Positioning Point. (line 12) 28841* gnus-goto-next-group-when-activating: Scanning New Messages. 28842 (line 14) 28843* gnus-gravatar-properties: Gravatars. (line 18) 28844* gnus-gravatar-size: Gravatars. (line 13) 28845* gnus-gravatar-too-ugly: Gravatars. (line 22) 28846* gnus-group-add-to-virtual: Foreign Groups. (line 109) 28847* gnus-group-apropos: Listing Groups. (line 56) 28848* gnus-group-best-unread-group: Group Maneuvering. (line 40) 28849* gnus-group-browse-foreign-server: Finding the News. (line 41) 28850* gnus-group-browse-foreign-server <1>: Browse Foreign Server. 28851 (line 7) 28852* gnus-group-catchup-current: Group Data. (line 7) 28853* gnus-group-catchup-current-all: Group Data. (line 12) 28854* gnus-group-catchup-group-hook: Group Data. (line 7) 28855* gnus-group-charset-alist: Charsets. (line 14) 28856* gnus-group-check-bogus-groups: Group Maintenance. (line 7) 28857* gnus-group-clear-data: Changing Servers. (line 24) 28858* gnus-group-clear-data <1>: Group Data. (line 16) 28859* gnus-group-clear-data-on-native-groups: Changing Servers. (line 20) 28860* gnus-group-clear-data-on-native-groups <1>: Group Data. (line 20) 28861* gnus-group-compact-group: Misc Group Stuff. (line 56) 28862* gnus-group-customize: Foreign Groups. (line 39) 28863* gnus-group-default-list-level: Group Levels. (line 74) 28864* gnus-group-delete-group: Foreign Groups. (line 97) 28865* gnus-group-describe-all-groups: Group Information. (line 12) 28866* gnus-group-describe-briefly: Group Information. (line 20) 28867* gnus-group-describe-group: Group Information. (line 8) 28868* gnus-group-description-apropos: Listing Groups. (line 60) 28869* gnus-group-edit-global-kill: Kill Files. (line 46) 28870* gnus-group-edit-group: Foreign Groups. (line 50) 28871* gnus-group-edit-group-method: Foreign Groups. (line 42) 28872* gnus-group-edit-group-parameters: Foreign Groups. (line 46) 28873* gnus-group-edit-local-kill: Kill Files. (line 43) 28874* gnus-group-enter-directory: Foreign Groups. (line 62) 28875* gnus-group-enter-server-mode: Misc Group Stuff. (line 27) 28876* gnus-group-exit: Exiting Gnus. (line 14) 28877* gnus-group-expire-all-groups: Group Maintenance. (line 24) 28878* gnus-group-expire-articles: Group Maintenance. (line 18) 28879* gnus-group-find-new-groups: Group Maintenance. (line 11) 28880* gnus-group-find-parameter: Gnus Utility Functions. 28881 (line 73) 28882* gnus-group-first-unread-group: Group Maneuvering. (line 44) 28883* gnus-group-foreign-p: Gnus Utility Functions. 28884 (line 70) 28885* gnus-group-get-new-news: Scanning New Messages. 28886 (line 7) 28887* gnus-group-get-new-news-this-group: Scanning New Messages. 28888 (line 14) 28889* gnus-group-goto-unread: Group Maneuvering. (line 47) 28890* gnus-group-ham-exit-processor-BBDB: BBDB Whitelists. (line 29) 28891* gnus-group-ham-exit-processor-bogofilter: Bogofilter. (line 57) 28892* gnus-group-ham-exit-processor-spamoracle: SpamOracle. (line 76) 28893* gnus-group-ham-exit-processor-stat: Spam Statistics Filtering. 28894 (line 27) 28895* gnus-group-ham-exit-processor-whitelist: Blacklists and Whitelists. 28896 (line 42) 28897* gnus-group-highlight: Group Highlighting. (line 6) 28898* gnus-group-highlight-line: Group Highlighting. (line 65) 28899* gnus-group-highlight-words-alist: Article Fontisizing. (line 37) 28900* gnus-group-jump-to-group: Group Maneuvering. (line 35) 28901* gnus-group-kill-all-zombies: Subscription Commands. 28902 (line 41) 28903* gnus-group-kill-group: Subscription Commands. 28904 (line 25) 28905* gnus-group-kill-level: Subscription Commands. 28906 (line 44) 28907* gnus-group-kill-region: Subscription Commands. 28908 (line 38) 28909* gnus-group-line-format: Group Line Specification. 28910 (line 21) 28911* gnus-group-list-active: Listing Groups. (line 47) 28912* gnus-group-list-all-groups: Listing Groups. (line 19) 28913* gnus-group-list-all-matching: Listing Groups. (line 44) 28914* gnus-group-list-cached: Listing Groups. (line 64) 28915* gnus-group-list-dormant: Listing Groups. (line 67) 28916* gnus-group-list-flush: Listing Groups. (line 80) 28917* gnus-group-list-groups: Listing Groups. (line 10) 28918* gnus-group-list-inactive-groups: Group Levels. (line 79) 28919* gnus-group-list-killed: Listing Groups. (line 31) 28920* gnus-group-list-level: Listing Groups. (line 26) 28921* gnus-group-list-limit: Listing Groups. (line 73) 28922* gnus-group-list-matching: Listing Groups. (line 40) 28923* gnus-group-list-plus: Listing Groups. (line 83) 28924* gnus-group-list-ticked: Listing Groups. (line 70) 28925* gnus-group-list-zombies: Listing Groups. (line 37) 28926* gnus-group-mail: Misc Group Stuff. (line 39) 28927* gnus-group-make-directory-group: Foreign Groups. (line 54) 28928* gnus-group-make-doc-group: Foreign Groups. (line 67) 28929* gnus-group-make-empty-virtual: Foreign Groups. (line 105) 28930* gnus-group-make-group: Foreign Groups. (line 24) 28931* gnus-group-make-help-group: Foreign Groups. (line 59) 28932* gnus-group-make-rss-group: Foreign Groups. (line 93) 28933* gnus-group-make-useful-group: Foreign Groups. (line 78) 28934* gnus-group-make-web-group: Foreign Groups. (line 82) 28935* gnus-group-mark-buffer: Marking Groups. (line 30) 28936* gnus-group-mark-group: Marking Groups. (line 17) 28937* gnus-group-mark-regexp: Marking Groups. (line 33) 28938* gnus-group-mark-region: Marking Groups. (line 27) 28939* gnus-group-menu-hook: Highlighting and Menus. 28940 (line 62) 28941* gnus-group-mode-hook: Misc Group Stuff. (line 65) 28942* gnus-group-mode-line-format: Group Mode Line Specification. 28943 (line 6) 28944* gnus-group-name-charset-group-alist: Non-ASCII Group Names. 28945 (line 53) 28946* gnus-group-name-charset-method-alist: Non-ASCII Group Names. 28947 (line 24) 28948* gnus-group-native-p: Gnus Utility Functions. 28949 (line 64) 28950* gnus-group-news: Misc Group Stuff. (line 45) 28951* gnus-group-next-group: Group Maneuvering. (line 19) 28952* gnus-group-next-group <1>: Browse Foreign Server. 28953 (line 18) 28954* gnus-group-next-unread-group: Group Maneuvering. (line 10) 28955* gnus-group-next-unread-group-same-level: Group Maneuvering. (line 25) 28956* gnus-group-no-more-groups-hook: Exiting the Summary Buffer. 28957 (line 12) 28958* gnus-group-post-news: Misc Group Stuff. (line 31) 28959* gnus-group-posting-charset-alist: Charsets. (line 27) 28960* gnus-group-prefixed-name: Gnus Utility Functions. 28961 (line 21) 28962* gnus-group-prepare-hook: Misc Group Stuff. (line 68) 28963* gnus-group-prepared-hook: Misc Group Stuff. (line 72) 28964* gnus-group-prev-group: Group Maneuvering. (line 22) 28965* gnus-group-prev-group <1>: Browse Foreign Server. 28966 (line 21) 28967* gnus-group-prev-unread-group: Group Maneuvering. (line 15) 28968* gnus-group-prev-unread-group-same-level: Group Maneuvering. (line 29) 28969* gnus-group-quick-select-group: Selecting a Group. (line 32) 28970* gnus-group-quit: Exiting Gnus. (line 17) 28971* gnus-group-read-ephemeral-group: Foreign Groups. (line 29) 28972* gnus-group-read-group: Selecting a Group. (line 7) 28973* gnus-group-read-init-file: File Commands. (line 7) 28974* gnus-group-read-only-p: Gnus Utility Functions. 28975 (line 47) 28976* gnus-group-real-name: Gnus Utility Functions. 28977 (line 17) 28978* gnus-group-rename-group: Foreign Groups. (line 33) 28979* gnus-group-restart: Scanning New Messages. 28980 (line 23) 28981* gnus-group-save-newsrc: File Commands. (line 11) 28982* gnus-group-secondary-p: Gnus Utility Functions. 28983 (line 67) 28984* gnus-group-select-group: Selecting a Group. (line 25) 28985* gnus-group-select-group-ephemerally: Selecting a Group. (line 48) 28986* gnus-group-send-queue: Group Agent Commands. 28987 (line 18) 28988* gnus-group-set-current-level: Group Levels. (line 16) 28989* gnus-group-set-parameter: Gnus Utility Functions. 28990 (line 78) 28991* gnus-group-sort-by-alphabet: Sorting Groups. (line 11) 28992* gnus-group-sort-by-level: Sorting Groups. (line 17) 28993* gnus-group-sort-by-method: Sorting Groups. (line 31) 28994* gnus-group-sort-by-rank: Sorting Groups. (line 23) 28995* gnus-group-sort-by-real-name: Sorting Groups. (line 14) 28996* gnus-group-sort-by-score: Sorting Groups. (line 20) 28997* gnus-group-sort-by-server: Sorting Groups. (line 34) 28998* gnus-group-sort-by-unread: Sorting Groups. (line 28) 28999* gnus-group-sort-function: Sorting Groups. (line 6) 29000* gnus-group-sort-groups: Sorting Groups. (line 6) 29001* gnus-group-sort-groups-by-alphabet: Sorting Groups. (line 44) 29002* gnus-group-sort-groups-by-level: Sorting Groups. (line 52) 29003* gnus-group-sort-groups-by-method: Sorting Groups. (line 64) 29004* gnus-group-sort-groups-by-rank: Sorting Groups. (line 60) 29005* gnus-group-sort-groups-by-real-name: Sorting Groups. (line 68) 29006* gnus-group-sort-groups-by-score: Sorting Groups. (line 56) 29007* gnus-group-sort-groups-by-unread: Sorting Groups. (line 48) 29008* gnus-group-sort-selected-groups: Sorting Groups. (line 108) 29009* gnus-group-sort-selected-groups-by-alphabet: Sorting Groups. 29010 (line 80) 29011* gnus-group-sort-selected-groups-by-level: Sorting Groups. (line 88) 29012* gnus-group-sort-selected-groups-by-method: Sorting Groups. (line 100) 29013* gnus-group-sort-selected-groups-by-rank: Sorting Groups. (line 96) 29014* gnus-group-sort-selected-groups-by-real-name: Sorting Groups. 29015 (line 104) 29016* gnus-group-sort-selected-groups-by-score: Sorting Groups. (line 92) 29017* gnus-group-sort-selected-groups-by-unread: Sorting Groups. (line 84) 29018* gnus-group-spam-exit-processor-blacklist: Blacklists and Whitelists. 29019 (line 28) 29020* gnus-group-spam-exit-processor-bogofilter: Bogofilter. (line 43) 29021* gnus-group-spam-exit-processor-report-gmane: Gmane Spam Reporting. 29022 (line 6) 29023* gnus-group-spam-exit-processor-spamoracle: SpamOracle. (line 62) 29024* gnus-group-spam-exit-processor-stat: Spam Statistics Filtering. 29025 (line 14) 29026* gnus-group-split: Group Mail Splitting. 29027 (line 6) 29028* gnus-group-split-default-catch-all-group: Group Mail Splitting. 29029 (line 34) 29030* gnus-group-split-fancy: Group Mail Splitting. 29031 (line 70) 29032* gnus-group-split-setup: Group Mail Splitting. 29033 (line 86) 29034* gnus-group-split-update: Group Mail Splitting. 29035 (line 95) 29036* gnus-group-split-updated-hook: Group Mail Splitting. 29037 (line 109) 29038* gnus-group-suspend: Exiting Gnus. (line 9) 29039* gnus-group-toolbar: Gravatars. (line 53) 29040* gnus-group-transpose-groups: Subscription Commands. 29041 (line 32) 29042* gnus-group-uncollapsed-levels: Group Line Specification. 29043 (line 130) 29044* gnus-group-universal-argument: Marking Groups. (line 38) 29045* gnus-group-unmark-all-groups: Marking Groups. (line 24) 29046* gnus-group-unmark-group: Marking Groups. (line 21) 29047* gnus-group-unread: Gnus Utility Functions. 29048 (line 28) 29049* gnus-group-unsubscribe-current-group: Subscription Commands. 29050 (line 14) 29051* gnus-group-unsubscribe-group: Subscription Commands. 29052 (line 19) 29053* gnus-group-update-hook: Group Highlighting. (line 65) 29054* gnus-group-use-permanent-levels: Group Levels. (line 83) 29055* gnus-group-visible-select-group: Selecting a Group. (line 43) 29056* gnus-group-yank-group: Subscription Commands. 29057 (line 29) 29058* gnus-ham-process-destinations: Spam Package Introduction. 29059 (line 92) 29060* gnus-ham-process-destinations <1>: Spam and Ham Processors. 29061 (line 75) 29062* gnus-header-button-alist: Article Buttons. (line 55) 29063* gnus-header-face-alist: Article Highlighting. 29064 (line 15) 29065* gnus-hidden-properties: Various Various. (line 76) 29066* gnus-hierarchial-home-score-file: Home Score File. (line 47) 29067* gnus-home-adapt-file: Home Score File. (line 67) 29068* gnus-home-directory: Various Various. (line 7) 29069* gnus-home-score-file: Home Score File. (line 15) 29070* gnus-html-cache-directory: HTML. (line 43) 29071* gnus-html-cache-size: HTML. (line 48) 29072* gnus-html-frame-width: HTML. (line 52) 29073* gnus-html-prefetch-images: Asynchronous Fetching. 29074 (line 68) 29075* gnus-html-show-images: Article Display. (line 61) 29076* gnus-ignored-adaptive-words: Adaptive Scoring. (line 111) 29077* gnus-ignored-from-addresses: To From Newsgroups. (line 28) 29078* gnus-ignored-headers: Hiding Headers. (line 34) 29079* gnus-ignored-mime-types: MIME Commands. (line 112) 29080* gnus-ignored-newsgroups: The Active File. (line 10) 29081* gnus-info-find-node: Group Information. (line 23) 29082* gnus-info-find-node <1>: Summary Group Information. 29083 (line 16) 29084* gnus-info-group: Group Info. (line 57) 29085* gnus-info-level: Group Info. (line 65) 29086* gnus-info-marks: Group Info. (line 77) 29087* gnus-info-method: Group Info. (line 81) 29088* gnus-info-params: Group Info. (line 85) 29089* gnus-info-rank: Group Info. (line 61) 29090* gnus-info-read: Group Info. (line 73) 29091* gnus-info-score: Group Info. (line 69) 29092* gnus-info-set-group: Group Info. (line 57) 29093* gnus-info-set-level: Group Info. (line 65) 29094* gnus-info-set-marks: Group Info. (line 77) 29095* gnus-info-set-method: Group Info. (line 81) 29096* gnus-info-set-params: Group Info. (line 85) 29097* gnus-info-set-rank: Group Info. (line 61) 29098* gnus-info-set-read: Group Info. (line 73) 29099* gnus-info-set-score: Group Info. (line 69) 29100* gnus-inhibit-images: Misc Article. (line 93) 29101* gnus-inhibit-mime-unbuttonizing: MIME Commands. (line 161) 29102* gnus-inhibit-slow-scoring: Scoring On Other Headers. 29103 (line 12) 29104* gnus-inhibit-startup-message: Startup Variables. (line 39) 29105* gnus-inhibit-user-auto-expire: Expiring Mail. (line 176) 29106* gnus-init-file: Startup Files. (line 66) 29107* gnus-init-file <1>: File Commands. (line 7) 29108* gnus-insert-pseudo-articles: Viewing Files. (line 32) 29109* gnus-insert-random-x-face-header: X-Face. (line 74) 29110* gnus-interactive: Extended Interactive. 29111 (line 6) 29112* gnus-interactive-catchup: Interactive. (line 22) 29113* gnus-interactive-exit: Interactive. (line 26) 29114* gnus-invalid-group-regexp: Various Various. (line 90) 29115* gnus-jog-cache: Article Caching. (line 37) 29116* gnus-keep-backlog: Article Backlog. (line 15) 29117* gnus-keep-same-level: Group Levels. (line 65) 29118* gnus-kill-file-mark: Read Articles. (line 23) 29119* gnus-kill-file-mode-hook: Kill Files. (line 70) 29120* gnus-kill-file-name: Kill Files. (line 51) 29121* gnus-kill-files-directory: Score Variables. (line 20) 29122* gnus-kill-killed: Score Variables. (line 11) 29123* gnus-kill-save-kill-file: Kill Files. (line 57) 29124* gnus-kill-sticky-article-buffer: Sticky Articles. (line 31) 29125* gnus-kill-sticky-article-buffers: Sticky Articles. (line 35) 29126* gnus-kill-summary-on-exit: Exiting the Summary Buffer. 29127 (line 73) 29128* gnus-killed-mark: Read Articles. (line 20) 29129* gnus-large-ephemeral-newsgroup: Selecting a Group. (line 63) 29130* gnus-large-newsgroup: Selecting a Group. (line 54) 29131* gnus-level-default-subscribed: Group Levels. (line 59) 29132* gnus-level-default-unsubscribed: Group Levels. (line 59) 29133* gnus-level-killed: Group Levels. (line 20) 29134* gnus-level-subscribed: Group Levels. (line 20) 29135* gnus-level-unsubscribed: Group Levels. (line 20) 29136* gnus-level-zombie: Group Levels. (line 20) 29137* gnus-list-groups-with-ticked-articles: Listing Groups. (line 90) 29138* gnus-list-identifiers: Group Parameters. (line 349) 29139* gnus-list-identifiers <1>: Article Hiding. (line 27) 29140* gnus-list-identifiers <2>: Article Hiding. (line 34) 29141* gnus-load-hook: Startup Variables. (line 7) 29142* gnus-low-score-mark: Read Articles. (line 26) 29143* gnus-mail-save-name: Saving Articles. (line 101) 29144* gnus-mailing-list-archive: Mailing List. (line 32) 29145* gnus-mailing-list-groups: Mail and Post. (line 9) 29146* gnus-mailing-list-help: Mailing List. (line 13) 29147* gnus-mailing-list-insinuate: Mailing List. (line 6) 29148* gnus-mailing-list-mode: Group Parameters. (line 65) 29149* gnus-mailing-list-owner: Mailing List. (line 28) 29150* gnus-mailing-list-post: Mailing List. (line 25) 29151* gnus-mailing-list-subscribe: Mailing List. (line 17) 29152* gnus-mailing-list-unsubscribe: Mailing List. (line 21) 29153* gnus-make-predicate: Predicate Specifiers. 29154 (line 21) 29155* gnus-mark-article-hook: Choosing Variables. (line 21) 29156* gnus-mark-article-hook <1>: Expiring Mail. (line 64) 29157* gnus-mark-copied-or-moved-articles-as-expirable: Expiring Mail. 29158 (line 180) 29159* gnus-mark-unpicked-articles-as-read: Pick and Read. (line 55) 29160* gnus-max-image-proportion: HTML. (line 55) 29161* gnus-message-archive-group: Archived Messages. (line 49) 29162* gnus-message-archive-method: Archived Messages. (line 15) 29163* gnus-message-highlight-citation: Mail and Post. (line 49) 29164* gnus-message-replyencrypt: Signing and encrypting. 29165 (line 10) 29166* gnus-message-replysign: Signing and encrypting. 29167 (line 10) 29168* gnus-message-replysignencrypted: Signing and encrypting. 29169 (line 10) 29170* gnus-mime-action-on-part: Using MIME. (line 103) 29171* gnus-mime-buttonize-attachments-in-header: MIME Commands. (line 66) 29172* gnus-mime-copy-part: Using MIME. (line 66) 29173* gnus-mime-delete-part: Using MIME. (line 61) 29174* gnus-mime-display-attachment-buttons-in-header: MIME Commands. 29175 (line 66) 29176* gnus-mime-display-multipart-alternative-as-mixed: MIME Commands. 29177 (line 185) 29178* gnus-mime-display-multipart-as-mixed: MIME Commands. (line 197) 29179* gnus-mime-display-multipart-related-as-mixed: MIME Commands. 29180 (line 188) 29181* gnus-mime-inline-part: Using MIME. (line 80) 29182* gnus-mime-multipart-functions: MIME Commands. (line 182) 29183* gnus-mime-pipe-part: Using MIME. (line 100) 29184* gnus-mime-print-part: Using MIME. (line 76) 29185* gnus-mime-replace-part: Using MIME. (line 56) 29186* gnus-mime-save-part: Using MIME. (line 44) 29187* gnus-mime-save-part-and-strip: Using MIME. (line 48) 29188* gnus-mime-view-all-parts: MIME Commands. (line 106) 29189* gnus-mime-view-part: Using MIME. (line 31) 29190* gnus-mime-view-part-as-charset: Using MIME. (line 40) 29191* gnus-mime-view-part-as-type: Using MIME. (line 36) 29192* gnus-mime-view-part-externally: Using MIME. (line 96) 29193* gnus-mime-view-part-internally: Using MIME. (line 91) 29194* gnus-mode-non-string-length: Mode Lines. (line 13) 29195* gnus-mouse-face: Formatting Fonts. (line 6) 29196* gnus-mouse-face <1>: Highlighting and Menus. 29197 (line 52) 29198* gnus-move-split-methods: Mail Group Commands. (line 96) 29199* gnus-narrow-to-body: Gnus Utility Functions. 29200 (line 81) 29201* gnus-new-mail-mark: Group Line Specification. 29202 (line 136) 29203* gnus-news-group-p: Gnus Utility Functions. 29204 (line 50) 29205* gnus-newsgroup-ignored-charsets: Charsets. (line 18) 29206* gnus-newsgroup-maximum-articles: Selecting a Group. (line 66) 29207* gnus-newsgroup-name: Gnus Utility Functions. 29208 (line 11) 29209* gnus-newsgroup-variables: Various Summary Stuff. 29210 (line 65) 29211* gnus-nntpserver-file: Finding the News. (line 34) 29212* gnus-no-groups-message: Startup Variables. (line 45) 29213* gnus-no-server: The Server is Down. (line 18) 29214* gnus-not-empty-thread-mark: Other Marks. (line 50) 29215* gnus-nov-is-evil: Slow/Expensive Connection. 29216 (line 18) 29217* gnus-novice-user: Interactive. (line 7) 29218* gnus-numeric-save-name: Saving Articles. (line 106) 29219* gnus-Numeric-save-name: Saving Articles. (line 186) 29220* gnus-numeric-save-name <1>: Saving Articles. (line 189) 29221* gnus-options-not-subscribe: Filtering New Groups. 29222 (line 25) 29223* gnus-options-subscribe: Filtering New Groups. 29224 (line 25) 29225* gnus-other-frame: Starting Up. (line 16) 29226* gnus-outlook-deuglify-unwrap-max: Article Washing. (line 92) 29227* gnus-outlook-deuglify-unwrap-min: Article Washing. (line 92) 29228* gnus-page-delimiter: Misc Article. (line 82) 29229* gnus-parameters: Group Parameters. (line 375) 29230* gnus-parameters-case-fold-search: Group Parameters. (line 406) 29231* gnus-parse-headers-hook: Low-Level Threading. (line 7) 29232* gnus-parse-headers-hook <1>: Various Various. (line 81) 29233* gnus-part-display-hook: Customizing Articles. 29234 (line 179) 29235* gnus-permanently-visible-groups: Listing Groups. (line 85) 29236* gnus-permanently-visible-groups <1>: Misc Group Stuff. (line 76) 29237* gnus-pick-article-or-thread: Pick and Read. (line 19) 29238* gnus-pick-display-summary: Pick and Read. (line 40) 29239* gnus-pick-mode: Pick and Read. (line 11) 29240* gnus-pick-mode-hook: Pick and Read. (line 53) 29241* gnus-pick-next-page: Pick and Read. (line 28) 29242* gnus-pick-start-reading: Pick and Read. (line 40) 29243* gnus-pick-unmark-article-or-thread.: Pick and Read. (line 32) 29244* gnus-picon-databases: Picons. (line 20) 29245* gnus-picon-databases <1>: Picons. (line 40) 29246* gnus-picon-domain-directories: Picons. (line 54) 29247* gnus-picon-file-types: Picons. (line 59) 29248* gnus-picon-inhibit-top-level-domains: Picons. (line 63) 29249* gnus-picon-news-directories: Picons. (line 46) 29250* gnus-picon-properties: Picons. (line 34) 29251* gnus-picon-style: Picons. (line 30) 29252* gnus-picon-user-directories: Picons. (line 50) 29253* gnus-plain-save-name: Saving Articles. (line 92) 29254* gnus-Plain-save-name: Saving Articles. (line 192) 29255* gnus-plain-save-name <1>: Saving Articles. (line 195) 29256* gnus-post-method: Posting Server. (line 13) 29257* gnus-posting-styles: Posting Styles. (line 12) 29258* gnus-prefetched-article-deletion-strategy: Asynchronous Fetching. 29259 (line 76) 29260* gnus-preserve-marks: Mail Group Commands. (line 30) 29261* gnus-process-mark: Other Marks. (line 54) 29262* gnus-prompt-before-saving: Saving Articles. (line 75) 29263* gnus-ps-print-hook: Article Commands. (line 7) 29264* gnus-random-x-face: X-Face. (line 68) 29265* gnus-read-active-file: The Active File. (line 17) 29266* gnus-read-all-available-headers: Filling In Threads. (line 49) 29267* gnus-read-ephemeral-debian-bug-group: Foreign Groups. (line 131) 29268* gnus-read-ephemeral-emacs-bug-group: Foreign Groups. (line 125) 29269* gnus-read-mark: Read Articles. (line 13) 29270* gnus-read-method: Gnus Utility Functions. 29271 (line 91) 29272* gnus-read-newsrc-file: Startup Files. (line 24) 29273* gnus-refer-article-method: Finding the Parent. (line 55) 29274* gnus-refer-article-method <1>: Registry Article Refer Method. 29275 (line 11) 29276* gnus-refer-thread-limit: Finding the Parent. (line 37) 29277* gnus-registry-cache-file: Gnus Registry Setup. (line 74) 29278* gnus-registry-default-sort-function: Gnus Registry Setup. (line 66) 29279* gnus-registry-extra-entries-precious: Store arbitrary data. 29280 (line 15) 29281* gnus-registry-get-id-key: Store arbitrary data. 29282 (line 12) 29283* gnus-registry-mark-article: Store custom flags and keywords. 29284 (line 22) 29285* gnus-registry-marks: Store custom flags and keywords. 29286 (line 10) 29287* gnus-registry-max-entries: Gnus Registry Setup. (line 50) 29288* gnus-registry-prune-factor: Gnus Registry Setup. (line 55) 29289* gnus-registry-set-id-key: Store arbitrary data. 29290 (line 9) 29291* gnus-registry-split-strategy: Fancy splitting to parent. 29292 (line 41) 29293* gnus-registry-track-extra: Fancy splitting to parent. 29294 (line 31) 29295* gnus-registry-unfollowed-groups: Gnus Registry Setup. (line 42) 29296* gnus-replied-mark: Other Marks. (line 15) 29297* gnus-rmail-save-name: Saving Articles. (line 92) 29298* gnus-safe-html-newsgroups: Various Various. (line 100) 29299* gnus-save-all-headers: Saving Articles. (line 17) 29300* gnus-save-duplicate-list: Duplicate Suppression. 29301 (line 44) 29302* gnus-save-killed-list: Startup Files. (line 34) 29303* gnus-save-newsrc-file: Startup Files. (line 24) 29304* gnus-save-newsrc-hook: Startup Files. (line 52) 29305* gnus-save-quick-newsrc-hook: Startup Files. (line 52) 29306* gnus-save-score: Score Variables. (line 39) 29307* gnus-save-standard-newsrc-hook: Startup Files. (line 52) 29308* gnus-saved-headers: Saving Articles. (line 20) 29309* gnus-saved-mark: Other Marks. (line 25) 29310* gnus-score-after-write-file-function: Score Variables. (line 132) 29311* gnus-score-below-mark: Score Variables. (line 68) 29312* gnus-score-change-score-file: Summary Score Commands. 29313 (line 43) 29314* gnus-score-customize: Summary Score Commands. 29315 (line 60) 29316* gnus-score-decay-constant: Score Decays. (line 32) 29317* gnus-score-decay-scale: Score Decays. (line 32) 29318* gnus-score-edit-all-score: Group Score Commands. 29319 (line 9) 29320* gnus-score-edit-current-scores: Summary Score Commands. 29321 (line 47) 29322* gnus-score-edit-exit: Score File Editing. (line 14) 29323* gnus-score-edit-file: Summary Score Commands. 29324 (line 52) 29325* gnus-score-edit-insert-date: Score File Editing. (line 18) 29326* gnus-score-exact-adapt-limit: Adaptive Scoring. (line 87) 29327* gnus-score-expiry-days: Score Variables. (line 119) 29328* gnus-score-file-suffix: Score Variables. (line 25) 29329* gnus-score-find-bnews: Score Variables. (line 81) 29330* gnus-score-find-favorite-words: Summary Score Commands. 29331 (line 34) 29332* gnus-score-find-hierarchical: Score Variables. (line 99) 29333* gnus-score-find-score-files-function: Score Variables. (line 72) 29334* gnus-score-find-single: Score Variables. (line 78) 29335* gnus-score-find-trace: Summary Score Commands. 29336 (line 27) 29337* gnus-score-flush-cache: Summary Score Commands. 29338 (line 56) 29339* gnus-score-flush-cache <1>: Group Score Commands. 29340 (line 13) 29341* gnus-score-followup-article: Followups To Yourself. 29342 (line 14) 29343* gnus-score-followup-thread: Followups To Yourself. 29344 (line 18) 29345* gnus-score-interactive-default-score: Score Variables. (line 48) 29346* gnus-score-menu-hook: Highlighting and Menus. 29347 (line 74) 29348* gnus-score-mimic-keymap: Summary Score Commands. 29349 (line 199) 29350* gnus-score-mode-hook: Score File Editing. (line 30) 29351* gnus-score-over-mark: Score Variables. (line 64) 29352* gnus-score-pretty-print: Score File Editing. (line 23) 29353* gnus-score-search-global-directories: Global Score Files. (line 27) 29354* gnus-score-set-expunge-below: Summary Score Commands. 29355 (line 70) 29356* gnus-score-set-mark-below: Summary Score Commands. 29357 (line 66) 29358* gnus-score-thread-simplify: Score Variables. (line 135) 29359* gnus-score-uncacheable-files: Score Variables. (line 29) 29360* gnus-secondary-select-methods: Finding the News. (line 48) 29361* gnus-select-article-hook: Choosing Variables. (line 15) 29362* gnus-select-group-hook: Selecting a Group. (line 83) 29363* gnus-select-method: Finding the News. (line 15) 29364* gnus-selected-tree-face: Tree Display. (line 22) 29365* gnus-sender-save-name: Saving Articles. (line 198) 29366* gnus-server-add-server: Server Commands. (line 16) 29367* gnus-server-close-all-servers: Unavailable Servers. (line 44) 29368* gnus-server-close-server: Unavailable Servers. (line 32) 29369* gnus-server-compact-server: Server Commands. (line 53) 29370* gnus-server-copy-server: Server Commands. (line 37) 29371* gnus-server-copy-server <1>: Unavailable Servers. (line 52) 29372* gnus-server-deny-server: Unavailable Servers. (line 36) 29373* gnus-server-edit-server: Server Commands. (line 19) 29374* gnus-server-equal: Gnus Utility Functions. 29375 (line 59) 29376* gnus-server-exit: Server Commands. (line 28) 29377* gnus-server-kill-server: Server Commands. (line 31) 29378* gnus-server-line-format: Server Buffer Format. 29379 (line 6) 29380* gnus-server-list-servers: Server Commands. (line 40) 29381* gnus-server-menu-hook: Highlighting and Menus. 29382 (line 68) 29383* gnus-server-mode-hook: Server Buffer. (line 39) 29384* gnus-server-mode-line-format: Server Buffer Format. 29385 (line 25) 29386* gnus-server-offline-server: Unavailable Servers. (line 58) 29387* gnus-server-open-all-servers: Unavailable Servers. (line 40) 29388* gnus-server-open-server: Unavailable Servers. (line 28) 29389* gnus-server-read-server: Server Commands. (line 25) 29390* gnus-server-regenerate-server: Server Commands. (line 48) 29391* gnus-server-remove-denials: Unavailable Servers. (line 48) 29392* gnus-server-scan-server: Server Commands. (line 43) 29393* gnus-server-show-server: Server Commands. (line 22) 29394* gnus-server-to-method: Gnus Utility Functions. 29395 (line 56) 29396* gnus-server-unopen-status: Agent Variables. (line 84) 29397* gnus-server-yank-server: Server Commands. (line 34) 29398* gnus-set-active: Gnus Utility Functions. 29399 (line 35) 29400* gnus-setup-news-hook: Startup Variables. (line 26) 29401* gnus-shell-command-separator: Various Various. (line 87) 29402* gnus-show-all-headers: Hiding Headers. (line 9) 29403* gnus-show-threads: More Threading. (line 7) 29404* gnus-sieve-crosspost: Sieve Commands. (line 18) 29405* gnus-sieve-file: Sieve Commands. (line 12) 29406* gnus-sieve-file <1>: Sieve Commands. (line 35) 29407* gnus-sieve-file <2>: Sieve Commands. (line 39) 29408* gnus-sieve-generate: Sieve Commands. (line 35) 29409* gnus-sieve-region-end: Sieve Commands. (line 12) 29410* gnus-sieve-region-start: Sieve Commands. (line 12) 29411* gnus-sieve-update: Sieve Commands. (line 39) 29412* gnus-signature-face: Article Highlighting. 29413 (line 71) 29414* gnus-signature-limit: Article Signature. (line 27) 29415* gnus-signature-separator: Article Highlighting. 29416 (line 71) 29417* gnus-signature-separator <1>: Article Signature. (line 6) 29418* gnus-simplify-all-whitespace: Loose Threads. (line 114) 29419* gnus-simplify-ignored-prefixes: Loose Threads. (line 70) 29420* gnus-simplify-subject-functions: Loose Threads. (line 97) 29421* gnus-simplify-subject-fuzzy: Loose Threads. (line 108) 29422* gnus-simplify-subject-fuzzy-regexp: Loose Threads. (line 65) 29423* gnus-simplify-subject-re: Loose Threads. (line 105) 29424* gnus-simplify-whitespace: Loose Threads. (line 111) 29425* gnus-single-article-buffer: Misc Article. (line 7) 29426* gnus-site-init-file: Startup Files. (line 66) 29427* gnus-slave: Slave Gnusae. (line 22) 29428* gnus-smiley-file-types: Smileys. (line 38) 29429* gnus-sort-gathered-threads-function: More Threading. (line 50) 29430* gnus-sorted-header-list: Hiding Headers. (line 50) 29431* gnus-spam-mark: Spam and Ham Processors. 29432 (line 31) 29433* gnus-spam-newsgroup-contents: Spam and Ham Processors. 29434 (line 18) 29435* gnus-spam-process-destinations: Spam Package Introduction. 29436 (line 92) 29437* gnus-spam-process-destinations <1>: Spam and Ham Processors. 29438 (line 110) 29439* gnus-spam-process-newsgroups: Spam and Ham Processors. 29440 (line 6) 29441* gnus-sparse-mark: Read Articles. (line 35) 29442* gnus-split-methods: Saving Articles. (line 200) 29443* gnus-start-date-timer: Article Date. (line 33) 29444* gnus-started-hook: Startup Variables. (line 22) 29445* gnus-startup-file: Startup Files. (line 46) 29446* gnus-startup-hook: Startup Variables. (line 19) 29447* gnus-sticky-article: Sticky Articles. (line 21) 29448* gnus-stop-date-timer: Article Date. (line 33) 29449* gnus-subscribe-alphabetically: Subscription Methods. 29450 (line 25) 29451* gnus-subscribe-hierarchical-interactive: Subscription Methods. 29452 (line 57) 29453* gnus-subscribe-hierarchically: Subscription Methods. 29454 (line 28) 29455* gnus-subscribe-interactively: Subscription Methods. 29456 (line 37) 29457* gnus-subscribe-killed: Subscription Methods. 29458 (line 42) 29459* gnus-subscribe-newsgroup-method: Subscription Methods. 29460 (line 6) 29461* gnus-subscribe-options-newsgroup-method: Filtering New Groups. 29462 (line 12) 29463* gnus-subscribe-randomly: Subscription Methods. 29464 (line 21) 29465* gnus-subscribe-topics: Subscription Methods. 29466 (line 45) 29467* gnus-subscribe-zombies: Subscription Methods. 29468 (line 15) 29469* gnus-sum-thread-tree-false-root: Summary Buffer Lines. 29470 (line 79) 29471* gnus-sum-thread-tree-indent: Summary Buffer Lines. 29472 (line 90) 29473* gnus-sum-thread-tree-leaf-with-other: Summary Buffer Lines. 29474 (line 93) 29475* gnus-sum-thread-tree-root: Summary Buffer Lines. 29476 (line 75) 29477* gnus-sum-thread-tree-single-indent: Summary Buffer Lines. 29478 (line 83) 29479* gnus-sum-thread-tree-single-leaf: Summary Buffer Lines. 29480 (line 96) 29481* gnus-sum-thread-tree-vertical: Summary Buffer Lines. 29482 (line 87) 29483* gnus-summary-article-posted-p: Mail Group Commands. (line 80) 29484* gnus-summary-attach-article: Summary Message Commands. 29485 (line 13) 29486* gnus-summary-beginning-of-article: Paging the Article. (line 50) 29487* gnus-summary-best-unread-article: Choosing Commands. (line 60) 29488* gnus-summary-browse-url: Article Commands. (line 21) 29489* gnus-summary-bubble-group: Group Score. (line 20) 29490* gnus-summary-caesar-message: Article Washing. (line 34) 29491* gnus-summary-cancel-article: Canceling and Superseding. 29492 (line 11) 29493* gnus-summary-catchup: Setting Marks. (line 45) 29494* gnus-summary-catchup-all: Setting Marks. (line 48) 29495* gnus-summary-catchup-all-and-exit: Exiting the Summary Buffer. 29496 (line 31) 29497* gnus-summary-catchup-and-exit: Exiting the Summary Buffer. 29498 (line 27) 29499* gnus-summary-catchup-and-goto-next-group: Exiting the Summary Buffer. 29500 (line 35) 29501* gnus-summary-catchup-and-goto-prev-group: Exiting the Summary Buffer. 29502 (line 39) 29503* gnus-summary-catchup-from-here: Setting Marks. (line 56) 29504* gnus-summary-catchup-to-here: Setting Marks. (line 52) 29505* gnus-summary-check-current: Summary Maneuvering. (line 58) 29506* gnus-summary-clear-above: Setting Marks. (line 81) 29507* gnus-summary-clear-mark-forward: Setting Marks. (line 10) 29508* gnus-summary-copy-article: Mail Group Commands. (line 35) 29509* gnus-summary-create-article: Mail Group Commands. (line 51) 29510* gnus-summary-crosspost-article: Mail Group Commands. (line 40) 29511* gnus-summary-current-score: Summary Score Commands. 29512 (line 23) 29513* gnus-summary-customize-parameters: Really Various Summary Commands. 29514 (line 59) 29515* gnus-summary-default-score: Score Variables. (line 55) 29516* gnus-summary-delete-article: Mail Group Commands. (line 25) 29517* gnus-summary-describe-briefly: Summary Group Information. 29518 (line 12) 29519* gnus-summary-describe-group: Summary Group Information. 29520 (line 7) 29521* gnus-summary-display-arrow: Various Summary Stuff. 29522 (line 19) 29523* gnus-summary-display-while-building: Various Summary Stuff. 29524 (line 13) 29525* gnus-summary-down-thread: Thread Commands. (line 73) 29526* gnus-summary-dummy-line-format: Loose Threads. (line 24) 29527* gnus-summary-edit-article: Mail Group Commands. (line 65) 29528* gnus-summary-edit-article-done: Mail Group Commands. (line 65) 29529* gnus-summary-edit-global-kill: Kill Files. (line 38) 29530* gnus-summary-edit-local-kill: Kill Files. (line 35) 29531* gnus-summary-edit-parameters: Really Various Summary Commands. 29532 (line 55) 29533* gnus-summary-end-of-article: Paging the Article. (line 55) 29534* gnus-summary-enter-digest-group: Really Various Summary Commands. 29535 (line 8) 29536* gnus-summary-execute-command: Searching for Articles. 29537 (line 23) 29538* gnus-summary-exit: Exiting the Summary Buffer. 29539 (line 12) 29540* gnus-summary-exit-hook: Exiting the Summary Buffer. 29541 (line 12) 29542* gnus-summary-exit-no-update: Exiting the Summary Buffer. 29543 (line 22) 29544* gnus-summary-expand-window: Really Various Summary Commands. 29545 (line 51) 29546* gnus-summary-expire-articles: Mail Group Commands. (line 13) 29547* gnus-summary-expire-articles-now: Mail Group Commands. (line 19) 29548* gnus-summary-expunge-below: Score Variables. (line 58) 29549* gnus-summary-first-unread-article: Choosing Commands. (line 55) 29550* gnus-summary-followup: Summary Post Commands. 29551 (line 16) 29552* gnus-summary-followup-to-mail: Summary Post Commands. 29553 (line 25) 29554* gnus-summary-followup-to-mail-with-original: Summary Post Commands. 29555 (line 29) 29556* gnus-summary-followup-with-original: Summary Post Commands. 29557 (line 20) 29558* gnus-summary-force-verify-and-decrypt: Article Washing. (line 212) 29559* gnus-summary-gather-exclude-subject: Loose Threads. (line 119) 29560* gnus-summary-gather-subject-limit: Loose Threads. (line 49) 29561* gnus-summary-generate-hook: Various Summary Stuff. 29562 (line 26) 29563* gnus-summary-goto-article: Choosing Commands. (line 79) 29564* gnus-summary-goto-last-article: Choosing Commands. (line 67) 29565* gnus-summary-goto-subject: Summary Maneuvering. (line 22) 29566* gnus-summary-goto-unread: Setting Marks. (line 93) 29567* gnus-summary-goto-unread <1>: Process/Prefix. (line 37) 29568* gnus-summary-hide-all-threads: Thread Commands. (line 44) 29569* gnus-summary-hide-thread: Thread Commands. (line 38) 29570* gnus-summary-highlight: Summary Highlighting. 29571 (line 20) 29572* gnus-summary-idna-message: Article Washing. (line 49) 29573* gnus-summary-ignore-duplicates: Various Summary Stuff. 29574 (line 42) 29575* gnus-summary-import-article: Mail Group Commands. (line 46) 29576* gnus-summary-increase-score: Summary Score Commands. 29577 (line 78) 29578* gnus-summary-insert-cached-articles: Summary Generation Commands. 29579 (line 10) 29580* gnus-summary-insert-dormant-articles: Summary Generation Commands. 29581 (line 14) 29582* gnus-summary-insert-new-articles: Limiting. (line 141) 29583* gnus-summary-insert-old-articles: Limiting. (line 145) 29584* gnus-summary-insert-ticked-articles: Summary Generation Commands. 29585 (line 18) 29586* gnus-summary-isearch-article: Paging the Article. (line 59) 29587* gnus-summary-kill-below: Setting Marks. (line 64) 29588* gnus-summary-kill-process-mark: Setting Process Marks. 29589 (line 71) 29590* gnus-summary-kill-same-subject: Setting Marks. (line 41) 29591* gnus-summary-kill-same-subject-and-select: Setting Marks. (line 35) 29592* gnus-summary-kill-thread: Thread Commands. (line 8) 29593* gnus-summary-limit-exclude-childless-dormant: Limiting. (line 119) 29594* gnus-summary-limit-exclude-dormant: Limiting. (line 109) 29595* gnus-summary-limit-exclude-marks: Limiting. (line 113) 29596* gnus-summary-limit-include-cached: Limiting. (line 105) 29597* gnus-summary-limit-include-dormant: Limiting. (line 101) 29598* gnus-summary-limit-include-expunged: Limiting. (line 97) 29599* gnus-summary-limit-include-thread: Limiting. (line 116) 29600* gnus-summary-limit-mark-excluded-as-read: Limiting. (line 123) 29601* gnus-summary-limit-to-address: Limiting. (line 32) 29602* gnus-summary-limit-to-age: Limiting. (line 60) 29603* gnus-summary-limit-to-articles: Limiting. (line 66) 29604* gnus-summary-limit-to-author: Limiting. (line 22) 29605* gnus-summary-limit-to-bodies: Limiting. (line 128) 29606* gnus-summary-limit-to-display-predicate: Limiting. (line 85) 29607* gnus-summary-limit-to-extra: Limiting. (line 43) 29608* gnus-summary-limit-to-headers: Limiting. (line 134) 29609* gnus-summary-limit-to-marks: Limiting. (line 56) 29610* gnus-summary-limit-to-recipient: Limiting. (line 27) 29611* gnus-summary-limit-to-replied: Limiting. (line 91) 29612* gnus-summary-limit-to-score: Limiting. (line 80) 29613* gnus-summary-limit-to-singletons: Limiting. (line 38) 29614* gnus-summary-limit-to-subject: Limiting. (line 17) 29615* gnus-summary-limit-to-unread: Limiting. (line 50) 29616* gnus-summary-limit-to-unseen: Limiting. (line 76) 29617* gnus-summary-line-format: Summary Buffer Lines. 29618 (line 6) 29619* gnus-summary-line-format <1>: To From Newsgroups. (line 46) 29620* gnus-summary-lower-score: Summary Score Commands. 29621 (line 78) 29622* gnus-summary-lower-thread: Thread Commands. (line 15) 29623* gnus-summary-mail-crosspost-complaint: Summary Mail Commands. 29624 (line 137) 29625* gnus-summary-mail-forward: Summary Mail Commands. 29626 (line 65) 29627* gnus-summary-mail-other-window: Summary Mail Commands. 29628 (line 79) 29629* gnus-summary-mail-toolbar: Gravatars. (line 59) 29630* gnus-summary-make-false-root: Loose Threads. (line 7) 29631* gnus-summary-make-false-root-always: Loose Threads. (line 24) 29632* gnus-summary-mark-above: Setting Marks. (line 89) 29633* gnus-summary-mark-as-dormant: Setting Marks. (line 21) 29634* gnus-summary-mark-as-expirable: Setting Marks. (line 69) 29635* gnus-summary-mark-as-processable: Setting Process Marks. 29636 (line 14) 29637* gnus-summary-mark-as-read-backward: Setting Marks. (line 30) 29638* gnus-summary-mark-as-read-forward: Setting Marks. (line 26) 29639* gnus-summary-mark-as-spam: Spam Package Introduction. 29640 (line 80) 29641* gnus-summary-mark-as-spam <1>: Spam Package Introduction. 29642 (line 80) 29643* gnus-summary-mark-below: Scoring. (line 11) 29644* gnus-summary-mark-read-and-unread-as-read: Choosing Variables. 29645 (line 21) 29646* gnus-summary-mark-region-as-read: Setting Marks. (line 60) 29647* gnus-summary-mark-unread-as-read: Choosing Variables. (line 21) 29648* gnus-summary-menu-hook: Highlighting and Menus. 29649 (line 65) 29650* gnus-summary-mode-hook: Various Summary Stuff. 29651 (line 23) 29652* gnus-summary-mode-line-format: Summary Buffer Mode Line. 29653 (line 6) 29654* gnus-summary-morse-message: Article Washing. (line 46) 29655* gnus-summary-move-article: Mail Group Commands. (line 30) 29656* gnus-summary-muttprint: Saving Articles. (line 70) 29657* gnus-summary-muttprint-program: Saving Articles. (line 70) 29658* gnus-summary-news-other-window: Summary Mail Commands. 29659 (line 85) 29660* gnus-summary-next-article: Choosing Commands. (line 30) 29661* gnus-summary-next-group: Exiting the Summary Buffer. 29662 (line 55) 29663* gnus-summary-next-group-on-exit: Group Maneuvering. (line 51) 29664* gnus-summary-next-page: Choosing Commands. (line 13) 29665* gnus-summary-next-page <1>: Paging the Article. (line 7) 29666* gnus-summary-next-same-subject: Choosing Commands. (line 46) 29667* gnus-summary-next-thread: Thread Commands. (line 65) 29668* gnus-summary-next-unread-article: Choosing Commands. (line 22) 29669* gnus-summary-next-unread-subject: Summary Maneuvering. (line 13) 29670* gnus-summary-next-unseen-article: Choosing Commands. (line 38) 29671* gnus-summary-pick-line-format: Pick and Read. (line 58) 29672* gnus-summary-pipe-output: Saving Articles. (line 60) 29673* gnus-summary-pipe-output-default-command: Saving Articles. (line 60) 29674* gnus-summary-pop-article: Choosing Commands. (line 70) 29675* gnus-summary-pop-limit: Limiting. (line 71) 29676* gnus-summary-post-forward: Summary Post Commands. 29677 (line 35) 29678* gnus-summary-post-news: Summary Post Commands. 29679 (line 10) 29680* gnus-summary-prepare: Summary Generation Commands. 29681 (line 7) 29682* gnus-summary-prepare-exit-hook: Exiting the Summary Buffer. 29683 (line 12) 29684* gnus-summary-prepare-hook: Various Summary Stuff. 29685 (line 33) 29686* gnus-summary-prepared-hook: Various Summary Stuff. 29687 (line 38) 29688* gnus-summary-prev-article: Choosing Commands. (line 34) 29689* gnus-summary-prev-group: Exiting the Summary Buffer. 29690 (line 59) 29691* gnus-summary-prev-page: Paging the Article. (line 19) 29692* gnus-summary-prev-same-subject: Choosing Commands. (line 50) 29693* gnus-summary-prev-thread: Thread Commands. (line 70) 29694* gnus-summary-prev-unread-article: Choosing Commands. (line 26) 29695* gnus-summary-prev-unread-subject: Summary Maneuvering. (line 18) 29696* gnus-summary-prev-unseen-article: Choosing Commands. (line 42) 29697* gnus-summary-print-article: Article Commands. (line 7) 29698* gnus-summary-raise-thread: Thread Commands. (line 19) 29699* gnus-summary-read-document: Really Various Summary Commands. 29700 (line 37) 29701* gnus-summary-refer-article: Finding the Parent. (line 44) 29702* gnus-summary-refer-parent-article: Finding the Parent. (line 7) 29703* gnus-summary-refer-references: Finding the Parent. (line 24) 29704* gnus-summary-refer-thread: Finding the Parent. (line 28) 29705* gnus-summary-remove-bookmark: Setting Marks. (line 77) 29706* gnus-summary-repair-multipart: MIME Commands. (line 76) 29707* gnus-summary-reparent-children: Thread Commands. (line 56) 29708* gnus-summary-reparent-thread: Thread Commands. (line 52) 29709* gnus-summary-repeat-search-article-backward: Searching for Articles. 29710 (line 19) 29711* gnus-summary-repeat-search-article-forward: Searching for Articles. 29712 (line 15) 29713* gnus-summary-reply: Summary Mail Commands. 29714 (line 10) 29715* gnus-summary-reply-broken-reply-to: Summary Mail Commands. 29716 (line 51) 29717* gnus-summary-reply-broken-reply-to-with-original: Summary Mail Commands. 29718 (line 59) 29719* gnus-summary-reply-to-list-with-original: Summary Mail Commands. 29720 (line 33) 29721* gnus-summary-reply-with-original: Summary Mail Commands. 29722 (line 15) 29723* gnus-summary-rescan-group: Exiting the Summary Buffer. 29724 (line 50) 29725* gnus-summary-rescore: Summary Score Commands. 29726 (line 37) 29727* gnus-summary-reselect-current-group: Exiting the Summary Buffer. 29728 (line 44) 29729* gnus-summary-resend-bounced-mail: Summary Mail Commands. 29730 (line 96) 29731* gnus-summary-resend-message: Summary Mail Commands. 29732 (line 107) 29733* gnus-summary-resend-message-edit: Summary Mail Commands. 29734 (line 126) 29735* gnus-summary-respool-article: Mail Group Commands. (line 56) 29736* gnus-summary-respool-default-method: Mail Group Commands. (line 56) 29737* gnus-summary-respool-query: Mail Group Commands. (line 71) 29738* gnus-summary-respool-trace: Mail Group Commands. (line 76) 29739* gnus-summary-rethread-current: Thread Commands. (line 47) 29740* gnus-summary-same-subject: Summary Buffer Format. 29741 (line 25) 29742* gnus-summary-save-article: Saving Articles. (line 26) 29743* gnus-summary-save-article-body-file: Saving Articles. (line 47) 29744* gnus-summary-save-article-file: Saving Articles. (line 39) 29745* gnus-summary-save-article-folder: Saving Articles. (line 51) 29746* gnus-summary-save-article-mail: Saving Articles. (line 30) 29747* gnus-summary-save-article-rmail: Saving Articles. (line 34) 29748* gnus-summary-save-article-vm: Saving Articles. (line 55) 29749* gnus-summary-save-body-in-file: Saving Articles. (line 117) 29750* gnus-summary-save-in-file: Saving Articles. (line 106) 29751* gnus-summary-save-in-folder: Saving Articles. (line 128) 29752* gnus-summary-save-in-mail: Saving Articles. (line 101) 29753* gnus-summary-save-in-pipe: Saving Articles. (line 139) 29754* gnus-summary-save-in-rmail: Saving Articles. (line 92) 29755* gnus-summary-save-in-vm: Saving Articles. (line 135) 29756* gnus-summary-save-newsrc: Exiting the Summary Buffer. 29757 (line 63) 29758* gnus-summary-save-parts: MIME Commands. (line 82) 29759* gnus-summary-save-process-mark: Setting Process Marks. 29760 (line 79) 29761* gnus-summary-scroll-down: Paging the Article. (line 27) 29762* gnus-summary-scroll-up: Paging the Article. (line 23) 29763* gnus-summary-search-article-backward: Searching for Articles. 29764 (line 11) 29765* gnus-summary-search-article-forward: Searching for Articles. 29766 (line 7) 29767* gnus-summary-select-article-buffer: Paging the Article. (line 63) 29768* gnus-summary-selected-face: Summary Highlighting. 29769 (line 16) 29770* gnus-summary-set-bookmark: Setting Marks. (line 73) 29771* gnus-summary-set-score: Summary Score Commands. 29772 (line 20) 29773* gnus-summary-show-all-threads: Thread Commands. (line 41) 29774* gnus-summary-show-article: Paging the Article. (line 32) 29775* gnus-summary-show-article-charset-alist: Paging the Article. 29776 (line 32) 29777* gnus-summary-show-complete-article: Article Commands. (line 13) 29778* gnus-summary-show-thread: Thread Commands. (line 34) 29779* gnus-summary-sort-by-author: Summary Sorting. (line 17) 29780* gnus-summary-sort-by-chars: Summary Sorting. (line 35) 29781* gnus-summary-sort-by-date: Summary Sorting. (line 26) 29782* gnus-summary-sort-by-lines: Summary Sorting. (line 32) 29783* gnus-summary-sort-by-marks: Summary Sorting. (line 38) 29784* gnus-summary-sort-by-most-recent-date: Summary Sorting. (line 29) 29785* gnus-summary-sort-by-most-recent-number: Summary Sorting. (line 13) 29786* gnus-summary-sort-by-number: Summary Sorting. (line 10) 29787* gnus-summary-sort-by-original: Summary Sorting. (line 47) 29788* gnus-summary-sort-by-random: Summary Sorting. (line 44) 29789* gnus-summary-sort-by-recipient: Summary Sorting. (line 20) 29790* gnus-summary-sort-by-schedule: Diary Articles Sorting. 29791 (line 6) 29792* gnus-summary-sort-by-score: Summary Sorting. (line 41) 29793* gnus-summary-sort-by-subject: Summary Sorting. (line 23) 29794* gnus-summary-stop-at-end-of-message: Summary Maneuvering. (line 75) 29795* gnus-summary-stop-page-breaking: Article Washing. (line 29) 29796* gnus-summary-supersede-article: Canceling and Superseding. 29797 (line 32) 29798* gnus-summary-thread-gathering-function: Loose Threads. (line 127) 29799* gnus-summary-tick-above: Setting Marks. (line 85) 29800* gnus-summary-tick-article-forward: Setting Marks. (line 16) 29801* gnus-summary-toggle-display-buttonized: MIME Commands. (line 87) 29802* gnus-summary-toggle-header: Article Washing. (line 58) 29803* gnus-summary-toggle-threads: Thread Commands. (line 31) 29804* gnus-summary-toggle-truncation: Really Various Summary Commands. 29805 (line 45) 29806* gnus-summary-toolbar: Gravatars. (line 56) 29807* gnus-summary-top-thread: Thread Commands. (line 79) 29808* gnus-summary-universal-argument: Searching for Articles. 29809 (line 34) 29810* gnus-summary-unmark-all-processable: Setting Process Marks. 29811 (line 23) 29812* gnus-summary-unmark-as-processable: Setting Process Marks. 29813 (line 15) 29814* gnus-summary-up-thread: Thread Commands. (line 76) 29815* gnus-summary-update-hook: Summary Highlighting. 29816 (line 12) 29817* gnus-summary-verbose-headers: Article Washing. (line 62) 29818* gnus-summary-very-wide-reply: Summary Mail Commands. 29819 (line 38) 29820* gnus-summary-very-wide-reply-with-original: Summary Mail Commands. 29821 (line 45) 29822* gnus-summary-wake-up-the-dead: Exiting the Summary Buffer. 29823 (line 73) 29824* gnus-summary-wide-reply: Summary Mail Commands. 29825 (line 20) 29826* gnus-summary-wide-reply-with-original: Summary Mail Commands. 29827 (line 27) 29828* gnus-summary-write-article-file: Saving Articles. (line 43) 29829* gnus-summary-write-body-to-file: Saving Articles. (line 122) 29830* gnus-summary-write-to-file: Saving Articles. (line 111) 29831* gnus-summary-yank-message: Summary Message Commands. 29832 (line 7) 29833* gnus-summary-yank-process-mark: Setting Process Marks. 29834 (line 75) 29835* gnus-summary-zcore-fuzz: Summary Buffer Lines. 29836 (line 122) 29837* gnus-supercite-regexp: Article Highlighting. 29838 (line 45) 29839* gnus-supercite-secondary-regexp: Article Highlighting. 29840 (line 48) 29841* gnus-suppress-duplicates: Duplicate Suppression. 29842 (line 41) 29843* gnus-suspend-gnus-hook: Exiting Gnus. (line 20) 29844* gnus-symbolic-argument: Symbolic Prefixes. (line 19) 29845* gnus-thread-expunge-below: More Threading. (line 30) 29846* gnus-thread-hide-killed: More Threading. (line 36) 29847* gnus-thread-hide-subtree: More Threading. (line 13) 29848* gnus-thread-ignore-subject: More Threading. (line 40) 29849* gnus-thread-indent-level: More Threading. (line 46) 29850* gnus-thread-operation-ignore-subject: Thread Commands. (line 81) 29851* gnus-thread-score-function: Sorting the Summary Buffer. 29852 (line 59) 29853* gnus-thread-sort-by-author: Sorting the Summary Buffer. 29854 (line 6) 29855* gnus-thread-sort-by-date: Sorting the Summary Buffer. 29856 (line 6) 29857* gnus-thread-sort-by-most-recent-date: Sorting the Summary Buffer. 29858 (line 6) 29859* gnus-thread-sort-by-most-recent-number: Sorting the Summary Buffer. 29860 (line 6) 29861* gnus-thread-sort-by-number: Sorting the Summary Buffer. 29862 (line 6) 29863* gnus-thread-sort-by-random: Sorting the Summary Buffer. 29864 (line 6) 29865* gnus-thread-sort-by-recipient: Sorting the Summary Buffer. 29866 (line 6) 29867* gnus-thread-sort-by-schedule: Diary Articles Sorting. 29868 (line 6) 29869* gnus-thread-sort-by-score: Sorting the Summary Buffer. 29870 (line 6) 29871* gnus-thread-sort-by-subject: Sorting the Summary Buffer. 29872 (line 6) 29873* gnus-thread-sort-by-total-score: Sorting the Summary Buffer. 29874 (line 6) 29875* gnus-thread-sort-functions: Sorting the Summary Buffer. 29876 (line 6) 29877* gnus-ticked-mark: Unread Articles. (line 10) 29878* gnus-toolbar-thickness: Gravatars. (line 47) 29879* gnus-topic-copy-group: Topic Commands. (line 82) 29880* gnus-topic-copy-matching: Topic Commands. (line 111) 29881* gnus-topic-create-topic: Topic Commands. (line 21) 29882* gnus-topic-delete: Topic Commands. (line 137) 29883* gnus-topic-display-empty-topics: Topic Variables. (line 34) 29884* gnus-topic-edit-parameters: Topic Commands. (line 150) 29885* gnus-topic-expire-articles: Topic Commands. (line 129) 29886* gnus-topic-goto-next-topic: Topic Commands. (line 144) 29887* gnus-topic-goto-previous-topic: Topic Commands. (line 147) 29888* gnus-topic-hide-topic: Topic Commands. (line 87) 29889* gnus-topic-indent: Topic Commands. (line 26) 29890* gnus-topic-indent-level: Topic Variables. (line 28) 29891* gnus-topic-jump-to-topic: Topic Commands. (line 79) 29892* gnus-topic-kill-group: Topic Commands. (line 40) 29893* gnus-topic-line-format: Topic Variables. (line 9) 29894* gnus-topic-list-active: Topic Commands. (line 140) 29895* gnus-topic-mark-topic: Topic Commands. (line 119) 29896* gnus-topic-mode: Group Topics. (line 26) 29897* gnus-topic-mode-hook: Topic Variables. (line 32) 29898* gnus-topic-move-group: Topic Commands. (line 74) 29899* gnus-topic-move-matching: Topic Commands. (line 107) 29900* gnus-topic-remove-group: Topic Commands. (line 95) 29901* gnus-topic-rename: Topic Commands. (line 134) 29902* gnus-topic-select-group: Topic Commands. (line 62) 29903* gnus-topic-show-topic: Topic Commands. (line 91) 29904* gnus-topic-sort-groups: Topic Sorting. (line 38) 29905* gnus-topic-sort-groups-by-alphabet: Topic Sorting. (line 10) 29906* gnus-topic-sort-groups-by-level: Topic Sorting. (line 18) 29907* gnus-topic-sort-groups-by-method: Topic Sorting. (line 30) 29908* gnus-topic-sort-groups-by-rank: Topic Sorting. (line 26) 29909* gnus-topic-sort-groups-by-score: Topic Sorting. (line 22) 29910* gnus-topic-sort-groups-by-server: Topic Sorting. (line 34) 29911* gnus-topic-sort-groups-by-unread: Topic Sorting. (line 14) 29912* gnus-topic-toggle-display-empty-topics: Topic Commands. (line 115) 29913* gnus-topic-topology: Topic Topology. (line 28) 29914* gnus-topic-unindent: Topic Commands. (line 31) 29915* gnus-topic-unmark-topic: Topic Commands. (line 124) 29916* gnus-topic-yank-group: Topic Commands. (line 44) 29917* gnus-total-expirable-newsgroups: Expiring Mail. (line 161) 29918* gnus-treat-body-boundary: Customizing Articles. 29919 (line 61) 29920* gnus-treat-buttonize: Customizing Articles. 29921 (line 61) 29922* gnus-treat-buttonize-head: Customizing Articles. 29923 (line 61) 29924* gnus-treat-capitalize-sentences: Customizing Articles. 29925 (line 61) 29926* gnus-treat-date: Customizing Articles. 29927 (line 61) 29928* gnus-treat-display-face: Customizing Articles. 29929 (line 61) 29930* gnus-treat-display-face <1>: Customizing Articles. 29931 (line 145) 29932* gnus-treat-display-smileys: Customizing Articles. 29933 (line 61) 29934* gnus-treat-display-x-face: Customizing Articles. 29935 (line 61) 29936* gnus-treat-display-x-face <1>: Customizing Articles. 29937 (line 141) 29938* gnus-treat-emphasize: Customizing Articles. 29939 (line 61) 29940* gnus-treat-emphasize <1>: Customizing Articles. 29941 (line 149) 29942* gnus-treat-fill-article: Customizing Articles. 29943 (line 61) 29944* gnus-treat-fill-article <1>: Customizing Articles. 29945 (line 150) 29946* gnus-treat-fill-long-lines: Customizing Articles. 29947 (line 61) 29948* gnus-treat-fill-long-lines <1>: Customizing Articles. 29949 (line 151) 29950* gnus-treat-fold-headers: Customizing Articles. 29951 (line 61) 29952* gnus-treat-fold-headers <1>: Customizing Articles. 29953 (line 173) 29954* gnus-treat-fold-newsgroups: Customizing Articles. 29955 (line 61) 29956* gnus-treat-fold-newsgroups <1>: Customizing Articles. 29957 (line 174) 29958* gnus-treat-from-gravatar: Customizing Articles. 29959 (line 61) 29960* gnus-treat-from-gravatar <1>: Article Display. (line 50) 29961* gnus-treat-from-picon: Customizing Articles. 29962 (line 61) 29963* gnus-treat-from-picon <1>: Article Display. (line 39) 29964* gnus-treat-hide-boring-headers: Customizing Articles. 29965 (line 61) 29966* gnus-treat-hide-boring-headers <1>: Customizing Articles. 29967 (line 152) 29968* gnus-treat-hide-citation: Customizing Articles. 29969 (line 61) 29970* gnus-treat-hide-citation <1>: Customizing Articles. 29971 (line 153) 29972* gnus-treat-hide-citation-maybe: Customizing Articles. 29973 (line 61) 29974* gnus-treat-hide-citation-maybe <1>: Customizing Articles. 29975 (line 154) 29976* gnus-treat-hide-headers: Customizing Articles. 29977 (line 61) 29978* gnus-treat-hide-headers <1>: Customizing Articles. 29979 (line 155) 29980* gnus-treat-hide-signature: Customizing Articles. 29981 (line 61) 29982* gnus-treat-hide-signature <1>: Customizing Articles. 29983 (line 156) 29984* gnus-treat-highlight-citation: Customizing Articles. 29985 (line 61) 29986* gnus-treat-highlight-citation <1>: Customizing Articles. 29987 (line 162) 29988* gnus-treat-highlight-headers: Customizing Articles. 29989 (line 61) 29990* gnus-treat-highlight-headers <1>: Customizing Articles. 29991 (line 163) 29992* gnus-treat-highlight-signature: Customizing Articles. 29993 (line 61) 29994* gnus-treat-highlight-signature <1>: Customizing Articles. 29995 (line 164) 29996* gnus-treat-leading-whitespace: Customizing Articles. 29997 (line 61) 29998* gnus-treat-leading-whitespace <1>: Customizing Articles. 29999 (line 175) 30000* gnus-treat-mail-gravatar: Customizing Articles. 30001 (line 61) 30002* gnus-treat-mail-gravatar <1>: Article Display. (line 53) 30003* gnus-treat-mail-picon: Customizing Articles. 30004 (line 61) 30005* gnus-treat-mail-picon <1>: Article Display. (line 42) 30006* gnus-treat-newsgroups-picon: Customizing Articles. 30007 (line 61) 30008* gnus-treat-newsgroups-picon <1>: Article Display. (line 46) 30009* gnus-treat-overstrike: Customizing Articles. 30010 (line 61) 30011* gnus-treat-play-sounds: Customizing Articles. 30012 (line 61) 30013* gnus-treat-play-sounds <1>: Customizing Articles. 30014 (line 168) 30015* gnus-treat-smiley: Article Display. (line 36) 30016* gnus-treat-strip-banner: Customizing Articles. 30017 (line 61) 30018* gnus-treat-strip-banner <1>: Customizing Articles. 30019 (line 157) 30020* gnus-treat-strip-cr: Customizing Articles. 30021 (line 61) 30022* gnus-treat-strip-headers-in-body: Customizing Articles. 30023 (line 61) 30024* gnus-treat-strip-leading-blank-lines: Customizing Articles. 30025 (line 61) 30026* gnus-treat-strip-list-identifiers: Customizing Articles. 30027 (line 61) 30028* gnus-treat-strip-list-identifiers <1>: Customizing Articles. 30029 (line 158) 30030* gnus-treat-strip-multiple-blank-lines: Customizing Articles. 30031 (line 61) 30032* gnus-treat-strip-pem: Customizing Articles. 30033 (line 61) 30034* gnus-treat-strip-trailing-blank-lines: Customizing Articles. 30035 (line 61) 30036* gnus-treat-unfold-headers: Customizing Articles. 30037 (line 61) 30038* gnus-treat-unfold-headers <1>: Customizing Articles. 30039 (line 172) 30040* gnus-treat-unsplit-urls: Customizing Articles. 30041 (line 61) 30042* gnus-treat-wash-html: Customizing Articles. 30043 (line 61) 30044* gnus-treat-x-pgp-sig: Customizing Articles. 30045 (line 61) 30046* gnus-treat-x-pgp-sig <1>: Customizing Articles. 30047 (line 170) 30048* gnus-tree-brackets: Tree Display. (line 52) 30049* gnus-tree-line-format: Tree Display. (line 26) 30050* gnus-tree-minimize-window: Tree Display. (line 66) 30051* gnus-tree-mode-hook: Tree Display. (line 14) 30052* gnus-tree-mode-line-format: Tree Display. (line 17) 30053* gnus-tree-parent-child-edges: Tree Display. (line 61) 30054* gnus-unbuttonized-mime-types: MIME Commands. (line 137) 30055* gnus-uncacheable-groups: Article Caching. (line 47) 30056* gnus-undo: Undo. (line 28) 30057* gnus-undo-mode: Undo. (line 28) 30058* gnus-undownloaded-mark: Other Marks. (line 37) 30059* gnus-unplugged: Agent Basics. (line 44) 30060* gnus-unread-mark: Unread Articles. (line 30) 30061* gnus-unread-mark <1>: Choosing Variables. (line 21) 30062* gnus-unseen-mark: Other Marks. (line 29) 30063* gnus-update-format: Formatting Variables. 30064 (line 37) 30065* gnus-update-message-archive-method: Archived Messages. (line 25) 30066* gnus-update-score-entry-dates: Score Variables. (line 124) 30067* gnus-updated-mode-lines: Mode Lines. (line 6) 30068* gnus-use-adaptive-scoring: Adaptive Scoring. (line 10) 30069* gnus-use-article-prefetch: Asynchronous Fetching. 30070 (line 38) 30071* gnus-use-backend-marks: Startup Variables. (line 48) 30072* gnus-use-cache: Article Caching. (line 15) 30073* gnus-use-cross-reference: Exiting the Summary Buffer. 30074 (line 86) 30075* gnus-use-dribble-file: Auto Save. (line 16) 30076* gnus-use-full-window: Window Layout. (line 8) 30077* gnus-use-idna: Misc Article. (line 85) 30078* gnus-use-long-file-name: Article Caching. (line 15) 30079* gnus-use-long-file-name <1>: Saving Articles. (line 243) 30080* gnus-use-scoring: Score Variables. (line 7) 30081* gnus-use-toolbar: Gravatars. (line 39) 30082* gnus-use-trees: Tree Display. (line 6) 30083* gnus-use-undo: Undo. (line 28) 30084* gnus-useful-groups: Foreign Groups. (line 78) 30085* gnus-user-agent: Mail and Post. (line 21) 30086* gnus-uu-be-dangerous: Other Decode Variables. 30087 (line 20) 30088* gnus-uu-correct-stripped-uucode: Other Decode Variables. 30089 (line 62) 30090* gnus-uu-decode-binhex: Other Files. (line 10) 30091* gnus-uu-decode-postscript: PostScript Files. (line 7) 30092* gnus-uu-decode-postscript-and-save: PostScript Files. (line 10) 30093* gnus-uu-decode-postscript-and-save-view: PostScript Files. (line 18) 30094* gnus-uu-decode-postscript-view: PostScript Files. (line 14) 30095* gnus-uu-decode-save: Other Files. (line 7) 30096* gnus-uu-decode-unshar: Shell Archives. (line 11) 30097* gnus-uu-decode-unshar-and-save: Shell Archives. (line 14) 30098* gnus-uu-decode-unshar-and-save-view: Shell Archives. (line 22) 30099* gnus-uu-decode-unshar-view: Shell Archives. (line 18) 30100* gnus-uu-decode-uu: Uuencoded Articles. (line 7) 30101* gnus-uu-decode-uu-and-save: Uuencoded Articles. (line 10) 30102* gnus-uu-decode-uu-and-save-view: Uuencoded Articles. (line 17) 30103* gnus-uu-decode-uu-view: Uuencoded Articles. (line 14) 30104* gnus-uu-decode-yenc: Other Files. (line 14) 30105* gnus-uu-digest-headers: Mail. (line 9) 30106* gnus-uu-digest-mail-forward: Summary Mail Commands. 30107 (line 131) 30108* gnus-uu-digest-post-forward: Summary Post Commands. 30109 (line 48) 30110* gnus-uu-do-not-unpack-archives: Other Decode Variables. 30111 (line 38) 30112* gnus-uu-grab-move: Other Decode Variables. 30113 (line 17) 30114* gnus-uu-grab-view: Other Decode Variables. 30115 (line 14) 30116* gnus-uu-grabbed-file-functions: Other Decode Variables. 30117 (line 6) 30118* gnus-uu-ignore-default-archive-rules: Other Decode Variables. 30119 (line 50) 30120* gnus-uu-ignore-default-view-rules: Other Decode Variables. 30121 (line 46) 30122* gnus-uu-ignore-files-by-name: Other Decode Variables. 30123 (line 26) 30124* gnus-uu-ignore-files-by-type: Other Decode Variables. 30125 (line 29) 30126* gnus-uu-invert-processable: Setting Process Marks. 30127 (line 27) 30128* gnus-uu-kill-carriage-return: Other Decode Variables. 30129 (line 54) 30130* gnus-uu-mark-all: Setting Process Marks. 30131 (line 64) 30132* gnus-uu-mark-buffer: Setting Process Marks. 30133 (line 67) 30134* gnus-uu-mark-by-regexp: Setting Process Marks. 30135 (line 31) 30136* gnus-uu-mark-over: Setting Process Marks. 30137 (line 53) 30138* gnus-uu-mark-region: Setting Process Marks. 30139 (line 39) 30140* gnus-uu-mark-series: Setting Process Marks. 30141 (line 57) 30142* gnus-uu-mark-sparse: Setting Process Marks. 30143 (line 60) 30144* gnus-uu-mark-thread: Setting Process Marks. 30145 (line 45) 30146* gnus-uu-mark-thread <1>: Thread Commands. (line 23) 30147* gnus-uu-notify-files: Uuencoded Articles. (line 30) 30148* gnus-uu-post-include-before-composing: Uuencoding and Posting. 30149 (line 7) 30150* gnus-uu-post-length: Uuencoding and Posting. 30151 (line 13) 30152* gnus-uu-post-news: Summary Post Commands. 30153 (line 53) 30154* gnus-uu-post-separate-description: Uuencoding and Posting. 30155 (line 24) 30156* gnus-uu-post-threaded: Uuencoding and Posting. 30157 (line 17) 30158* gnus-uu-pre-uudecode-hook: Other Decode Variables. 30159 (line 66) 30160* gnus-uu-save-in-digest: Other Decode Variables. 30161 (line 75) 30162* gnus-uu-tmp-dir: Other Decode Variables. 30163 (line 35) 30164* gnus-uu-unmark-articles-not-decoded: Other Decode Variables. 30165 (line 58) 30166* gnus-uu-unmark-by-regexp: Setting Process Marks. 30167 (line 35) 30168* gnus-uu-unmark-region: Setting Process Marks. 30169 (line 42) 30170* gnus-uu-unmark-thread: Setting Process Marks. 30171 (line 49) 30172* gnus-uu-unmark-thread <1>: Thread Commands. (line 27) 30173* gnus-uu-user-archive-rules: Rule Variables. (line 25) 30174* gnus-uu-user-view-rules: Rule Variables. (line 14) 30175* gnus-uu-user-view-rules-end: Rule Variables. (line 21) 30176* gnus-uu-view-and-save: Other Decode Variables. 30177 (line 42) 30178* gnus-uu-view-with-metamail: Other Decode Variables. 30179 (line 69) 30180* gnus-valid-select-methods: Hooking New Back Ends Into Gnus. 30181 (line 6) 30182* gnus-verbose: Various Various. (line 29) 30183* gnus-verbose-backends: Various Various. (line 37) 30184* gnus-version: Group Information. (line 17) 30185* gnus-view-pseudo-asynchronously: Viewing Files. (line 19) 30186* gnus-view-pseudos: Viewing Files. (line 22) 30187* gnus-view-pseudos-separately: Viewing Files. (line 27) 30188* gnus-visible-headers: Hiding Headers. (line 21) 30189* gnus-visual: Highlighting and Menus. 30190 (line 6) 30191* gnus-visual-mark-article-hook: Summary Highlighting. 30192 (line 7) 30193* gnus-widen-article-window: Misc Article. (line 12) 30194* gnus-window-min-height: Window Layout. (line 101) 30195* gnus-window-min-width: Window Layout. (line 101) 30196* gnus-x-face: X-Face. (line 38) 30197* gnus-x-face-directory: X-Face. (line 68) 30198* gnus-x-face-from-file: X-Face. (line 77) 30199* Google: Foreign Groups. (line 82) 30200* Google <1>: Web Searches. (line 6) 30201* Graham, Paul: Spam Statistics Package. 30202 (line 6) 30203* gravatars: Article Display. (line 6) 30204* group buffer: Group Buffer. (line 6) 30205* group buffer format: Group Line Specification. 30206 (line 6) 30207* group description: Group Information. (line 8) 30208* group highlighting: Group Highlighting. (line 6) 30209* group information: Group Information. (line 6) 30210* group level: Group Levels. (line 6) 30211* group listing: Listing Groups. (line 6) 30212* group mail splitting: Group Mail Splitting. 30213 (line 6) 30214* group mode line: Group Mode Line Specification. 30215 (line 6) 30216* group movement: Group Maneuvering. (line 6) 30217* group parameters: Group Parameters. (line 6) 30218* group parameters <1>: Topic Commands. (line 150) 30219* group rank: Group Score. (line 6) 30220* group score: Group Score. (line 6) 30221* group score commands: Group Score Commands. 30222 (line 6) 30223* group selection: Selecting a Group. (line 6) 30224* group sieve commands: Sieve Commands. (line 6) 30225* group timestamps: Group Timestamp. (line 6) 30226* ham-marks: Spam and Ham Processors. 30227 (line 52) 30228* hashcash: Hashcash. (line 6) 30229* hashcash, spam filtering: Anti-spam Hashcash Payments. 30230 (line 6) 30231* hashcash-default-payment: Hashcash. (line 38) 30232* hashcash-path: Hashcash. (line 52) 30233* hashcash-payment-alist: Hashcash. (line 43) 30234* head: Terminology. (line 80) 30235* header: Terminology. (line 87) 30236* headers: Terminology. (line 90) 30237* help group: Foreign Groups. (line 59) 30238* help group <1>: Document Groups. (line 6) 30239* hiding headers: Hiding Headers. (line 6) 30240* highlighting: Group Highlighting. (line 6) 30241* highlighting <1>: Article Highlighting. 30242 (line 6) 30243* highlighting <2>: Highlighting and Menus. 30244 (line 6) 30245* highlighting <3>: Compatibility. (line 33) 30246* highlights: Various Various. (line 6) 30247* hilit19: Compatibility. (line 33) 30248* history: Choosing Commands. (line 70) 30249* history <1>: History. (line 6) 30250* HTML: HTML. (line 6) 30251* http: Browsing the Web. (line 6) 30252* IDNA: Misc Article. (line 85) 30253* ifile, spam filtering: ifile spam filtering. 30254 (line 6) 30255* ignored groups: The Active File. (line 6) 30256* ignored-charset: Group Parameters. (line 223) 30257* imap: Using IMAP. (line 6) 30258* IMAP labels: Support for IMAP Extensions. 30259 (line 6) 30260* import old mail: Incorporating Old Mail. 30261 (line 6) 30262* importing PGP keys: Security. (line 60) 30263* incoming mail treatment: Washing Mail. (line 6) 30264* Incoming*: Mail Source Customization. 30265 (line 14) 30266* Incoming* <1>: Gnus Development. (line 24) 30267* Incoming* <2>: Gnus Development. (line 44) 30268* incorporating old mail: Incorporating Old Mail. 30269 (line 6) 30270* indirect connection functions: Indirect Functions. (line 6) 30271* info: Group Information. (line 23) 30272* information on groups: Group Information. (line 6) 30273* interaction: Interactive. (line 6) 30274* interactive: Extended Interactive. 30275 (line 6) 30276* internal variables: Gnus Utility Functions. 30277 (line 6) 30278* internationalized domain names: Misc Article. (line 85) 30279* invalid characters in file names: Various Various. (line 64) 30280* ISO 8601: Article Date. (line 15) 30281* iso-8859-5: Charsets. (line 48) 30282* ISO8601: Score File Format. (line 146) 30283* ispell: Mail and Post. (line 33) 30284* ispell-message: Mail and Post. (line 33) 30285* keys, reserved for users (Article): Article Keymap. (line 12) 30286* keys, reserved for users (Group): Misc Group Stuff. (line 15) 30287* keys, reserved for users (Server): Server Commands. (line 12) 30288* keys, reserved for users (Summary): Summary Buffer. (line 18) 30289* kill files: Kill Files. (line 6) 30290* kill files <1>: Converting Kill Files. 30291 (line 6) 30292* killed groups: Terminology. (line 129) 30293* koi8-r: Charsets. (line 48) 30294* koi8-u: Charsets. (line 48) 30295* Latin 1: Article Washing. (line 69) 30296* level: Group Levels. (line 6) 30297* levels: Terminology. (line 121) 30298* limiting: Limiting. (line 6) 30299* links: Splitting Mail. (line 61) 30300* LIST overview.fmt: Crosspost Handling. (line 29) 30301* list server brain damage: Washing Mail. (line 6) 30302* local variables: Score File Format. (line 271) 30303* loose threads: Loose Threads. (line 6) 30304* M****s*** sm*rtq**t*s: Article Washing. (line 69) 30305* Ma Gnus: Gnus Versions. (line 6) 30306* Ma Gnus <1>: Ma Gnus. (line 6) 30307* mail: Summary Mail Commands. 30308 (line 6) 30309* mail <1>: Composing Messages. (line 6) 30310* mail <2>: Getting Mail. (line 6) 30311* mail <3>: Terminology. (line 14) 30312* mail filtering (splitting): Splitting Mail. (line 6) 30313* mail filtering (splitting) <1>: Terminology. (line 204) 30314* mail folders: Mail Folders. (line 6) 30315* mail group commands: Mail Group Commands. (line 6) 30316* mail list groups: Group Parameters. (line 65) 30317* mail message: Terminology. (line 74) 30318* mail NOV spool: Mail Spool. (line 6) 30319* mail server: Mail Source Specifiers. 30320 (line 6) 30321* mail sorting: Terminology. (line 204) 30322* mail source: Mail Source Specifiers. 30323 (line 6) 30324* mail splitting: Splitting Mail. (line 6) 30325* mail splitting <1>: Fancy Mail Splitting. 30326 (line 6) 30327* mail splitting <2>: Group Mail Splitting. 30328 (line 6) 30329* mail spool: Mail Source Specifiers. 30330 (line 6) 30331* mail washing: Washing Mail. (line 6) 30332* mail-extract-address-components: Summary Buffer Format. 30333 (line 13) 30334* Mail-Followup-To: Group Parameters. (line 71) 30335* mail-source: Group Parameters. (line 260) 30336* mail-source-crash-box: Mail Source Customization. 30337 (line 11) 30338* mail-source-default-file-modes: Mail Source Customization. 30339 (line 45) 30340* mail-source-delete-incoming: Mail Source Customization. 30341 (line 15) 30342* mail-source-delete-incoming <1>: Gnus Development. (line 24) 30343* mail-source-delete-incoming <2>: Gnus Development. (line 44) 30344* mail-source-delete-old-incoming-confirm: Mail Source Customization. 30345 (line 25) 30346* mail-source-directory: Mail Source Customization. 30347 (line 33) 30348* mail-source-ignore-errors: Mail Source Customization. 30349 (line 30) 30350* mail-source-incoming-file-prefix: Mail Source Customization. 30351 (line 39) 30352* mail-source-movemail-program: Mail Source Customization. 30353 (line 49) 30354* mail-source-touch-pop: POP before SMTP. (line 6) 30355* mail-sources: Fetching Mail. (line 6) 30356* mail-to-news gateways: Mail-To-News Gateways. 30357 (line 6) 30358* maildir: Maildir. (line 6) 30359* mailing list: Mailing List. (line 6) 30360* mailing lists: Mail and Post. (line 9) 30361* mairix: nnmairix. (line 6) 30362* making digests: Summary Post Commands. 30363 (line 48) 30364* making groups: Foreign Groups. (line 24) 30365* manual: Group Information. (line 23) 30366* mark as unread: Setting Marks. (line 10) 30367* marking groups: Marking Groups. (line 6) 30368* marks: Marking Articles. (line 6) 30369* match-list: Group Parameters. (line 306) 30370* max-lisp-eval-depth: Troubleshooting. (line 24) 30371* mbox: Document Groups. (line 12) 30372* mbox folders: Mail Folders. (line 6) 30373* menus: Highlighting and Menus. 30374 (line 6) 30375* merging groups: Virtual Groups. (line 6) 30376* message: Terminology. (line 77) 30377* Message-ID: Finding the Parent. (line 44) 30378* message-mail-p: Posting Styles. (line 86) 30379* message-news-p: Posting Styles. (line 86) 30380* message-send-mail-function: Posting Server. (line 39) 30381* message-sent-hook: Followups To Yourself. 30382 (line 21) 30383* messages: Composing Messages. (line 6) 30384* metamail: Other Decode Variables. 30385 (line 69) 30386* MH folders: Saving Articles. (line 128) 30387* mh-e mail spool: MH Spool. (line 6) 30388* MIME: Using MIME. (line 6) 30389* MIME <1>: Misc Article. (line 16) 30390* MIME <2>: Conformity. (line 36) 30391* MIME decoding: MIME Commands. (line 6) 30392* mm-decrypt-option: Security. (line 27) 30393* mm-encrypt-option: Security. (line 36) 30394* mm-file-name-collapse-whitespace: MIME Commands. (line 213) 30395* mm-file-name-delete-whitespace: MIME Commands. (line 213) 30396* mm-file-name-replace-whitespace: MIME Commands. (line 213) 30397* mm-file-name-replace-whitespace <1>: MIME Commands. (line 213) 30398* mm-file-name-rewrite-functions: MIME Commands. (line 203) 30399* mm-file-name-trim-whitespace: MIME Commands. (line 213) 30400* mm-sign-option: Security. (line 32) 30401* mm-text-html-renderer: HTML. (line 23) 30402* mm-verify-option: Security. (line 22) 30403* MMDF mail box: Document Groups. (line 15) 30404* mml-secure-message-encrypt-pgp: Signing and encrypting. 30405 (line 38) 30406* mml-secure-message-encrypt-pgpmime: Signing and encrypting. 30407 (line 42) 30408* mml-secure-message-encrypt-smime: Signing and encrypting. 30409 (line 34) 30410* mml-secure-message-sign-pgp: Signing and encrypting. 30411 (line 26) 30412* mml-secure-message-sign-pgp <1>: Signing and encrypting. 30413 (line 30) 30414* mml-secure-message-sign-smime: Signing and encrypting. 30415 (line 22) 30416* mml-unsecure-message: Signing and encrypting. 30417 (line 46) 30418* mml1991-use: Security. (line 41) 30419* mml2015-use: Security. (line 47) 30420* mode lines: Mode Lines. (line 6) 30421* mode lines <1>: Various Various. (line 6) 30422* MODE READER: NNTP. (line 23) 30423* moderation: Moderation. (line 6) 30424* move mail: Mail Group Commands. (line 30) 30425* moving articles: Mail Group Commands. (line 96) 30426* Mule: Emacsen. (line 6) 30427* naive Bayesian spam filtering: Spam Statistics Package. 30428 (line 6) 30429* native: Terminology. (line 55) 30430* new features: New Features. (line 6) 30431* new groups: New Groups. (line 6) 30432* new messages: Scanning New Messages. 30433 (line 6) 30434* news: Terminology. (line 7) 30435* news back ends: Getting News. (line 6) 30436* news spool: News Spool. (line 6) 30437* newsgroup: Group Parameters. (line 105) 30438* Newsgroups: To From Newsgroups. (line 6) 30439* nnbabyl: Babyl. (line 6) 30440* nnbabyl-active-file: Babyl. (line 6) 30441* nnbabyl-active-file <1>: Babyl. (line 16) 30442* nnbabyl-get-new-mail: Not Reading Mail. (line 14) 30443* nnbabyl-get-new-mail <1>: Babyl. (line 20) 30444* nnbabyl-mbox-file: Babyl. (line 6) 30445* nnbabyl-mbox-file <1>: Babyl. (line 13) 30446* nnchoke: Back End Interface. (line 74) 30447* nndiary: The NNDiary Back End. 30448 (line 6) 30449* nndiary customization: Customizing NNDiary. (line 6) 30450* nndiary mails: Diary Messages. (line 6) 30451* nndiary messages: Diary Messages. (line 6) 30452* nndiary operation modes: Running NNDiary. (line 6) 30453* nndiary-mail-sources: Running NNDiary. (line 44) 30454* nndiary-reminders: Customizing NNDiary. (line 11) 30455* nndiary-split-methods: Running NNDiary. (line 49) 30456* nndiary-week-starts-on-monday: Customizing NNDiary. (line 18) 30457* nndir: Foreign Groups. (line 54) 30458* nndir <1>: Directory Groups. (line 6) 30459* nndoc: Foreign Groups. (line 67) 30460* nndoc <1>: Document Groups. (line 6) 30461* nndoc-article-type: Document Groups. (line 94) 30462* nndoc-post-type: Document Groups. (line 100) 30463* nndraft: Drafts. (line 19) 30464* nndraft-directory: Drafts. (line 19) 30465* nneething: Foreign Groups. (line 62) 30466* nneething <1>: Anything Groups. (line 6) 30467* nneething-exclude-files: Anything Groups. (line 47) 30468* nneething-include-files: Anything Groups. (line 52) 30469* nneething-map-file: Anything Groups. (line 56) 30470* nneething-map-file-directory: Anything Groups. (line 43) 30471* nnfolder: Mail Folders. (line 6) 30472* nnfolder-active-file: Mail Folders. (line 18) 30473* nnfolder-delete-mail-hook: Mail Folders. (line 40) 30474* nnfolder-directory: Mail Folders. (line 13) 30475* nnfolder-generate-active-file: Mail Folders. (line 55) 30476* nnfolder-get-new-mail: Not Reading Mail. (line 14) 30477* nnfolder-get-new-mail <1>: Mail Folders. (line 25) 30478* nnfolder-newsgroups-file: Mail Folders. (line 21) 30479* nnfolder-nov-directory: Mail Folders. (line 52) 30480* nnfolder-nov-file-suffix: Mail Folders. (line 49) 30481* nnfolder-nov-is-evil: Mail Folders. (line 45) 30482* nnfolder-save-buffer-hook: Mail Folders. (line 29) 30483* nngateway-address: Mail-To-News Gateways. 30484 (line 16) 30485* nngateway-header-transformation: Mail-To-News Gateways. 30486 (line 19) 30487* nngateway-mail2news-header-transformation: Mail-To-News Gateways. 30488 (line 42) 30489* nngateway-simple-header-transformation: Mail-To-News Gateways. 30490 (line 38) 30491* nnheader-file-name-translation-alist: Various Various. (line 64) 30492* nnheader-get-report: Error Messaging. (line 6) 30493* nnheader-head-chop-length: Various Various. (line 60) 30494* nnheader-max-head-length: Various Various. (line 50) 30495* nnheader-ms-strip-cr: Washing Mail. (line 30) 30496* nnheader-report: Error Messaging. (line 6) 30497* nnimap-split-download-body: Filtering Incoming Mail. 30498 (line 25) 30499* nnir: nnir. (line 6) 30500* nnmail-cache-accepted-message-ids: Mail Back End Variables. 30501 (line 49) 30502* nnmail-cache-accepted-message-ids <1>: Fancy Mail Splitting. 30503 (line 214) 30504* nnmail-cache-ignore-groups: Mail Back End Variables. 30505 (line 54) 30506* nnmail-crosspost: Splitting Mail. (line 56) 30507* nnmail-crosspost-link-function: Splitting Mail. (line 61) 30508* nnmail-delete-file-function: Mail Back End Variables. 30509 (line 46) 30510* nnmail-expiry-target: Expiring Mail. (line 126) 30511* nnmail-expiry-wait: Expiring Mail. (line 87) 30512* nnmail-expiry-wait-function: Group Parameters. (line 144) 30513* nnmail-expiry-wait-function <1>: Expiring Mail. (line 96) 30514* nnmail-extra-headers: To From Newsgroups. (line 40) 30515* nnmail-fancy-expiry-target: Expiring Mail. (line 141) 30516* nnmail-fancy-expiry-targets: Expiring Mail. (line 141) 30517* nnmail-ignore-broken-references: Washing Mail. (line 69) 30518* nnmail-keep-last-article: Expiring Mail. (line 157) 30519* nnmail-mail-splitting-charset: Splitting Mail. (line 75) 30520* nnmail-mail-splitting-decodes: Splitting Mail. (line 75) 30521* nnmail-message-id-cache-file: Duplicates. (line 6) 30522* nnmail-message-id-cache-length: Duplicates. (line 6) 30523* nnmail-pathname-coding-system: Non-ASCII Group Names. 30524 (line 74) 30525* nnmail-post-get-new-mail-hook: Mail Back End Variables. 30526 (line 23) 30527* nnmail-pre-get-new-mail-hook: Mail Back End Variables. 30528 (line 23) 30529* nnmail-prepare-incoming-header-hook: Washing Mail. (line 34) 30530* nnmail-prepare-incoming-hook: Washing Mail. (line 25) 30531* nnmail-prepare-incoming-message-hook: Washing Mail. (line 76) 30532* nnmail-read-incoming-hook: Mail Back End Variables. 30533 (line 9) 30534* nnmail-remove-leading-whitespace: Washing Mail. (line 38) 30535* nnmail-remove-list-identifiers: Washing Mail. (line 49) 30536* nnmail-remove-tabs: Washing Mail. (line 66) 30537* nnmail-resplit-incoming: Splitting Mail. (line 86) 30538* nnmail-resplit-incoming <1>: Mail Source Specifiers. 30539 (line 89) 30540* nnmail-scan-directory-mail-source-once: Mail Source Specifiers. 30541 (line 79) 30542* nnmail-split-abbrev-alist: Fancy Mail Splitting. 30543 (line 142) 30544* nnmail-split-fancy: Fancy Mail Splitting. 30545 (line 6) 30546* nnmail-split-fancy <1>: Fancy Mail Splitting. 30547 (line 6) 30548* nnmail-split-fancy-match-partial-words: Fancy Mail Splitting. 30549 (line 120) 30550* nnmail-split-fancy-syntax-table: Fancy Mail Splitting. 30551 (line 159) 30552* nnmail-split-fancy-with-parent: Fancy Mail Splitting. 30553 (line 181) 30554* nnmail-split-header-length-limit: Splitting Mail. (line 72) 30555* nnmail-split-history: Splitting Mail. (line 66) 30556* nnmail-split-hook: Mail Back End Variables. 30557 (line 14) 30558* nnmail-split-lowercase-expanded: Fancy Mail Splitting. 30559 (line 175) 30560* nnmail-split-methods: Splitting Mail. (line 6) 30561* nnmail-treat-duplicates: Duplicates. (line 6) 30562* nnmail-use-long-file-names: Mail Back End Variables. 30563 (line 39) 30564* nnmaildir: Maildir. (line 6) 30565* nnmairix: nnmairix. (line 6) 30566* nnmairix-create-search-group: nnmairix keyboard shortcuts. 30567 (line 28) 30568* nnmairix-create-search-group-from-message: nnmairix keyboard shortcuts. 30569 (line 87) 30570* nnmairix-create-server-and-default-group: nnmairix keyboard shortcuts. 30571 (line 9) 30572* nnmairix-goto-original-article: nnmairix keyboard shortcuts. 30573 (line 103) 30574* nnmairix-group-change-query-this-group: nnmairix keyboard shortcuts. 30575 (line 34) 30576* nnmairix-group-delete-recreate-this-group: nnmairix keyboard shortcuts. 30577 (line 55) 30578* nnmairix-group-prefix: Setting up mairix. (line 31) 30579* nnmairix-group-toggle-allowfast-this-group: nnmairix keyboard shortcuts. 30580 (line 60) 30581* nnmairix-group-toggle-propmarks-this-group: nnmairix keyboard shortcuts. 30582 (line 71) 30583* nnmairix-group-toggle-readmarks-this-group: nnmairix keyboard shortcuts. 30584 (line 50) 30585* nnmairix-group-toggle-threads-this-group: nnmairix keyboard shortcuts. 30586 (line 38) 30587* nnmairix-mairix-search-options: Configuring nnmairix. 30588 (line 27) 30589* nnmairix-mairix-update-options: nnmairix keyboard shortcuts. 30590 (line 43) 30591* nnmairix-only-use-registry: Propagating marks. (line 78) 30592* nnmairix-propagate-marks: nnmairix keyboard shortcuts. 30593 (line 76) 30594* nnmairix-propagate-marks-to-nnmairix-groups: Propagating marks. 30595 (line 94) 30596* nnmairix-propagate-marks-upon-close: Propagating marks. (line 63) 30597* nnmairix-purge-old-groups: nnmairix caveats. (line 47) 30598* nnmairix-remove-tick-mark-original-article: nnmairix keyboard shortcuts. 30599 (line 112) 30600* nnmairix-search: nnmairix keyboard shortcuts. 30601 (line 14) 30602* nnmairix-search-from-this-article: nnmairix keyboard shortcuts. 30603 (line 98) 30604* nnmairix-search-interactive: nnmairix keyboard shortcuts. 30605 (line 24) 30606* nnmairix-search-thread-this-article: nnmairix keyboard shortcuts. 30607 (line 92) 30608* nnmairix-update-database: nnmairix keyboard shortcuts. 30609 (line 43) 30610* nnmairix-update-groups: nnmairix tips and tricks. 30611 (line 8) 30612* nnmairix-widget-search: nnmairix keyboard shortcuts. 30613 (line 19) 30614* nnmairix-widget-search-from-this-article: nnmairix keyboard shortcuts. 30615 (line 82) 30616* nnmbox: Unix Mail Box. (line 6) 30617* nnmbox-active-file: Unix Mail Box. (line 6) 30618* nnmbox-active-file <1>: Unix Mail Box. (line 17) 30619* nnmbox-get-new-mail: Not Reading Mail. (line 14) 30620* nnmbox-get-new-mail <1>: Unix Mail Box. (line 21) 30621* nnmbox-mbox-file: Unix Mail Box. (line 6) 30622* nnmbox-mbox-file <1>: Unix Mail Box. (line 13) 30623* nnmh: MH Spool. (line 6) 30624* nnmh-be-safe: MH Spool. (line 22) 30625* nnmh-directory: MH Spool. (line 14) 30626* nnmh-get-new-mail: Not Reading Mail. (line 14) 30627* nnmh-get-new-mail <1>: MH Spool. (line 19) 30628* nnml: Mail Spool. (line 6) 30629* nnml-active-file: Mail Spool. (line 39) 30630* nnml-compressed-files-size-threshold: Mail Spool. (line 69) 30631* nnml-directory: Mail Spool. (line 9) 30632* nnml-directory <1>: Mail Spool. (line 34) 30633* nnml-generate-nov-databases: Mail Spool. (line 73) 30634* nnml-get-new-mail: Not Reading Mail. (line 14) 30635* nnml-get-new-mail <1>: Mail Spool. (line 47) 30636* nnml-newsgroups-file: Mail Spool. (line 43) 30637* nnml-nov-file-name: Mail Spool. (line 54) 30638* nnml-nov-is-evil: Mail Spool. (line 50) 30639* nnml-prepare-save-mail-hook: Mail Spool. (line 57) 30640* nnml-use-compressed-files: Mail Spool. (line 60) 30641* nnnil: The Empty Backend. (line 6) 30642* nnregistry: Registry Article Refer Method. 30643 (line 11) 30644* nnrss: RSS. (line 6) 30645* nnrss-directory: RSS. (line 50) 30646* nnrss-file-coding-system: RSS. (line 54) 30647* nnrss-generate-download-script: RSS. (line 67) 30648* nnrss-ignore-article-fields: RSS. (line 59) 30649* nnrss-opml-export: RSS. (line 44) 30650* nnrss-opml-import: RSS. (line 41) 30651* nnrss-use-local: RSS. (line 67) 30652* nnspool: News Spool. (line 6) 30653* nnspool-active-file: News Spool. (line 37) 30654* nnspool-active-times-file: News Spool. (line 46) 30655* nnspool-history-file: News Spool. (line 43) 30656* nnspool-inews-program: News Spool. (line 20) 30657* nnspool-inews-switches: News Spool. (line 23) 30658* nnspool-lib-dir: News Spool. (line 34) 30659* nnspool-newsgroups-file: News Spool. (line 40) 30660* nnspool-nov-directory: News Spool. (line 30) 30661* nnspool-nov-is-evil: News Spool. (line 49) 30662* nnspool-sift-nov-with-sed: News Spool. (line 53) 30663* nnspool-spool-directory: News Spool. (line 26) 30664* nntp: NNTP. (line 6) 30665* nntp authentication: NNTP. (line 23) 30666* NNTP server: Finding the News. (line 34) 30667* nntp-address: Common Variables. (line 19) 30668* nntp-authinfo-file: NNTP. (line 30) 30669* nntp-authinfo-function: NNTP. (line 30) 30670* nntp-connection-timeout: NNTP. (line 108) 30671* nntp-end-of-line: Common Variables. (line 29) 30672* nntp-maximum-request: NNTP. (line 100) 30673* nntp-netcat-command: Common Variables. (line 34) 30674* nntp-netcat-switches: Common Variables. (line 39) 30675* nntp-never-echoes-commands: NNTP. (line 182) 30676* nntp-nov-gap: NNTP. (line 127) 30677* nntp-nov-is-evil: NNTP. (line 118) 30678* nntp-open-connection-function: NNTP. (line 174) 30679* nntp-open-connection-functions-never-echo-commands: NNTP. (line 191) 30680* nntp-open-netcat-stream: Direct Functions. (line 46) 30681* nntp-open-network-stream: Direct Functions. (line 11) 30682* nntp-open-ssl-stream: Direct Functions. (line 33) 30683* nntp-open-telnet-stream: Direct Functions. (line 62) 30684* nntp-open-tls-stream: Direct Functions. (line 20) 30685* nntp-open-via-rlogin-and-netcat: Indirect Functions. (line 14) 30686* nntp-open-via-rlogin-and-telnet: Indirect Functions. (line 31) 30687* nntp-open-via-telnet-and-telnet: Indirect Functions. (line 62) 30688* nntp-port-number: Common Variables. (line 22) 30689* nntp-pre-command: Common Variables. (line 13) 30690* nntp-prepare-post-hook: NNTP. (line 198) 30691* nntp-prepare-server-hook: NNTP. (line 165) 30692* nntp-record-commands: NNTP. (line 168) 30693* nntp-send-authinfo: NNTP. (line 23) 30694* nntp-send-authinfo <1>: NNTP. (line 30) 30695* nntp-send-mode-reader: NNTP. (line 23) 30696* nntp-server-action-alist: NNTP. (line 80) 30697* nntp-server-opened-hook: NNTP. (line 23) 30698* nntp-telnet-command: Indirect Functions. (line 40) 30699* nntp-telnet-switches: Indirect Functions. (line 44) 30700* nntp-via-address: Indirect Functions. (line 98) 30701* nntp-via-envuser: Indirect Functions. (line 79) 30702* nntp-via-rlogin-command: Indirect Functions. (line 21) 30703* nntp-via-rlogin-command <1>: Indirect Functions. (line 48) 30704* nntp-via-rlogin-command-switches: Indirect Functions. (line 25) 30705* nntp-via-rlogin-command-switches <1>: Indirect Functions. (line 52) 30706* nntp-via-shell-prompt: Indirect Functions. (line 85) 30707* nntp-via-telnet-command: Indirect Functions. (line 68) 30708* nntp-via-telnet-switches: Indirect Functions. (line 72) 30709* nntp-via-user-name: Indirect Functions. (line 95) 30710* nntp-via-user-password: Indirect Functions. (line 76) 30711* nntp-xover-commands: NNTP. (line 123) 30712* nntp-xref-number-is-evil: NNTP. (line 139) 30713* NNTPSERVER: Finding the News. (line 34) 30714* nnvirtual: Virtual Groups. (line 6) 30715* nnvirtual-always-rescan: Virtual Groups. (line 54) 30716* nnweb: Foreign Groups. (line 82) 30717* nnweb <1>: Web Searches. (line 6) 30718* nnweb-max-hits: Web Searches. (line 47) 30719* nnweb-search: Web Searches. (line 44) 30720* nnweb-type: Web Searches. (line 39) 30721* nnweb-type-definition: Web Searches. (line 51) 30722* No Gnus: Gnus Versions. (line 6) 30723* No Gnus <1>: No Gnus. (line 6) 30724* Non-ASCII: Article Washing. (line 80) 30725* non-ascii group names: Non-ASCII Group Names. 30726 (line 6) 30727* NOV: Crosspost Handling. (line 19) 30728* NOV <1>: NNTP. (line 123) 30729* NOV <2>: Terminology. (line 94) 30730* offline: Gnus Unplugged. (line 6) 30731* OneList: Article Hiding. (line 43) 30732* Oort Gnus: Gnus Versions. (line 6) 30733* Oort Gnus <1>: Oort Gnus. (line 6) 30734* OPML: RSS. (line 37) 30735* Outlook Express: Article Washing. (line 87) 30736* overview.fmt: Crosspost Handling. (line 29) 30737* parameters: Topic Commands. (line 150) 30738* parent: Terminology. (line 194) 30739* parent articles: Finding the Parent. (line 6) 30740* patches: Troubleshooting. (line 54) 30741* Paul Graham: Spam Statistics Package. 30742 (line 6) 30743* Pegasus: Washing Mail. (line 69) 30744* persistent articles: Persistent Articles. (line 6) 30745* PGP key ring import: Security. (line 60) 30746* pick and read: Pick and Read. (line 6) 30747* picons: Article Display. (line 6) 30748* POP: Mail Source Specifiers. 30749 (line 6) 30750* pop before smtp: POP before SMTP. (line 6) 30751* pop3-leave-mail-on-server: Mail Source Specifiers. 30752 (line 224) 30753* pop3-movemail: Mail Source Specifiers. 30754 (line 224) 30755* pop3-uidl-file: Mail Source Specifiers. 30756 (line 214) 30757* post: Summary Post Commands. 30758 (line 6) 30759* post <1>: Composing Messages. (line 6) 30760* post-method: Group Parameters. (line 256) 30761* posting styles: Posting Styles. (line 6) 30762* posting-style: Group Parameters. (line 230) 30763* PostScript: PostScript Files. (line 6) 30764* PostScript <1>: Article Commands. (line 7) 30765* pre-fetch: Asynchronous Fetching. 30766 (line 6) 30767* predicate specifiers: Predicate Specifiers. 30768 (line 6) 30769* preferred charset: Charsets. (line 48) 30770* printing: Article Commands. (line 7) 30771* process mark: Other Marks. (line 6) 30772* process/prefix convention: Process/Prefix. (line 6) 30773* procmail: Mail Source Specifiers. 30774 (line 6) 30775* profile: Troubleshooting. (line 70) 30776* proxy: Example Methods. (line 45) 30777* pseudo-articles: Viewing Files. (line 6) 30778* Pterodactyl Gnus: Gnus Versions. (line 6) 30779* Quassia Gnus: Gnus Versions. (line 6) 30780* rank: Group Score. (line 6) 30781* rcvstore: Saving Articles. (line 128) 30782* reading init file: File Commands. (line 7) 30783* reading mail: Getting Mail. (line 6) 30784* reading news: Getting News. (line 6) 30785* Red Gnus: Gnus Versions. (line 6) 30786* referring articles: Finding the Parent. (line 6) 30787* regeneration: Agent Regeneration. (line 6) 30788* registry: The Gnus Registry. (line 6) 30789* regular expressions header matching, spam filtering: Regular Expressions Header Matching. 30790 (line 6) 30791* rejected articles: Rejected Articles. (line 6) 30792* renaming groups: Foreign Groups. (line 33) 30793* renaming groups <1>: Foreign Groups. (line 42) 30794* reply: Composing Messages. (line 6) 30795* reply <1>: Terminology. (line 20) 30796* reporting bugs: Compatibility. (line 52) 30797* reporting bugs <1>: Troubleshooting. (line 31) 30798* restarting: Scanning New Messages. 30799 (line 23) 30800* reverse scoring: Reverse Scoring. (line 6) 30801* RFC 1036: Conformity. (line 15) 30802* RFC 1522 decoding: Mail Back End Variables. 30803 (line 15) 30804* RFC 1991: Conformity. (line 42) 30805* RFC 2047 decoding: Mail Back End Variables. 30806 (line 15) 30807* RFC 2396: Mailing List. (line 6) 30808* RFC 2440: Conformity. (line 42) 30809* RFC 2822: Conformity. (line 11) 30810* RFC 5322: Conformity. (line 11) 30811* RFC 5536: Conformity. (line 19) 30812* RFC 822: Conformity. (line 11) 30813* rnews batch files: Document Groups. (line 21) 30814* root: Terminology. (line 190) 30815* RSS: RSS. (line 6) 30816* rule variables: Rule Variables. (line 6) 30817* running nndiary: Running NNDiary. (line 6) 30818* Russian: Charsets. (line 48) 30819* saving .newsrc: File Commands. (line 11) 30820* saving articles: Saving Articles. (line 6) 30821* scanning new news: Scanning New Messages. 30822 (line 6) 30823* score cache: Score Variables. (line 29) 30824* score commands: Summary Score Commands. 30825 (line 6) 30826* score decays: Score Decays. (line 6) 30827* score file atoms: Score File Format. (line 188) 30828* score file format: Score File Format. (line 6) 30829* score file group parameter: Group Parameters. (line 156) 30830* score variables: Score Variables. (line 6) 30831* scoring: Scoring. (line 6) 30832* scoring crossposts: Scoring Tips. (line 7) 30833* scoring on other headers: Scoring On Other Headers. 30834 (line 6) 30835* scoring tips: Scoring Tips. (line 6) 30836* searching: Searching. (line 6) 30837* searching the Usenet: Web Searches. (line 6) 30838* secondary: Terminology. (line 66) 30839* sed: News Spool. (line 53) 30840* select method: Terminology. (line 159) 30841* select methods: Select Methods. (line 6) 30842* selecting articles: Choosing Articles. (line 6) 30843* send delayed: Delayed Articles. (line 6) 30844* sending mail: Composing Messages. (line 6) 30845* sent messages: Archived Messages. (line 6) 30846* September Gnus: Gnus Versions. (line 6) 30847* series: Decoding Articles. (line 18) 30848* server: Terminology. (line 156) 30849* server buffer format: Server Buffer Format. 30850 (line 6) 30851* server commands: Server Commands. (line 6) 30852* server errors: The Server is Down. (line 6) 30853* server parameters: Server Variables. (line 6) 30854* server variables: Server Variables. (line 6) 30855* setting marks: Setting Marks. (line 6) 30856* setting process marks: Setting Process Marks. 30857 (line 6) 30858* shared articles: Shell Archives. (line 6) 30859* shell archives: Shell Archives. (line 6) 30860* sieve: Group Parameters. (line 272) 30861* signatures: Article Signature. (line 6) 30862* slash: Article Fontisizing. (line 24) 30863* slave: Slave Gnusae. (line 6) 30864* slow: Troubleshooting. (line 70) 30865* slow machine: Slow Machine. (line 6) 30866* Smartquotes: Article Washing. (line 69) 30867* smiley-data-directory: Smileys. (line 34) 30868* smiley-regexp-alist: Smileys. (line 19) 30869* smiley-style: Smileys. (line 27) 30870* smileys: Article Display. (line 6) 30871* smileys <1>: Smileys. (line 6) 30872* snarfing keys: Security. (line 60) 30873* solid groups: Terminology. (line 178) 30874* sorting groups: Sorting Groups. (line 6) 30875* sox: Rule Variables. (line 14) 30876* spam: Thwarting Email Spam. 30877 (line 6) 30878* spam <1>: Anti-Spam Basics. (line 6) 30879* spam <2>: Spam Package. (line 6) 30880* spam <3>: Spam Package Introduction. 30881 (line 6) 30882* spam <4>: Filtering Incoming Mail. 30883 (line 6) 30884* spam <5>: Spam and Ham Processors. 30885 (line 6) 30886* spam <6>: Spam Package Configuration Examples. 30887 (line 6) 30888* spam <7>: Blacklists and Whitelists. 30889 (line 6) 30890* spam <8>: BBDB Whitelists. (line 6) 30891* spam <9>: Gmane Spam Reporting. 30892 (line 6) 30893* spam <10>: Anti-spam Hashcash Payments. 30894 (line 6) 30895* spam <11>: Blackholes. (line 6) 30896* spam <12>: Regular Expressions Header Matching. 30897 (line 6) 30898* spam <13>: Bogofilter. (line 6) 30899* spam <14>: SpamAssassin back end. 30900 (line 6) 30901* spam <15>: ifile spam filtering. 30902 (line 6) 30903* spam <16>: Spam Statistics Filtering. 30904 (line 6) 30905* spam <17>: SpamOracle. (line 6) 30906* spam back ends: Spam Package Introduction. 30907 (line 41) 30908* spam back ends <1>: Spam Back Ends. (line 6) 30909* spam configuration examples: Spam Package Configuration Examples. 30910 (line 6) 30911* spam elisp package, extending: Extending the Spam package. 30912 (line 6) 30913* spam filtering: Spam Package. (line 6) 30914* spam filtering <1>: Spam Package Introduction. 30915 (line 6) 30916* spam filtering <2>: Filtering Incoming Mail. 30917 (line 6) 30918* spam filtering <3>: Spam and Ham Processors. 30919 (line 6) 30920* spam filtering <4>: Spam Package Configuration Examples. 30921 (line 6) 30922* spam filtering <5>: Blacklists and Whitelists. 30923 (line 6) 30924* spam filtering <6>: BBDB Whitelists. (line 6) 30925* spam filtering <7>: Anti-spam Hashcash Payments. 30926 (line 6) 30927* spam filtering <8>: Blackholes. (line 6) 30928* spam filtering <9>: Regular Expressions Header Matching. 30929 (line 6) 30930* spam filtering <10>: Bogofilter. (line 6) 30931* spam filtering <11>: SpamAssassin back end. 30932 (line 6) 30933* spam filtering <12>: ifile spam filtering. 30934 (line 6) 30935* spam filtering <13>: Spam Statistics Filtering. 30936 (line 6) 30937* spam filtering <14>: SpamOracle. (line 6) 30938* spam filtering <15>: Extending the Spam package. 30939 (line 6) 30940* spam filtering approaches: The problem of spam. (line 6) 30941* spam filtering configuration examples: Spam Package Configuration Examples. 30942 (line 6) 30943* spam filtering incoming mail: Filtering Incoming Mail. 30944 (line 6) 30945* spam filtering sequence of events: Spam Package Introduction. 30946 (line 6) 30947* spam filtering variables: Spam and Ham Processors. 30948 (line 6) 30949* spam filtering, naive Bayesian: Spam Statistics Package. 30950 (line 6) 30951* spam reporting: Gmane Spam Reporting. 30952 (line 6) 30953* spam variables: Spam and Ham Processors. 30954 (line 6) 30955* spam-autodetect-recheck-messages: Spam and Ham Processors. 30956 (line 147) 30957* spam-blackhole-good-server-regex: Blackholes. (line 26) 30958* spam-blackhole-servers: Blackholes. (line 22) 30959* spam-bogofilter-database-directory: Bogofilter. (line 71) 30960* spam-bogofilter-score: Bogofilter. (line 30) 30961* spam-ifile-all-categories: ifile spam filtering. 30962 (line 11) 30963* spam-ifile-database: ifile spam filtering. 30964 (line 23) 30965* spam-ifile-spam-category: ifile spam filtering. 30966 (line 17) 30967* spam-initialize: Spam Package Introduction. 30968 (line 12) 30969* spam-log-to-registry: Spam and Ham Processors. 30970 (line 130) 30971* spam-mark-ham-unread-before-move-from-spam-group: Spam and Ham Processors. 30972 (line 141) 30973* spam-mark-only-unseen-as-spam: Spam and Ham Processors. 30974 (line 137) 30975* spam-marks: Spam and Ham Processors. 30976 (line 62) 30977* spam-process-ham-in-nonham-groups: Spam and Ham Processors. 30978 (line 105) 30979* spam-process-ham-in-spam-groups: Spam and Ham Processors. 30980 (line 100) 30981* spam-regex-headers-ham: Regular Expressions Header Matching. 30982 (line 20) 30983* spam-regex-headers-spam: Regular Expressions Header Matching. 30984 (line 15) 30985* spam-report-gmane-use-article-number: Gmane Spam Reporting. 30986 (line 24) 30987* spam-report-user-mail-address: Gmane Spam Reporting. 30988 (line 32) 30989* spam-spamassassin-program: SpamAssassin back end. 30990 (line 31) 30991* spam-spamoracle-binary: SpamOracle. (line 39) 30992* spam-spamoracle-database: SpamOracle. (line 44) 30993* spam-split-group: Filtering Incoming Mail. 30994 (line 14) 30995* spam-stat: Spam Statistics Filtering. 30996 (line 6) 30997* spam-stat <1>: Creating a spam-stat dictionary. 30998 (line 43) 30999* spam-stat, spam filtering: Spam Statistics Filtering. 31000 (line 6) 31001* spam-stat-buffer-change-to-non-spam: Low-level interface to the spam-stat dictionary. 31002 (line 21) 31003* spam-stat-buffer-change-to-spam: Low-level interface to the spam-stat dictionary. 31004 (line 16) 31005* spam-stat-buffer-is-no-spam: Low-level interface to the spam-stat dictionary. 31006 (line 12) 31007* spam-stat-buffer-is-spam: Low-level interface to the spam-stat dictionary. 31008 (line 8) 31009* spam-stat-file: Creating a spam-stat dictionary. 31010 (line 69) 31011* spam-stat-load: Low-level interface to the spam-stat dictionary. 31012 (line 30) 31013* spam-stat-process-directory-age: Creating a spam-stat dictionary. 31014 (line 24) 31015* spam-stat-process-non-spam-directory: Creating a spam-stat dictionary. 31016 (line 20) 31017* spam-stat-process-spam-directory: Creating a spam-stat dictionary. 31018 (line 16) 31019* spam-stat-reduce-size: Creating a spam-stat dictionary. 31020 (line 62) 31021* spam-stat-reset: Creating a spam-stat dictionary. 31022 (line 52) 31023* spam-stat-save: Creating a spam-stat dictionary. 31024 (line 66) 31025* spam-stat-save <1>: Low-level interface to the spam-stat dictionary. 31026 (line 26) 31027* spam-stat-score-buffer: Low-level interface to the spam-stat dictionary. 31028 (line 37) 31029* spam-stat-score-word: Low-level interface to the spam-stat dictionary. 31030 (line 34) 31031* spam-stat-split-fancy: Low-level interface to the spam-stat dictionary. 31032 (line 40) 31033* spam-stat-split-fancy-spam-group: Splitting mail using spam-stat. 31034 (line 31) 31035* spam-use-BBDB: BBDB Whitelists. (line 6) 31036* spam-use-BBDB-exclusive: BBDB Whitelists. (line 16) 31037* spam-use-blackholes: Blackholes. (line 6) 31038* spam-use-blacklist: Blacklists and Whitelists. 31039 (line 6) 31040* spam-use-bogofilter: Bogofilter. (line 6) 31041* spam-use-bogofilter-headers: Bogofilter. (line 32) 31042* spam-use-dig: Blackholes. (line 31) 31043* spam-use-hashcash: Anti-spam Hashcash Payments. 31044 (line 6) 31045* spam-use-ifile: ifile spam filtering. 31046 (line 6) 31047* spam-use-regex-headers: Regular Expressions Header Matching. 31048 (line 6) 31049* spam-use-spamassassin: SpamAssassin back end. 31050 (line 6) 31051* spam-use-spamassassin-headers: SpamAssassin back end. 31052 (line 24) 31053* spam-use-spamoracle: SpamOracle. (line 22) 31054* spam-use-spamoracle <1>: SpamOracle. (line 35) 31055* spam-use-stat: Spam Package Introduction. 31056 (line 12) 31057* spam-use-stat <1>: Spam Statistics Filtering. 31058 (line 12) 31059* spam-use-whitelist: Blacklists and Whitelists. 31060 (line 14) 31061* spam-use-whitelist-exclusive: Blacklists and Whitelists. 31062 (line 22) 31063* SpamAssassin: SpamAssassin. (line 6) 31064* spamassassin, spam filtering: SpamAssassin back end. 31065 (line 6) 31066* spamming: Crosspost Handling. (line 6) 31067* SpamOracle: SpamOracle. (line 6) 31068* sparse articles: Terminology. (line 182) 31069* split: The Gnus Registry. (line 6) 31070* splitting mail: Splitting Mail. (line 6) 31071* splitting, terminology: Terminology. (line 204) 31072* spool: Terminology. (line 151) 31073* starting up: Starting Up. (line 6) 31074* startup files: Startup Files. (line 6) 31075* sticky articles: Sticky Articles. (line 6) 31076* stripping advertisements: Article Hiding. (line 43) 31077* styles: Posting Styles. (line 6) 31078* subscribed: Group Parameters. (line 71) 31079* subscription: New Groups. (line 6) 31080* subscription <1>: Subscription Commands. 31081 (line 6) 31082* summary buffer: Summary Buffer. (line 6) 31083* summary buffer format: Summary Buffer Format. 31084 (line 6) 31085* summary exit: Exiting the Summary Buffer. 31086 (line 6) 31087* summary movement: Summary Maneuvering. (line 6) 31088* summary sorting: Summary Sorting. (line 6) 31089* superseding articles: Canceling and Superseding. 31090 (line 6) 31091* symbolic prefixes: Symbolic Prefixes. (line 6) 31092* sync: The Gnus Cloud. (line 6) 31093* synch: The Gnus Cloud. (line 6) 31094* synchronization: The Gnus Cloud. (line 6) 31095* tabbed interface: Tabbed Interface. (line 6) 31096* tabs: Tabbed Interface. (line 6) 31097* temporary groups: Terminology. (line 173) 31098* terminology: Terminology. (line 6) 31099* the gnus diary library: The Gnus Diary Library. 31100 (line 6) 31101* the nndiary back end: The NNDiary Back End. 31102 (line 6) 31103* thread commands: Thread Commands. (line 6) 31104* thread root: Terminology. (line 190) 31105* threading: Threading. (line 6) 31106* threading <1>: Terminology. (line 186) 31107* timestamps: Group Timestamp. (line 6) 31108* To: To From Newsgroups. (line 6) 31109* to-address: Group Parameters. (line 31) 31110* to-group: Group Parameters. (line 101) 31111* to-list: Group Parameters. (line 52) 31112* topic commands: Topic Commands. (line 6) 31113* topic parameters: Topic Commands. (line 150) 31114* topic parameters <1>: Topic Parameters. (line 6) 31115* topic sorting: Topic Sorting. (line 6) 31116* topic topology: Topic Topology. (line 6) 31117* topic variables: Topic Variables. (line 6) 31118* topics: Group Topics. (line 6) 31119* topology: Topic Topology. (line 6) 31120* total-expire: Group Parameters. (line 135) 31121* track: The Gnus Registry. (line 6) 31122* transient-mark-mode: Process/Prefix. (line 19) 31123* trees: Tree Display. (line 6) 31124* troubleshooting: Troubleshooting. (line 6) 31125* UCE: Thwarting Email Spam. 31126 (line 6) 31127* UCE <1>: The problem of spam. (line 6) 31128* UCE <2>: Anti-Spam Basics. (line 6) 31129* underline: Article Fontisizing. (line 24) 31130* undo: Undo. (line 6) 31131* Unicode: Article Washing. (line 80) 31132* unix mail box: Unix Mail Box. (line 6) 31133* Unix mbox: Document Groups. (line 12) 31134* unplugged: Gnus Unplugged. (line 6) 31135* unshar: Shell Archives. (line 6) 31136* unsolicited commercial email: Thwarting Email Spam. 31137 (line 6) 31138* unsolicited commercial email <1>: The problem of spam. (line 6) 31139* unsolicited commercial email <2>: Anti-Spam Basics. (line 6) 31140* updating sieve script: Sieve Commands. (line 39) 31141* url: Article Commands. (line 21) 31142* USEFOR: Conformity. (line 31) 31143* Usenet searches: Web Searches. (line 6) 31144* User-Agent: Mail and Post. (line 21) 31145* using gpg: Composing Messages. (line 6) 31146* using gpg <1>: Signing and encrypting. 31147 (line 6) 31148* using s/mime: Composing Messages. (line 6) 31149* using s/mime <1>: Signing and encrypting. 31150 (line 6) 31151* using smime: Composing Messages. (line 6) 31152* using smime <1>: Signing and encrypting. 31153 (line 6) 31154* UTF-8 group names: Non-ASCII Group Names. 31155 (line 53) 31156* utility functions: Gnus Utility Functions. 31157 (line 6) 31158* uudecode: Uuencoded Articles. (line 6) 31159* uuencode: MIME Commands. (line 128) 31160* uuencoded articles: Uuencoded Articles. (line 6) 31161* velveeta: Crosspost Handling. (line 6) 31162* version: Group Information. (line 17) 31163* version-control: Startup Files. (line 46) 31164* viewing attachments: MIME Commands. (line 6) 31165* viewing files: Viewing Files. (line 6) 31166* Vipul’s Razor: SpamAssassin. (line 6) 31167* virtual groups: Virtual Groups. (line 6) 31168* virtual server: Terminology. (line 163) 31169* visible: Group Parameters. (line 85) 31170* visible group parameter: Listing Groups. (line 85) 31171* visual: Highlighting and Menus. 31172 (line 6) 31173* washing: Article Washing. (line 6) 31174* washing <1>: Terminology. (line 168) 31175* web: Article Commands. (line 21) 31176* web <1>: Browsing the Web. (line 6) 31177* whitelists, spam filtering: Blacklists and Whitelists. 31178 (line 6) 31179* window height: Window Layout. (line 101) 31180* window layout: Window Layout. (line 6) 31181* window width: Window Layout. (line 101) 31182* www: Browsing the Web. (line 6) 31183* x-face: Article Display. (line 6) 31184* x-face <1>: X-Face. (line 6) 31185* x-face <2>: X-Face. (line 10) 31186* X-GM-LABELS: Support for IMAP Extensions. 31187 (line 6) 31188* X-Hashcash: Hashcash. (line 23) 31189* XOVER: NNTP. (line 123) 31190* Xref: Crosspost Handling. (line 19) 31191* yEnc: MIME Commands. (line 128) 31192* zombie groups: Group Levels. (line 41) 31193* zombie groups <1>: Terminology. (line 133) 31194 31195 31196File: gnus.info, Node: Key Index, Prev: Index, Up: Top 31197 3119814 Key Index 31199************ 31200 31201[index] 31202* Menu: 31203 31204* ! (Summary): Setting Marks. (line 16) 31205* # (Group): Marking Groups. (line 16) 31206* # (Summary): Setting Process Marks. 31207 (line 14) 31208* $ (Summary): Spam Package Introduction. 31209 (line 80) 31210* & (Summary): Searching for Articles. 31211 (line 23) 31212* * (Summary): Persistent Articles. (line 22) 31213* , (Group): Group Maneuvering. (line 40) 31214* , (Summary): Choosing Commands. (line 60) 31215* . (Summary): Choosing Commands. (line 55) 31216* . (Article): Using MIME. (line 104) 31217* . (Group): Group Maneuvering. (line 44) 31218* . (Pick): Pick and Read. (line 19) 31219* / * (Summary): Limiting. (line 105) 31220* / . (Summary): Limiting. (line 76) 31221* / / (Summary): Limiting. (line 17) 31222* / a (Summary): Limiting. (line 22) 31223* / A (Summary): Limiting. (line 32) 31224* / b (Summary): Limiting. (line 128) 31225* / c (Summary): Limiting. (line 119) 31226* / C (Summary): Limiting. (line 123) 31227* / D (Summary): Limiting. (line 101) 31228* / d (Summary): Limiting. (line 109) 31229* / E (Summary): Limiting. (line 97) 31230* / h (Summary): Limiting. (line 134) 31231* / m (Summary): Limiting. (line 56) 31232* / M (Summary): Limiting. (line 113) 31233* / n (Summary): Limiting. (line 66) 31234* / N (Summary): Limiting. (line 141) 31235* / o (Summary): Limiting. (line 145) 31236* / p (Summary): Limiting. (line 85) 31237* / R (Summary): Limiting. (line 27) 31238* / r (Summary): Limiting. (line 91) 31239* / S (Summary): Limiting. (line 38) 31240* / t (Summary): Limiting. (line 60) 31241* / T (Summary): Limiting. (line 116) 31242* / u (Summary): Limiting. (line 50) 31243* / v (Summary): Limiting. (line 80) 31244* / w (Summary): Limiting. (line 71) 31245* / x (Summary): Limiting. (line 43) 31246* < (Summary): Paging the Article. (line 50) 31247* = (Summary): Really Various Summary Commands. 31248 (line 51) 31249* > (Summary): Paging the Article. (line 55) 31250* ? (Article): Article Keymap. (line 39) 31251* ? (Browse): Browse Foreign Server. 31252 (line 45) 31253* ? (Group): Group Information. (line 20) 31254* ? (Summary): Setting Marks. (line 21) 31255* @ (Agent Summary): Summary Agent Commands. 31256 (line 14) 31257* [ (Summary): Choosing Commands. (line 42) 31258* ] (Summary): Choosing Commands. (line 38) 31259* ^ (Group): Misc Group Stuff. (line 27) 31260* ^ (Summary): Finding the Parent. (line 7) 31261* | (Article): Using MIME. (line 101) 31262* | (Summary): Saving Articles. (line 60) 31263* A ! (Group): Listing Groups. (line 70) 31264* a (Category): Category Buffer. (line 26) 31265* a (Group): Misc Group Stuff. (line 31) 31266* a (Server): Server Commands. (line 16) 31267* a (Summary): Summary Post Commands. 31268 (line 10) 31269* A / (Group): Listing Groups. (line 73) 31270* A < (Summary): Paging the Article. (line 50) 31271* A > (Summary): Paging the Article. (line 55) 31272* A ? (Group): Listing Groups. (line 67) 31273* A A (Group): Listing Groups. (line 47) 31274* A a (Group): Listing Groups. (line 56) 31275* A c (Group): Listing Groups. (line 64) 31276* A d (Group): Listing Groups. (line 60) 31277* A D (Summary): Really Various Summary Commands. 31278 (line 8) 31279* A f (Group): Listing Groups. (line 80) 31280* A g (Summary): Paging the Article. (line 32) 31281* A k (Group): Listing Groups. (line 31) 31282* A l (Group): Listing Groups. (line 26) 31283* A m (Group): Listing Groups. (line 40) 31284* A M (Group): Listing Groups. (line 44) 31285* A M (Summary): Mailing List. (line 6) 31286* A p (Group): Listing Groups. (line 83) 31287* A P (Summary): Article Commands. (line 7) 31288* A R (Summary): Finding the Parent. (line 24) 31289* A s (Group): Listing Groups. (line 10) 31290* A s (Summary): Paging the Article. (line 59) 31291* A S (Summary): Sticky Articles. (line 21) 31292* A t (Summary): Article Miscellanea. (line 7) 31293* A T (Summary): Finding the Parent. (line 28) 31294* A T (Topic): Topic Commands. (line 140) 31295* A u (Group): Listing Groups. (line 19) 31296* A w (Summary): Article Commands. (line 21) 31297* A z (Group): Listing Groups. (line 37) 31298* B (Group): Finding the News. (line 41) 31299* b (Group): Group Maintenance. (line 7) 31300* B (Group) <1>: Browse Foreign Server. 31301 (line 7) 31302* b (Summary): MIME Commands. (line 11) 31303* B B (Summary): Mail Group Commands. (line 40) 31304* B c (Summary): Mail Group Commands. (line 35) 31305* B C-M-e (Summary): Mail Group Commands. (line 19) 31306* B DEL (Summary): Mail Group Commands. (line 25) 31307* B e (Summary): Mail Group Commands. (line 13) 31308* B i (Summary): Mail Group Commands. (line 46) 31309* B I (Summary): Mail Group Commands. (line 51) 31310* B m (Summary): Mail Group Commands. (line 30) 31311* B p (Summary): Mail Group Commands. (line 80) 31312* B q (Summary): Mail Group Commands. (line 71) 31313* B r (Summary): Mail Group Commands. (line 56) 31314* B t (Summary): Mail Group Commands. (line 76) 31315* B w (Summary): Mail Group Commands. (line 65) 31316* C (Article): Using MIME. (line 41) 31317* c (Article): Using MIME. (line 67) 31318* c (Category): Category Buffer. (line 23) 31319* c (Group): Group Data. (line 7) 31320* C (Group): Group Data. (line 12) 31321* c (Server): Server Commands. (line 37) 31322* C (Server): Unavailable Servers. (line 32) 31323* c (Server) <1>: Unavailable Servers. (line 52) 31324* C (Summary): Canceling and Superseding. 31325 (line 11) 31326* c (Summary): Exiting the Summary Buffer. 31327 (line 27) 31328* C-c C-c (Article): Mail Group Commands. (line 65) 31329* C-c C-c (Post): Composing Messages. (line 6) 31330* C-c C-c (Score): Score File Editing. (line 14) 31331* C-c C-d (Group): Group Information. (line 8) 31332* C-c C-d (Score): Score File Editing. (line 18) 31333* C-c C-f (Summary): Summary Mail Commands. 31334 (line 65) 31335* C-c C-i (Group): Group Information. (line 23) 31336* C-c C-m (Article): Article Keymap. (line 31) 31337* C-c C-m c o (Message): Signing and encrypting. 31338 (line 38) 31339* C-c C-m c p (Message): Signing and encrypting. 31340 (line 42) 31341* C-c C-m c s (Message): Signing and encrypting. 31342 (line 34) 31343* C-c C-m C-n (Message): Signing and encrypting. 31344 (line 46) 31345* C-c C-m s o (Message): Signing and encrypting. 31346 (line 26) 31347* C-c C-m s p (Message): Signing and encrypting. 31348 (line 30) 31349* C-c C-m s s (Message): Signing and encrypting. 31350 (line 22) 31351* C-c C-M-x (Group): Group Maintenance. (line 24) 31352* C-c C-n a (Summary): Mailing List. (line 32) 31353* C-c C-n h (Summary): Mailing List. (line 13) 31354* C-c C-n o (Summary): Mailing List. (line 28) 31355* C-c C-n p (Summary): Mailing List. (line 25) 31356* C-c C-n s (Summary): Mailing List. (line 17) 31357* C-c C-n u (Summary): Mailing List. (line 21) 31358* C-c C-p (Score): Score File Editing. (line 23) 31359* C-c C-s (Group): Sorting Groups. (line 6) 31360* C-c C-s C-a (Summary): Summary Sorting. (line 17) 31361* C-c C-s C-c (Summary): Summary Sorting. (line 35) 31362* C-c C-s C-d (Summary): Summary Sorting. (line 26) 31363* C-c C-s C-i (Summary): Summary Sorting. (line 41) 31364* C-c C-s C-l (Summary): Summary Sorting. (line 32) 31365* C-c C-s C-m C-d (Summary): Summary Sorting. (line 29) 31366* C-c C-s C-m C-m (Summary): Summary Sorting. (line 38) 31367* C-c C-s C-n (Summary): Summary Sorting. (line 10) 31368* C-c C-s C-n (Summary) <1>: Summary Sorting. (line 13) 31369* C-c C-s C-o (Summary): Summary Sorting. (line 47) 31370* C-c C-s C-r (Summary): Summary Sorting. (line 44) 31371* C-c C-s C-s (Summary): Summary Sorting. (line 23) 31372* C-c C-s C-t (Summary): Summary Sorting. (line 20) 31373* C-c C-x (Group): Group Maintenance. (line 18) 31374* C-c C-x (Topic): Topic Commands. (line 129) 31375* C-c M-g (Group): Scanning New Messages. 31376 (line 20) 31377* C-c ^ (Article): Article Keymap. (line 26) 31378* C-d (Summary): Really Various Summary Commands. 31379 (line 8) 31380* C-k (Group): Subscription Commands. 31381 (line 25) 31382* C-k (Summary): Setting Marks. (line 41) 31383* C-k (Topic): Topic Commands. (line 40) 31384* C-M-a (Summary): Really Various Summary Commands. 31385 (line 59) 31386* C-M-d (Summary): Really Various Summary Commands. 31387 (line 37) 31388* C-M-e (Summary): Really Various Summary Commands. 31389 (line 55) 31390* C-M-k (Summary): Thread Commands. (line 8) 31391* C-M-l (Summary): Thread Commands. (line 15) 31392* C-M-n (Summary): Thread Commands. (line 64) 31393* C-M-p (Summary): Thread Commands. (line 69) 31394* C-M-RET (Group): Selecting a Group. (line 48) 31395* C-o (Article): Using MIME. (line 49) 31396* C-t (Summary): Really Various Summary Commands. 31397 (line 45) 31398* C-w (Group): Subscription Commands. 31399 (line 38) 31400* C-w (Summary): Setting Marks. (line 60) 31401* C-x C-s (Summary): Exiting the Summary Buffer. 31402 (line 44) 31403* C-x C-t (Group): Subscription Commands. 31404 (line 32) 31405* C-y (Group): Subscription Commands. 31406 (line 29) 31407* C-y (Topic): Topic Commands. (line 44) 31408* d (Article): Using MIME. (line 62) 31409* d (Browse): Browse Foreign Server. 31410 (line 42) 31411* D (Server): Unavailable Servers. (line 36) 31412* d (Summary): Setting Marks. (line 26) 31413* D (Summary): Setting Marks. (line 30) 31414* D e (Draft): Drafts. (line 36) 31415* D g (Group): Sieve Commands. (line 35) 31416* D s (Draft): Drafts. (line 43) 31417* D S (Draft): Drafts. (line 43) 31418* D t (Draft): Drafts. (line 50) 31419* D u (Group): Sieve Commands. (line 39) 31420* DEL (Article): Article Keymap. (line 22) 31421* DEL (Browse): Browse Foreign Server. 31422 (line 49) 31423* DEL (Group): Group Maneuvering. (line 15) 31424* DEL (Summary): Paging the Article. (line 19) 31425* E (Article): Using MIME. (line 92) 31426* e (Article): Using MIME. (line 97) 31427* e (Category): Category Buffer. (line 16) 31428* e (Server): Server Commands. (line 19) 31429* E (Summary): Setting Marks. (line 69) 31430* e (Summary): Mail Group Commands. (line 65) 31431* F (Article): Article Keymap. (line 60) 31432* F (Group): Group Maintenance. (line 11) 31433* f (Summary): Summary Post Commands. 31434 (line 16) 31435* F (Summary): Summary Post Commands. 31436 (line 20) 31437* g (Binary): Binary Groups. (line 12) 31438* g (Category): Category Buffer. (line 33) 31439* g (Group): Scanning New Messages. 31440 (line 7) 31441* g (Server): Server Commands. (line 48) 31442* g (Summary): Paging the Article. (line 32) 31443* G b (Summary): Choosing Commands. (line 60) 31444* G b a (Group): nnmairix keyboard shortcuts. 31445 (line 60) 31446* G b c (Group): nnmairix keyboard shortcuts. 31447 (line 9) 31448* G b d (Group): nnmairix keyboard shortcuts. 31449 (line 55) 31450* G b g (Group): nnmairix keyboard shortcuts. 31451 (line 28) 31452* G b i (Group): nnmairix keyboard shortcuts. 31453 (line 24) 31454* G b m (Group): nnmairix keyboard shortcuts. 31455 (line 19) 31456* G b o (Group): nnmairix keyboard shortcuts. 31457 (line 76) 31458* G b p (Group): nnmairix keyboard shortcuts. 31459 (line 71) 31460* G b q (Group): nnmairix keyboard shortcuts. 31461 (line 34) 31462* G b r (Group): nnmairix keyboard shortcuts. 31463 (line 50) 31464* G b s (Group): nnmairix keyboard shortcuts. 31465 (line 14) 31466* G b t (Group): nnmairix keyboard shortcuts. 31467 (line 38) 31468* G b u (Group): nnmairix keyboard shortcuts. 31469 (line 43) 31470* G c (Group): Foreign Groups. (line 39) 31471* G C-n (Summary): Choosing Commands. (line 46) 31472* G C-p (Summary): Choosing Commands. (line 50) 31473* G d (Group): Foreign Groups. (line 54) 31474* G D (Group): Foreign Groups. (line 62) 31475* G DEL (Group): Foreign Groups. (line 97) 31476* G e (Group): Foreign Groups. (line 42) 31477* G E (Group): Foreign Groups. (line 50) 31478* G f (Summary): Choosing Commands. (line 55) 31479* G f (Group): Foreign Groups. (line 67) 31480* G g (Summary): Summary Maneuvering. (line 22) 31481* G G f (Summary): nnmairix keyboard shortcuts. 31482 (line 98) 31483* G G g (Summary): nnmairix keyboard shortcuts. 31484 (line 87) 31485* G G m (Summary): nnmairix keyboard shortcuts. 31486 (line 82) 31487* G G o (Summary): nnmairix keyboard shortcuts. 31488 (line 103) 31489* G G t (Summary): nnmairix keyboard shortcuts. 31490 (line 92) 31491* G G u (Summary): nnmairix keyboard shortcuts. 31492 (line 112) 31493* G h (Group): Foreign Groups. (line 59) 31494* G j (Summary): Choosing Commands. (line 79) 31495* G l (Summary): Choosing Commands. (line 67) 31496* G m (Group): Foreign Groups. (line 24) 31497* G M (Group): Foreign Groups. (line 29) 31498* G M-n (Summary): Summary Maneuvering. (line 13) 31499* G M-p (Summary): Summary Maneuvering. (line 18) 31500* G n (Summary): Choosing Commands. (line 22) 31501* G N (Summary): Choosing Commands. (line 30) 31502* G o (Summary): Choosing Commands. (line 70) 31503* G p (Group): Foreign Groups. (line 46) 31504* G P (Summary): Choosing Commands. (line 34) 31505* G p (Topic): Topic Commands. (line 150) 31506* G P a (Group): Sorting Groups. (line 80) 31507* G P l (Group): Sorting Groups. (line 88) 31508* G P m (Group): Sorting Groups. (line 100) 31509* G P n (Group): Sorting Groups. (line 104) 31510* G P r (Group): Sorting Groups. (line 96) 31511* G P s (Group): Sorting Groups. (line 108) 31512* G P u (Group): Sorting Groups. (line 84) 31513* G P v (Group): Sorting Groups. (line 92) 31514* G r (Group): Foreign Groups. (line 33) 31515* G R (Group): Foreign Groups. (line 93) 31516* G R (Group) <1>: RSS. (line 19) 31517* G S a (Group): Sorting Groups. (line 44) 31518* G S l (Group): Sorting Groups. (line 52) 31519* G S m (Group): Sorting Groups. (line 64) 31520* G S n (Group): Sorting Groups. (line 68) 31521* G S r (Group): Sorting Groups. (line 60) 31522* G S u (Group): Sorting Groups. (line 48) 31523* G S v (Group): Sorting Groups. (line 56) 31524* G u (Group): Foreign Groups. (line 78) 31525* G u (Summary): Choosing Commands. (line 38) 31526* G U (Summary): Choosing Commands. (line 42) 31527* G V (Group): Foreign Groups. (line 105) 31528* G v (Group): Foreign Groups. (line 109) 31529* G w (Group): Foreign Groups. (line 82) 31530* G z (Group): Misc Group Stuff. (line 56) 31531* h (Summary): Paging the Article. (line 63) 31532* H d (Group): Group Information. (line 8) 31533* H d (Summary): Summary Group Information. 31534 (line 7) 31535* H h (Summary): Summary Group Information. 31536 (line 12) 31537* H i (Summary): Summary Group Information. 31538 (line 16) 31539* H v (Group): Group Information. (line 17) 31540* i (Article): Using MIME. (line 81) 31541* i (Group): Misc Group Stuff. (line 45) 31542* J # (Agent Summary): Summary Agent Commands. 31543 (line 7) 31544* j (Group): Group Maneuvering. (line 35) 31545* j (Summary): Choosing Commands. (line 79) 31546* J a (Agent Group): Group Agent Commands. 31547 (line 22) 31548* J a (Agent Server): Server Agent Commands. 31549 (line 7) 31550* J c (Agent Group): Group Agent Commands. 31551 (line 11) 31552* J c (Agent Summary): Summary Agent Commands. 31553 (line 18) 31554* J j (Agent): Agent Commands. (line 6) 31555* J M-# (Agent Summary): Summary Agent Commands. 31556 (line 10) 31557* J r (Agent Group): Group Agent Commands. 31558 (line 27) 31559* J r (Agent Server): Server Agent Commands. 31560 (line 11) 31561* J s (Agent Group): Group Agent Commands. 31562 (line 14) 31563* J S (Agent Group): Group Agent Commands. 31564 (line 18) 31565* J S (Agent Summary): Summary Agent Commands. 31566 (line 22) 31567* J s (Agent Summary): Summary Agent Commands. 31568 (line 26) 31569* J u (Agent Group): Group Agent Commands. 31570 (line 7) 31571* J u (Agent Summary): Summary Agent Commands. 31572 (line 30) 31573* J Y (Agent Group): Group Agent Commands. 31574 (line 32) 31575* k (Article): Sticky Articles. (line 31) 31576* k (Category): Category Buffer. (line 20) 31577* k (Server): Server Commands. (line 31) 31578* k (Summary): Setting Marks. (line 35) 31579* K b (Summary): MIME Commands. (line 61) 31580* K c (Summary): MIME Commands. (line 29) 31581* K d (Summary): MIME Commands. (line 25) 31582* K e (Summary): MIME Commands. (line 32) 31583* K E (Summary): Mail Group Commands. (line 92) 31584* K H (Summary): MIME Commands. (line 44) 31585* K i (Summary): MIME Commands. (line 35) 31586* K m (Summary): MIME Commands. (line 76) 31587* K o (Summary): MIME Commands. (line 14) 31588* K O (Summary): MIME Commands. (line 17) 31589* K r (Summary): MIME Commands. (line 22) 31590* K v (Summary): MIME Commands. (line 11) 31591* K | (Summary): MIME Commands. (line 38) 31592* l (Browse): Browse Foreign Server. 31593 (line 39) 31594* l (Category): Category Buffer. (line 41) 31595* l (Group): Listing Groups. (line 10) 31596* L (Group): Listing Groups. (line 19) 31597* l (Server): Server Commands. (line 40) 31598* L (Server): Unavailable Servers. (line 58) 31599* l (Summary): Choosing Commands. (line 67) 31600* m (Group): Misc Group Stuff. (line 39) 31601* m (Summary): Summary Mail Commands. 31602 (line 79) 31603* M ? (Summary): Setting Marks. (line 21) 31604* M b (Group): Marking Groups. (line 30) 31605* M b (Summary): Setting Marks. (line 73) 31606* M B (Summary): Setting Marks. (line 77) 31607* M c (Summary): Setting Marks. (line 10) 31608* M C (Summary): Setting Marks. (line 45) 31609* M C-c (Summary): Setting Marks. (line 48) 31610* M d (Summary): Setting Marks. (line 26) 31611* M e (Summary): Setting Marks. (line 69) 31612* M H (Summary): Setting Marks. (line 52) 31613* M h (Summary): Setting Marks. (line 56) 31614* M k (Summary): Setting Marks. (line 35) 31615* M K (Summary): Setting Marks. (line 41) 31616* M m (Group): Marking Groups. (line 17) 31617* M P a (Summary): Setting Process Marks. 31618 (line 64) 31619* M P b (Summary): Setting Process Marks. 31620 (line 67) 31621* M P G (Summary): Setting Process Marks. 31622 (line 35) 31623* M P g (Summary): Setting Process Marks. 31624 (line 42) 31625* M P i (Summary): Setting Process Marks. 31626 (line 27) 31627* M P k (Summary): Setting Process Marks. 31628 (line 71) 31629* M P p (Summary): Setting Process Marks. 31630 (line 14) 31631* M P R (Summary): Setting Process Marks. 31632 (line 31) 31633* M P r (Summary): Setting Process Marks. 31634 (line 39) 31635* M P s (Summary): Setting Process Marks. 31636 (line 57) 31637* M P S (Summary): Setting Process Marks. 31638 (line 60) 31639* M P t (Summary): Setting Process Marks. 31640 (line 45) 31641* M P T (Summary): Setting Process Marks. 31642 (line 49) 31643* M P u (Summary): Setting Process Marks. 31644 (line 19) 31645* M P U (Summary): Setting Process Marks. 31646 (line 23) 31647* M P v (Summary): Setting Process Marks. 31648 (line 53) 31649* M P w (Summary): Setting Process Marks. 31650 (line 79) 31651* M P y (Summary): Setting Process Marks. 31652 (line 75) 31653* M r (Group): Marking Groups. (line 33) 31654* M S (Summary): Limiting. (line 97) 31655* M s t: Bogofilter. (line 30) 31656* M s x (Summary): Spam Package Introduction. 31657 (line 80) 31658* M t (Summary): Setting Marks. (line 16) 31659* M u (Group): Marking Groups. (line 21) 31660* M U (Group): Marking Groups. (line 24) 31661* M V c (Summary): Setting Marks. (line 81) 31662* M V k (Summary): Setting Marks. (line 64) 31663* M V m (Summary): Setting Marks. (line 89) 31664* M V u (Summary): Setting Marks. (line 85) 31665* M w (Group): Marking Groups. (line 27) 31666* M-# (Group): Marking Groups. (line 20) 31667* M-# (Summary): Setting Process Marks. 31668 (line 19) 31669* M-& (Summary): Searching for Articles. 31670 (line 34) 31671* M-* (Summary): Persistent Articles. (line 25) 31672* M-c (Group): Group Data. (line 16) 31673* M-c (Server): Unavailable Servers. (line 44) 31674* M-d (Group): Group Information. (line 12) 31675* M-d (Summary): Spam Package Introduction. 31676 (line 80) 31677* M-DOWN (Summary): Thread Commands. (line 65) 31678* M-g (Group): Scanning New Messages. 31679 (line 14) 31680* M-g (Summary): Exiting the Summary Buffer. 31681 (line 50) 31682* M-i (Summary): Symbolic Prefixes. (line 19) 31683* M-k (Group): Kill Files. (line 43) 31684* M-K (Group): Kill Files. (line 46) 31685* M-k (Summary): Kill Files. (line 35) 31686* M-K (Summary): Kill Files. (line 38) 31687* M-n (Group): Group Maneuvering. (line 25) 31688* M-n (Summary): Summary Maneuvering. (line 13) 31689* M-o (Server): Unavailable Servers. (line 40) 31690* M-p (Group): Group Maneuvering. (line 29) 31691* M-p (Summary): Summary Maneuvering. (line 18) 31692* M-r (Summary): Searching for Articles. 31693 (line 11) 31694* M-R (Summary): Searching for Articles. 31695 (line 19) 31696* M-RET (Article): Using MIME. (line 32) 31697* M-RET (Group): Selecting a Group. (line 32) 31698* M-RET (Summary): Paging the Article. (line 27) 31699* M-s (Summary): Searching for Articles. 31700 (line 7) 31701* M-S (Summary): Searching for Articles. 31702 (line 15) 31703* M-SPC (Group): Selecting a Group. (line 43) 31704* M-t (Summary): MIME Commands. (line 87) 31705* M-TAB (Article): Article Keymap. (line 47) 31706* M-TAB (Topic): Topic Commands. (line 31) 31707* M-u (Summary): Setting Marks. (line 10) 31708* M-UP (Summary): Thread Commands. (line 70) 31709* M-^ (Summary): Finding the Parent. (line 44) 31710* n (Browse): Browse Foreign Server. 31711 (line 18) 31712* n (Group): Group Maneuvering. (line 10) 31713* N (Group): Group Maneuvering. (line 19) 31714* n (Summary): Choosing Commands. (line 22) 31715* N (Summary): Choosing Commands. (line 30) 31716* o (Article): Using MIME. (line 45) 31717* O (Server): Unavailable Servers. (line 28) 31718* o (Summary): Saving Articles. (line 26) 31719* O b (Summary): Saving Articles. (line 47) 31720* O f (Summary): Saving Articles. (line 39) 31721* O F (Summary): Saving Articles. (line 43) 31722* O h (Summary): Saving Articles. (line 51) 31723* O m (Summary): Saving Articles. (line 30) 31724* O o (Summary): Saving Articles. (line 26) 31725* O p (Summary): Saving Articles. (line 60) 31726* O P (Summary): Saving Articles. (line 70) 31727* O r (Summary): Saving Articles. (line 34) 31728* O v (Summary): Saving Articles. (line 55) 31729* p (Article): Using MIME. (line 77) 31730* p (Browse): Browse Foreign Server. 31731 (line 21) 31732* p (Category): Category Buffer. (line 29) 31733* p (Group): Group Maneuvering. (line 15) 31734* P (Group): Group Maneuvering. (line 22) 31735* p (Summary): Choosing Commands. (line 26) 31736* P (Summary): Choosing Commands. (line 34) 31737* q (Article): Sticky Articles. (line 27) 31738* q (Browse): Browse Foreign Server. 31739 (line 39) 31740* q (Category): Category Buffer. (line 13) 31741* q (Group): Exiting Gnus. (line 14) 31742* Q (Group): Exiting Gnus. (line 17) 31743* q (Server): Server Commands. (line 28) 31744* q (Summary): Exiting the Summary Buffer. 31745 (line 12) 31746* Q (Summary): Exiting the Summary Buffer. 31747 (line 22) 31748* r (Article): Using MIME. (line 57) 31749* R (Article): Article Keymap. (line 50) 31750* R (Group): Scanning New Messages. 31751 (line 23) 31752* r (Group): File Commands. (line 7) 31753* R (Server): Unavailable Servers. (line 48) 31754* r (Summary): Summary Mail Commands. 31755 (line 10) 31756* R (Summary): Summary Mail Commands. 31757 (line 15) 31758* RET (Article): Using MIME. (line 25) 31759* RET (Browse): Browse Foreign Server. 31760 (line 28) 31761* RET (Group): Selecting a Group. (line 25) 31762* RET (Pick): Pick and Read. (line 40) 31763* RET (Summary): Paging the Article. (line 23) 31764* RET (Topic): Topic Commands. (line 62) 31765* s (Article): Article Keymap. (line 35) 31766* s (Category): Category Buffer. (line 37) 31767* s (Group): File Commands. (line 11) 31768* S (Server): Server Commands. (line 22) 31769* s (Server): Server Commands. (line 43) 31770* s (Summary): Paging the Article. (line 59) 31771* S (Summary): Canceling and Superseding. 31772 (line 32) 31773* S A (Summary): Summary Message Commands. 31774 (line 13) 31775* S B r (Summary): Summary Mail Commands. 31776 (line 51) 31777* S B R (Summary): Summary Mail Commands. 31778 (line 59) 31779* S C-k (Group): Subscription Commands. 31780 (line 44) 31781* S D b (Summary): Summary Mail Commands. 31782 (line 96) 31783* S D e (Summary): Summary Mail Commands. 31784 (line 126) 31785* S D r (Summary): Summary Mail Commands. 31786 (line 107) 31787* S f (Summary): Summary Post Commands. 31788 (line 16) 31789* S F (Summary): Summary Post Commands. 31790 (line 20) 31791* S i (Summary): Summary Mail Commands. 31792 (line 85) 31793* S k (Group): Subscription Commands. 31794 (line 25) 31795* S l (Group): Group Levels. (line 16) 31796* S L (Summary): Summary Mail Commands. 31797 (line 33) 31798* S m (Summary): Summary Mail Commands. 31799 (line 79) 31800* S M-c (Summary): Summary Mail Commands. 31801 (line 137) 31802* S n (Summary): Summary Post Commands. 31803 (line 25) 31804* S N (Summary): Summary Post Commands. 31805 (line 29) 31806* S o m (Summary): Summary Mail Commands. 31807 (line 65) 31808* S O m (Summary): Summary Mail Commands. 31809 (line 131) 31810* S o p (Summary): Summary Post Commands. 31811 (line 35) 31812* S O p (Summary): Summary Post Commands. 31813 (line 48) 31814* S p (Summary): Summary Post Commands. 31815 (line 10) 31816* S r (Summary): Summary Mail Commands. 31817 (line 10) 31818* S R (Summary): Summary Mail Commands. 31819 (line 15) 31820* S s (Group): Subscription Commands. 31821 (line 19) 31822* S t: Bogofilter. (line 30) 31823* S t (Group): Subscription Commands. 31824 (line 14) 31825* S u (Summary): Summary Post Commands. 31826 (line 53) 31827* S v (Summary): Summary Mail Commands. 31828 (line 38) 31829* S V (Summary): Summary Mail Commands. 31830 (line 45) 31831* S W (Article): Article Keymap. (line 55) 31832* S w (Group): Subscription Commands. 31833 (line 38) 31834* S w (Summary): Summary Mail Commands. 31835 (line 20) 31836* S W (Summary): Summary Mail Commands. 31837 (line 27) 31838* S x (Summary): Spam Package Introduction. 31839 (line 80) 31840* S y (Group): Subscription Commands. 31841 (line 29) 31842* S y (Summary): Summary Message Commands. 31843 (line 7) 31844* S z (Group): Subscription Commands. 31845 (line 41) 31846* SPC (Article): Article Keymap. (line 18) 31847* SPC (Browse): Browse Foreign Server. 31848 (line 24) 31849* SPC (Group): Selecting a Group. (line 7) 31850* SPC (Pick): Pick and Read. (line 28) 31851* SPC (Server): Server Commands. (line 25) 31852* SPC (Summary): Choosing Commands. (line 13) 31853* SPC (Summary) <1>: Paging the Article. (line 7) 31854* T # (Summary): Thread Commands. (line 23) 31855* T # (Topic): Topic Commands. (line 119) 31856* t (Article): Using MIME. (line 37) 31857* t (Group): Group Topics. (line 26) 31858* t (Summary): Article Washing. (line 58) 31859* T c (Topic): Topic Commands. (line 82) 31860* T C (Topic): Topic Commands. (line 111) 31861* T d (Summary): Thread Commands. (line 73) 31862* T D (Topic): Topic Commands. (line 95) 31863* T DEL (Topic): Topic Commands. (line 137) 31864* T h (Summary): Thread Commands. (line 38) 31865* T H (Summary): Thread Commands. (line 44) 31866* T h (Topic): Topic Commands. (line 87) 31867* T H (Topic): Topic Commands. (line 115) 31868* T i (Summary): Thread Commands. (line 19) 31869* T j (Topic): Topic Commands. (line 79) 31870* T k (Summary): Thread Commands. (line 8) 31871* T l (Summary): Thread Commands. (line 15) 31872* T m (Topic): Topic Commands. (line 74) 31873* T M (Topic): Topic Commands. (line 107) 31874* T M-# (Summary): Thread Commands. (line 27) 31875* T M-# (Topic): Topic Commands. (line 124) 31876* T M-n (Topic): Topic Commands. (line 144) 31877* T M-p (Topic): Topic Commands. (line 147) 31878* T M-^ (Summary): Thread Commands. (line 56) 31879* T n (Summary): Thread Commands. (line 63) 31880* T n (Topic): Topic Commands. (line 21) 31881* T o (Summary): Thread Commands. (line 79) 31882* T p (Summary): Thread Commands. (line 68) 31883* T r (Topic): Topic Commands. (line 134) 31884* T s (Summary): Thread Commands. (line 34) 31885* T S (Summary): Thread Commands. (line 41) 31886* T s (Topic): Topic Commands. (line 91) 31887* T S a (Topic): Topic Sorting. (line 10) 31888* T S e (Topic): Topic Sorting. (line 34) 31889* T S l (Topic): Topic Sorting. (line 18) 31890* T S m (Topic): Topic Sorting. (line 30) 31891* T S r (Topic): Topic Sorting. (line 26) 31892* T S s (Topic): Topic Sorting. (line 38) 31893* T S u (Topic): Topic Sorting. (line 14) 31894* T S v (Topic): Topic Sorting. (line 22) 31895* T T (Summary): Thread Commands. (line 31) 31896* T t (Summary): Thread Commands. (line 47) 31897* T TAB (Topic): Topic Commands. (line 26) 31898* T u (Summary): Thread Commands. (line 76) 31899* T ^ (Summary): Thread Commands. (line 52) 31900* TAB (Article): Article Keymap. (line 43) 31901* TAB (Topic): Topic Commands. (line 26) 31902* u (Browse): Browse Foreign Server. 31903 (line 31) 31904* u (Group): Subscription Commands. 31905 (line 14) 31906* U (Group): Subscription Commands. 31907 (line 19) 31908* u (Pick): Pick and Read. (line 32) 31909* v (Article): Article Keymap. (line 12) 31910* v (Group): Misc Group Stuff. (line 15) 31911* V (Group): Group Information. (line 17) 31912* v (Server): Server Commands. (line 12) 31913* v (Summary): Summary Buffer. (line 18) 31914* V c (Summary): Summary Score Commands. 31915 (line 43) 31916* V C (Summary): Summary Score Commands. 31917 (line 60) 31918* V e (Summary): Summary Score Commands. 31919 (line 47) 31920* V f (Summary): Summary Score Commands. 31921 (line 52) 31922* V F (Summary): Summary Score Commands. 31923 (line 56) 31924* V m (Summary): Summary Score Commands. 31925 (line 66) 31926* V R (Summary): Summary Score Commands. 31927 (line 37) 31928* V s (Summary): Summary Score Commands. 31929 (line 20) 31930* V S (Summary): Summary Score Commands. 31931 (line 23) 31932* V t (Summary): Summary Score Commands. 31933 (line 27) 31934* V w (Summary): Summary Score Commands. 31935 (line 34) 31936* V x (Summary): Summary Score Commands. 31937 (line 70) 31938* w (Summary): Article Commands. (line 21) 31939* W 6 (Summary): Article Washing. (line 137) 31940* W A (Summary): Article Washing. (line 150) 31941* W a (Summary): Article Washing. (line 216) 31942* W b (Summary): Article Washing. (line 198) 31943* W B (Summary): Article Washing. (line 202) 31944* W C (Summary): Article Washing. (line 117) 31945* W c (Summary): Article Washing. (line 121) 31946* W d (Summary): Article Washing. (line 69) 31947* W D d (Summary): Article Display. (line 32) 31948* W D D (Summary): Article Display. (line 57) 31949* W D f (Summary): Article Display. (line 39) 31950* W D g (Summary): Article Display. (line 50) 31951* W D h (Summary): Article Display. (line 53) 31952* W D m (Summary): Article Display. (line 42) 31953* W D n (Summary): Article Display. (line 46) 31954* W D s (Summary): Article Display. (line 36) 31955* W D W (Summary): Article Display. (line 61) 31956* W D x (Summary): Article Display. (line 28) 31957* W e (Group): Group Score Commands. 31958 (line 9) 31959* W e (Summary): Article Fontisizing. (line 6) 31960* W E a (Summary): Article Washing. (line 233) 31961* W E A (Summary): Article Washing. (line 236) 31962* W E e (Summary): Article Washing. (line 243) 31963* W E l (Summary): Article Washing. (line 220) 31964* W E m (Summary): Article Washing. (line 224) 31965* W E s (Summary): Article Washing. (line 239) 31966* W E t (Summary): Article Washing. (line 229) 31967* W E w (Summary): Article Header. (line 19) 31968* W f (Group): Group Score Commands. 31969 (line 13) 31970* W G f (Summary): Article Header. (line 16) 31971* W G n (Summary): Article Header. (line 12) 31972* W G u (Summary): Article Header. (line 9) 31973* W h (Summary): Article Washing. (line 161) 31974* W H a (Summary): Article Highlighting. 31975 (line 10) 31976* W H c (Summary): Article Highlighting. 31977 (line 25) 31978* W H h (Summary): Article Highlighting. 31979 (line 15) 31980* W H s (Summary): Article Highlighting. 31981 (line 71) 31982* W i (Summary): Article Washing. (line 49) 31983* W l (Summary): Article Washing. (line 29) 31984* W m (Summary): Article Washing. (line 46) 31985* W M c (Summary): MIME Commands. (line 95) 31986* W M h (Summary): MIME Commands. (line 66) 31987* W M v (Summary): MIME Commands. (line 106) 31988* W M w (Summary): MIME Commands. (line 91) 31989* W o (Summary): Article Washing. (line 66) 31990* W p (Summary): Article Washing. (line 206) 31991* W Q (Summary): Article Washing. (line 114) 31992* W q (Summary): Article Washing. (line 127) 31993* W r (Summary): Article Washing. (line 34) 31994* W s (Summary): Article Washing. (line 212) 31995* W t (Summary): Article Washing. (line 58) 31996* W T e (Summary): Article Date. (line 33) 31997* W T i (Summary): Article Date. (line 15) 31998* W T l (Summary): Article Date. (line 19) 31999* W T o (Summary): Article Date. (line 43) 32000* W T p (Summary): Article Date. (line 22) 32001* W T s (Summary): Article Date. (line 26) 32002* W T u (Summary): Article Date. (line 11) 32003* W U (Summary): Article Washing. (line 80) 32004* W u (Summary): Article Washing. (line 155) 32005* W v (Summary): Article Washing. (line 62) 32006* W w (Summary): Article Washing. (line 108) 32007* W W a (Summary): Article Hiding. (line 10) 32008* W W b (Summary): Article Hiding. (line 19) 32009* W W B (Summary): Article Hiding. (line 43) 32010* W W c (Summary): Article Hiding. (line 80) 32011* W W C (Summary): Article Hiding. (line 119) 32012* W W C-c (Summary): Article Hiding. (line 106) 32013* W W h (Summary): Article Hiding. (line 15) 32014* W W l (Summary): Article Hiding. (line 27) 32015* W W P (Summary): Article Hiding. (line 39) 32016* W W s (Summary): Article Hiding. (line 23) 32017* W Y a (Summary): Article Washing. (line 100) 32018* W Y c (Summary): Article Washing. (line 104) 32019* W Y f (Summary): Article Washing. (line 87) 32020* W Y u (Summary): Article Washing. (line 92) 32021* W Z (Summary): Article Washing. (line 145) 32022* x (Summary): Limiting. (line 50) 32023* X b (Summary): Other Files. (line 10) 32024* X m (Summary): MIME Commands. (line 82) 32025* X o (Summary): Other Files. (line 7) 32026* X p (Summary): PostScript Files. (line 7) 32027* X P (Summary): PostScript Files. (line 10) 32028* X s (Summary): Shell Archives. (line 11) 32029* X S (Summary): Shell Archives. (line 14) 32030* X u (Summary): Uuencoded Articles. (line 7) 32031* X U (Summary): Uuencoded Articles. (line 10) 32032* X v p (Summary): PostScript Files. (line 14) 32033* X v P (Summary): PostScript Files. (line 18) 32034* X v s (Summary): Shell Archives. (line 18) 32035* X v S (Summary): Shell Archives. (line 22) 32036* X v u (Summary): Uuencoded Articles. (line 14) 32037* X v U (Summary): Uuencoded Articles. (line 17) 32038* X Y (Summary): Other Files. (line 14) 32039* y (Server): Server Commands. (line 34) 32040* Y c (Summary): Summary Generation Commands. 32041 (line 10) 32042* Y d (Summary): Summary Generation Commands. 32043 (line 14) 32044* Y g (Summary): Summary Generation Commands. 32045 (line 7) 32046* Y t (Summary): Summary Generation Commands. 32047 (line 18) 32048* z (Group): Exiting Gnus. (line 9) 32049* z (Server): Server Commands. (line 53) 32050* Z c (Summary): Exiting the Summary Buffer. 32051 (line 27) 32052* Z C (Summary): Exiting the Summary Buffer. 32053 (line 31) 32054* Z E (Summary): Exiting the Summary Buffer. 32055 (line 22) 32056* Z G (Summary): Exiting the Summary Buffer. 32057 (line 50) 32058* Z n (Summary): Exiting the Summary Buffer. 32059 (line 35) 32060* Z N (Summary): Exiting the Summary Buffer. 32061 (line 55) 32062* Z p (Summary): Exiting the Summary Buffer. 32063 (line 39) 32064* Z P (Summary): Exiting the Summary Buffer. 32065 (line 59) 32066* Z Q (Summary): Exiting the Summary Buffer. 32067 (line 12) 32068* Z R (Summary): Exiting the Summary Buffer. 32069 (line 44) 32070* Z s (Summary): Exiting the Summary Buffer. 32071 (line 63) 32072* Z Z (Summary): Exiting the Summary Buffer. 32073 (line 12) 32074 32075 32076 32077Tag Table: 32078Node: Top831 32079Node: Starting Up27101 32080Node: Finding the News28710 32081Node: The Server is Down31574 32082Node: Slave Gnusae32877 32083Node: New Groups34899 32084Node: Checking New Groups35788 32085Node: Subscription Methods37795 32086Node: Filtering New Groups40568 32087Node: Changing Servers43056 32088Node: Startup Files44492 32089Node: Auto Save48826 32090Node: The Active File50054 32091Node: Startup Variables52833 32092Node: Group Buffer54806 32093Node: Group Buffer Format56381 32094Node: Group Line Specification57155 32095Node: Group Mode Line Specification62640 32096Node: Group Highlighting63094 32097Node: Group Maneuvering65501 32098Node: Selecting a Group67246 32099Node: Subscription Commands72689 32100Node: Group Data74537 32101Node: Group Levels75419 32102Node: Group Score79954 32103Node: Marking Groups81298 32104Node: Foreign Groups82667 32105Node: Group Parameters88638 32106Ref: subscribed91472 32107Node: Listing Groups107991 32108Node: Sorting Groups111586 32109Node: Group Maintenance115076 32110Node: Browse Foreign Server116057 32111Node: Exiting Gnus117966 32112Node: Group Topics119020 32113Node: Topic Commands120864 32114Node: Topic Variables126424 32115Node: Topic Sorting127523 32116Node: Topic Topology128888 32117Node: Topic Parameters130220 32118Node: Non-ASCII Group Names133062 32119Node: Misc Group Stuff138383 32120Node: Scanning New Messages141474 32121Node: Group Information142682 32122Node: Group Timestamp143427 32123Node: File Commands145186 32124Node: Sieve Commands145682 32125Node: Summary Buffer147587 32126Node: Summary Buffer Format150607 32127Node: Summary Buffer Lines151875 32128Node: To From Newsgroups158499 32129Node: Summary Buffer Mode Line161843 32130Node: Summary Highlighting163421 32131Node: Summary Maneuvering164632 32132Node: Choosing Articles168020 32133Node: Choosing Commands168333 32134Node: Choosing Variables170798 32135Node: Paging the Article172249 32136Node: Reply Followup and Post174460 32137Node: Summary Mail Commands174839 32138Node: Summary Post Commands181447 32139Node: Summary Message Commands183759 32140Node: Canceling and Superseding184594 32141Node: Delayed Articles187006 32142Node: Marking Articles190947 32143Node: Unread Articles191888 32144Node: Read Articles193160 32145Node: Other Marks194819 32146Node: Setting Marks198207 32147Node: Generic Marking Commands201340 32148Node: Setting Process Marks202779 32149Node: Limiting205371 32150Node: Threading210450 32151Node: Customizing Threading212193 32152Node: Loose Threads212665 32153Node: Filling In Threads219034 32154Node: More Threading222078 32155Node: Low-Level Threading224579 32156Node: Thread Commands225731 32157Node: Sorting the Summary Buffer228684 32158Node: Asynchronous Fetching232609 32159Node: Article Caching236612 32160Node: Persistent Articles240117 32161Node: Sticky Articles241602 32162Node: Article Backlog243051 32163Node: Saving Articles244132 32164Node: Decoding Articles256428 32165Node: Uuencoded Articles257999 32166Node: Shell Archives259410 32167Node: PostScript Files260133 32168Node: Other Files260706 32169Node: Decoding Variables261130 32170Node: Rule Variables261532 32171Node: Other Decode Variables262466 32172Node: Uuencoding and Posting265608 32173Node: Viewing Files266996 32174Node: Article Treatment268776 32175Node: Article Highlighting270048 32176Node: Article Fontisizing273336 32177Node: Article Hiding275297 32178Node: Article Washing280745 32179Ref: Article Washing-Footnote-1290245 32180Node: Article Header290349 32181Node: Article Buttons290990 32182Node: Article Button Levels295515 32183Node: Article Date297778 32184Node: Article Display299731 32185Node: Article Signature301747 32186Node: Article Miscellanea303924 32187Node: MIME Commands304178 32188Node: Charsets313402 32189Node: Article Commands316486 32190Node: Summary Sorting317525 32191Node: Finding the Parent319335 32192Node: Alternative Approaches323490 32193Node: Pick and Read323952 32194Node: Binary Groups326859 32195Node: Tree Display327558 32196Node: Mail Group Commands332032 32197Node: Various Summary Stuff336830 32198Node: Summary Group Information340646 32199Node: Searching for Articles341210 32200Node: Summary Generation Commands342525 32201Node: Really Various Summary Commands343253 32202Node: Exiting the Summary Buffer345743 32203Node: Crosspost Handling349510 32204Node: Duplicate Suppression351729 32205Node: Security354704 32206Node: Mailing List358145 32207Node: Article Buffer359110 32208Node: Hiding Headers359825 32209Node: Using MIME364210 32210Node: HTML369390 32211Ref: HTML-Footnote-1372249 32212Node: Customizing Articles372413 32213Node: Article Keymap378633 32214Node: Misc Article380867 32215Node: Composing Messages384742 32216Node: Mail385957 32217Node: Posting Server387288 32218Node: POP before SMTP389189 32219Node: Mail and Post390653 32220Node: Archived Messages392876 32221Node: Posting Styles399762 32222Node: Drafts406166 32223Node: Rejected Articles408935 32224Node: Signing and encrypting409912 32225Node: Select Methods411436 32226Node: Server Buffer413396 32227Node: Server Buffer Format415287 32228Node: Server Commands416144 32229Node: Example Methods418031 32230Node: Creating a Virtual Server421280 32231Node: Server Variables422459 32232Node: Servers and Methods423790 32233Node: Unavailable Servers424229 32234Node: Getting News426454 32235Node: NNTP426911 32236Node: Direct Functions437358 32237Node: Indirect Functions440503 32238Node: Common Variables444731 32239Node: News Spool446411 32240Node: Using IMAP448280 32241Node: Connecting to an IMAP Server449018 32242Node: Customizing the IMAP Connection449678 32243Node: Client-Side IMAP Splitting453475 32244Node: Support for IMAP Extensions454990 32245Node: Getting Mail455617 32246Node: Mail in a Newsreader456742 32247Node: Getting Started Reading Mail459954 32248Node: Splitting Mail461544 32249Node: Mail Sources466857 32250Node: Mail Source Specifiers467402 32251Node: Mail Source Functions481683 32252Node: Mail Source Customization482639 32253Node: Fetching Mail484987 32254Node: Mail Back End Variables486340 32255Node: Fancy Mail Splitting489059 32256Node: Group Mail Splitting499842 32257Node: Incorporating Old Mail505665 32258Node: Expiring Mail507441 32259Node: Washing Mail517393 32260Node: Duplicates521090 32261Node: Not Reading Mail523400 32262Node: Choosing a Mail Back End524501 32263Node: Unix Mail Box525649 32264Node: Babyl526354 32265Node: Mail Spool527001 32266Node: MH Spool530462 32267Node: Maildir531641 32268Node: nnmaildir Group Parameters537052 32269Node: Article Identification543178 32270Node: NOV Data544015 32271Node: Article Marks544816 32272Node: Mail Folders546081 32273Node: Comparing Mail Back Ends548407 32274Node: Browsing the Web557669 32275Node: Archiving Mail559629 32276Node: Web Searches560651 32277Node: RSS563651 32278Node: Other Sources568867 32279Node: Directory Groups569529 32280Node: Anything Groups570727 32281Node: Document Groups573497 32282Node: Document Server Internals576708 32283Node: Mail-To-News Gateways583076 32284Node: The Empty Backend585039 32285Node: Combined Groups585570 32286Node: Virtual Groups585884 32287Node: Email Based Diary589707 32288Node: The NNDiary Back End591488 32289Node: Diary Messages592384 32290Node: Running NNDiary594488 32291Node: Customizing NNDiary597413 32292Node: The Gnus Diary Library598330 32293Node: Diary Summary Line Format599293 32294Node: Diary Articles Sorting601459 32295Node: Diary Headers Generation602243 32296Node: Diary Group Parameters603244 32297Node: Gnus Unplugged604201 32298Node: Agent Basics606502 32299Node: Agent Categories610924 32300Node: Category Syntax612843 32301Node: Category Buffer622471 32302Node: Category Variables623701 32303Node: Agent Commands625580 32304Node: Group Agent Commands626172 32305Node: Summary Agent Commands627194 32306Node: Server Agent Commands628187 32307Node: Agent Visuals628605 32308Node: Agent as Cache632639 32309Node: Agent Expiry633731 32310Node: Agent Regeneration635196 32311Node: Agent and flags636586 32312Node: Agent and IMAP638435 32313Node: Outgoing Messages639104 32314Node: Agent Variables640219 32315Node: Example Setup646517 32316Node: Batching Agents648448 32317Node: Agent Caveats649003 32318Node: Scoring649835 32319Node: Summary Score Commands652174 32320Node: Group Score Commands658499 32321Node: Score Variables659186 32322Node: Score File Format665787 32323Node: Score File Editing679195 32324Node: Adaptive Scoring680380 32325Node: Home Score File687232 32326Node: Followups To Yourself690269 32327Node: Scoring On Other Headers691836 32328Node: Scoring Tips693404 32329Node: Reverse Scoring695039 32330Node: Global Score Files695559 32331Node: Kill Files698379 32332Node: Converting Kill Files701061 32333Node: Advanced Scoring701867 32334Node: Advanced Scoring Syntax702632 32335Node: Advanced Scoring Examples704573 32336Node: Advanced Scoring Tips706415 32337Node: Score Decays707546 32338Node: Searching709659 32339Node: nnir710311 32340Node: What is nnir?710666 32341Node: Basic Usage711216 32342Node: Setting up nnir713292 32343Node: Associating Engines714525 32344Node: The imap Engine715761 32345Node: The swish++ Engine717582 32346Node: The swish-e Engine718310 32347Node: The namazu Engine718931 32348Node: The notmuch Engine721475 32349Node: The hyrex Engine722665 32350Node: Customizations722858 32351Node: nnmairix724419 32352Node: About mairix725385 32353Node: nnmairix requirements726985 32354Node: What nnmairix does728097 32355Node: Setting up mairix730985 32356Node: Configuring nnmairix734097 32357Node: nnmairix keyboard shortcuts736494 32358Node: Propagating marks741202 32359Node: nnmairix tips and tricks746725 32360Node: nnmairix caveats750108 32361Node: Various753857 32362Node: Process/Prefix755496 32363Node: Interactive757659 32364Node: Symbolic Prefixes758887 32365Node: Formatting Variables760517 32366Node: Formatting Basics762502 32367Node: Mode Line Formatting763548 32368Node: Advanced Formatting764489 32369Node: User-Defined Specs766384 32370Node: Formatting Fonts767581 32371Node: Positioning Point769853 32372Node: Tabulation770642 32373Node: Window Layout771531 32374Node: Tabbed Interface783067 32375Node: Faces and Fonts783977 32376Node: Mode Lines784341 32377Node: Highlighting and Menus786061 32378Node: Daemons788411 32379Node: Undo791276 32380Node: Predicate Specifiers792936 32381Node: Moderation793738 32382Node: Fetching a Group794999 32383Node: Image Enhancements795480 32384Ref: Image Enhancements-Footnote-1796183 32385Node: X-Face796255 32386Node: Face800718 32387Node: Smileys802110 32388Node: Picons803661 32389Node: Gravatars806470 32390Node: Fuzzy Matching808578 32391Node: Thwarting Email Spam809389 32392Node: The problem of spam810876 32393Node: Anti-Spam Basics815460 32394Node: SpamAssassin817866 32395Node: Hashcash820986 32396Node: Spam Package824153 32397Node: Spam Package Introduction824809 32398Node: Filtering Incoming Mail830553 32399Node: Detecting Spam in Groups834824 32400Node: Spam and Ham Processors836150 32401Node: Spam Package Configuration Examples844344 32402Node: Spam Back Ends851346 32403Node: Blacklists and Whitelists852083 32404Node: BBDB Whitelists855299 32405Node: Gmane Spam Reporting857190 32406Node: Anti-spam Hashcash Payments858701 32407Node: Blackholes859328 32408Node: Regular Expressions Header Matching860908 32409Node: Bogofilter862014 32410Node: SpamAssassin back end865521 32411Node: ifile spam filtering867465 32412Node: Spam Statistics Filtering868744 32413Node: SpamOracle870752 32414Node: Extending the Spam package875542 32415Node: Spam Statistics Package880027 32416Node: Creating a spam-stat dictionary881990 32417Node: Splitting mail using spam-stat885216 32418Node: Low-level interface to the spam-stat dictionary887901 32419Node: The Gnus Registry891112 32420Node: Gnus Registry Setup892777 32421Node: Registry Article Refer Method896394 32422Node: Fancy splitting to parent897738 32423Node: Store custom flags and keywords899685 32424Node: Store arbitrary data901514 32425Node: The Gnus Cloud902407 32426Ref: The Gnus Cloud-Footnote-1903278 32427Node: Gnus Cloud Setup903490 32428Node: Gnus Cloud Usage904255 32429Node: Other modes905717 32430Node: Various Various906540 32431Node: The End911574 32432Node: Appendices912237 32433Node: History912903 32434Node: Gnus Versions914593 32435Node: Why?916193 32436Node: Compatibility917560 32437Node: Conformity920091 32438Node: Emacsen922748 32439Node: Gnus Development923158 32440Node: Contributors925746 32441Node: New Features932374 32442Node: ding Gnus933323 32443Node: September Gnus936555 32444Node: Red Gnus941656 32445Node: Quassia Gnus945530 32446Node: Pterodactyl Gnus948974 32447Node: Oort Gnus950720 32448Node: No Gnus974847 32449Node: Ma Gnus988396 32450Node: On Writing Manuals989257 32451Node: Terminology990217 32452Node: Customization998679 32453Node: Slow/Expensive Connection999294 32454Node: Slow Terminal Connection1000920 32455Node: Little Disk Space1002679 32456Node: Slow Machine1003792 32457Node: Troubleshooting1004353 32458Node: Gnus Reference Guide1009099 32459Node: Gnus Utility Functions1010427 32460Node: Back End Interface1013323 32461Ref: Back End Interface-Footnote-11017486 32462Node: Required Back End Functions1017583 32463Node: Optional Back End Functions1026110 32464Node: Error Messaging1035565 32465Node: Writing New Back Ends1036700 32466Node: Hooking New Back Ends Into Gnus1042346 32467Node: Mail-like Back Ends1043864 32468Node: Score File Syntax1045555 32469Node: Headers1048980 32470Node: Ranges1050313 32471Node: Group Info1052383 32472Node: Extended Interactive1055948 32473Node: Various File Formats1057420 32474Node: Active File Format1057721 32475Node: Newsgroups File Format1058734 32476Node: Emacs for Heathens1059414 32477Node: Keystrokes1060261 32478Node: Emacs Lisp1062280 32479Node: Frequently Asked Questions1064714 32480Node: FAQ - Changes1066256 32481Node: FAQ - Introduction1066631 32482Node: FAQ 1 - Installation FAQ1068390 32483Node: FAQ 1-11068927 32484Node: FAQ 1-21069369 32485Node: FAQ 1-31070110 32486Node: FAQ 1-41070598 32487Node: FAQ 1-51071561 32488Node: FAQ 1-61072093 32489Node: FAQ 2 - Startup / Group buffer1072395 32490Node: FAQ 2-11073263 32491Node: FAQ 2-21073897 32492Node: FAQ 2-31074270 32493Node: FAQ 2-41074742 32494Node: FAQ 2-51075638 32495Node: FAQ 3 - Getting Messages1075995 32496Node: FAQ 3-11077376 32497Node: FAQ 3-21077937 32498Node: FAQ 3-31079361 32499Node: FAQ 3-41079905 32500Node: FAQ 3-51080493 32501Node: FAQ 3-61080960 32502Node: FAQ 3-71081527 32503Node: FAQ 3-81082432 32504Node: FAQ 3-91085689 32505Node: FAQ 3-101087318 32506Node: FAQ 3-111087681 32507Node: FAQ 4 - Reading messages1088101 32508Node: FAQ 4-11090114 32509Node: FAQ 4-21091335 32510Node: FAQ 4-31091845 32511Node: FAQ 4-41092093 32512Node: FAQ 4-51092348 32513Node: FAQ 4-61092999 32514Node: FAQ 4-71093605 32515Node: FAQ 4-81094092 32516Node: FAQ 4-91094813 32517Node: FAQ 4-101097738 32518Node: FAQ 4-111098379 32519Node: FAQ 4-121098888 32520Node: FAQ 4-131099858 32521Node: FAQ 4-141101164 32522Node: FAQ 4-151103317 32523Node: FAQ 4-161106469 32524Node: FAQ 5 - Composing messages1107090 32525Node: FAQ 5-11108798 32526Node: FAQ 5-21109808 32527Node: FAQ 5-31110441 32528Node: FAQ 5-41111629 32529Node: FAQ 5-51113701 32530Node: FAQ 5-61114806 32531Node: FAQ 5-71115464 32532Node: FAQ 5-81117449 32533Node: FAQ 5-91118982 32534Node: FAQ 5-101119825 32535Node: FAQ 5-111120239 32536Node: FAQ 5-121120859 32537Node: FAQ 5-131121197 32538Node: FAQ 6 - Old messages1123204 32539Node: FAQ 6-11123849 32540Node: FAQ 6-21124857 32541Node: FAQ 6-31126391 32542Node: FAQ 6-41128032 32543Node: FAQ 6-51128960 32544Node: FAQ 6-61130299 32545Node: FAQ 7 - Gnus in a dial-up environment1130804 32546Node: FAQ 7-11131429 32547Node: FAQ 7-21133183 32548Node: FAQ 7-31134330 32549Node: FAQ 7-41135800 32550Node: FAQ 8 - Getting help1136362 32551Node: FAQ 8-11136969 32552Node: FAQ 8-21137590 32553Node: FAQ 8-31138143 32554Node: FAQ 8-41138440 32555Node: FAQ 8-51139112 32556Node: FAQ 8-61139446 32557Node: FAQ 9 - Tuning Gnus1139667 32558Node: FAQ 9-11140047 32559Node: FAQ 9-21141052 32560Node: FAQ 9-31142147 32561Node: FAQ - Glossary1142531 32562Node: GNU Free Documentation License1143592 32563Node: Index1168924 32564Node: Key Index1390969 32565 32566End Tag Table 32567 32568 32569Local Variables: 32570coding: utf-8 32571End: 32572