X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=texi%2Fgnus.texi;h=eb8bc4cdad581f37a83fb10d53c5ac498a66aade;hb=4278d1eb430b61abb7b5cb21585cea68826d6aff;hp=1e60ae92c5940970178d3bf52d3a1774138e944f;hpb=038c98e866b1f2990eb8bf02d24d5997dd500857;p=elisp%2Fgnus.git- diff --git a/texi/gnus.texi b/texi/gnus.texi index 1e60ae9..eb8bc4c 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -53,6 +53,9 @@ \newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}} \newcommand{\gnuscode}[1]{\gnustt{#1}} +\newcommand{\gnusasis}[1]{\gnustt{#1}} +\newcommand{\gnusurl}[1]{\gnustt{#1}} +\newcommand{\gnuscommand}[1]{\gnustt{#1}} \newcommand{\gnusenv}[1]{\gnustt{#1}} \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''} \newcommand{\gnuslisp}[1]{\gnustt{#1}} @@ -153,6 +156,11 @@ } }{\end{list}} +\newenvironment{asislist}% +{\begin{list}{}{ +} +}{\end{list}} + \newenvironment{kbdlist}% {\begin{list}{}{ \labelwidth=0cm @@ -572,15 +580,9 @@ Marking Articles * Unread Articles:: Marks for unread articles. * Read Articles:: Marks for read articles. * Other Marks:: Marks that do not affect readedness. -* Setting Marks:: -* Generic Marking Commands:: -* Setting Process Marks:: - -Marking Articles - -* Setting Marks:: How to set and remove marks. -* Generic Marking Commands:: How to customize the marking. -* Setting Process Marks:: How to mark articles for later processing. +* Setting Marks:: How to set and remove marks. +* Generic Marking Commands:: How to customize the marking. +* Setting Process Marks:: How to mark articles for later processing. Threading @@ -855,9 +857,10 @@ Formatting Variables Image Enhancements -* 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. +* Face:: Display a funkier, teensier colored image. +* Smileys:: Show all those happy faces the way they were meant to be shown. +* Picons:: How to display pictures of what you're reading. * XVarious:: Other XEmacsy Gnusey variables. Thwarting Email Spam @@ -869,6 +872,26 @@ Thwarting Email Spam * Filtering Spam Using The Spam ELisp Package:: * Filtering Spam Using Statistics with spam-stat:: +Filtering Spam Using The Spam ELisp Package + +* Blacklists and Whitelists:: +* BBDB Whitelists:: +* Gmane Spam Reporting:: +* Anti-spam Hashcash Payments:: +* Blackholes:: +* Regular Expressions Header Matching:: +* Bogofilter:: +* ifile spam filtering:: +* spam-stat spam filtering:: +* SpamOracle:: +* Extending the spam elisp package:: + +Filtering Spam Using Statistics with spam-stat + +* Creating a spam-stat dictionary:: +* Splitting mail using spam-stat:: +* Low-level interface to the spam-stat dictionary:: + Appendices * XEmacs:: Requirements for installing under XEmacs. @@ -960,7 +983,7 @@ If you want to start gnus in a different frame, you can use the command If things do not go smoothly at startup, you have to twiddle some variables in your @file{~/.gnus.el} file. This file is similar to -@file{~/.emacs}, but is read when gnus starts. +@file{~/.emacs}, but is read when Gnus starts. If you puzzle at any terms used in this manual, please refer to the terminology section (@pxref{Terminology}). @@ -2513,7 +2536,7 @@ consulted. @cindex making groups Make a new group (@code{gnus-group-make-group}). Gnus will prompt you for a name, a method and possibly an @dfn{address}. For an easier way -to subscribe to @acronym{NNTP} groups, @pxref{Browse Foreign Server}. +to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}). @item G r @kindex G r (Group) @@ -2744,13 +2767,14 @@ See also @code{gnus-parameter-to-list-alist}. @anchor{subscribed} @item subscribed @cindex subscribed +@cindex Mail-Followup-To 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 is (only) a first step in getting it to generate correct Mail-Followup-To -headers for your posts to these lists. Look here @pxref{Mailing -Lists, , Mailing Lists, message, The Message Manual} for a complete -treatment of available MFT support. +headers for your posts to these lists. @xref{Mailing Lists, ,Mailing +Lists, message, The Message Manual}, for a complete treatment of +available MFT support. See also @code{gnus-find-subscribed-addresses}, the function that directly uses this group parameter. @@ -2790,9 +2814,11 @@ composed messages will be @code{Gcc}'d to the current group. If generated, if @code{(gcc-self . "string")} is present, this string will be inserted literally as a @code{gcc} header. This parameter takes precedence over any default @code{Gcc} rules as described later -(@pxref{Archived Messages}). CAVEAT:: It yields an error putting -@code{(gcc-self . t)} in groups of a @code{nntp} server or so, because -a @code{nntp} server doesn't accept articles. +(@pxref{Archived Messages}). + +@strong{Caveat}: It yields an error putting @code{(gcc-self . t)} in +groups of an @code{nntp} server or so, because an @code{nntp} server +doesn't accept articles. @item auto-expire @cindex auto-expire @@ -2822,6 +2848,11 @@ If the group parameter has an element that looks like can either be a number of days (not necessarily an integer) or the symbols @code{never} or @code{immediate}. +@item expiry-target +@cindex expiry-target +Where expired messages end up. This parameter overrides +@code{nnmail-expiry-target}. + @item score-file @cindex score file group parameter Elements that look like @code{(score-file . "file")} will make @@ -2948,7 +2979,7 @@ that should be placed in this group. From this group parameter, a Sieve @samp{IF} control structure is generated, having the test as the condition and @samp{fileinto "group.name";} as the body. -For example, if the INBOX.list.sieve group has the @code{(sieve +For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve address "sender" "sieve-admin@@extundo.com")} group parameter, when translating the group parameter into a Sieve script (@pxref{Sieve Commands}) the following Sieve code is generated: @@ -2959,8 +2990,8 @@ if address \"sender\" \"sieve-admin@@extundo.com\" @{ @} @end example -The Sieve language is described in RFC 3028. @xref{Top, , Top, sieve, -Emacs Sieve}. +The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve, +Top, sieve, Emacs Sieve}. @item (@var{variable} @var{form}) You can use the group parameters to set variables local to the group you @@ -2978,6 +3009,7 @@ question to @code{gnus-newsgroup-variables}. @xref{Various Summary Stuff}. So if you want to set @code{message-from-style} via the group parameters, then you may need the following statement elsewhere in your @file{~/.gnus} file: + @lisp (add-to-list 'gnus-newsgroup-variables 'message-from-style) @end lisp @@ -2985,9 +3017,11 @@ parameters, then you may need the following statement elsewhere in your @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 + @example nntp+news.gnus.org:gmane.text.docbook.apps @end example + 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:")} @@ -3607,9 +3641,9 @@ Yank the previously killed group or topic before all groups. So, to move a topic to the beginning of the list of topics, just hit -@kbd{C-k} on it. This is like the `cut' part of cut and paste. Then, -move the cursor to the beginning of the buffer (just below the `Gnus' -topic) and hit @kbd{C-y}. This is like the `paste' part of cut and +@kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then, +move the cursor to the beginning of the buffer (just below the ``Gnus'' +topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and paste. Like I said -- E-Z. You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So @@ -4640,7 +4674,7 @@ Age sensitive date format. Various date format is defined in @item u User defined specifier. The next character in the format string should be a letter. Gnus will call the function -@code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter +@code{gnus-user-format-function-@var{x}}, where @var{x} is the letter following @samp{%u}. The function will be passed the current header as argument. The function should return a string, which will be inserted into the summary just like information from any other summary specifier. @@ -4959,7 +4993,7 @@ unread article (@code{gnus-summary-next-page}). If you have an article window open already and you press @kbd{SPACE} again, the article will be scrolled. This lets you conveniently -@kbd{SPACE} through an entire newsgroup. @pxref{Paging the Article}. +@kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}. @item G n @itemx n @@ -5226,7 +5260,8 @@ command uses the process/prefix convention. Mail a wide reply to the author of the current article (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that goes out to all people listed in the @code{To}, @code{From} (or -@code{Reply-to}) and @code{Cc} headers. +@code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is +present, that's used instead. @item S W @kindex S W (Summary) @@ -5810,7 +5845,7 @@ Compare with @code{gnus-recent-mark}. @item @vindex gnus-downloaded-mark -When using the Gnus agent @pxref{Agent Basics}, articles may be +When using the Gnus agent (@pxref{Agent Basics}), articles may be downloaded for unplugged (offline) viewing. If you are using the @samp{%O} spec, these articles get the @samp{+} mark in that spec. (The variable @code{gnus-downloaded-mark} controls which character to @@ -5818,7 +5853,7 @@ use.) @item @vindex gnus-undownloaded-mark -When using the Gnus agent @pxref{Agent Basics}, some articles might +When using the Gnus agent (@pxref{Agent Basics}), some articles might not have been downloaded. Such articles cannot be viewed while you are unplugged (offline). If you are using the @samp{%O} spec, these articles get the @samp{-} mark in that spec. (The variable @@ -5826,7 +5861,7 @@ articles get the @samp{-} mark in that spec. (The variable @item @vindex gnus-downloadable-mark -The Gnus agent @pxref{Agent Basics} downloads some articles +The Gnus agent (@pxref{Agent Basics}) downloads some articles automatically, but it is also possible to explicitly mark articles for download, even if they would not be downloaded automatically. Such explicitly-marked articles get the @samp{%} mark in the first column. @@ -6173,7 +6208,7 @@ Push the current process mark set onto the stack @end table -Also see the @kbd{&} command in @pxref{Searching for Articles} for how to +Also see the @kbd{&} command in @ref{Searching for Articles}, for how to set process marks based on article body contents. @@ -6269,8 +6304,8 @@ score (@code{gnus-summary-limit-to-score}). @findex gnus-summary-limit-to-display-predicate Limit the summary buffer to articles that satisfy the @code{display} group parameter predicate -(@code{gnus-summary-limit-to-display-predicate}). See @pxref{Group -Parameters} for more on this predicate. +(@code{gnus-summary-limit-to-display-predicate}). @xref{Group +Parameters}, for more on this predicate. @item / E @itemx M S @@ -6351,7 +6386,7 @@ trees, but unfortunately, the @code{References} header is often broken or simply missing. Weird news propagation exacerbates the problem, so one has to employ other heuristics to get pleasing results. A plethora of approaches exists, as detailed in horrible detail in -@pxref{Customizing Threading}. +@ref{Customizing Threading}. First, a quick overview of the concepts: @@ -6903,7 +6938,8 @@ Matching}). @findex gnus-thread-sort-by-number @findex gnus-thread-sort-by-random @vindex gnus-thread-sort-functions -@findex gnus-thread-sort-by-most-recent-thread +@findex gnus-thread-sort-by-most-recent-number +@findex gnus-thread-sort-by-most-recent-date 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 @@ -10173,7 +10209,7 @@ on this field, and a command to be executed if the match is made string, the match is done on the entire article. If given a prefix, search backward instead. -For instance, @kbd{& RET some.*string #} will put the process mark on +For instance, @kbd{& RET some.*string RET #} will put the process mark on all articles that have heads or bodies that match @samp{some.*string}. @item M-& @@ -10835,7 +10871,7 @@ To avoid such kind of situation, gnus stops to use non-@code{nil} every-time, then you can push button in the article buffer when there are nobody else. -Also see @pxref{MIME Commands}. +Also @pxref{MIME Commands}. @node Customizing Articles @@ -10959,7 +10995,7 @@ is controlled by @code{gnus-body-boundary-delimiter}. @xref{Smileys}. -@item gnus-treat-display-xface (head) +@item gnus-treat-display-x-face (head) @xref{X-Face}. @@ -11227,7 +11263,7 @@ on your setup (@pxref{Posting Server}). * Signing and encrypting:: How to compose secure messages. @end menu -Also see @pxref{Canceling and Superseding} for information on how to +Also @pxref{Canceling and Superseding} for information on how to remove articles you shouldn't have posted. @@ -11443,9 +11479,8 @@ determined by the @code{gnus-message-archive-group} variable. This variable can be used to do the following: -@itemize @bullet -@item -a string +@table @asis +@item a string Messages will be saved in that group. Note that you can include a select method in the group name, then the @@ -11457,16 +11492,16 @@ has the default value shown above. Then setting messages are stored in @samp{nnfolder+archive:foo}, but if you use the value @code{"nnml:foo"}, then outgoing messages will be stored in @samp{nnml:foo}. -@item -a list of strings + +@item a list of strings Messages will be saved in all those groups. -@item -an alist of regexps, functions and forms + +@item an alist of regexps, functions and forms When a key ``matches'', the result is used. -@item -@code{nil} + +@item @code{nil} No message archiving will take place. This is the default. -@end itemize +@end table Let's illustrate: @@ -11599,7 +11634,7 @@ string, then Gnus will try to regexp match it against the group name. If it is the form @code{(header @var{match} @var{regexp})}, then Gnus will look in the original article for a header whose name is @var{match} and compare that @var{regexp}. @var{match} and -@var{regexp} are strings. (There original article is the one you are +@var{regexp} are strings. (The original article is the one you are replying or following up to. If you are not composing a reply or a followup, then there is nothing to match against.) If the @code{match} is a function symbol, that function will be called with @@ -11610,15 +11645,22 @@ 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{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. +attribute name can be one of: + +@itemize @bullet +@item @code{signature} +@item @code{signature-file} +@item @code{x-face-file} +@item @code{address}, overriding @code{user-mail-address} +@item @code{name}, overriding @code{(user-full-name)} +@item @code{body} +@end itemize + +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 @@ -12167,27 +12209,26 @@ If you're saving lots of articles in the cache by using persistent articles, you may want to create a virtual server to read the cache. First you need to add a new server. The @kbd{a} command does that. It -would probably be best to use @code{nnspool} to read the cache. You -could also use @code{nnml} or @code{nnmh}, though. +would probably be best to use @code{nnml} to read the cache. You +could also use @code{nnspool} or @code{nnmh}, though. -Type @kbd{a nnspool RET cache RET}. +Type @kbd{a nnml RET cache RET}. -You should now have a brand new @code{nnspool} virtual server called +You should now have a brand new @code{nnml} virtual server called @samp{cache}. You now need to edit it to have the right definitions. Type @kbd{e} to edit the server. You'll be entered into a buffer that will contain the following: @lisp -(nnspool "cache") +(nnml "cache") @end lisp Change that to: @lisp -(nnspool "cache" - (nnspool-spool-directory "~/News/cache/") - (nnspool-nov-directory "~/News/cache/") - (nnspool-active-file "~/News/cache/active")) +(nnml "cache" + (nnml-directory "~/News/cache/") + (nnml-active-file "~/News/cache/active")) @end lisp Type @kbd{C-c C-c} to return to the server buffer. If you now press @@ -12947,7 +12988,7 @@ deleted? How awful! But, no, it means that old messages are @dfn{expired} according to some scheme or other. For news messages, the expire process is controlled by the news administrator; for mail, the expire process is controlled by -you. The expire process for mail is covered in depth in @pxref{Expiring +you. The expire process for mail is covered in depth in @ref{Expiring Mail}. What many Gnus users find, after using it a while for both news and @@ -13120,7 +13161,7 @@ useful if you want to match articles based on the raw header data. @vindex nnmail-resplit-incoming By default, splitting is performed on all incoming messages. If you specify a @code{directory} entry for the variable @code{mail-sources} -@pxref{Mail Source Specifiers}, however, then splitting does +(@pxref{Mail Source Specifiers}), however, then splitting does @emph{not} happen by default. You can set the variable @code{nnmail-resplit-incoming} to a non-@code{nil} value to make splitting happen even in this case. (This variable has no effect on @@ -13535,11 +13576,11 @@ An example @acronym{IMAP} mail source: @end lisp @item webmail -Get mail from a webmail server, such as @uref{www.hotmail.com}, -@uref{webmail.netscape.com}, @uref{www.netaddress.com}, -@uref{mail.yahoo.com}. +Get mail from a webmail server, such as @uref{http://www.hotmail.com/}, +@uref{http://webmail.netscape.com/}, @uref{http://www.netaddress.com/}, +@uref{http://mail.yahoo.com/}. -NOTE: Webmail largely depends cookies. A "one-line-cookie" patch is +NOTE: Webmail largely depends on cookies. A "one-line-cookie" patch is required for url "4.0pre.46". WARNING: Mails may be lost. NO WARRANTY. @@ -13838,46 +13879,42 @@ Let's look at an example value of this variable first: "misc.misc") @end lisp -This variable has the format of a @dfn{split}. A split is a (possibly) -recursive structure where each split may contain other splits. Here are -the five possible split syntaxes: - -@enumerate - -@item -@samp{group}: If the split is a string, that will be taken as a group -name. Normal regexp match expansion will be done. See below for -examples. - -@item -@code{(@var{field} @var{value} @code{[-} @var{restrict} -@code{[@dots{}]}@code{]} @var{split})}: If the split is a list, the -first element of which is a string, then store the message as -specified by @var{split}, if header @var{field} (a regexp) contains -@var{value} (also a regexp). If @var{restrict} (yet another regexp) -matches some string after @var{field} and before the end of the -matched @var{value}, the @var{split} is ignored. If none of the -@var{restrict} clauses match, @var{split} is processed. - -@item -@code{(| @var{split}@dots{})}: If the split is a list, and the first -element is @code{|} (vertical bar), then process each @var{split} until -one of them matches. A @var{split} is said to match if it will cause -the mail message to be stored in one or more groups. - -@item -@code{(& @var{split}@dots{})}: If the split is a list, and the first -element is @code{&}, then process all @var{split}s in the list. +This variable has the format of a @dfn{split}. A split is a +(possibly) recursive structure where each split may contain other +splits. Here are the possible split syntaxes: -@item -@code{junk}: If the split is the symbol @code{junk}, then don't save -(i.e., delete) this message. Use with extreme caution. +@table @code -@item -@code{(: @var{function} @var{arg1} @var{arg2} @dots{})}: If the split is -a list, and the first element is @code{:}, then the second element will -be called as a function with @var{args} given as arguments. The -function should return a @var{split}. +@item group +If the split is a string, that will be taken as a group name. Normal +regexp match expansion will be done. See below for examples. + +@item (@var{field} @var{value} [- @var{restrict} [@dots{}] ] @var{split}) +If the split is a list, the first element of which is a string, then +store the message as specified by @var{split}, if header @var{field} +(a regexp) contains @var{value} (also a regexp). If @var{restrict} +(yet another regexp) matches some string after @var{field} and before +the end of the matched @var{value}, the @var{split} is ignored. If +none of the @var{restrict} clauses match, @var{split} is processed. + +@item (| @var{split} @dots{}) +If the split is a list, and the first element is @code{|} (vertical +bar), then process each @var{split} until one of them matches. A +@var{split} is said to match if it will cause the mail message to be +stored in one or more groups. + +@item (& @var{split} @dots{}) +If the split is a list, and the first element is @code{&}, then +process all @var{split}s in the list. + +@item junk +If the split is the symbol @code{junk}, then don't save (i.e., delete) +this message. Use with extreme caution. + +@item (: @var{function} @var{arg1} @var{arg2} @dots{}) +If the split is a list, and the first element is @samp{:}, then the +second element will be called as a function with @var{args} given as +arguments. The function should return a @var{split}. @cindex body split For instance, the following function could be used to split based on the @@ -13886,25 +13923,29 @@ body of the messages: @lisp (defun split-on-body () (save-excursion - (set-buffer " *nnmail incoming*") + (widen) (goto-char (point-min)) (when (re-search-forward "Some.*string" nil t) "string.group"))) @end lisp -The @samp{" *nnmail incoming*"} is narrowed to the message in question -when the @code{:} function is run. +The buffer is narrowed to the message in question when @var{function} +is run. That's why @code{(widen)} needs to be called after +@code{save-excursion} in the example above. Also note that with the +nnimap backend, message bodies will not be downloaded by default. You +need to set @code{nnimap-split-download-body} to t to do that +(@pxref{Splitting in IMAP}). -@item -@code{(! @var{func} @var{split})}: If the split is a list, and the -first element is @code{!}, then @var{split} will be processed, and -@var{func} will be called as a function with the result of @var{split} -as argument. @var{func} should return a split. +@item (! @var{func} @var{split}) +If the split is a list, and the first element is @code{!}, then +@var{split} will be processed, and @var{func} will be called as a +function with the result of @var{split} as argument. @var{func} +should return a split. -@item -@code{nil}: If the split is @code{nil}, it is ignored. +@item nil +If the split is @code{nil}, it is ignored. -@end enumerate +@end table In these splits, @var{field} must match a complete field name. @var{value} must match a complete word according to the fundamental mode @@ -13916,7 +13957,7 @@ field names or words. In other words, all @var{value}'s are wrapped in @var{field} and @var{value} can also be Lisp symbols, in that case they are expanded as specified by the variable @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, -where the @code{car} of a cell contains the key, and the @code{cdr} +where the @sc{car} of a cell contains the key, and the @sc{cdr} contains the associated value. Predefined entries in @code{nnmail-split-abbrev-alist} include: @@ -13995,10 +14036,10 @@ messages goes into the new group. Also see the variable @code{nnmail-cache-ignore-groups} if you don't want certain groups to be recorded in the cache. For example, if all -outgoing messages are written to an `outgoing' group, you could set +outgoing messages are written to an ``outgoing'' group, you could set @code{nnmail-cache-ignore-groups} to match that group name. Otherwise, answers to all your messages would end up in the -`outgoing' group. +``outgoing'' group. @node Group Mail Splitting @@ -14009,31 +14050,31 @@ Otherwise, answers to all your messages would end up in the @findex gnus-group-split If you subscribe to dozens of mailing lists but you don't want to maintain mail splitting rules manually, group mail splitting is for you. -You just have to set @var{to-list} and/or @var{to-address} in group +You just have to set @code{to-list} and/or @code{to-address} in group parameters or group customization and set @code{nnmail-split-methods} to @code{gnus-group-split}. This splitting function will scan all groups for those parameters and split mail accordingly, i.e., messages posted -from or to the addresses specified in the parameters @var{to-list} or -@var{to-address} of a mail group will be stored in that group. +from or to the addresses specified in the parameters @code{to-list} or +@code{to-address} of a mail group will be stored in that group. Sometimes, mailing lists have multiple addresses, and you may want mail -splitting to recognize them all: just set the @var{extra-aliases} group +splitting to recognize them all: just set the @code{extra-aliases} group parameter to the list of additional addresses and it's done. If you'd -rather use a regular expression, set @var{split-regexp}. +rather use a regular expression, set @code{split-regexp}. All these parameters in a group will be used to create an @code{nnmail-split-fancy} split, in which the @var{field} is @samp{any}, the @var{value} is a single regular expression that matches -@var{to-list}, @var{to-address}, all of @var{extra-aliases} and all -matches of @var{split-regexp}, and the @var{split} is the name of the +@code{to-list}, @code{to-address}, all of @code{extra-aliases} and all +matches of @code{split-regexp}, and the @var{split} is the name of the group. @var{restrict}s are also supported: just set the -@var{split-exclude} parameter to a list of regular expressions. +@code{split-exclude} parameter to a list of regular expressions. If you can't get the right split to be generated using all these parameters, or you just need something fancier, you can set the -parameter @var{split-spec} to an @code{nnmail-split-fancy} split. In +parameter @code{split-spec} to an @code{nnmail-split-fancy} split. In this case, all other aforementioned parameters will be ignored by -@code{gnus-group-split}. In particular, @var{split-spec} may be set to +@code{gnus-group-split}. In particular, @code{split-spec} may be set to @code{nil}, in which case the group will be ignored by @code{gnus-group-split}. @@ -14042,7 +14083,7 @@ this case, all other aforementioned parameters will be ignored by by defining a single @code{&} fancy split containing one split for each group. If a message doesn't match any split, it will be stored in the group named in @code{gnus-group-split-default-catch-all-group}, unless -some group has @var{split-spec} set to @code{catch-all}, in which case +some group has @code{split-spec} set to @code{catch-all}, in which case that group is used as the catch-all group. Even though this variable is often used just to name a group, it may also be set to an arbitrarily complex fancy split (after all, a group name is a fancy split), and this @@ -14091,10 +14132,10 @@ splits like this: parameters will be scanned to generate the output split. @var{no-crosspost} can be used to disable cross-posting; in this case, a single @code{|} split will be output. @var{catch-all} is the fall back -fancy split, used like @var{gnus-group-split-default-catch-all-group}. -If @var{catch-all} is @code{nil}, or if @var{split-regexp} matches the +fancy split, used like @code{gnus-group-split-default-catch-all-group}. +If @var{catch-all} is @code{nil}, or if @code{split-regexp} matches the empty string in any selected group, no catch-all split will be issued. -Otherwise, if some group has @var{split-spec} set to @code{catch-all}, +Otherwise, if some group has @code{split-spec} set to @code{catch-all}, this group will override the value of the @var{catch-all} argument. @findex gnus-group-split-setup @@ -14208,9 +14249,9 @@ repeating one more time, with some spurious capitalizations: IF you do NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES. You do not have to mark articles as expirable by hand. Gnus provides -two features, called `auto-expire' and `total-expire', that can help you -with this. In a nutshell, `auto-expire' means that Gnus hits @kbd{E} -for you when you select an article. And `total-expire' means that Gnus +two features, called ``auto-expire'' and ``total-expire'', that can help you +with this. In a nutshell, ``auto-expire'' means that Gnus hits @kbd{E} +for you when you select an article. And ``total-expire'' means that Gnus considers all articles as expirable that are read. So, in addition to the articles marked @samp{E}, also the articles marked @samp{r}, @samp{R}, @samp{O}, @samp{K}, @samp{Y} and so on are considered @@ -14228,8 +14269,8 @@ advantage of auto-expire is that you get more marks to work with: for the articles that are supposed to stick around, you can still choose between tick and dormant and read marks. But with total-expire, you only have dormant and ticked to choose from. The advantage of -total-expire is that it works well with adaptive scoring @pxref{Adaptive -Scoring}. Auto-expire works with normal scoring but not with adaptive +total-expire is that it works well with adaptive scoring (@pxref{Adaptive +Scoring}). Auto-expire works with normal scoring but not with adaptive scoring. @vindex gnus-auto-expirable-newsgroups @@ -14832,7 +14873,7 @@ maildirs or symlinks to maildirs (and nothing else; do not choose a directory already used for other purposes). Each maildir will be represented in Gnus as a newsgroup on that server; the filename of the symlink will be the name of the group. Any filenames in the directory -starting with `.' are ignored. The directory is scanned when you +starting with @samp{.} are ignored. The directory is scanned when you first start Gnus, and each time you type @kbd{g} in the group buffer; if any maildirs have been removed or added, nnmaildir notices at these times. @@ -15964,7 +16005,7 @@ external library @code{digest-md5.el}. @item @dfn{login:} Plain-text username/password via LOGIN. @item -@dfn{anonymous:} Login as `anonymous', supplying your email address as password. +@dfn{anonymous:} Login as ``anonymous'', supplying your email address as password. @end itemize @item nnimap-expunge-on-close @@ -16071,14 +16112,18 @@ Courier 1.7.1 did. @subsection Splitting in IMAP @cindex splitting imap mail -Splitting is something Gnus users has loved and used for years, and now +Splitting is something Gnus users have loved and used for years, and now the rest of the world is catching up. Yeah, dream on, not many -@acronym{IMAP} server has server side splitting and those that have splitting -seem to use some non-standard protocol. This means that @acronym{IMAP} -support for Gnus has to do its own splitting. +@acronym{IMAP} servers have server side splitting and those that have +splitting seem to use some non-standard protocol. This means that +@acronym{IMAP} support for Gnus has to do its own splitting. And it does. +(Incidentally, people seem to have been dreaming on, and Sieve has +gaining a market share and is supported by several IMAP servers. +Fortunately, Gnus support it too, @xref{Sieve Commands}.) + Here are the variables of interest: @table @code @@ -16134,7 +16179,7 @@ This will put all articles from the nnimap mailing list into mailbox INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line into INBOX.junk and everything else in INBOX.private. -The first string may contain `\\1' forms, like the ones used by +The first string may contain @samp{\\1} forms, like the ones used by replace-match to insert sub-expressions from the matched text. For instance: @@ -17183,10 +17228,10 @@ inherited. @cindex nnkiboze @cindex kibozing -@dfn{Kibozing} is defined by @acronym{oed} as ``grepping through (parts of) -the news feed''. @code{nnkiboze} is a back end that will do this for -you. Oh joy! Now you can grind any @acronym{NNTP} server down to a halt -with useless requests! Oh happiness! +@dfn{Kibozing} is defined by the @acronym{OED} as ``grepping through +(parts of) the news feed''. @code{nnkiboze} is a back end that will +do this for you. Oh joy! Now you can grind any @acronym{NNTP} server +down to a halt with useless requests! Oh happiness! @kindex G k (Group) To create a kibozed group, use the @kbd{G k} command in the group @@ -17220,10 +17265,11 @@ and they can be foreign. No restrictions. @vindex nnkiboze-directory The generation of an @code{nnkiboze} group means writing two files in -@code{nnkiboze-directory}, which is @file{~/News/} by default. One -contains the @acronym{NOV} header lines for all the articles in the group, -and the other is an additional @file{.newsrc} file to store information -on what groups have been searched through to find component articles. +@code{nnkiboze-directory}, which is @file{~/News/kiboze/} by default. +One contains the @acronym{NOV} header lines for all the articles in +the group, and the other is an additional @file{.newsrc} file to store +information on what groups have been searched through to find +component articles. Articles marked as read in the @code{nnkiboze} group will have their @acronym{NOV} lines removed from the @acronym{NOV} file. @@ -17329,15 +17375,15 @@ already fetched while in this mode. You then decide to see whether any new news has arrived. You connect your machine to the net (using PPP or whatever), and then hit @kbd{J j} to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail -as usual. To check for new mail in unplugged mode, see (@pxref{Mail +as usual. To check for new mail in unplugged mode (@pxref{Mail Source Specifiers}). @item -You can then read the new news immediately, or you can download the news -onto your local machine. If you want to do the latter, you press @kbd{g} -to check if there are any new news and then @kbd{J -s} to fetch all the eligible articles in all the groups. (To let Gnus -know which articles you want to download, @pxref{Agent Categories}.) +You can then read the new news immediately, or you can download the +news onto your local machine. If you want to do the latter, you press +@kbd{g} to check if there are any new news and then @kbd{J s} to fetch +all the eligible articles in all the groups. (To let Gnus know which +articles you want to download, @pxref{Agent Categories}). @item After fetching the articles, you press @kbd{J j} to make Gnus become @@ -17648,7 +17694,7 @@ three forms: @item Score rule -This has the same syntax as a normal gnus score file except only a +This has the same syntax as a normal Gnus score file except only a subset of scoring keywords are available as mentioned above. example: @@ -17966,7 +18012,7 @@ Mark all articles as read (@code{gnus-agent-catchup}) that are neither cached, d @item J S @kindex J S (Agent Summary) @findex gnus-agent-fetch-group -Download all eligible (See @pxref{Agent Categories}) articles in this group. +Download all eligible (@pxref{Agent Categories}) articles in this group. (@code{gnus-agent-fetch-group}). @item J s @@ -18942,8 +18988,8 @@ Anyway, if you'd like to dig into it yourself, here's an example: (eval (ding))) @end lisp -This example demonstrates most score file elements. For a different -approach, see @pxref{Advanced Scoring}. +This example demonstrates most score file elements. @xref{Advanced +Scoring}, for a different approach. Even though this looks much like Lisp code, nothing here is actually @code{eval}ed. The Lisp reader is used to read this form, though, so it @@ -19556,10 +19602,10 @@ that Gnus has to request every single article from the back end to find matches. This takes a long time in big groups. Now, there's not much you can do about this for news groups, but for -mail groups, you have greater control. In the @pxref{To From -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. +mail groups, you have greater control. In @ref{To From Newsgroups}, +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. @@ -19843,6 +19889,9 @@ before. @section GroupLens @cindex GroupLens +@sc{Note:} Unfortunately the GroupLens system seems to have shut down, +so this section is mostly of historical interest. + @uref{http://www.cs.umn.edu/Research/GroupLens/, GroupLens} is a collaborative filtering system that helps you work together with other people to find the quality news articles out of the huge volume of @@ -19858,9 +19907,6 @@ of a prediction, what they thought of the article. You can use this prediction to help you decide whether or not you want to read the article. -@sc{Note:} Unfortunately the GroupLens system seems to have shut down, -so this section is mostly of historical interest. - @menu * Using GroupLens:: How to make Gnus use GroupLens. * Rating Articles:: Letting GroupLens know how you rate articles. @@ -19964,7 +20010,7 @@ from GroupLens in one of three ways controlled by the variable @vindex gnus-grouplens-override-scoring There are three ways to display predictions in grouplens. You may choose to have the GroupLens scores contribute to, or override the -regular gnus scoring mechanism. override is the default; however, some +regular Gnus scoring mechanism. override is the default; however, some people prefer to see the Gnus scores plus the grouplens scores. To get the separate scoring behavior you need to set @code{gnus-grouplens-override-scoring} to @code{'separate}. To have the @@ -21705,7 +21751,7 @@ represent the author of the message. @cindex face @findex gnus-article-display-face The contents of a @code{Face} header must be a base64 encoded PNG image. -See @url{http://quimby.gnus.org/circus/face/} for the precise +See @uref{http://quimby.gnus.org/circus/face/} for the precise specifications. Gnus provides a few convenience functions and variables to allow @@ -22162,16 +22208,17 @@ call the external tools during splitting. Example fancy split method: ...)) (defun kevin-spamassassin () (save-excursion - (let ((buf (or (get-buffer " *nnmail incoming*") - (get-buffer " *nnml move*")))) - (if (not buf) - (progn (message "Oops, cannot find message buffer") nil) - (set-buffer buf) - (if (eq 1 (call-process-region (point-min) (point-max) - "spamc" nil nil nil "-c")) - "spam"))))) + (widen) + (if (eq 1 (call-process-region (point-min) (point-max) + "spamc" nil nil nil "-c")) + "spam"))) @end lisp +Note that with the nnimap backend, message bodies will not be +downloaded by default. You need to set +@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in +IMAP}). + That is about it. As some spam is likely to get through anyway, you might want to have a nifty function to call when you happen to read spam. And here is the nifty function: @@ -22269,8 +22316,17 @@ filters incoming mail, and it analyzes mail known to be spam or ham. @dfn{Ham} is the name used throughout @file{spam.el} to indicate non-spam messages. -So, what happens when you load @file{spam.el}? First of all, you get -the following keyboard commands: +First of all, you @strong{must} run the function +@code{spam-initialize} to autoload @code{spam.el} and to install the +@code{spam.el} hooks: + +@example +(spam-initialize) +@end example + +So, what happens when you load @file{spam.el}? + +You get the following keyboard commands: @table @kbd @@ -22339,13 +22395,13 @@ group. If you have seen a message, had it marked as spam, then unmarked it, it won't be marked as spam when you enter the group thereafter. You can disable that behavior, so all unread messages will get the @samp{$} mark, if you set the -@code{spam-mark-only-unseen-as-spam} parameter to nil. You should -remove the @samp{$} mark when you are in the group summary buffer for -every message that is not spam after all. To remove the @samp{$} -mark, you can use @kbd{M-u} to ``unread'' the article, or @kbd{d} for -declaring it read the non-spam way. When you leave a group, all -spam-marked (@samp{$}) articles are sent to a spam processor which -will study them as spam samples. +@code{spam-mark-only-unseen-as-spam} parameter to @code{nil}. You +should remove the @samp{$} mark when you are in the group summary +buffer for every message that is not spam after all. To remove the +@samp{$} mark, you can use @kbd{M-u} to ``unread'' the article, or +@kbd{d} for declaring it read the non-spam way. When you leave a +group, all spam-marked (@samp{$}) articles are sent to a spam +processor which will study them as spam samples. Messages may also be deleted in various other ways, and unless @code{ham-marks} group parameter gets overridden below, marks @samp{R} @@ -22394,6 +22450,19 @@ set, the ham articles are marked as unread before being moved. When you leave a @emph{ham} group, all ham-marked articles are sent to a ham processor, which will study these as non-spam samples. +@vindex spam-process-ham-in-spam-groups +By default the variable @code{spam-process-ham-in-spam-groups} is +@code{nil}. Set it to @code{t} if you want ham found in spam groups +to be processed. Normally this is not done, you are expected instead +to send your ham to a ham group and process it there. + +@vindex spam-process-ham-in-nonham-groups +By default the variable @code{spam-process-ham-in-nonham-groups} is +@code{nil}. Set it to @code{t} if you want ham found in non-ham (spam +or unclassified) groups to be processed. Normally this is not done, +you are expected instead to send your ham to a ham group and process +it there. + @vindex gnus-spam-process-destinations When you leave a @emph{ham} or @emph{unclassified} group, all @strong{spam} articles are moved to a location determined by either @@ -22443,7 +22512,7 @@ when it's sent to the ding list. On the other hand, some messages to the ding list are from a mail server in the blackhole list, so the invocation of @code{spam-split} can't be before the ding rule. -You can let SpamAssassin headers supercede ding rules, but all other +You can let SpamAssassin headers supersede ding rules, but all other @code{spam-split} rules (including a second invocation of the regex-headers check) will be after the ding rule: @@ -22637,7 +22706,21 @@ Add this symbol to a group's @code{spam-process} parameter by customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added to a group's @code{spam-process} parameter, the spam-marked -articles groups will be reported to the Gmane administrators. +articles groups will be reported to the Gmane administrators via a +HTTP request. + +Gmane can be found at @uref{http://gmane.org}. + +@end defvar + +@defvar spam-report-gmane-use-article-number + +This variable is @code{t} by default. Set it to @code{nil} if you are +running your own news server, for instance, and the local article +numbers don't correspond to the Gmane article numbers. When +@code{spam-report-gmane-use-article-number} is @code{nil}, +@code{spam-report.el} will use the @code{X-Report-Spam} header that +Gmane provides. @end defvar @@ -22994,7 +23077,7 @@ messages. (spam-process (gnus-group-spam-exit-processor-spamoracle))) @end example -For this group the `gnus-group-spam-exit-processor-spamoracle' is +For this group the @code{gnus-group-spam-exit-processor-spamoracle} is installed. If the group contains spam message (e.g. because SpamOracle has not had enough sample messages yet) and the user marks some messages as spam messages, these messages will be processed by @@ -23817,7 +23900,7 @@ know. @cindex Mule @cindex Emacs -Gnus should work on : +Gnus should work on: @itemize @bullet @@ -24746,11 +24829,11 @@ New features in Gnus 5.6: @item New functionality for using Gnus as an offline newsreader has been -added. A plethora of new commands and modes have been added. See -@pxref{Gnus Unplugged} for the full story. +added. A plethora of new commands and modes have been added. +@xref{Gnus Unplugged}, for the full story. @item - The @code{nndraft} back end has returned, but works differently than +The @code{nndraft} back end has returned, but works differently than before. All Message buffers are now also articles in the @code{nndraft} group, which is created automatically. @@ -24759,110 +24842,110 @@ group, which is created automatically. values. @item - @code{gnus-summary-goto-article} now accept Message-ID's. +@code{gnus-summary-goto-article} now accept Message-ID's. @item - A new Message command for deleting text in the body of a message +A new Message command for deleting text in the body of a message outside the region: @kbd{C-c C-v}. @item - You can now post to component group in @code{nnvirtual} groups with +You can now post to component group in @code{nnvirtual} groups with @kbd{C-u C-c C-c}. @item @code{nntp-rlogin-program}---new variable to ease customization. @item - @code{C-u C-c C-c} in @code{gnus-article-edit-mode} will now inhibit +@code{C-u C-c C-c} in @code{gnus-article-edit-mode} will now inhibit re-highlighting of the article buffer. @item - New element in @code{gnus-boring-article-headers}---@code{long-to}. +New element in @code{gnus-boring-article-headers}---@code{long-to}. @item - @kbd{M-i} symbolic prefix command. See the section ``Symbolic -Prefixes'' in the Gnus manual for details. +@kbd{M-i} symbolic prefix command. @xref{Symbolic Prefixes}, for +details. @item - @kbd{L} and @kbd{I} in the summary buffer now take the symbolic prefix +@kbd{L} and @kbd{I} in the summary buffer now take the symbolic prefix @kbd{a} to add the score rule to the @file{all.SCORE} file. @item - @code{gnus-simplify-subject-functions} variable to allow greater +@code{gnus-simplify-subject-functions} variable to allow greater control over simplification. @item - @kbd{A T}---new command for fetching the current thread. +@kbd{A T}---new command for fetching the current thread. @item - @kbd{/ T}---new command for including the current thread in the +@kbd{/ T}---new command for including the current thread in the limit. @item - @kbd{M-RET} is a new Message command for breaking cited text. +@kbd{M-RET} is a new Message command for breaking cited text. @item - @samp{\\1}-expressions are now valid in @code{nnmail-split-methods}. +@samp{\\1}-expressions are now valid in @code{nnmail-split-methods}. @item - The @code{custom-face-lookup} function has been removed. +The @code{custom-face-lookup} function has been removed. If you used this function in your initialization files, you must rewrite them to use @code{face-spec-set} instead. @item - Canceling now uses the current select method. Symbolic prefix +Canceling now uses the current select method. Symbolic prefix @kbd{a} forces normal posting method. @item - New command to translate M******** sm*rtq**t*s into proper +New command to translate M******** sm*rtq**t*s into proper text---@kbd{W d}. @item - For easier debugging of @code{nntp}, you can set +For easier debugging of @code{nntp}, you can set @code{nntp-record-commands} to a non-@code{nil} value. @item - @code{nntp} now uses @file{~/.authinfo}, a @file{.netrc}-like file, for +@code{nntp} now uses @file{~/.authinfo}, a @file{.netrc}-like file, for controlling where and how to send @sc{authinfo} to @acronym{NNTP} servers. @item - A command for editing group parameters from the summary buffer +A command for editing group parameters from the summary buffer has been added. @item - A history of where mails have been split is available. +A history of where mails have been split is available. @item - A new article date command has been added---@code{article-date-iso8601}. +A new article date command has been added---@code{article-date-iso8601}. @item - Subjects can be simplified when threading by setting +Subjects can be simplified when threading by setting @code{gnus-score-thread-simplify}. @item - A new function for citing in Message has been +A new function for citing in Message has been added---@code{message-cite-original-without-signature}. @item - @code{article-strip-all-blank-lines}---new article command. +@code{article-strip-all-blank-lines}---new article command. @item - A new Message command to kill to the end of the article has +A new Message command to kill to the end of the article has been added. @item - A minimum adaptive score can be specified by using the +A minimum adaptive score can be specified by using the @code{gnus-adaptive-word-minimum} variable. @item - The ``lapsed date'' article header can be kept continually +The ``lapsed date'' article header can be kept continually updated by the @code{gnus-start-date-timer} command. @item - Web listserv archives can be read with the @code{nnlistserv} back end. +Web listserv archives can be read with the @code{nnlistserv} back end. @item - Old dejanews archives can now be read by @code{nnweb}. +Old dejanews archives can now be read by @code{nnweb}. @end itemize @@ -25380,7 +25463,7 @@ the valid values. Gnus supports Cancel Locks in News. This means a header @samp{Cancel-Lock} is inserted in news posting. It is -used to determine if you wrote an article or not (for cancelling and +used to determine if you wrote an article or not (for canceling and superseding). Gnus generates a random password string the first time you post a message, and saves it in your @file{~/.emacs} using the Custom system. While the variable is called @code{canlock-password}, it is not @@ -25482,6 +25565,14 @@ C-m}. This change was made to avoid conflict with the standard binding of @code{back-to-indentation}, which is also useful in message mode. + +@item +The default for message-forward-show-mml changed to symbol @code{best}. + +The behaviour for the @code{best} value is to show MML (i.e., convert MIME +to MML) when appropriate. MML will not be used when forwarding signed +or encrypted messages, as the conversion invalidate the digital +signature. @end itemize @iftex @@ -25605,10 +25696,10 @@ Gnus considers mail and news to be mostly the same, really. The only difference is how to access the actual articles. News articles are commonly fetched via the protocol @acronym{NNTP}, whereas mail messages could be read from a file on the local disk. The internal -architecture of Gnus thus comprises a `front end' and a number of -`back ends'. Internally, when you enter a group (by hitting +architecture of Gnus thus comprises a ``front end'' and a number of +``back ends''. Internally, when you enter a group (by hitting @key{RET}, say), you thereby invoke a function in the front end in -Gnus. The front end then `talks' to a back end and says things like +Gnus. The front end then ``talks'' to a back end and says things like ``Give me the list of articles in the foo group'' or ``Show me article number 4711''. @@ -25616,16 +25707,16 @@ So a back end mainly defines either a protocol (the @code{nntp} back end accesses news via @acronym{NNTP}, the @code{nnimap} back end accesses mail via @acronym{IMAP}) or a file format and directory layout (the @code{nnspool} back end accesses news via the common -`spool directory' format, the @code{nnml} back end access mail via a +``spool directory'' format, the @code{nnml} back end access mail via a file format and directory layout that's quite similar). Gnus does not handle the underlying media, so to speak---this is all done by the back ends. A back end is a collection of functions to access the articles. -However, sometimes the term `back end' is also used where `server' -would have been more appropriate. And then there is the term `select -method' which can mean either. The Gnus terminology can be quite +However, sometimes the term ``back end'' is also used where ``server'' +would have been more appropriate. And then there is the term ``select +method'' which can mean either. The Gnus terminology can be quite confusing. @item native @@ -26245,7 +26336,7 @@ more. Gnus identifies each message by way of group name and article number. A few remarks about these article numbers might be useful. First of all, the numbers are positive integers. Secondly, it is normally not -possible for later articles to `re-use' older article numbers without +possible for later articles to ``re-use'' older article numbers without confusing Gnus. That is, if a group has ever contained a message numbered 42, then no other message may get that number, or Gnus will get mightily confused.@footnote{See the function @@ -26253,15 +26344,15 @@ mightily confused.@footnote{See the function Third, article numbers must be assigned in order of arrival in the group; this is not necessarily the same as the date of the message. -The previous paragraph already mentions all the `hard' restrictions that +The previous paragraph already mentions all the ``hard'' restrictions that article numbers must fulfill. But it seems that it might be useful to assign @emph{consecutive} article numbers, for Gnus gets quite confused if there are holes in the article numbering sequence. However, due to -the `no-reuse' restriction, holes cannot be avoided altogether. It's +the ``no-reuse'' restriction, holes cannot be avoided altogether. It's also useful for the article numbers to start at 1 to avoid running out of numbers as long as possible. -Note that by convention, backends are named @code{nnsomething}, but +Note that by convention, back ends are named @code{nnsomething}, but Gnus also comes with some @code{nnnotbackends}, such as @file{nnheader.el}, @file{nnmail.el} and @file{nnoo.el}. @@ -26653,7 +26744,7 @@ created after @samp{date}, which is in normal human-readable date format the function @code{message-make-date} by default). The data should be in the active buffer format. -It is okay for this function to return `too many' groups; some back ends +It is okay for this function to return ``too many'' groups; some back ends might find it cheaper to return the full list of groups, rather than just the new groups. But don't do this for back ends with many groups. Normally, if the user creates the groups herself, there won't be too @@ -26703,7 +26794,7 @@ optimizations. The function should return a cons where the @code{car} is the group name and the @code{cdr} is the article number that the article was entered as. -The group should exist before the backend is asked to accept the +The group should exist before the back end is asked to accept the article for that group. There should be no data returned.