X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=texi%2Fgnus.texi;h=2d94fad0f1b71bfc5c65757017ada149e8399acb;hb=20b61c6553e731a356504c84ad690c32f7c71596;hp=68295df1625ea17fe9c661ee7c285407edb26a17;hpb=214299d873bc7c67922453218caee0bddf88fd5f;p=elisp%2Fgnus.git- diff --git a/texi/gnus.texi b/texi/gnus.texi index 68295df..2d94fad 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,4 +1,4 @@ -\input texinfo @c -*-texinfo-*- -*- coding: iso-latin-1 -*- +\input texinfo @setfilename gnus @settitle T-gnus 6.15 Manual @@ -25,14 +25,15 @@ \ifx\pdfoutput\undefined \else -\usepackage[pdftex,bookmarks]{hyperref} +\usepackage[pdftex,bookmarks,colorlinks=true]{hyperref} +\usepackage{thumbpdf} \pdfcompresslevel=9 \fi \makeindex \begin{document} -\newcommand{\gnusversionname}{Oort Gnus v.} +\newcommand{\gnusversionname}{Oort Gnus v0.06} \newcommand{\gnuschaptername}{} \newcommand{\gnussectionname}{} @@ -286,7 +287,7 @@ \thispagestyle{empty} -Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. @@ -315,7 +316,7 @@ license to the document, as described in section 6 of the license. This file documents gnus, the GNU Emacs newsreader. -Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -345,7 +346,7 @@ license to the document, as described in section 6 of the license. @page @vskip 0pt plus 1filll -Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -484,8 +485,8 @@ Group Buffer Format Group Topics -* Topic Variables:: How to customize the topics the Lisp Way. * Topic Commands:: Interactive E-Z commands. +* Topic Variables:: How to customize the topics the Lisp Way. * Topic Sorting:: Sorting each topic individually. * Topic Topology:: A map of the world. * Topic Parameters:: Parameters that apply to all groups in a topic. @@ -600,8 +601,10 @@ Article Treatment * Article Fontisizing:: Making emphasized text look nice. * Article Hiding:: You also want to make certain info go away. * Article Washing:: Lots of way-neat functions to make life better. +* Article Header:: Doing various header transformations. * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. * Article Date:: Grumble, UT! +* Article Display:: Display various stuff---X-Face, Picons, Smileys * Article Signature:: What is a signature? * Article Miscellania:: Various other stuff. @@ -634,7 +637,7 @@ Composing Messages * Posting Styles:: An easier way to specify who you are. * Drafts:: Postponing messages and rejected messages. * Rejected Articles:: What happens if the server doesn't like your article? -* Using GPG:: How to use GPG and MML to sign and encrypt messages +* Signing and encrypting:: How to compose secure messages. Select Methods @@ -683,7 +686,6 @@ Getting Mail * Duplicates:: Dealing with duplicated mail. * Not Reading Mail:: Using mail back ends for reading other files. * Choosing a Mail Back End:: Gnus can read a variety of mail formats. -* Archiving Mail:: How to backup your mail. Mail Sources @@ -702,6 +704,7 @@ Choosing a Mail Back End Browsing the Web +* Archiving Mail:: * Web Searches:: Creating groups from articles that match a string. * Slashdot:: Reading the Slashdot comments. * Ultimate:: The Ultimate Bulletin Board systems. @@ -811,8 +814,9 @@ Various * Daemons:: Gnus can do things behind your back. * NoCeM:: How to avoid spam and other fatty foods. * Undo:: Some actions can be undone. +* Predicate Specifiers:: Specifying predicates. * Moderation:: What to do if you're a moderator. -* XEmacs Enhancements:: There are more pictures and stuff under XEmacs. +* Image Enhancements:: Modern versions of Emacs/XEmacs can display images. * Fuzzy Matching:: What's the big fuzz? * Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email. * Various Various:: Things that are really various. @@ -828,10 +832,11 @@ Formatting Variables * Tabulation:: Tabulating your output. * Wide Characters:: Dealing with wide characters. -XEmacs Enhancements +Image Enhancements -* Picons:: How to display pictures of what your reading. +* Picons:: How to display pictures of what you're reading. * Smileys:: Show all those happy faces the way they were meant to be shown. +* X-Face:: Display a funky, teensy black-and-white image. * Toolbar:: Click'n'drool. * XVarious:: Other XEmacsy Gnusey variables. @@ -845,6 +850,7 @@ Picons Appendices +* XEmacs:: Requirements for installing under XEmacs. * History:: How Gnus got where it is today. * On Writing Manuals:: Why this is not a beginner's guide. * Terminology:: We use really difficult, like, words here. @@ -852,6 +858,7 @@ Appendices * Troubleshooting:: What you might try if things do not work. * Gnus Reference Guide:: Rilly, rilly technical stuff. * Emacs for Heathens:: A short introduction to Emacsian terms. +* Frequently Asked Questions:: History @@ -894,8 +901,8 @@ Gnus Reference Guide Back End Interface -* Required Back End Functions:: Functions that must be implemented. -* Optional Back End Functions:: Functions that need not be implemented. +* Required Back End Functions:: Functions that must be implemented. +* Optional Back End Functions:: Functions that need not be implemented. * Error Messaging:: How to get messages and report errors. * Writing New Back Ends:: Extending old back ends. * Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end. @@ -1357,9 +1364,18 @@ and read ranges have become worthless. You can use the @kbd{M-x gnus-group-clear-data-on-native-groups} command to clear out all data that you have on your native groups. Use with caution. +@kindex M-x gnus-group-clear-data +@findex gnus-group-clear-data +Clear the data from the current group only---nix out marks and the +list of read articles (@code{gnus-group-clear-data}). + After changing servers, you @strong{must} move the cache hierarchy away, since the cached articles will have wrong article numbers, which will affect which articles Gnus thinks are read. +@code{gnus-group-clear-data-on-native-groups} will ask you if you want +to have it done automatically; for @code{gnus-group-clear-data}, you +can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the +cache for all groups). @node Startup Files @@ -2072,44 +2088,40 @@ be fetched. @vindex gnus-select-group-hook @vindex gnus-auto-select-first -@code{gnus-auto-select-first} control whether any articles are selected +If @code{gnus-auto-select-first} is non-@code{nil}, select an article automatically when entering a group with the @kbd{SPACE} command. +Which article this is is controlled by the +@code{gnus-auto-select-subject} variable. Valid values for this +variable is: @table @code -@item nil -Don't select any articles when entering the group. Just display the -full summary buffer. - -@item t -Select the first unread article when entering the group. - -@item best -Select the highest scored article in the group when entering the -group. +@item unread +Place point on the subject line of the first unread article. -@end table +@item first +Place point on the subject line of the first article. -This variable can also be a function. In that case, that function will -be called to place point on a subject line, and/or select some article. -Useful functions include: +@item unseen +Place point on the subject line of the first unseen article. -@table @code -@item gnus-summary-first-unread-subject -Place point on the subject line of the first unread article, but -don't select the article. +@item unseen-or-unread +Place point on the subject line of the first unseen article, and if +there is no such article, place point on the subject line of the first +unread article. -@item gnus-summary-first-unread-article -Select the first unread article. +@item best +Place point on the subject line of the highest-scored unread article. -@item gnus-summary-best-unread-article -Select the highest-scored unread article. @end table +This variable can also be a function. In that case, that function +will be called to place point on a subject line. If you want to prevent automatic selection in some group (say, in a -binary group with Huge articles) you can set this variable to @code{nil} -in @code{gnus-select-group-hook}, which is called when a group is +binary group with Huge articles) you can set the +@code{gnus-auto-select-first} variable to @code{nil} in +@code{gnus-select-group-hook}, which is called when a group is selected. @@ -2673,6 +2685,18 @@ entering summary buffer. See also @code{gnus-parameter-to-list-alist}. +@anchor{subscribed} +@item subscribed +@cindex subscribed +If this parameter is set to @code{t}, Gnus will consider the +to-address and to-list parameters for this group as addresses of +mailing lists you are subscribed to. Giving Gnus this information +will help it to generate correct Mail-Followup-To headers for your +posts to these lists. + +See also @code{gnus-find-subscribed-addresses}, the function that +directly uses this group parameter. + @item visible @cindex visible If the group parameter list has the element @code{(visible . t)}, @@ -2868,9 +2892,9 @@ translating the group parameter into a Sieve script (@pxref{Sieve Commands}) the following Sieve code is generated: @example - if address \"sender\" \"sieve-admin@@extundo.com\" @{ - fileinto \"INBOX.list.sieve\"; - @} +if address \"sender\" \"sieve-admin@@extundo.com\" @{ + fileinto \"INBOX.list.sieve\"; +@} @end example The Sieve language is described in RFC 3028. @xref{Top, , Top, sieve, @@ -2884,6 +2908,16 @@ that group. @code{gnus-show-threads} will be made into a local variable in the summary buffer you enter, and the form @code{nil} will be @code{eval}ed there. +@vindex gnus-list-identifiers +A use for this feature, is to remove a mailing list identifier tag in +the subject fields of articles. E.g. if the news group +@samp{nntp+news.gnus.org:gmane.text.docbook.apps} has the tag +@samp{DOC-BOOK-APPS:} in the subject of all articles, this tag can be +removed from the article subjects in the summary buffer for the group by +putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")} into the group +parameters for the group. + + This can also be used as a group-specific hook function, if you'd like. If you want to hear a beep when you enter a group, you could put something like @code{(dummy-variable (ding))} in the parameters of that @@ -3611,6 +3645,16 @@ Delete an empty topic (@code{gnus-topic-delete}). List all groups that gnus knows about in a topics-ified way (@code{gnus-topic-list-active}). +@item T M-n +@kindex T M-n (Topic) +@findex gnus-topic-goto-next-topic +Go to the next topic (@code{gnus-topic-goto-next-topic}). + +@item T M-p +@kindex T M-p (Topic) +@findex gnus-topic-goto-previous-topic +Go to the next topic (@code{gnus-topic-goto-previous-topic}). + @item G p @kindex G p (Topic) @findex gnus-topic-edit-parameters @@ -3783,6 +3827,11 @@ When subscribing new groups by topic (@pxref{Subscription Methods}), the value should be a regexp to match the groups that should go in that topic. +@item subscribe-level +When subscribing new groups by topic (see the @code{subscribe} parameter), +the group will be subscribed with the level specified in the +@code{subscribe-level} instead of @code{gnus-level-default-subscribed}. + @end table Group parameters (of course) override topic parameters, and topic @@ -3850,14 +3899,33 @@ Enter the server buffer (@code{gnus-group-enter-server-mode}). @item a @kindex a (Group) @findex gnus-group-post-news -Post an article to a group (@code{gnus-group-post-news}). If given a -prefix, the current group name will be used as the default. -@xref{Composing Messages}. +Start composing a message (a news by default) +(@code{gnus-group-post-news}). If given a prefix, post to the group +under the point. If the prefix is 1, prompt for a group to post to. +Contrary to what the name of this function suggests, the prepared +article might be a mail instead of a news, if a mail group is specified +with the prefix argument. @xref{Composing Messages}. @item m @kindex m (Group) @findex gnus-group-mail -Mail a message somewhere (@code{gnus-group-mail}). @xref{Composing Messages}. +Mail a message somewhere (@code{gnus-group-mail}). If given a prefix, +use the posting style of the group under the point. If the prefix is 1, +prompt for a group name to find the posting style. +@xref{Composing Messages}. + +@item i +@kindex i (Group) +@findex gnus-group-news +Start composing a news (@code{gnus-group-news}). If given a prefix, +post to the group under the point. If the prefix is 1, prompt +for group to post to. @xref{Composing Messages}. + +This function actually prepares a news even when using mail groups. +This is useful for "posting" messages to mail groups without actually +sending them over the network: they're just saved directly to the group +in question. The corresponding back end must have a request-post method +for this to work though. @end table @@ -4066,6 +4134,20 @@ something like: "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n") @end lisp +If you would like greater control of the time format, you can use a +user-defined format spec. Something like the following should do the +trick: + +@lisp +(setq gnus-group-line-format + "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n") +(defun gnus-user-format-function-d (headers) + (let ((time (gnus-group-timestamp gnus-tmp-group))) + (if time + (format-time-string "%b %d %H:%M" time) + ""))) +@end lisp + @node File Commands @subsection File Commands @@ -4322,12 +4404,12 @@ One space for each thread level. @item < Twenty minus thread level spaces. @item U -Unread. +Unread. @xref{Read Articles}. @item R This misleadingly named specifier is the @dfn{secondary mark}. This mark will say whether the article has been replied to, has been cached, -or has been saved. +or has been saved. @xref{Other Marks}. @item i Score as a number (@pxref{Scoring}). @@ -4460,6 +4542,9 @@ In summary, you'd typically put something like the following in "Your Name Here") @end lisp +(The values listed above are the default values in Gnus. Alter them +to fit your needs.) + Now, this is mostly useful for mail groups, where you have control over the @sc{nov} files that are created. However, if you can persuade your nntp admin to add: @@ -4729,8 +4814,9 @@ Go to the first unread article @kindex G b (Summary) @kindex , (Summary) @findex gnus-summary-best-unread-article -Go to the article with the highest score -(@code{gnus-summary-best-unread-article}). +Go to the unread article with the highest score +(@code{gnus-summary-best-unread-article}). If given a prefix argument, +go to the first unread article that has a score over the default score. @item G l @itemx l @@ -4962,8 +5048,24 @@ headers of the forwarded article. @kindex S m (Summary) @findex gnus-summary-mail-other-window @c @icon{gnus-summary-mail-originate} -Send a mail to some other person -(@code{gnus-summary-mail-other-window}). +Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use +the posting style of the current group. If given a prefix, disable that. +If the prefix is 1, prompt for a group name to find the posting style. + +@item S i +@itemx i +@kindex i (Summary) +@kindex S i (Summary) +@findex gnus-summary-news-other-window +Prepare a news (@code{gnus-summary-news-other-window}). By default, +post to the current group. If given a prefix, disable that. If the +prefix is 1, prompt for a group to post to. + +This function actually prepares a news even when using mail groups. +This is useful for "posting" messages to mail groups without actually +sending them over the network: they're just saved directly to the group +in question. The corresponding back end must have a request-post method +for this to work though. @item S D b @kindex S D b (Summary) @@ -5041,8 +5143,9 @@ Commands for posting a news article: @kindex S p (Summary) @findex gnus-summary-post-news @c @icon{gnus-summary-post-news} -Post an article to the current group -(@code{gnus-summary-post-news}). +Prepare for posting an article (@code{gnus-summary-post-news}). By +default, post to the current group. If given a prefix, disable that. +If the prefix is 1, prompt for another group instead. @item S f @itemx f @@ -5249,17 +5352,17 @@ calculates the deadline of the message and stores it in the @code{nndraft:delayed} group. And whenever you get new news, Gnus looks through the group for articles -which are due and sends them. It uses the @code{gnus-delay-send-drafts} +which are due and sends them. It uses the @code{gnus-delay-send-queue} function for this. By default, this function is added to the hook @code{gnus-get-new-news-hook}. But of course, you can change this. Maybe you want to use the demon to send drafts? Just tell the demon to -execute the @code{gnus-delay-send-drafts} function. +execute the @code{gnus-delay-send-queue} function. @table @code @item gnus-delay-initialize @findex gnus-delay-initialize By default, this function installs the @kbd{C-c C-j} key binding in -Message mode and @code{gnus-delay-send-drafts} in +Message mode and @code{gnus-delay-send-queue} in @code{gnus-get-new-news-hook}. But it accepts two optional arguments, @code{no-keymap} and @code{no-check}. If @code{no-keymap} is non-nil, the @kbd{C-c C-j} binding is not intalled. If @code{no-check} is @@ -5469,7 +5572,7 @@ mark, in which case it simply never appear. @item @vindex gnus-unseen-mark Articles that haven't been seen by the user before are marked with a -@samp{.} in the second column (@code{gnus-unseen-mark}). +@samp{.} in the second column (@code{gnus-unseen-mark}). @item @vindex gnus-not-empty-thread-mark @@ -5948,7 +6051,7 @@ if @var{back-end}@code{-get-new-mail} is non-@code{nil}. @kindex / o (Summary) @findex gnus-summary-insert-old-articles Insert all old articles in the summary buffer. If given a numbered -prefix, fetch this number of articles. +prefix, fetch this number of articles. @end table @@ -6267,6 +6370,22 @@ slower and more awkward. If non-@code{nil}, all threads will be hidden when the summary buffer is generated. +This can also be a predicate specifier (@pxref{Predicate Specifiers}). +Avaliable predicates are @code{gnus-article-unread-p} and +@code{gnus-article-unseen-p}). + +Here's an example: + +@lisp +(setq gnus-thread-hide-subtree + '(or gnus-article-unread-p + gnus-article-unseen-p)) +@end lisp + +(It's a pretty nonsensical example, since all unseen articles are also +unread, but you get my drift.) + + @item gnus-thread-expunge-below @vindex gnus-thread-expunge-below All threads that have a total score (as defined by @@ -6490,6 +6609,7 @@ Matching}). @findex gnus-thread-sort-by-author @findex gnus-thread-sort-by-number @vindex gnus-thread-sort-functions +@findex gnus-thread-sort-by-most-recent-thread If you are using a threaded summary display, you can sort the threads by setting @code{gnus-thread-sort-functions}, which can be either a single function, a list of functions, or a list containing functions and @@ -6498,7 +6618,9 @@ function, a list of functions, or a list containing functions and By default, sorting is done on article numbers. Ready-made sorting predicate functions include @code{gnus-thread-sort-by-number}, @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject}, -@code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and +@code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, +@code{gnus-thread-sort-by-most-recent-number}, +@code{gnus-thread-sort-by-most-recent-date} and @code{gnus-thread-sort-by-total-score}. Each function takes two threads and returns non-@code{nil} if the first @@ -6737,6 +6859,10 @@ gnus-cache-generate-nov-databases} will (re)build all the @sc{nov} files, and @kbd{gnus-cache-generate-active} will (re)generate the active file. +@findex gnus-cache-move-cache +@code{gnus-cache-move-cache} will move your whole +@code{gnus-cache-directory} to some other location. You get asked to +where, isn't that cool? @node Persistent Articles @section Persistent Articles @@ -6888,6 +7014,17 @@ Save the current article in a VM folder @findex gnus-summary-pipe-output Save the current article in a pipe. Uhm, like, what I mean is---Pipe the current article to a process (@code{gnus-summary-pipe-output}). + +@item O P +@kindex O P (Summary) +@findex gnus-summary-muttprint +@vindex gnus-summary-muttprint-program +Save the current article into muttprint. That is, print it using the +external program Muttprint (see +@uref{http://muttprint.sourceforge.net/}). The program name and +options to use is controlled by the variable +@code{gnus-summary-muttprint-program}. (@code{gnus-summary-muttprint}). + @end table @vindex gnus-prompt-before-saving @@ -7505,8 +7642,10 @@ these articles easier. * Article Fontisizing:: Making emphasized text look nice. * Article Hiding:: You also want to make certain info go away. * Article Washing:: Lots of way-neat functions to make life better. +* Article Header:: Doing various header transformations. * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. * Article Date:: Grumble, UT! +* Article Display:: Display various stuff---X-Face, Picons, Smileys * Article Signature:: What is a signature? * Article Miscellania:: Various other stuff. @end menu @@ -7988,49 +8127,38 @@ Treat HZ or HZP (@code{gnus-article-decode-HZ}). HZ (or HZP) is one common encoding employed when sending Chinese articles. It typically makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}. +@item W u +@kindex W u (Summary) +@findex gnus-article-unsplit-urls +Remove newlines from within URLs. Some mailers insert newlines into +outgoing email messages to keep lines short. This reformatting can +split long URLs onto multiple lines. Repair those URLs by removing +the newlines (@code{gnus-article-unsplit-urls}). + @item W h @kindex W h (Summary) @findex gnus-article-wash-html -Treat HTML (@code{gnus-article-wash-html}). -Note that the this is usually done automatically by Gnus if the message -in question has a @code{Content-Type} header that says that this type -has been done. +Treat HTML (@code{gnus-article-wash-html}). Note that the this is +usually done automatically by Gnus if the message in question has a +@code{Content-Type} header that says that the message is HTML. + If a prefix is given, a charset will be asked for. -@item W f -@kindex W f (Summary) -@cindex x-face -@findex gnus-article-display-x-face -@findex gnus-article-x-face-command -@vindex gnus-article-x-face-command -@vindex gnus-article-x-face-too-ugly -@iftex -@iflatex -\include{xface} -@end iflatex -@end iftex -@c @anchor{X-Face} -Look for and display any X-Face headers -(@code{gnus-article-display-x-face}). The command executed by this -function is given by the @code{gnus-article-x-face-command} variable. -If this variable is a string, this string will be executed in a -sub-shell. If it is a function, this function will be called with the -face as the argument. If the @code{gnus-article-x-face-too-ugly} (which -is a regexp) matches the @code{From} header, the face will not be shown. -The default action under Emacs is to fork off the @code{display} -program@footnote{@code{display} is from the ImageMagick package. For -the @code{uncompface} and @code{icontopbm} programs look for a package -like `compface' or `faces-xface' on a GNU/Linux system.} to view the -face. Under XEmacs or Emacs 21+ with suitable image support, the -default action is to display the face before the @code{From} header. -(It's nicer if XEmacs has been compiled with X-Face support---that will -make display somewhat faster. If there's no native X-Face support, Gnus -will try to convert the @code{X-Face} header using external programs -from the @code{pbmplus} package and friends.@footnote{On a GNU/Linux -system look for packages with names like @code{netpbm} or -@code{libgr-progs}.}) If you want to have this function in the display -hook, it should probably come last. -(NOTE: @code{x-face} is used in the variable/function names, not @code{xface}). +@vindex gnus-article-wash-function +The default is to use w3 to convert the HTML, but this is controlled +by the @code{gnus-article-wash-function} variable. Pre-defined +functions you can use include: + +@table @code +@item gnus-article-wash-html-with-w3 +@findex gnus-article-wash-html-with-w3 +Use w3 (this is the default). + +@item gnus-article-wash-html-with-w3m +@findex gnus-article-wash-html-with-w3m +Use emacs-w3m (see @uref{http://emacs-w3m.namazu.org/} for more +information). +@end table @item W b @kindex W b (Summary) @@ -8058,7 +8186,7 @@ message.@footnote{PGP keys for many hierarchies are available at @kindex W s (Summary) @findex gnus-summary-force-verify-and-decrypt Verify a signed (PGP, PGP/MIME or S/MIME) message -(@code{gnus-summary-force-verify-and-decrypt}). +(@code{gnus-summary-force-verify-and-decrypt}). @xref{Security}. @item W W H @kindex W W H (Summary) @@ -8114,6 +8242,33 @@ body (@code{gnus-article-strip-trailing-space}). @xref{Customizing Articles}, for how to wash articles automatically. +@node Article Header +@subsection Article Header + +These commands perform various transformations of article header. + +@table @kbd + +@item W G u +@kindex W G u (Summary) +@findex gnus-article-treat-unfold-headers +Unfold folded header lines (@code{gnus-article-treat-unfold-headers}). + +@item W G n +@kindex W G n (Summary) +@findex gnus-article-treat-fold-newsgroups +Fold the @code{Newsgroups} and @code{Followup-To} headers +(@code{gnus-article-treat-fold-newsgroups}). + +@item W G f +@kindex W G f (Summary) +@findex gnus-article-treat-fold-header +Fold all the message headers +(@code{gnus-article-treat-fold-headers}). + +@end table + + @node Article Buttons @subsection Article Buttons @cindex buttons @@ -8288,6 +8443,66 @@ that the article was posted in 1854. Although something like that is preferred format automatically. +@node Article Display +@subsection Article Display +@cindex picons +@cindex x-face +@cindex smileys + +These commands add various frivolous display gimmics to the article +buffer in Emacs versions that support them. + +@code{X-Face} headers are small black-and-white images supplied by the +message headers (@pxref{X-Face}). + +Picons, on the other hand, reside on your own system, and Gnus will +try to match the headers to what you have (@pxref{Picons}). + +Smileys are those little @samp{:-)} symbols that people like to litter +their messages with (@pxref{Smileys}). + +All these functions are toggles--if the elements already exist, +they'll be removed. + +@table @kbd +@item W D x +@kindex W D x (Summary) +@findex gnus-article-display-x-face +Display an @code{X-Face} in the @code{From} header. +(@code{gnus-article-display-x-face}). + +@item W D s +@kindex W D s (Summary) +@findex gnus-treat-smiley +Display smileys (@code{gnus-treat-smiley}). + +@item W D f +@kindex W D f (Summary) +@findex gnus-treat-from-picon +Piconify the @code{From} header (@code{gnus-treat-from-picon}). + +@item W D m +@kindex W D m (Summary) +@findex gnus-treat-mail-picon +Piconify all mail headers (i. e., @code{Cc}, @code{To}) +(@code{gnus-treat-mail-picon}). + +@item W D n +@kindex W D n (Summary) +@findex gnus-treat-newsgroups-picon +Piconify all news headers (i. e., @code{Newsgroups} and +@code{Followup-To}) (@code{gnus-treat-from-picon}). + +@item W D D +@kindex W D D (Summary) +@findex gnus-article-remove-images +Remove all images from the article buffer +(@code{gnus-article-remove-images}). + +@end table + + + @node Article Signature @subsection Article Signature @cindex signatures @@ -8652,8 +8867,9 @@ something like @vindex gnus-ps-print-hook @findex gnus-summary-print-article Generate and print a PostScript image of the article buffer -(@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will be -run just before printing the buffer. +(@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will +be run just before printing the buffer. An alternative way to print +article is to use Muttprint (@pxref{Saving Articles}). @end table @@ -9014,6 +9230,14 @@ have several windows displayed side-by-side in a frame and the tree buffer is one of these, minimizing the tree window will also resize all other windows displayed next to it. +You may also wish to add the following hook to keep the window minimized +at all times: + +@lisp +(add-hook 'gnus-configure-windows-hook + 'gnus-tree-perhaps-minimize) +@end lisp + @item gnus-generate-tree-function @vindex gnus-generate-tree-function @findex gnus-generate-horizontal-tree @@ -9280,9 +9504,9 @@ while still allowing them to affect operations done in other buffers. For example: @lisp -(setq gnus-newsgroup-variables +(setq gnus-newsgroup-variables '(message-use-followup-to - (gnus-visible-headers . + (gnus-visible-headers . "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:"))) @end lisp @@ -9697,23 +9921,22 @@ to you to figure out, I think. @section Security Gnus is able to verify signed messages or decrypt encrypted messages. -The formats that are supported are PGP (plain text, RFC 1991 format), -PGP/MIME (RFC 2015/3156) and S/MIME, however you need some external -programs to get things to work: +The formats that are supported are PGP, PGP/MIME and S/MIME, however +you need some external programs to get things to work: @enumerate @item -To verify or decrypt PGP messages, you have to install mailcrypt or -gpg.el as well as a OpenPGP implementation (such as GnuPG). @xref{Using GPG}. +To handle PGP messages, you have to install mailcrypt or gpg.el as +well as a OpenPGP implementation (such as GnuPG). @item -To verify or decrypt S/MIME message, you need to install OpenSSL. -OpenSSL 0.9.6 or newer is recommended. +To handle S/MIME message, you need to install OpenSSL. OpenSSL 0.9.6 +or newer is recommended. @end enumerate More information on how to set things up can be found in the message -manual. @xref{Security, ,Security, message, The Message Manual}. +manual (@pxref{Security, ,Security, message, Message Manual}). @table @code @item mm-verify-option @@ -9725,7 +9948,7 @@ protocols. Otherwise, ask user. @item mm-decrypt-option @vindex mm-decrypt-option Option of decrypting encrypted parts. @code{never}, no decryption; -@code{always}, always decrypt @code{known}, only decrypt known +@code{always}, always decrypt; @code{known}, only decrypt known protocols. Otherwise, ask user. @end table @@ -9931,7 +10154,6 @@ other naughty stuff in innocent-looking articles. @vindex gnus-show-mime @vindex gnus-article-display-method-for-mime -@vindex gnus-strict-mime @findex gnus-article-display-mime-message Gnus handles @sc{mime} by pushing the articles through @code{gnus-article-display-method-for-mime}, which is @@ -9941,11 +10163,9 @@ information on SEMI MIME-View, see its manual page (however it is not existed yet, sorry). Set @code{gnus-show-mime} to @code{t} if you want to use -@sc{mime} all the time. However, if @code{gnus-strict-mime} is -non-@code{nil}, the @sc{mime} method will only be used if there are -@sc{mime} headers in the article. If you have @code{gnus-show-mime} -set, then you'll see some unfortunate display glitches in the article -buffer. These can't be avoided. +@sc{mime} all the time. If you have @code{gnus-show-mime} set, then +you'll see some unfortunate display glitches in the article buffer. +These can't be avoided. In GNUS or Gnus, it might be best to just use the toggling functions from the summary buffer to avoid getting nasty surprises. (For instance, @@ -10045,7 +10265,22 @@ possible but those listed are probably sufficient for most people. @table @code @item gnus-treat-buttonize (t, integer) @item gnus-treat-buttonize-head (head) + +@xref{Article Buttons}. + @item gnus-treat-capitalize-sentences (t, integer) +@item gnus-treat-overstrike (t, integer) +@item gnus-treat-strip-cr (t, integer) +@item gnus-treat-strip-headers-in-body (t, integer) +@item gnus-treat-strip-leading-blank-lines (t, integer) +@item gnus-treat-strip-multiple-blank-lines (t, integer) +@item gnus-treat-strip-pem (t, last, integer) +@item gnus-treat-strip-pgp (t, last, integer) +@item gnus-treat-strip-trailing-blank-lines (t, last, integer) +@item gnus-treat-unsplit-urls (t, integer) + +@xref{Article Washing}. + @item gnus-treat-date-english (head) @item gnus-treat-date-iso8601 (head) @item gnus-treat-date-lapsed (head) @@ -10053,9 +10288,29 @@ possible but those listed are probably sufficient for most people. @item gnus-treat-date-original (head) @item gnus-treat-date-user-defined (head) @item gnus-treat-date-ut (head) -@item gnus-treat-display-picons (head) + +@xref{Article Date}. + +@item gnus-treat-from-picon (head) +@item gnus-treat-mail-picon (head) +@item gnus-treat-newsgroups-picon (head) + +@xref{Picons}. + @item gnus-treat-display-smileys (t, integer) + +@item gnus-treat-body-boundary (head) + +@vindex gnus-body-boundary-delimiter +Adds a delimiter between header and body, the string used as delimiter +is controlled by @code{gnus-body-boundary-delimiter}. + +@xref{Smileys}. + @item gnus-treat-display-xface (head) + +@xref{X-Face}. + @item gnus-treat-emphasize (t, head, integer) @item gnus-treat-fill-article (t, integer) @item gnus-treat-fill-long-lines (t, integer) @@ -10064,20 +10319,23 @@ possible but those listed are probably sufficient for most people. @item gnus-treat-hide-citation-maybe (t, integer) @item gnus-treat-hide-headers (head) @item gnus-treat-hide-signature (t, last) + +@xref{Article Hiding}. + @item gnus-treat-highlight-citation (t, integer) @item gnus-treat-highlight-headers (head) @item gnus-treat-highlight-signature (t, last, integer) -@item gnus-treat-overstrike (t, integer) + +@xref{Article Highlighting}. + @item gnus-treat-play-sounds -@item gnus-treat-strip-cr (t, integer) -@item gnus-treat-strip-headers-in-body (t, integer) -@item gnus-treat-strip-leading-blank-lines (t, integer) -@item gnus-treat-strip-multiple-blank-lines (t, integer) -@item gnus-treat-strip-pem (t, last, integer) -@item gnus-treat-strip-pgp (t, last, integer) -@item gnus-treat-strip-trailing-blank-lines (t, last, integer) @item gnus-treat-translate @item gnus-treat-x-pgp-sig (head) + +@item gnus-treat-unfold-headers (head) +@item gnus-treat-fold-headers (head) +@item gnus-treat-fold-newsgroups (head) + @item gnus-treat-decode-article-as-default-mime-charset @end table @@ -10148,6 +10406,23 @@ only makes sense if you have buttonizing turned on. @findex gnus-article-prev-button Go to the previous button, if any (@code{gnus-article-prev-button}). +@item R +@kindex R (Article) +@findex gnus-article-reply-with-original +Send a reply to the current article and yank the current article +(@code{gnus-article-reply-with-original}). If given a prefix, make a +wide reply. If the region is active, only yank the text in the +region. + +@item F +@kindex F (Article) +@findex gnus-article-followup-with-original +Send a followup to the current article and yank the current article +(@code{gnus-article-followup-with-original}). If given a prefix, make +a wide reply. If the region is active, only yank the text in the +region. + + @end table @@ -10206,7 +10481,7 @@ Displayed when cited text may be hidden in the article buffer. @item h Displayed when headers are hidden in the article buffer. -@item p +@item p Displayed when article is digitally signed or encrypted, and Gnus has hidden the security headers. (N.B. does not tell anything about security status, i.e. good or bad signature.) @@ -10252,11 +10527,13 @@ This is the delimiter mentioned above. By default, it is @samp{^L} @cindex followup @cindex post @cindex using gpg +@cindex using s/mime +@cindex using smime @kindex C-c C-c (Post) All commands for posting and mailing will put you in a message buffer where you can edit the article all you like, before you send the -article by pressing @kbd{C-c C-c}. @xref{Top, , Top, message, The +article by pressing @kbd{C-c C-c}. @xref{Top, , Overview, message, Message Manual}. Where the message will be posted/mailed to depends on your setup (@pxref{Posting Server}). @@ -10268,7 +10545,7 @@ on your setup (@pxref{Posting Server}). * Posting Styles:: An easier way to specify who you are. * Drafts:: Postponing messages and rejected messages. * Rejected Articles:: What happens if the server doesn't like your article? -* Using GPG:: How to use GPG and MML to sign and encrypt messages +* Signing and encrypting:: How to compose secure messages. @end menu Also see @pxref{Canceling and Superseding} for information on how to @@ -10524,8 +10801,8 @@ of names). This variable can be used instead of @code{gnus-message-archive-group}, but the latter is the preferred method. -@item gnus-inews-mark-gcc-as-read -@vindex gnus-inews-mark-gcc-as-read +@item gnus-gcc-mark-as-read +@vindex gnus-gcc-mark-as-read If non-@code{nil}, automatically mark @code{Gcc} articles as read. @end table @@ -10571,30 +10848,36 @@ signature and the @samp{What me?} @code{Organization} header. The first element in each style is called the @code{match}. If it's a string, then Gnus will try to regexp match it against the group name. -If it is the symbol @code{header}, then Gnus will look for header (the -next element in the match) in the original article , and compare that to -the last regexp in the match. If it's a function symbol, that function -will be called with no arguments. If it's a variable symbol, then the -variable will be referenced. If it's a list, then that list will be -@code{eval}ed. In any case, if this returns a non-@code{nil} value, -then the style is said to @dfn{match}. - -Each style may contain a arbitrary amount of @dfn{attributes}. Each +If it is the form @code{(header MATCH REGEXP)}, then Gnus will look in +the original article for a header whose name is MATCH and compare that +REGEXP. MATCH and REGEXP are strings. If it's a function symbol, that +function will be called with no arguments. If it's a variable symbol, +then the variable will be referenced. If it's a list, then that list +will be @code{eval}ed. In any case, if this returns a non-@code{nil} +value, then the style is said to @dfn{match}. + +Each style may contain an arbitrary amount of @dfn{attributes}. Each attribute consists of a @code{(@var{name} @var{value})} pair. The attribute name can be one of @code{signature}, @code{signature-file}, -@code{organization}, @code{address}, @code{name} or @code{body}. The -attribute name can also be a string. In that case, this will be used as -a header name, and the value will be inserted in the headers of the -article; if the value is @code{nil}, the header name will be removed. -If the attribute name is @code{eval}, the form is evaluated, and the -result is thrown away. +@code{x-face-file}, @code{address} (overriding +@code{user-mail-address}), @code{name} (overriding +@code{(user-full-name)}) or @code{body}. The attribute name can also +be a string or a symbol. In that case, this will be used as a header +name, and the value will be inserted in the headers of the article; if +the value is @code{nil}, the header name will be removed. If the +attribute name is @code{eval}, the form is evaluated, and the result +is thrown away. The attribute value can be a string (used verbatim), a function with zero arguments (the return value will be used), a variable (its value will be used) or a list (it will be @code{eval}ed and the return value will be used). The functions and sexps are called/@code{eval}ed in the message buffer that is being set up. The headers of the current article -are available through the @code{message-reply-headers} variable. +are available through the @code{message-reply-headers} variable, which +is a vector of the following headers: number subject from date id +references chars lines xref extra. + +@vindex message-reply-headers If you wish to check whether the message you are about to compose is meant to be a news article or a mail message, you can check the values @@ -10614,13 +10897,16 @@ So here's a new example: (organization "People's Front Against MWM")) ("^rec.humor" (signature my-funny-signature-randomizer)) - ((equal (system-name) "gnarly") + ((equal (system-name) "gnarly") ;; A form (signature my-quote-randomizer)) - ((message-news-p) + (message-news-p ;; A function symbol (signature my-news-signature)) - (header "to" "larsi.*org" - (Organization "Somewhere, Inc.")) - ((posting-from-work-p) + (window-system ;; A value symbol + ("X-Window-System" (format "%s" window-system))) + ;; If I'm replying to Larsi, set the Organization header. + ((header "to" "larsi.*org") + (Organization "Somewhere, Inc.")) + ((posting-from-work-p) ;; A user defined function (signature-file "~/.work-signature") (address "user@@bar.foo") (body "You are fired.\n\nSincerely, your boss.") @@ -10729,51 +11015,66 @@ The rejected articles will automatically be put in a special draft group (@pxref{Drafts}). When the server comes back up again, you'd then typically enter that group and send all the articles off. -@node Using GPG -@section Using GPG +@node Signing and encrypting +@section Signing and encrypting @cindex using gpg +@cindex using s/mime +@cindex using smime -Gnus has an ALPHA support to GPG that's provided by @file{gpg.el}. See -@code{mm-verify-option} and @code{mm-decrypt-option} to enable Gnus to -verify or decrypt messages accordingly. +Gnus can digitally sign and encrypt your messages, using vanilla PGP +format or PGP/MIME or S/MIME. For decoding such messages, see the +@code{mm-verify-option} and @code{mm-decrypt-option} options +(@pxref{Security}). -To use this correctly with GPG, you'll need the following lisp code in your -@file{~/.emacs} or @file{~/.gnus}: +For PGP, Gnus supports two external libraries, @sc{gpg.el} and +@sc{Mailcrypt}, you need to install at least one of them. The S/MIME +support in Gnus requires the external program OpenSSL. -@lisp -(require 'gpg) -(setq mml2015-use 'gpg) -(setq mml1991-use 'gpg) -(setq gpg-temp-directory (expand-file-name "~/.gnupg/tmp")) -@end lisp +Instructing MML to perform security operations on a MIME part is done +using the @code{C-c C-m s} key map for signing and the @code{C-c C-m +c} key map for encryption, as follows. -The @code{gpg-temp-directory} need to point to a directory with permissions set -to 700, for your own safety. +@table @kbd -If you want to benefit of PGP2.6 compatibility, you might create a script named -@file{gpg-2comp} with these instructions: +@item C-c C-m s s +@kindex C-c C-m s s +@findex mml-secure-sign-smime -@example -#!/bin/sh -exec gpg --rfc1991 "$@@" -@end example +Digitally sign current MIME part using S/MIME. -If you don't want to use such compatibility, you can add the following line to -your @file{~/.emacs} or @file{~/.gnus}: +@item C-c C-m s o +@kindex C-c C-m s o +@findex mml-secure-sign-pgp -@lisp -(setq gpg-command-default-alist (quote ((gpg . "gpg") (gpg-2comp . "gpg")))) -@end lisp +Digitally sign current MIME part using PGP. -To sign or encrypt your message you may choose to use the MML Security -menu or @kbd{C-c C-m s p} to sign your message using PGP/MIME, -@kbd{C-c C-m s s} to sign your message using S/MIME. There's also -@kbd{C-c C-m c p} to encrypt your message with PGP/MIME and @kbd{C-c -C-m c s} to encrypt using S/MIME. @xref{Security, ,Security, message, -The Message Manual}. +@item C-c C-m s p +@kindex C-c C-m s p +@findex mml-secure-sign-pgp -Gnus will ask for your passphrase and then it will send your message, if -you've typed it correctly. +Digitally sign current MIME part using PGP/MIME. + +@item C-c C-m c s +@kindex C-c C-m c s +@findex mml-secure-encrypt-smime + +Digitally encrypt current MIME part using S/MIME. + +@item C-c C-m c o +@kindex C-c C-m c o +@findex mml-secure-encrypt-pgp + +Digitally encrypt current MIME part using PGP. + +@item C-c C-m c p +@kindex C-c C-m c p +@findex mml-secure-encrypt-pgpmime + +Digitally encrypt current MIME part using PGP/MIME. + +@end table + +Also @xref{Security, ,Security, message, Message Manual}. @node Select Methods @chapter Select Methods @@ -11442,6 +11743,9 @@ inhibit Gnus to add a @code{Message-ID} header, you could say: (add-hook 'nntp-prepare-post-hook 'canlock-insert-header) @end lisp +Note that not all servers support the recommended ID. This works for +INN versions 2.3.0 and later, for instance. + @item nntp-list-options @vindex nntp-list-options List of newsgroup name used for a option of the LIST command to restrict @@ -11768,7 +12072,6 @@ course. * Duplicates:: Dealing with duplicated mail. * Not Reading Mail:: Using mail back ends for reading other files. * Choosing a Mail Back End:: Gnus can read a variety of mail formats. -* Archiving Mail:: How to backup your mail. @end menu @@ -13032,23 +13335,43 @@ change the expiry period (@pxref{Group Parameters}). @vindex nnmail-expiry-target The normal action taken when expiring articles is to delete them. -However, in some circumstances it might make more sense to move them to -other groups instead of deleting them. The variable @code{nnmail-expiry-target} -(and the @code{expiry-target} group parameter) controls this. The -variable supplies a default value for all groups, which can be -overridden for specific groups by the group parameter. -default value is @code{delete}, but this can also be a string (which -should be the name of the group the message should be moved to), or a -function (which will be called in a buffer narrowed to the message in -question, and with the name of the group being moved from as its -parameter) which should return a target -- either a group name or -@code{delete}. +However, in some circumstances it might make more sense to move them +to other groups instead of deleting them. The variable +@code{nnmail-expiry-target} (and the @code{expiry-target} group +parameter) controls this. The variable supplies a default value for +all groups, which can be overridden for specific groups by the group +parameter. default value is @code{delete}, but this can also be a +string (which should be the name of the group the message should be +moved to), or a function (which will be called in a buffer narrowed to +the message in question, and with the name of the group being moved +from as its parameter) which should return a target -- either a group +name or @code{delete}. Here's an example for specifying a group name: @lisp (setq nnmail-expiry-target "nnml:expired") @end lisp +@findex nnmail-fancy-expiry-target +@vindex nnmail-fancy-expiry-targets +Gnus provides a function @code{nnmail-fancy-expiry-target} which will +expire mail to groups according to the variable +@code{nnmail-fancy-expiry-targets}. Here's an example: + +@lisp + (setq nnmail-expiry-target 'nnmail-fancy-expiry-target + nnmail-fancy-expiry-targets + '((to-from "boss" "nnfolder:Work") + ("subject" "IMPORTANT" "nnfolder:IMPORTANT.%Y.%b") + ("from" ".*" "nnfolder:Archive-%Y"))) +@end lisp + +With this setup, any mail that has @code{IMPORTANT} in its Subject +header and was sent in the year @code{YYYY} and month @code{MMM}, will +get expired to the group @code{nnfolder:IMPORTANT.YYYY.MMM}. If its +From or To header contains the string @code{boss}, it will get expired +to @code{nnfolder:Work}. All other mail will get expired to +@code{nnfolder:Archive-YYYY}. @vindex nnmail-keep-last-article If @code{nnmail-keep-last-article} is non-@code{nil}, Gnus will never @@ -13267,10 +13590,13 @@ Gnus will read the mail spool when you activate a mail group. The mail file is first copied to your home directory. What happens after that depends on what format you want to store your mail in. -There are five different mail back ends in the standard Gnus, and more +There are six different mail back ends in the standard Gnus, and more back ends are available separately. The mail back end most people use -(because it is the fastest and most flexible) is @code{nnml} -(@pxref{Mail Spool}). +(because it is possibly the fastest) is @code{nnml} (@pxref{Mail +Spool}). You might notice that only five back ends are listed below; +@code{nnmaildir}'s documentation has not yet been completely +incorporated into this manual. Until it is, you can find it at +@uref{http://multivac.cwru.edu./nnmaildir/}. @menu * Unix Mail Box:: Using the (quite) standard Un*x mbox. @@ -13385,6 +13711,10 @@ Individual @code{nnml} groups are also possible to backup, use @kbd{G m} to restore the group (after restoring the backup into the nnml directory). +If for some reason you believe your @file{.marks} files are screwed +up, you can just delete them all. Gnus will then correctly regenerate +them next time it starts. + Virtual server settings: @table @code @@ -13429,7 +13759,12 @@ default is @code{nil}. @item nnml-marks-file-name @vindex nnml-marks-file-name -The name of the @sc{marks} files. The default is @file{.marks}. +The name of the @dfn{marks} files. The default is @file{.marks}. + +@item nnml-use-compressed-files +@vindex nnml-use-compressed-files +If non-@code{nil}, @code{nnml} will allow using compressed message +files. @end table @@ -13702,6 +14037,62 @@ messages, @code{nnfolder} is not the best choice, but if you receive only a moderate amount of mail, @code{nnfolder} is probably the most friendly mail back end all over. +@item nnmaildir + +@code{nnmaildir} is largely similar to @code{nnml}, with some notable +differences. Each message is stored in a separate file, but the +filename is unrelated to the article number in Gnus. @code{nnmaildir} +also stores the equivalent of @code{nnml}'s overview files in one file +per article, so it uses about twice as many inodes as @code{nnml}. (Use +@code{df -i} to see how plentiful your inode supply is.) If this slows +you down or takes up very much space, consider switching to ReiserFS +(@uref{http://www.namesys.com/}) or another non-block-structured +filesystem. + +Since maildirs don't require locking for delivery, the maildirs you use +as groups can also be the maildirs your mail is directly delivered to. +This means you can skip Gnus's mail splitting if your mail is already +organized into different mailboxes during delivery. A @code{directory} +entry in @code{mail-sources} would have a similar effect, but would +require one set of mailboxes for spooling deliveries (in mbox format, +thus damaging message bodies), and another set to be used as groups (in +whatever format you like). A maildir has a built-in spool, in the +@code{new/} subdirectory. Beware that currently, mail moved from +@code{new/} to @code{cur/} instead of via mail splitting will undergo +treatment such as duplicate checking. + +An article will not necessarily keep the same number across Gnus +sessions; articles are renumbered starting from 1 for each Gnus session +(more precisely, each time you open the @code{nnmaildir} server). This +way, you don't get gaps in your article number ranges, and when entering +large groups, Gnus is likely to give a more accurate article count. The +price is that @code{nnmaildir} doesn't work with the cache or agent. +This will probably be changed in the future. + +@code{nnmaildir} stores article marks for a given group in the +corresponding maildir, in a way designed so that it's easy to manipulate +them from outside Gnus. You can tar up a maildir, unpack it somewhere +else, and still have your marks. @code{nnml} also stores marks, but +it's not as easy to work with them from outside Gnus as with +@code{nnmaildir}. + +For configuring expiry and other things, @code{nnmaildir} uses group +parameters slightly different from those of other mail backends. + +@code{nnmaildir} uses a significant amount of memory to speed things up. +(It keeps in memory some of the things that @code{nnml} stores in files +and that @code{nnmh} repeatedly parses out of message files.) If this +is a problem for you, you can set the @code{nov-cache-size} group +parameter to somthing small (0 would probably not work, but 1 probably +would) to make it use less memory. + +Startup and shutdown are likely to be slower with @code{nnmaildir} than +with other backends. Everything in between is likely to be faster, +depending in part on your filesystem. + +@code{nnmaildir} does not use @code{nnoo}, so you cannot use @code{nnoo} +to write an @code{nnmaildir}-derived backend. + @end table @@ -13733,6 +14124,7 @@ Gnus has been getting a bit of a collection of back ends for providing interfaces to these sources. @menu +* Archiving Mail:: * Web Searches:: Creating groups from articles that match a string. * Slashdot:: Reading the Slashdot comments. * Ultimate:: The Ultimate Bulletin Board systems. @@ -14117,6 +14509,7 @@ Put that in your @file{.emacs} file, and hitting links in w3-rendered @sc{html} in the Gnus article buffers will use @code{browse-url} to follow the link. + @node IMAP @section @sc{imap} @cindex nnimap @@ -14128,23 +14521,24 @@ server is much similar to connecting to a news server, you just specify the network address of the server. @sc{imap} has two properties. First, @sc{imap} can do everything that -POP can, it can hence be viewed as POP++. Secondly, @sc{imap} is a +POP can, it can hence be viewed as a POP++. Secondly, @sc{imap} is a mail storage protocol, similar to @sc{nntp} being a news storage -protocol. (@sc{imap} offers more features than @sc{nntp} because news -is more or less read-only whereas mail is read-write.) +protocol -- however, @sc{imap} offers more features than @sc{nntp} +because news is more or less read-only whereas mail is read-write. -If you want to use @sc{imap} as POP++, use an imap entry in -mail-sources. With this, Gnus will fetch mails from the @sc{imap} -server and store them on the local disk. This is not the usage -described in this section. @xref{Mail Sources}. +If you want to use @sc{imap} as a POP++, use an imap entry in +@code{mail-sources}. With this, Gnus will fetch mails from the +@sc{imap} server and store them on the local disk. This is not the +usage described in this section--@xref{Mail Sources}. If you want to use @sc{imap} as a mail storage protocol, use an nnimap -entry in gnus-secondary-select-methods. With this, Gnus will +entry in @code{gnus-secondary-select-methods}. With this, Gnus will manipulate mails stored on the @sc{imap} server. This is the kind of usage explained in this section. A server configuration in @code{~/.gnus} with a few @sc{imap} servers -might look something like this: +might look something like the following. (Note that for SSL/TLS, you +need external programs and libraries, see below.) @lisp (setq gnus-secondary-select-methods @@ -14170,9 +14564,6 @@ might look something like this: (nnimap-stream ssl)))) @end lisp -(Note that for SSL/TLS to work, you need the external library -@samp{ssl.el}, see below.) - The following variables can be used to create a virtual @code{nnimap} server: @@ -14234,10 +14625,10 @@ Please note that the value of @code{nnimap-stream} is a symbol! @itemize @bullet @item -@dfn{gssapi:} Connect with GSSAPI (usually kerberos 5). Requires the +@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5). Requires the @samp{imtest} program. @item -@dfn{kerberos4:} Connect with kerberos 4. Requires the @samp{imtest} program. +@dfn{kerberos4:} Connect with Kerberos 4. Requires the @samp{imtest} program. @item @dfn{starttls:} Connect via the STARTTLS extension (similar to SSL). Requires the external library @samp{starttls.el} and program @@ -14295,13 +14686,13 @@ Please note that the value of @code{nnimap-authenticator} is a symbol! @itemize @bullet @item -@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Require +@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Requires external program @code{imtest}. @item -@dfn{kerberos4:} Kerberos authentication. Require external program +@dfn{kerberos4:} Kerberos 4 authentication. Requires external program @code{imtest}. @item -@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5. Require +@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5. Requires external library @code{digest-md5.el}. @item @dfn{cram-md5:} Encrypted username/password via CRAM-MD5. @@ -14758,6 +15149,36 @@ MIME multipart messages. @item standard-digest The standard (RFC 1153) digest format. +@item mime-digest +A MIME digest of messages. + +@item lanl-gov-announce +Announcement messages from LANL Gov Announce. + +@item rfc822-forward +A message forwarded according to RFC822. + +@item outlook +The Outlook mail box. + +@item oe-dbx +The Outlook Express dbx mail box. + +@item exim-bounce +A bounce message from the Exim MTA. + +@item forward +A message forwarded according to informal rules. + +@item rfc934 +An RFC934-forwarded message. + +@item mailman +A mailman digest. + +@item clari-briefs +A digest of Clarinet brief news items. + @item slack-digest Non-standard digest format---matches most things, but does it badly. @end table @@ -15320,9 +15741,12 @@ regexp to match component groups. All marks in the virtual group will stick to the articles in the component groups. So if you tick an article in a virtual group, the -article will also be ticked in the component group from whence it came. -(And vice versa---marks from the component groups will also be shown in -the virtual group.) +article will also be ticked in the component group from whence it +came. (And vice versa---marks from the component groups will also be +shown in the virtual group.). To create an empty virtual group, run +@kbd{G V} (@code{gnus-group-make-empty-virtual}) in the group buffer +and edit the method regexp with @kbd{M-e} +(@code{gnus-group-edit-group-method}) Here's an example @code{nnvirtual} method that collects all Andrea Dworkin newsgroups into one, big, happy newsgroup: @@ -15377,9 +15801,12 @@ there is typically no sure way for the component back end to know this, and in that case @code{nnvirtual} tells Gnus that the article came from a not-news back end. (Just to be on the safe side.) -@kbd{C-c C-t} in the message buffer will insert the @code{Newsgroups} +@kbd{C-c C-n} in the message buffer will insert the @code{Newsgroups} line from the article you respond to in these cases. +@code{nnvirtual} groups do not inherit anything but articles and marks +from component groups---group parameters, for instance, are not +inherited. @node Kibozed Groups @@ -15467,11 +15894,11 @@ that has full connection to the net. Go ahead. I'll still be waiting here. @item -Then, put the following magical incantation at the end of your -@file{.gnus.el} file: +Then, put the following magical incantation in your @file{.gnus.el} +file: @lisp -(gnus-agentize) +(setq gnus-agent t) @end lisp @end itemize @@ -15701,10 +16128,10 @@ with the predicate then defined as: or you could append your predicate to the predefined @code{gnus-category-predicate-alist} in your @file{~/.gnus.el} or -wherever. (Note: this would have to be at a point *after* -@code{gnus-agent} has been loaded via @code{(gnus-agentize)}) +wherever. @lisp +(require 'gnus-agent) (setq gnus-category-predicate-alist (append gnus-category-predicate-alist '((old . my-article-old-p)))) @@ -15972,12 +16399,12 @@ toggles the plugged/unplugged state of the Gnus Agent. * Server Agent Commands:: @end menu -You can run a complete batch fetch from the command line with the +You can run a complete batch command from the command line with the following incantation: -@cindex gnus-agent-batch-fetch +@cindex gnus-agent-batch @example -$ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch +$ emacs -batch -l ~/.gnus.el -f gnus-agent-batch @end example @@ -16005,9 +16432,9 @@ Fetch all eligible articles in all groups @item J S @kindex J S (Agent Group) -@findex gnus-group-send-drafts -Send all sendable messages in the draft group -(@code{gnus-group-send-drafts}). @xref{Drafts}. +@findex gnus-group-send-queue +Send all sendable messages in the queue group +(@code{gnus-group-send-queue}). @xref{Drafts}. @item J a @kindex J a (Agent Group) @@ -16061,7 +16488,7 @@ Mark all undownloaded articles as read (@code{gnus-agent-catchup}). @kindex J u (Agent Summary) @findex gnus-agent-summary-fetch-group Download all downloadable articles in the current group -(@code{gnus-agent-summary-fetch-group}). +(@code{gnus-agent-summary-fetch-group}). @end table @@ -16102,12 +16529,30 @@ whenever you feel that you're running out of space. It's not particularly fast or efficient, and it's not a particularly good idea to interrupt it (with @kbd{C-g} or anything else) once you've started it. +@code{gnus-agent-expire-days} can also be a list of regexp/day pairs. +The regexps will be matched against group names to allow differing +expiry in different groups. + +@lisp +(setq gnus-agent-expire-days + '(("alt\\." 7) + (".*binary" 1) + ("." 21))) +@end lisp + +If you use the list form, the last element must always be the default +method---it must always match all groups. + @vindex gnus-agent-expire-all -if @code{gnus-agent-expire-all} is non-@code{nil}, this command will +If @code{gnus-agent-expire-all} is non-@code{nil}, this command will expire all articles---unread, read, ticked and dormant. If @code{nil} (which is the default), only read articles are eligible for expiry, and unread, ticked and dormant articles will be kept indefinitely. +@findex gnus-agent-regenerate +If you find that some articles eligible for expiry are never expired, +perhaps some Gnus Agent files are corrupted. There's a special +@code{gnus-agent-regenerate} command to fix possible problems. @node Agent and IMAP @subsection Agent and IMAP @@ -16201,6 +16646,24 @@ Hook run when connecting to the network. @vindex gnus-agent-unplugged-hook Hook run when disconnecting from the network. +@item gnus-agent-fetched-hook +@vindex gnus-agent-fetched-hook +Hook run when after finishing fetching articles. + +@item gnus-agent-cache +@vindex gnus-agent-cache +Variable to control whether use the locally stored NOV and articles when +plugged. + +@item gnus-agent-go-online +@vindex gnus-agent-go-online +If @code{gnus-agent-go-online} is @code{nil}, the Agent will never +automatically switch offline servers into online status. If it is +@code{ask}, the default, the Agent will ask if you wish to switch +offline servers into online status when you re-connect. If it has any +other value, all offline servers will be automatically switched into +online status. + @end table @@ -16224,7 +16687,8 @@ setup, you may be able to use something like the following as your (setq gnus-secondary-select-methods '((nnml ""))) ;;; Make Gnus into an offline newsreader. -(gnus-agentize) +;;; (gnus-agentize) ; The obsolete setting. +(setq gnus-agent t) @end lisp That should be it, basically. Put that in your @file{~/.gnus.el} file, @@ -16270,20 +16734,19 @@ newsreaders. Here are some common questions that some imaginary people may ask: @table @dfn -@item If I read an article while plugged, do they get entered into the -Agent? +@item If I read an article while plugged, do they get entered into the Agent? -@strong{No.} +@strong{No}. -@item If I read an article while plugged, and the article already exists -in the Agent, will it get downloaded once more? +@item If I read an article while plugged, and the article already exists in the Agent, will it get downloaded once more? -@strong{Yes.} +@strong{No}, unless @code{gnus-agent-cache} is `nil'. @end table In short, when Gnus is unplugged, it only looks into the locally stored -articles; when it's plugged, it only talks to your ISP. +articles; when it's plugged, it only talks to your ISP and also uses the +locally stored articles. @node Scoring @@ -16466,6 +16929,10 @@ Score on the number of lines. @item i Score on the @code{Message-ID} header. +@item e +Score on an "extra" header, that is, one of those in gnus-extra-headers, +if your NNTP server tracks additional header data in overviews. + @item f Score on followups---this matches the author name, and adds scores to the followups to this author. (Using this key leads to the creation of @@ -16534,9 +17001,10 @@ Greater than number. @end table @item -The fourth and final key says whether this is a temporary (i.e., expiring) -score entry, or a permanent (i.e., non-expiring) score entry, or whether -it is to be done immediately, without adding to the score file. +The fourth and usually final key says whether this is a temporary (i.e., +expiring) score entry, or a permanent (i.e., non-expiring) score entry, +or whether it is to be done immediately, without adding to the score +file. @table @kbd @item t @@ -16549,6 +17017,11 @@ Permanent score entry. Immediately scoring. @end table +@item +If you are scoring on `e' (extra) headers, you will then be prompted for +the header name on which you wish to score. This must be a header named +in gnus-extra-headers, and @samp{TAB} completion is available. + @end enumerate So, let's say you want to increase the score on the current author with @@ -16741,12 +17214,12 @@ are expired. It's 7 by default. @item gnus-update-score-entry-dates @vindex gnus-update-score-entry-dates -If this variable is non-@code{nil}, matching score entries will have -their dates updated. (This is how Gnus controls expiry---all -non-matching entries will become too old while matching entries will -stay fresh and young.) However, if you set this variable to @code{nil}, -even matching entries will grow old and will have to face that oh-so -grim reaper. +If this variable is non-@code{nil}, temporary score entries that have +been triggered (matched) will have their dates updated. (This is how Gnus +controls expiry---all non-matched-entries will become too old while +matched entries will stay fresh and young.) However, if you set this +variable to @code{nil}, even matched entries will grow old and will +have to face that oh-so grim reaper. @item gnus-score-after-write-file-function @vindex gnus-score-after-write-file-function @@ -16866,6 +17339,18 @@ one-letter types are really just abbreviations for the @code{regexp}, @code{string}, @code{exact}, and @code{word} types, which you can use instead, if you feel like. +@item Extra +Just as for the standard string overview headers, if you are using +gnus-extra-headers, you can score on these headers' values. In this +case, there is a 5th element in the score entry, being the name of the +header to be scored. The following entry is useful in your +@file{all.SCORE} file in case of spam attacks from a single origin host, +if your NNTP server tracks NNTP-Posting-Host in overviews: + +@lisp +("111.222.333.444" -1000 nil s "NNTP-Posting-Host") +@end lisp + @item Lines, Chars These two headers use different match types: @code{<}, @code{>}, @code{=}, @code{>=} and @code{<=}. @@ -17411,7 +17896,7 @@ Newsgroups} section of the manual, it's explained in greater detail what this mechanism does, but here's a cookbook example for @code{nnml} on how to allow scoring on the @samp{To} and @samp{Cc} headers. -Put the following in your @file{.gnus.el} file. +Put the following in your @file{.gnus.el} file. @lisp (setq gnus-extra-headers '(To Cc Newsgroups Keywords) @@ -17961,6 +18446,10 @@ simple scoring, and the match types are also the same. @node Advanced Scoring Examples @subsection Advanced Scoring Examples +Please note that the following examples are score file rules. To +make a complete score file from them, surround them with another pair +of parentheses. + Let's say you want to increase the score of articles written by Lars when he's talking about Gnus: @@ -18142,8 +18631,9 @@ four days, Gnus will decay the scores four times, for instance. * Daemons:: Gnus can do things behind your back. * NoCeM:: How to avoid spam and other fatty foods. * Undo:: Some actions can be undone. +* Predicate Specifiers:: Specifying predicates. * Moderation:: What to do if you're a moderator. -* XEmacs Enhancements:: There are more pictures and stuff under XEmacs. +* Image Enhancements:: Modern versions of Emacs/XEmacs can display images. * Fuzzy Matching:: What's the big fuzz? * Thwarting Email Spam:: A how-to on avoiding unsolicited commercial email. * Various Various:: Things that are really various. @@ -18338,6 +18828,7 @@ less than 4 characters wide. Also Gnus supports some extended format specifications, such as @samp{%&user-date;}. + @node Mode Line Formatting @subsection Mode Line Formatting @@ -18404,6 +18895,13 @@ Return an empty string if the field is equal to the specified value. @item form Use the specified form as the field value when the @samp{@@} spec is used. + +Here's an example: + +@lisp +"~(form (current-time-string))@@" +@end lisp + @end table Let's take an example. The @samp{%o} spec in the summary mode lines @@ -19332,6 +19830,33 @@ command, which should feel kinda like the normal Emacs @code{undo} command. +@node Predicate Specifiers +@section Predicate Specifiers +@cindex predicate specifiers + +Some Gnus variables are @dfn{predicate specifiers}. This is a special +form that allows flexible specification of predicates without having +to type all that much. + +These specifiers are lists consisting of functions, symbols and lists. + +Here's an example: + +@lisp +(or gnus-article-unseen-p + gnus-article-unread-p) +@end lisp + +The available symbols are @code{or}, @code{and} and @code{not}. The +functions all take one parameter. + +@findex gnus-make-predicate +Internally, Gnus calls @code{gnus-make-predicate} on these specifiers +to create a function that can be called. This input parameter to this +function will be passed along to all the functions in the predicate +specifier. + + @node Moderation @section Moderation @cindex moderation @@ -19377,16 +19902,16 @@ To use moderation mode in these two groups, say: @end lisp -@node XEmacs Enhancements -@section XEmacs Enhancements -@cindex XEmacs +@node Image Enhancements +@section Image Enhancements -XEmacs is able to display pictures and stuff, so Gnus has taken -advantage of that. +XEmacs, as well as Emacs 21, is able to display pictures and stuff, so +Gnus has taken advantage of that. @menu -* Picons:: How to display pictures of what your reading. +* Picons:: How to display pictures of what you're reading. * Smileys:: Show all those happy faces the way they were meant to be shown. +* X-Face:: Display a funky, teensy black-and-white image. * Toolbar:: Click'n'drool. * XVarious:: Other XEmacsy Gnusey variables. @end menu @@ -19448,6 +19973,9 @@ obtaining and installing the picons databases, point your Web browser at @* picons to be installed into a location pointed to by @code{gnus-picons-database}. +If you are using Debian GNU/Linux, saying @samp{apt-get install +picons.*} will install the picons where Gnus can find them. + @node Picon Requirements @subsubsection Picon Requirements @@ -19729,6 +20257,91 @@ Face used for mouse highlighting over the smiley face. @end table +@node X-Face +@subsection X-Face +@cindex x-face + +@code{X-Face} headers describe a 48x48 pixel black-and-white (1 bit +depth) image that's supposed to represent the author of the message. +It seems to be supported by an ever-growing number of mail and news +readers. + +@cindex x-face +@findex gnus-article-display-x-face +@findex gnus-article-x-face-command +@vindex gnus-article-x-face-command +@vindex gnus-article-x-face-too-ugly +@iftex +@iflatex +\include{xface} +@end iflatex +@end iftex +@c @anchor{X-Face} + +Decoding an @code{X-Face} header either requires an Emacs that has +@samp{compface} support (which most XEmacs versions has), or that you +have @samp{compface} installed on your system. If either is true, +Gnus will default to displaying @code{X-Face} headers. + +The variable that controls this is the +@code{gnus-article-x-face-command} variable. If this variable is a +string, this string will be executed in a sub-shell. If it is a +function, this function will be called with the face as the argument. +If the @code{gnus-article-x-face-too-ugly} (which is a regexp) matches +the @code{From} header, the face will not be shown. + +The default action under Emacs 20 is to fork off the @code{display} +program@footnote{@code{display} is from the ImageMagick package. For +the @code{uncompface} and @code{icontopbm} programs look for a package +like @code{compface} or @code{faces-xface} on a GNU/Linux system.} to +view the face. + +Under XEmacs or Emacs 21+ with suitable image support, the default +action is to display the face before the @code{From} header. (It's +nicer if XEmacs has been compiled with @code{X-Face} support---that +will make display somewhat faster. If there's no native @code{X-Face} +support, Gnus will try to convert the @code{X-Face} header using +external programs from the @code{pbmplus} package and +friends.@footnote{On a GNU/Linux system look for packages with names +like @code{netpbm}, @code{libgr-progs} and @code{compface}.}) + +(NOTE: @code{x-face} is used in the variable/function names, not +@code{xface}). + +Gnus provides a few convenience functions and variables to allow +easier insertion of X-Face headers in outgoing messages. + +@findex gnus-random-x-face +@code{gnus-random-x-face} goes through all the @samp{pbm} files +in @code{gnus-x-face-directory} and picks one at random, and then +converts it to the X-Face format by using the +@code{gnus-convert-pbm-to-x-face-command} shell command. The +@samp{pbm} files should be 48x48 pixels big. + +@code{gnus-x-face-from-file} takes a file as the parameter, and then +converts the file to X-Face format by using the +@code{gnus-convert-image-to-x-face-command} shell command. + +Here's how you would typically use the former function. Put something +like the folllowing in your @file{.gnus.el} file: + +@lisp +(setq message-required-news-headers + (nconc message-required-news-headers + (list '(X-Face . gnus-random-x-face)))) +@end lisp + +Using the latter function would be something like this: + +@lisp +(setq message-required-news-headers + (nconc message-required-news-headers + (list '(X-Face . (lambda () + (gnus-x-face-from-file + "~/My-face.gif")))))) +@end lisp + + @node Toolbar @subsection Toolbar @@ -20050,6 +20663,7 @@ but at the common table.@* @chapter Appendices @menu +* XEmacs:: Requirements for installing under XEmacs. * History:: How Gnus got where it is today. * On Writing Manuals:: Why this is not a beginner's guide. * Terminology:: We use really difficult, like, words here. @@ -20061,6 +20675,18 @@ but at the common table.@* @end menu +@node XEmacs +@section XEmacs +@cindex XEmacs +@cindex Installing under XEmacs + +XEmacs is distributed as a collection of packages. You should install +whatever packages the Gnus XEmacs package requires. The current +requirements are @samp{gnus}, @samp{w3}, @samp{mh-e}, +@samp{mailcrypt}, @samp{rmail}, @samp{eterm}, @samp{mail-lib}, +@samp{xemacs-base}, and @samp{fsf-compat}. + + @node History @section History @@ -20101,10 +20727,13 @@ renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. @node Gnus Versions @subsection Gnus Versions -@cindex Pterodactyl Gnus @cindex ding Gnus @cindex September Gnus +@cindex Red Gnus @cindex Quassia Gnus +@cindex Pterodactyl Gnus +@cindex Oort Gnus +@cindex No Gnus The first ``proper'' release of Gnus 5 was done in November 1995 when it was included in the Emacs 19.30 distribution (132 (ding) Gnus releases @@ -20258,8 +20887,9 @@ with, of course. @table @strong -@item RFC 822 +@item RFC (2)822 @cindex RFC 822 +@cindex RFC 2822 There are no known breaches of this standard. @item RFC 1036 @@ -20288,6 +20918,38 @@ on Son-of-RFC 1036. They have produced a number of drafts proposing various changes to the format of news articles. The Gnus towers will look into implementing the changes when the draft is accepted as an RFC. +@item MIME - RFC 2045-2049 etc +@cindex MIME +All the various MIME RFCs are supported. + +@item Disposition Notifications - RFC 2298 +Message Mode is able to request notifications from the receiver. + +@item PGP - RFC 1991 and RFC 2440 +@cindex RFC 1991 +@cindex RFC 2440 +RFC 1991 is the original PGP message specification, published as a +Information RFC. RFC 2440 was the follow-up, now called Open PGP, and +put on the Standards Track. Both document a non-MIME aware PGP +format. Gnus supports both encoding (signing and encryption) and +decoding (verification and decryption). + +@item PGP/MIME - RFC 2015/3156 +RFC 2015 (superceded by 3156 which references RFC 2440 instead of RFC +1991) describes the MIME-wrapping around the RF 1991/2440 format. +Gnus supports both encoding and decoding. + +@item S/MIME - RFC 2633 +RFC 2633 describes the S/MIME format. + +@item IMAP - RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731 +RFC 1730 is IMAP version 4, updated somewhat by RFC 2060 (IMAP 4 +revision 1). RFC 2195 describes CRAM-MD5 authentication for IMAP. RFC +2086 describes access control lists (ACLs) for IMAP. RFC 2359 +describes a IMAP protocol enhancement. RFC 2595 describes the proper +TLS integration (STARTTLS) with IMAP. RFC 1731 describes the +GSSAPI/Kerberos4 mechanisms for IMAP. + @end table If you ever notice Gnus acting non-compliant with regards to the texts @@ -21351,7 +22013,7 @@ New features in Gnus 5.8: @itemize @bullet -@item +@item The mail-fetching functions have changed. See the manual for the many details. In particular, all procmail fetching variables are gone. @@ -21375,7 +22037,7 @@ this now has changed to More information is available in the info doc at Select Methods -> Getting Mail -> Mail Sources -@item +@item Gnus is now a MIME-capable reader. This affects many parts of Gnus, and adds a slew of new commands. See the manual for details. @@ -21762,6 +22424,7 @@ want to read them anyway. If this is non-@code{nil}, all threads in the summary buffer will be hidden initially. + @item gnus-updated-mode-lines If this is @code{nil}, Gnus will not put information in the buffer mode lines, which might save some time. @@ -22121,8 +22784,8 @@ In the examples and definitions I will refer to the imaginary back end @cindex @code{nnchoke} @menu -* Required Back End Functions:: Functions that must be implemented. -* Optional Back End Functions:: Functions that need not be implemented. +* Required Back End Functions:: Functions that must be implemented. +* Optional Back End Functions:: Functions that need not be implemented. * Error Messaging:: How to get messages and report errors. * Writing New Back Ends:: Extending old back ends. * Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end. @@ -23486,6 +24149,9 @@ former). The manual is unambiguous, but it can be confusing. @end iflatex @end iftex +@c Local Variables: +@c mode: texinfo +@c coding: iso-8859-1 @c End: % LocalWords: BNF mucho detailmenu cindex kindex kbd % LocalWords: findex Gnusae vindex dfn dfn samp nntp setq nnspool nntpserver