comparison man/gnus.texi @ 169:15872534500d r20-3b11

Import from CVS: tag r20-3b11
author cvs
date Mon, 13 Aug 2007 09:46:53 +0200
parents 85ec50267440
children 8eaf7971accc
comparison
equal deleted inserted replaced
168:9851d5c6556e 169:15872534500d
1 \input texinfo @c -*-texinfo-*- 1 \input texinfo @c -*-texinfo-*-
2 2
3 @setfilename gnus 3 @setfilename gnus
4 @settitle Gnus 5.4.60 Manual 4 @settitle Gnus 5.4.62 Manual
5 @synindex fn cp 5 @synindex fn cp
6 @synindex vr cp 6 @synindex vr cp
7 @synindex pg cp 7 @synindex pg cp
8 @iftex 8 @iftex
9 @finalout 9 @finalout
307 @end ifinfo 307 @end ifinfo
308 308
309 @tex 309 @tex
310 310
311 @titlepage 311 @titlepage
312 @title Gnus 5.4.60 Manual 312 @title Gnus 5.4.62 Manual
313 313
314 @author by Lars Magne Ingebrigtsen 314 @author by Lars Magne Ingebrigtsen
315 @page 315 @page
316 316
317 @vskip 0pt plus 1filll 317 @vskip 0pt plus 1filll
343 You can read news (and mail) from within Emacs by using Gnus. The news 343 You can read news (and mail) from within Emacs by using Gnus. The news
344 can be gotten by any nefarious means you can think of---@sc{nntp}, local 344 can be gotten by any nefarious means you can think of---@sc{nntp}, local
345 spool or your mbox file. All at the same time, if you want to push your 345 spool or your mbox file. All at the same time, if you want to push your
346 luck. 346 luck.
347 347
348 This manual corresponds to Gnus 5.4.60. 348 This manual corresponds to Gnus 5.4.62.
349 349
350 @end ifinfo 350 @end ifinfo
351 351
352 @iftex 352 @iftex
353 353
432 @vindex gnus-select-method 432 @vindex gnus-select-method
433 @c @head 433 @c @head
434 The @code{gnus-select-method} variable says where Gnus should look for 434 The @code{gnus-select-method} variable says where Gnus should look for
435 news. This variable should be a list where the first element says 435 news. This variable should be a list where the first element says
436 @dfn{how} and the second element says @dfn{where}. This method is your 436 @dfn{how} and the second element says @dfn{where}. This method is your
437 native method. All groups that are not fetched with this method are 437 native method. All groups not fetched with this method are
438 foreign groups. 438 foreign groups.
439 439
440 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where 440 For instance, if the @samp{news.somewhere.edu} @sc{nntp} server is where
441 you want to get your daily dosage of news from, you'd say: 441 you want to get your daily dosage of news from, you'd say:
442 442
458 @cindex @sc{nntp} server 458 @cindex @sc{nntp} server
459 If this variable is not set, Gnus will take a look at the 459 If this variable is not set, Gnus will take a look at the
460 @code{NNTPSERVER} environment variable. If that variable isn't set, 460 @code{NNTPSERVER} environment variable. If that variable isn't set,
461 Gnus will see whether @code{gnus-nntpserver-file} 461 Gnus will see whether @code{gnus-nntpserver-file}
462 (@file{/etc/nntpserver} by default) has any opinions on the matter. If 462 (@file{/etc/nntpserver} by default) has any opinions on the matter. If
463 that fails as well, Gnus will try to use the machine that is 463 that fails as well, Gnus will try to use the machine running Emacs as an @sc{nntp} server. That's a long shot, though.
464 running Emacs as an @sc{nntp} server. That's a long shot, though.
465 464
466 @vindex gnus-nntp-server 465 @vindex gnus-nntp-server
467 If @code{gnus-nntp-server} is set, this variable will override 466 If @code{gnus-nntp-server} is set, this variable will override
468 @code{gnus-select-method}. You should therefore set 467 @code{gnus-select-method}. You should therefore set
469 @code{gnus-nntp-server} to @code{nil}, which is what it is by default. 468 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
941 940
942 @vindex gnus-read-active-file 941 @vindex gnus-read-active-file
943 @c @head 942 @c @head
944 The active file can be rather Huge, so if you have a slow network, you 943 The active file can be rather Huge, so if you have a slow network, you
945 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from 944 can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from
946 reading the active file. This variable is @code{t} by default. 945 reading the active file. This variable is @code{some} by default.
947 946
948 Gnus will try to make do by getting information just on the groups that 947 Gnus will try to make do by getting information just on the groups that
949 you actually subscribe to. 948 you actually subscribe to.
950 949
951 Note that if you subscribe to lots and lots of groups, setting this 950 Note that if you subscribe to lots and lots of groups, setting this
979 978
980 @table @code 979 @table @code
981 980
982 @item gnus-load-hook 981 @item gnus-load-hook
983 @vindex gnus-load-hook 982 @vindex gnus-load-hook
984 A hook that is run while Gnus is being loaded. Note that this hook will 983 A hook run while Gnus is being loaded. Note that this hook will
985 normally be run just once in each Emacs session, no matter how many 984 normally be run just once in each Emacs session, no matter how many
986 times you start Gnus. 985 times you start Gnus.
987 986
988 @item gnus-startup-hook 987 @item gnus-startup-hook
989 @vindex gnus-startup-hook 988 @vindex gnus-startup-hook
990 A hook that is run after starting up Gnus successfully. 989 A hook run after starting up Gnus successfully.
991 990
992 @item gnus-started-hook 991 @item gnus-started-hook
993 @vindex gnus-started-hook 992 @vindex gnus-started-hook
994 A hook that is run as the very last thing after starting up Gnus 993 A hook run as the very last thing after starting up Gnus
995 successfully. 994 successfully.
996 995
997 @item gnus-check-bogus-newsgroups 996 @item gnus-check-bogus-newsgroups
998 @vindex gnus-check-bogus-newsgroups 997 @vindex gnus-check-bogus-newsgroups
999 If non-@code{nil}, Gnus will check for and delete all bogus groups at 998 If non-@code{nil}, Gnus will check for and delete all bogus groups at
1632 (un)subscribed. These two variables should, of course, be inside the 1631 (un)subscribed. These two variables should, of course, be inside the
1633 relevant legal ranges. 1632 relevant legal ranges.
1634 1633
1635 @vindex gnus-keep-same-level 1634 @vindex gnus-keep-same-level
1636 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands 1635 If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands
1637 will only move to groups that are of the same level (or lower). In 1636 will only move to groups of the same level (or lower). In
1638 particular, going from the last article in one group to the next group 1637 particular, going from the last article in one group to the next group
1639 will go to the next group of the same level (or lower). This might be 1638 will go to the next group of the same level (or lower). This might be
1640 handy if you want to read the most important groups before you read the 1639 handy if you want to read the most important groups before you read the
1641 rest. 1640 rest.
1642 1641
1655 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you 1654 If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you
1656 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will 1655 give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will
1657 use this level as the ``work'' level. 1656 use this level as the ``work'' level.
1658 1657
1659 @vindex gnus-activate-level 1658 @vindex gnus-activate-level
1660 Gnus will normally just activate groups that are on level 1659 Gnus will normally just activate groups on level
1661 @code{gnus-activate-level} or less. If you don't want to activate 1660 @code{gnus-activate-level} or less. If you don't want to activate
1662 unsubscribed groups, for instance, you might set this variable to 1661 unsubscribed groups, for instance, you might set this variable to
1663 5. The default is 6. 1662 5. The default is 6.
1664 1663
1665 1664
1980 any default @code{Gcc} rules as described later). 1979 any default @code{Gcc} rules as described later).
1981 1980
1982 @item auto-expire 1981 @item auto-expire
1983 @cindex auto-expire 1982 @cindex auto-expire
1984 If the group parameter has an element that looks like @code{(auto-expire 1983 If the group parameter has an element that looks like @code{(auto-expire
1985 . t)}, all articles that are read will be marked as expirable. For an 1984 . t)}, all articles read will be marked as expirable. For an
1986 alternative approach, @pxref{Expiring Mail}. 1985 alternative approach, @pxref{Expiring Mail}.
1987 1986
1988 @item total-expire 1987 @item total-expire
1989 @cindex total-expire 1988 @cindex total-expire
1990 If the group parameter has an element that looks like 1989 If the group parameter has an element that looks like
2069 2068
2070 @node Listing Groups 2069 @node Listing Groups
2071 @section Listing Groups 2070 @section Listing Groups
2072 @cindex group listing 2071 @cindex group listing
2073 2072
2074 These commands all list various slices of the groups that are available. 2073 These commands all list various slices of the groups available.
2075 2074
2076 @table @kbd 2075 @table @kbd
2077 2076
2078 @item l 2077 @item l
2079 @itemx A s 2078 @itemx A s
2130 List groups that match a regexp (@code{gnus-group-list-all-matching}). 2129 List groups that match a regexp (@code{gnus-group-list-all-matching}).
2131 2130
2132 @item A A 2131 @item A A
2133 @kindex A A (Group) 2132 @kindex A A (Group)
2134 @findex gnus-group-list-active 2133 @findex gnus-group-list-active
2135 List absolutely all groups that are in the active file(s) of the 2134 List absolutely all groups in the active file(s) of the
2136 server(s) you are connected to (@code{gnus-group-list-active}). This 2135 server(s) you are connected to (@code{gnus-group-list-active}). This
2137 might very well take quite a while. It might actually be a better idea 2136 might very well take quite a while. It might actually be a better idea
2138 to do a @kbd{A M} to list all matching, and just give @samp{.} as the 2137 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
2139 thing to match on. Also note that this command may list groups that 2138 thing to match on. Also note that this command may list groups that
2140 don't exist (yet)---these will be listed as if they were killed groups. 2139 don't exist (yet)---these will be listed as if they were killed groups.
3320 This hook is called when a summary line is changed. It is not run if 3319 This hook is called when a summary line is changed. It is not run if
3321 @code{gnus-visual} is @code{nil}. 3320 @code{gnus-visual} is @code{nil}.
3322 3321
3323 @item gnus-summary-selected-face 3322 @item gnus-summary-selected-face
3324 @vindex gnus-summary-selected-face 3323 @vindex gnus-summary-selected-face
3325 This is the face (or @dfn{font} as some people call it) that is used to 3324 This is the face (or @dfn{font} as some people call it) used to
3326 highlight the current article in the summary buffer. 3325 highlight the current article in the summary buffer.
3327 3326
3328 @item gnus-summary-highlight 3327 @item gnus-summary-highlight
3329 @vindex gnus-summary-highlight 3328 @vindex gnus-summary-highlight
3330 Summary lines are highlighted according to this variable, which is a 3329 Summary lines are highlighted according to this variable, which is a
3530 3529
3531 3530
3532 @node Choosing Variables 3531 @node Choosing Variables
3533 @subsection Choosing Variables 3532 @subsection Choosing Variables
3534 3533
3535 Some variables that are relevant for moving and selecting articles: 3534 Some variables relevant for moving and selecting articles:
3536 3535
3537 @table @code 3536 @table @code
3538 @item gnus-auto-extend-newsgroup 3537 @item gnus-auto-extend-newsgroup
3539 @vindex gnus-auto-extend-newsgroup 3538 @vindex gnus-auto-extend-newsgroup
3540 All the movement commands will try to go to the previous (or next) 3539 All the movement commands will try to go to the previous (or next)
4011 Marked as expirable (@code{gnus-expirable-mark}). 4010 Marked as expirable (@code{gnus-expirable-mark}).
4012 4011
4013 Marking articles as @dfn{expirable} (or have them marked as such 4012 Marking articles as @dfn{expirable} (or have them marked as such
4014 automatically) doesn't make much sense in normal groups---a user doesn't 4013 automatically) doesn't make much sense in normal groups---a user doesn't
4015 control expiring of news articles, but in mail groups, for instance, 4014 control expiring of news articles, but in mail groups, for instance,
4016 articles that are marked as @dfn{expirable} can be deleted by Gnus at 4015 articles marked as @dfn{expirable} can be deleted by Gnus at
4017 any time. 4016 any time.
4018 @end table 4017 @end table
4019 4018
4020 4019
4021 @node Other Marks 4020 @node Other Marks
4041 answered) will be marked with an @samp{A} in the second column 4040 answered) will be marked with an @samp{A} in the second column
4042 (@code{gnus-replied-mark}). 4041 (@code{gnus-replied-mark}).
4043 4042
4044 @item 4043 @item
4045 @vindex gnus-cached-mark 4044 @vindex gnus-cached-mark
4046 Articles that are stored in the article cache will be marked with an 4045 Articles stored in the article cache will be marked with an
4047 @samp{*} in the second column (@code{gnus-cached-mark}). 4046 @samp{*} in the second column (@code{gnus-cached-mark}).
4048 4047
4049 @item 4048 @item
4050 @vindex gnus-saved-mark 4049 @vindex gnus-saved-mark
4051 Articles that are ``saved'' (in some manner or other; not necessarily 4050 Articles ``saved'' (in some manner or other; not necessarily
4052 religiously) are marked with an @samp{S} in the second column 4051 religiously) are marked with an @samp{S} in the second column
4053 (@code{gnus-saved-mark}). 4052 (@code{gnus-saved-mark}).
4054 4053
4055 @item 4054 @item
4056 @vindex gnus-not-empty-thread-mark 4055 @vindex gnus-not-empty-thread-mark
4351 @item / u 4350 @item / u
4352 @itemx x 4351 @itemx x
4353 @kindex / u (Summary) 4352 @kindex / u (Summary)
4354 @kindex x (Summary) 4353 @kindex x (Summary)
4355 @findex gnus-summary-limit-to-unread 4354 @findex gnus-summary-limit-to-unread
4356 Limit the summary buffer to articles that are not marked as read 4355 Limit the summary buffer to articles not marked as read
4357 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the 4356 (@code{gnus-summary-limit-to-unread}). If given a prefix, limit the
4358 buffer to articles that are strictly unread. This means that ticked and 4357 buffer to articles strictly unread. This means that ticked and
4359 dormant articles will also be excluded. 4358 dormant articles will also be excluded.
4360 4359
4361 @item / m 4360 @item / m
4362 @kindex / m (Summary) 4361 @kindex / m (Summary)
4363 @findex gnus-summary-limit-to-marks 4362 @findex gnus-summary-limit-to-marks
4365 with that mark (@code{gnus-summary-limit-to-marks}). 4364 with that mark (@code{gnus-summary-limit-to-marks}).
4366 4365
4367 @item / t 4366 @item / t
4368 @kindex / t (Summary) 4367 @kindex / t (Summary)
4369 @findex gnus-summary-limit-to-age 4368 @findex gnus-summary-limit-to-age
4370 Ask for a number and then limit the summary buffer to articles that are 4369 Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days
4371 older than (or equal to) that number of days
4372 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to 4370 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to
4373 articles that are younger than that number of days. 4371 articles younger than that number of days.
4374 4372
4375 @item / n 4373 @item / n
4376 @kindex / n (Summary) 4374 @kindex / n (Summary)
4377 @findex gnus-summary-limit-to-articles 4375 @findex gnus-summary-limit-to-articles
4378 Limit the summary buffer to the current article 4376 Limit the summary buffer to the current article
4457 slower and more awkward. 4455 slower and more awkward.
4458 4456
4459 @item gnus-fetch-old-headers 4457 @item gnus-fetch-old-headers
4460 @vindex gnus-fetch-old-headers 4458 @vindex gnus-fetch-old-headers
4461 If non-@code{nil}, Gnus will attempt to build old threads by fetching 4459 If non-@code{nil}, Gnus will attempt to build old threads by fetching
4462 more old headers---headers to articles that are marked as read. If you 4460 more old headers---headers to articles marked as read. If you
4463 would like to display as few summary lines as possible, but still 4461 would like to display as few summary lines as possible, but still
4464 connect as many loose threads as possible, you should set this variable 4462 connect as many loose threads as possible, you should set this variable
4465 to @code{some} or a number. If you set it to a number, no more than 4463 to @code{some} or a number. If you set it to a number, no more than
4466 that number of extra old headers will be fetched. In either case, 4464 that number of extra old headers will be fetched. In either case,
4467 fetching old headers only works if the backend you are using carries 4465 fetching old headers only works if the backend you are using carries
4793 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it 4791 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it
4794 is non-@code{nil} (which it is by default), subjects will be ignored 4792 is non-@code{nil} (which it is by default), subjects will be ignored
4795 when doing thread commands. If this variable is @code{nil}, articles in 4793 when doing thread commands. If this variable is @code{nil}, articles in
4796 the same thread with different subjects will not be included in the 4794 the same thread with different subjects will not be included in the
4797 operation in question. If this variable is @code{fuzzy}, only articles 4795 operation in question. If this variable is @code{fuzzy}, only articles
4798 that have subjects that are fuzzily equal will be included (@pxref{Fuzzy 4796 that have subjects fuzzily equal will be included (@pxref{Fuzzy
4799 Matching}). 4797 Matching}).
4800 4798
4801 4799
4802 @node Sorting 4800 @node Sorting
4803 @section Sorting 4801 @section Sorting
4866 @findex gnus-article-sort-by-author 4864 @findex gnus-article-sort-by-author
4867 @findex gnus-article-sort-by-number 4865 @findex gnus-article-sort-by-number
4868 If you are using an unthreaded display for some strange reason or other, 4866 If you are using an unthreaded display for some strange reason or other,
4869 you have to fiddle with the @code{gnus-article-sort-functions} variable. 4867 you have to fiddle with the @code{gnus-article-sort-functions} variable.
4870 It is very similar to the @code{gnus-thread-sort-functions}, except that 4868 It is very similar to the @code{gnus-thread-sort-functions}, except that
4871 is uses slightly different functions for article comparison. Available 4869 it uses slightly different functions for article comparison. Available
4872 sorting predicate functions are @code{gnus-article-sort-by-number}, 4870 sorting predicate functions are @code{gnus-article-sort-by-number},
4873 @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject}, 4871 @code{gnus-article-sort-by-author}, @code{gnus-article-sort-by-subject},
4874 @code{gnus-article-sort-by-date}, and @code{gnus-article-sort-by-score}. 4872 @code{gnus-article-sort-by-date}, and @code{gnus-article-sort-by-score}.
4875 4873
4876 If you want to sort an unthreaded summary display by subject, you could 4874 If you want to sort an unthreaded summary display by subject, you could
4938 return non-@code{nil} when the article in question is to be 4936 return non-@code{nil} when the article in question is to be
4939 pre-fetched. The default is @code{gnus-async-read-p}, which returns 4937 pre-fetched. The default is @code{gnus-async-read-p}, which returns
4940 @code{nil} on read articles. The function is called with an article 4938 @code{nil} on read articles. The function is called with an article
4941 data structure as the only parameter. 4939 data structure as the only parameter.
4942 4940
4943 If, for instance, you wish to pre-fetch only unread articles that are 4941 If, for instance, you wish to pre-fetch only unread articles shorter than 100 lines, you could say something like:
4944 shorter than 100 lines, you could say something like:
4945 4942
4946 @lisp 4943 @lisp
4947 (defun my-async-short-unread-p (data) 4944 (defun my-async-short-unread-p (data)
4948 "Return non-nil for short, unread articles." 4945 "Return non-nil for short, unread articles."
4949 (and (gnus-data-unread-p data) 4946 (and (gnus-data-unread-p data)
4992 4989
4993 @vindex gnus-use-long-file-name 4990 @vindex gnus-use-long-file-name
4994 @vindex gnus-cache-directory 4991 @vindex gnus-cache-directory
4995 @vindex gnus-use-cache 4992 @vindex gnus-use-cache
4996 To turn caching on, set @code{gnus-use-cache} to @code{t}. By default, 4993 To turn caching on, set @code{gnus-use-cache} to @code{t}. By default,
4997 all articles that are ticked or marked as dormant will then be copied 4994 all articles ticked or marked as dormant will then be copied
4998 over to your local cache (@code{gnus-cache-directory}). Whether this 4995 over to your local cache (@code{gnus-cache-directory}). Whether this
4999 cache is flat or hierarchal is controlled by the 4996 cache is flat or hierarchal is controlled by the
5000 @code{gnus-use-long-file-name} variable, as usual. 4997 @code{gnus-use-long-file-name} variable, as usual.
5001 4998
5002 When re-selecting a ticked or dormant article, it will be fetched from the 4999 When re-selecting a ticked or dormant article, it will be fetched from the
5012 The entering/removal of articles from the cache is controlled by the 5009 The entering/removal of articles from the cache is controlled by the
5013 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles} 5010 @code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles}
5014 variables. Both are lists of symbols. The first is @code{(ticked 5011 variables. Both are lists of symbols. The first is @code{(ticked
5015 dormant)} by default, meaning that ticked and dormant articles will be 5012 dormant)} by default, meaning that ticked and dormant articles will be
5016 put in the cache. The latter is @code{(read)} by default, meaning that 5013 put in the cache. The latter is @code{(read)} by default, meaning that
5017 articles that are marked as read are removed from the cache. Possibly 5014 articles marked as read are removed from the cache. Possibly
5018 symbols in these two lists are @code{ticked}, @code{dormant}, 5015 symbols in these two lists are @code{ticked}, @code{dormant},
5019 @code{unread} and @code{read}. 5016 @code{unread} and @code{read}.
5020 5017
5021 @findex gnus-jog-cache 5018 @findex gnus-jog-cache
5022 So where does the massive article-fetching and storing come into the 5019 So where does the massive article-fetching and storing come into the
5329 means that Gnus will look at the articles it saves for an 5326 means that Gnus will look at the articles it saves for an
5330 @code{Archive-name} line and use that as a suggestion for the file 5327 @code{Archive-name} line and use that as a suggestion for the file
5331 name. 5328 name.
5332 5329
5333 Here's an example function to clean up file names somewhat. If you have 5330 Here's an example function to clean up file names somewhat. If you have
5334 lots of mail groups that are called things like 5331 lots of mail groups called things like
5335 @samp{nnml:mail.whatever}, you may want to chop off the beginning of 5332 @samp{nnml:mail.whatever}, you may want to chop off the beginning of
5336 these group names before creating the file name to save to. The 5333 these group names before creating the file name to save to. The
5337 following will do just that: 5334 following will do just that:
5338 5335
5339 @lisp 5336 @lisp
5368 If you'd like to save articles in a hierarchy that looks something like 5365 If you'd like to save articles in a hierarchy that looks something like
5369 a spool, you could 5366 a spool, you could
5370 5367
5371 @lisp 5368 @lisp
5372 (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy 5369 (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy
5373 (setq gnus-default-article-save 'gnus-summary-save-in-file) ; no encoding 5370 (setq gnus-default-article-saver 'gnus-summary-save-in-file) ; no encoding
5374 @end lisp 5371 @end lisp
5375 5372
5376 Then just save with @kbd{o}. You'd then read this hierarchy with 5373 Then just save with @kbd{o}. You'd then read this hierarchy with
5377 ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and 5374 ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and
5378 the toplevel directory as the argument (@file{~/News/}). Then just walk 5375 the toplevel directory as the argument (@file{~/News/}). Then just walk
6795 @item B M-C-e 6792 @item B M-C-e
6796 @kindex B M-C-e (Summary) 6793 @kindex B M-C-e (Summary)
6797 @findex gnus-summary-expire-articles-now 6794 @findex gnus-summary-expire-articles-now
6798 Delete all the expirable articles in the group 6795 Delete all the expirable articles in the group
6799 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} 6796 (@code{gnus-summary-expire-articles-now}). This means that @strong{all}
6800 articles that are eligible for expiry in the current group will 6797 articles eligible for expiry in the current group will
6801 disappear forever into that big @file{/dev/null} in the sky. 6798 disappear forever into that big @file{/dev/null} in the sky.
6802 6799
6803 @item B DEL 6800 @item B DEL
6804 @kindex B DEL (Summary) 6801 @kindex B DEL (Summary)
6805 @findex gnus-summary-delete-article 6802 @findex gnus-summary-delete-article
7375 7372
7376 @lisp 7373 @lisp
7377 (setq gnus-visible-headers "^From:\\|^Subject:") 7374 (setq gnus-visible-headers "^From:\\|^Subject:")
7378 @end lisp 7375 @end lisp
7379 7376
7380 This variable can also be a list of regexps to match headers that are to 7377 This variable can also be a list of regexps to match headers to
7381 remain visible. 7378 remain visible.
7382 7379
7383 @item gnus-ignored-headers 7380 @item gnus-ignored-headers
7384 @vindex gnus-ignored-headers 7381 @vindex gnus-ignored-headers
7385 This variable is the reverse of @code{gnus-visible-headers}. If this 7382 This variable is the reverse of @code{gnus-visible-headers}. If this
7392 7389
7393 @lisp 7390 @lisp
7394 (setq gnus-ignored-headers "^References:\\|^Xref:") 7391 (setq gnus-ignored-headers "^References:\\|^Xref:")
7395 @end lisp 7392 @end lisp
7396 7393
7397 This variable can also be a list of regexps to match headers that are to 7394 This variable can also be a list of regexps to match headers to
7398 be removed. 7395 be removed.
7399 7396
7400 Note that if @code{gnus-visible-headers} is non-@code{nil}, this 7397 Note that if @code{gnus-visible-headers} is non-@code{nil}, this
7401 variable will have no effect. 7398 variable will have no effect.
7402 7399
7414 @lisp 7411 @lisp
7415 (setq gnus-sorted-header-list '("^From:" "^Subject:")) 7412 (setq gnus-sorted-header-list '("^From:" "^Subject:"))
7416 @end lisp 7413 @end lisp
7417 7414
7418 Any headers that are to remain visible, but are not listed in this 7415 Any headers that are to remain visible, but are not listed in this
7419 variable, will be displayed in random order after all the headers that 7416 variable, will be displayed in random order after all the headers listed in this variable.
7420 are listed in this variable.
7421 7417
7422 @findex gnus-article-hide-boring-headers 7418 @findex gnus-article-hide-boring-headers
7423 @vindex gnus-article-display-hook 7419 @vindex gnus-article-display-hook
7424 @vindex gnus-boring-article-headers 7420 @vindex gnus-boring-article-headers
7425 You can hide further boring headers by entering 7421 You can hide further boring headers by entering
7753 7749
7754 7750
7755 @node Mail and Post 7751 @node Mail and Post
7756 @section Mail and Post 7752 @section Mail and Post
7757 7753
7758 Here's a list of variables that are relevant to both mailing and 7754 Here's a list of variables relevant to both mailing and
7759 posting: 7755 posting:
7760 7756
7761 @table @code 7757 @table @code
7762 @item gnus-mailing-list-groups 7758 @item gnus-mailing-list-groups
7763 @findex gnus-mailing-list-groups 7759 @findex gnus-mailing-list-groups
8080 @node Select Methods 8076 @node Select Methods
8081 @chapter Select Methods 8077 @chapter Select Methods
8082 @cindex foreign groups 8078 @cindex foreign groups
8083 @cindex select methods 8079 @cindex select methods
8084 8080
8085 A @dfn{foreign group} is a group that is not read by the usual (or 8081 A @dfn{foreign group} is a group not read by the usual (or
8086 default) means. It could be, for instance, a group from a different 8082 default) means. It could be, for instance, a group from a different
8087 @sc{nntp} server, it could be a virtual group, or it could be your own 8083 @sc{nntp} server, it could be a virtual group, or it could be your own
8088 personal mail group. 8084 personal mail group.
8089 8085
8090 A foreign group (or any group, really) is specified by a @dfn{name} and 8086 A foreign group (or any group, really) is specified by a @dfn{name} and
8138 hangs if queried for @sc{nov} headers and has a buggy select. Ahem. 8134 hangs if queried for @sc{nov} headers and has a buggy select. Ahem.
8139 Anyways, if you had to specify that for each group that used this 8135 Anyways, if you had to specify that for each group that used this
8140 server, that would be too much work, so Gnus offers a way of naming 8136 server, that would be too much work, so Gnus offers a way of naming
8141 select methods, which is what you do in the server buffer. 8137 select methods, which is what you do in the server buffer.
8142 8138
8143 To enter the server buffer, user the @kbd{^} 8139 To enter the server buffer, use the @kbd{^}
8144 (@code{gnus-group-enter-server-mode}) command in the group buffer. 8140 (@code{gnus-group-enter-server-mode}) command in the group buffer.
8145 8141
8146 @menu 8142 @menu
8147 * Server Buffer Format:: You can customize the look of this buffer. 8143 * Server Buffer Format:: You can customize the look of this buffer.
8148 * Server Commands:: Commands to manipulate servers. 8144 * Server Commands:: Commands to manipulate servers.
8294 variables are relevant, but here's an @code{nnmh} example: 8290 variables are relevant, but here's an @code{nnmh} example:
8295 8291
8296 @code{nnmh} is a mail backend that reads a spool-like structure. Say 8292 @code{nnmh} is a mail backend that reads a spool-like structure. Say
8297 you have two structures that you wish to access: One is your private 8293 you have two structures that you wish to access: One is your private
8298 mail spool, and the other is a public one. Here's the possible spec for 8294 mail spool, and the other is a public one. Here's the possible spec for
8299 you private mail: 8295 your private mail:
8300 8296
8301 @lisp 8297 @lisp
8302 (nnmh "private" (nnmh-directory "~/private/mail/")) 8298 (nnmh "private" (nnmh-directory "~/private/mail/"))
8303 @end lisp 8299 @end lisp
8304 8300
8692 8688
8693 @item nntp-xover-commands 8689 @item nntp-xover-commands
8694 @vindex nntp-xover-commands 8690 @vindex nntp-xover-commands
8695 @cindex nov 8691 @cindex nov
8696 @cindex XOVER 8692 @cindex XOVER
8697 List of strings that are used as commands to fetch @sc{nov} lines from a 8693 List of strings used as commands to fetch @sc{nov} lines from a
8698 server. The default value of this variable is @code{("XOVER" 8694 server. The default value of this variable is @code{("XOVER"
8699 "XOVERVIEW")}. 8695 "XOVERVIEW")}.
8700 8696
8701 @item nntp-nov-gap 8697 @item nntp-nov-gap
8702 @vindex nntp-nov-gap 8698 @vindex nntp-nov-gap
9172 9168
9173 @vindex nnmail-split-abbrev-alist 9169 @vindex nnmail-split-abbrev-alist
9174 @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they 9170 @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they
9175 are expanded as specified by the variable 9171 are expanded as specified by the variable
9176 @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where 9172 @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where
9177 the car of a cell contains the key, and the cdr contains the associated 9173 the @code{car} of a cell contains the key, and the @code{cdr} contains the associated
9178 value. 9174 value.
9179 9175
9180 @vindex nnmail-split-fancy-syntax-table 9176 @vindex nnmail-split-fancy-syntax-table
9181 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect 9177 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect
9182 when all this splitting is performed. 9178 when all this splitting is performed.
9341 9337
9342 @vindex gnus-auto-expirable-newsgroups 9338 @vindex gnus-auto-expirable-newsgroups
9343 You do not have to mark articles as expirable by hand. Groups that 9339 You do not have to mark articles as expirable by hand. Groups that
9344 match the regular expression @code{gnus-auto-expirable-newsgroups} will 9340 match the regular expression @code{gnus-auto-expirable-newsgroups} will
9345 have all articles that you read marked as expirable automatically. All 9341 have all articles that you read marked as expirable automatically. All
9346 articles that are marked as expirable have an @samp{E} in the first 9342 articles marked as expirable have an @samp{E} in the first
9347 column in the summary buffer. 9343 column in the summary buffer.
9348 9344
9349 By default, if you have auto expiry switched on, Gnus will mark all the 9345 By default, if you have auto expiry switched on, Gnus will mark all the
9350 articles you read as expirable, no matter if they were read or unread 9346 articles you read as expirable, no matter if they were read or unread
9351 before. To avoid having articles marked as read marked as expirable 9347 before. To avoid having articles marked as read marked as expirable
9358 'gnus-summary-mark-read-and-unread-as-read) 9354 'gnus-summary-mark-read-and-unread-as-read)
9359 (add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read) 9355 (add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read)
9360 @end lisp 9356 @end lisp
9361 9357
9362 Note that making a group auto-expirable doesn't mean that all read 9358 Note that making a group auto-expirable doesn't mean that all read
9363 articles are expired---only the articles that are marked as expirable 9359 articles are expired---only the articles marked as expirable
9364 will be expired. Also note that using the @kbd{d} command won't make 9360 will be expired. Also note that using the @kbd{d} command won't make
9365 groups expirable---only semi-automatic marking of articles as read will 9361 groups expirable---only semi-automatic marking of articles as read will
9366 mark the articles as expirable in auto-expirable groups. 9362 mark the articles as expirable in auto-expirable groups.
9367 9363
9368 Let's say you subscribe to a couple of mailing lists, and you want the 9364 Let's say you subscribe to a couple of mailing lists, and you want the
9852 9848
9853 If you have a directory that has lots of articles in separate files in 9849 If you have a directory that has lots of articles in separate files in
9854 it, you might treat it as a newsgroup. The files have to have numerical 9850 it, you might treat it as a newsgroup. The files have to have numerical
9855 names, of course. 9851 names, of course.
9856 9852
9857 This might be an opportune moment to mention @code{ange-ftp}, that most 9853 This might be an opportune moment to mention @code{ange-ftp} (and its
9858 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I 9854 successor @code{ecf}), that most wonderful of all wonderful Emacs
9859 didn't think much about it---a backend to read directories. Big deal. 9855 packages. When I wrote @code{nndir}, I didn't think much about it---a
9856 backend to read directories. Big deal.
9860 9857
9861 @code{ange-ftp} changes that picture dramatically. For instance, if you 9858 @code{ange-ftp} changes that picture dramatically. For instance, if you
9862 enter the @code{ange-ftp} file name 9859 enter the @code{ange-ftp} file name
9863 @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name, 9860 @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name,
9864 @code{ange-ftp} or @code{efs} will actually allow you to read this directory over at 9861 @code{ange-ftp} or @code{efs} will actually allow you to read this
9865 @samp{sina} as a newsgroup. Distributed news ahoy! 9862 directory over at @samp{sina} as a newsgroup. Distributed news ahoy!
9866 9863
9867 @code{nndir} will use @sc{nov} files if they are present. 9864 @code{nndir} will use @sc{nov} files if they are present.
9868 9865
9869 @code{nndir} is a ``read-only'' backend---you can't delete or expire 9866 @code{nndir} is a ``read-only'' backend---you can't delete or expire
9870 articles with this method. You can use @code{nnmh} or @code{nnml} for 9867 articles with this method. You can use @code{nnmh} or @code{nnml} for
10621 end up in this one, and there should be no duplicates. Threading (and 10618 end up in this one, and there should be no duplicates. Threading (and
10622 the rest) will still work as usual, but there might be problems with the 10619 the rest) will still work as usual, but there might be problems with the
10623 sequence of articles. Sorting on date might be an option here 10620 sequence of articles. Sorting on date might be an option here
10624 (@pxref{Selecting a Group}). 10621 (@pxref{Selecting a Group}).
10625 10622
10626 One limitation, however---all groups that are included in a virtual 10623 One limitation, however---all groups included in a virtual
10627 group have to be alive (i.e., subscribed or unsubscribed). Killed or 10624 group have to be alive (i.e., subscribed or unsubscribed). Killed or
10628 zombie groups can't be component groups for @code{nnvirtual} groups. 10625 zombie groups can't be component groups for @code{nnvirtual} groups.
10629 10626
10630 @vindex nnvirtual-always-rescan 10627 @vindex nnvirtual-always-rescan
10631 If the @code{nnvirtual-always-rescan} is non-@code{nil}, 10628 If the @code{nnvirtual-always-rescan} is non-@code{nil},
10685 @code{nnkiboze-directory}, which is @file{~/News/} by default. One 10682 @code{nnkiboze-directory}, which is @file{~/News/} by default. One
10686 contains the @sc{nov} header lines for all the articles in the group, 10683 contains the @sc{nov} header lines for all the articles in the group,
10687 and the other is an additional @file{.newsrc} file to store information 10684 and the other is an additional @file{.newsrc} file to store information
10688 on what groups have been searched through to find component articles. 10685 on what groups have been searched through to find component articles.
10689 10686
10690 Articles that are marked as read in the @code{nnkiboze} group will have 10687 Articles marked as read in the @code{nnkiboze} group will have
10691 their @sc{nov} lines removed from the @sc{nov} file. 10688 their @sc{nov} lines removed from the @sc{nov} file.
10692 10689
10693 10690
10694 @node Scoring 10691 @node Scoring
10695 @chapter Scoring 10692 @chapter Scoring
11030 @item gnus-score-uncacheable-files 11027 @item gnus-score-uncacheable-files
11031 @vindex gnus-score-uncacheable-files 11028 @vindex gnus-score-uncacheable-files
11032 @cindex score cache 11029 @cindex score cache
11033 All score files are normally cached to avoid excessive re-loading of 11030 All score files are normally cached to avoid excessive re-loading of
11034 score files. However, if this might make you Emacs grow big and 11031 score files. However, if this might make you Emacs grow big and
11035 bloated, so this regexp can be used to weed out score files that are 11032 bloated, so this regexp can be used to weed out score files unlikely to be needed again. It would be a bad idea to deny caching of
11036 unlikely to be needed again. It would be a bad idea to deny caching of
11037 @file{all.SCORE}, while it might be a good idea to not cache 11033 @file{all.SCORE}, while it might be a good idea to not cache
11038 @file{comp.infosystems.www.authoring.misc.ADAPT}. In fact, this 11034 @file{comp.infosystems.www.authoring.misc.ADAPT}. In fact, this
11039 variable is @samp{ADAPT$} by default, so no adaptive score files will 11035 variable is @samp{ADAPT$} by default, so no adaptive score files will
11040 be cached. 11036 be cached.
11041 11037
11260 11256
11261 @cindex ISO8601 11257 @cindex ISO8601
11262 @cindex date 11258 @cindex date
11263 A more useful match type is @code{regexp}. With it, you can match the 11259 A more useful match type is @code{regexp}. With it, you can match the
11264 date string using a regular expression. The date is normalized to 11260 date string using a regular expression. The date is normalized to
11265 ISO8601 compact format first---@samp{YYYYMMDDTHHMMSS}. If you want to 11261 ISO8601 compact format first---@var{YYYYMMDD}@code{T}@var{HHMMSS}. If
11266 match all articles that have been posted on April 1st in every year, you 11262 you want to match all articles that have been posted on April 1st in
11267 could use @samp{....0401.........} as a match string, for instance. 11263 every year, you could use @samp{....0401.........} as a match string,
11268 (Note that the date is kept in its original time zone, so this will 11264 for instance. (Note that the date is kept in its original time zone, so
11269 match articles that were posted when it was April 1st where the article 11265 this will match articles that were posted when it was April 1st where
11270 was posted from. Time zones are such wholesome fun for the whole 11266 the article was posted from. Time zones are such wholesome fun for the
11271 family, eh?) 11267 whole family, eh?)
11272 11268
11273 @item Head, Body, All 11269 @item Head, Body, All
11274 These three match keys use the same match types as the @code{From} (etc) 11270 These three match keys use the same match types as the @code{From} (etc)
11275 header uses. 11271 header uses.
11276 11272
11284 uses. (Using this match key will lead to creation of @file{ADAPT} 11280 uses. (Using this match key will lead to creation of @file{ADAPT}
11285 files.) 11281 files.)
11286 11282
11287 @item Thread 11283 @item Thread
11288 This match key works along the same lines as the @code{Followup} match 11284 This match key works along the same lines as the @code{Followup} match
11289 key. If you say that you want to score on a (sub-)thread that is 11285 key. If you say that you want to score on a (sub-)thread started by an article with a @code{Message-ID} @var{X}, then you add a
11290 started by an article with a @code{Message-ID} @var{X}, then you add a
11291 @samp{thread} match. This will add a new @samp{thread} match for each 11286 @samp{thread} match. This will add a new @samp{thread} match for each
11292 article that has @var{X} in its @code{References} header. (These new 11287 article that has @var{X} in its @code{References} header. (These new
11293 @samp{thread} matches will use the @code{Message-ID}s of these matching 11288 @samp{thread} matches will use the @code{Message-ID}s of these matching
11294 articles.) This will ensure that you can raise/lower the score of an 11289 articles.) This will ensure that you can raise/lower the score of an
11295 entire thread, even though some articles in the thread may not have 11290 entire thread, even though some articles in the thread may not have
11297 undeterministic scores of the articles in the thread. (Using this match 11292 undeterministic scores of the articles in the thread. (Using this match
11298 key will lead to creation of @file{ADAPT} files.) 11293 key will lead to creation of @file{ADAPT} files.)
11299 @end table 11294 @end table
11300 @end enumerate 11295 @end enumerate
11301 11296
11297 @cindex Score File Atoms
11302 @item mark 11298 @item mark
11303 The value of this entry should be a number. Any articles with a score 11299 The value of this entry should be a number. Any articles with a score
11304 lower than this number will be marked as read. 11300 lower than this number will be marked as read.
11305 11301
11306 @item expunge 11302 @item expunge
11550 (,gnus-killed-mark . -20) 11546 (,gnus-killed-mark . -20)
11551 (,gnus-del-mark . -15))) 11547 (,gnus-del-mark . -15)))
11552 @end lisp 11548 @end lisp
11553 11549
11554 This is the default value. If you have adaption on words enabled, every 11550 This is the default value. If you have adaption on words enabled, every
11555 word that appears in subjects of articles that are marked with 11551 word that appears in subjects of articles marked with
11556 @code{gnus-read-mark} will result in a score rule that increase the 11552 @code{gnus-read-mark} will result in a score rule that increase the
11557 score with 30 points. 11553 score with 30 points.
11558 11554
11559 @vindex gnus-default-ignored-adaptive-words 11555 @vindex gnus-default-ignored-adaptive-words
11560 @vindex gnus-ignored-adaptive-words 11556 @vindex gnus-ignored-adaptive-words
11830 head: 11826 head:
11831 11827
11832 @itemize @bullet 11828 @itemize @bullet
11833 11829
11834 @item 11830 @item
11835 Articles that are heavily crossposted are probably junk. 11831 Articles heavily crossposted are probably junk.
11836 @item 11832 @item
11837 To lower a single inappropriate article, lower by @code{Message-ID}. 11833 To lower a single inappropriate article, lower by @code{Message-ID}.
11838 @item 11834 @item
11839 Particularly brilliant authors can be raised on a permanent basis. 11835 Particularly brilliant authors can be raised on a permanent basis.
11840 @item 11836 @item
11879 (gnus-kill "From" "Lars Ingebrigtsen") 11875 (gnus-kill "From" "Lars Ingebrigtsen")
11880 (gnus-kill "Subject" "ding") 11876 (gnus-kill "Subject" "ding")
11881 (gnus-expunge "X") 11877 (gnus-expunge "X")
11882 @end lisp 11878 @end lisp
11883 11879
11884 This will mark every article written by me as read, and remove them from 11880 This will mark every article written by me as read, and remove the
11885 the summary buffer. Very useful, you'll agree. 11881 marked articles from the summary buffer. Very useful, you'll agree.
11886 11882
11887 Other programs use a totally different kill file syntax. If Gnus 11883 Other programs use a totally different kill file syntax. If Gnus
11888 encounters what looks like a @code{rn} kill file, it will take a stab at 11884 encounters what looks like a @code{rn} kill file, it will take a stab at
11889 interpreting it. 11885 interpreting it.
11890 11886
11925 @vindex gnus-kill-file-name 11921 @vindex gnus-kill-file-name
11926 A kill file for the group @samp{soc.motss} is normally called 11922 A kill file for the group @samp{soc.motss} is normally called
11927 @file{soc.motss.KILL}. The suffix appended to the group name to get 11923 @file{soc.motss.KILL}. The suffix appended to the group name to get
11928 this file name is detailed by the @code{gnus-kill-file-name} variable. 11924 this file name is detailed by the @code{gnus-kill-file-name} variable.
11929 The ``global'' kill file (not in the score file sense of ``global'', of 11925 The ``global'' kill file (not in the score file sense of ``global'', of
11930 course) is called just @file{KILL}. 11926 course) is just called @file{KILL}.
11931 11927
11932 @vindex gnus-kill-save-kill-file 11928 @vindex gnus-kill-save-kill-file
11933 @item gnus-kill-save-kill-file 11929 @item gnus-kill-save-kill-file
11934 If this variable is non-@code{nil}, Gnus will save the 11930 If this variable is non-@code{nil}, Gnus will save the
11935 kill file after processing, which is necessary if you use expiring 11931 kill file after processing, which is necessary if you use expiring
11983 To accomplish this the GroupLens system combines your opinions about 11979 To accomplish this the GroupLens system combines your opinions about
11984 articles you have already read with the opinions of others who have done 11980 articles you have already read with the opinions of others who have done
11985 likewise and gives you a personalized prediction for each unread news 11981 likewise and gives you a personalized prediction for each unread news
11986 article. Think of GroupLens as a matchmaker. GroupLens watches how you 11982 article. Think of GroupLens as a matchmaker. GroupLens watches how you
11987 rate articles, and finds other people that rate articles the same way. 11983 rate articles, and finds other people that rate articles the same way.
11988 Once it has found for you some people you agree with it tells you, in 11984 Once it has found some people you agree with it tells you, in the form
11989 the form of a prediction, what they thought of the article. You can use 11985 of a prediction, what they thought of the article. You can use this
11990 this prediction to help you decide whether or not you want to read the 11986 prediction to help you decide whether or not you want to read the
11991 article. 11987 article.
11992 11988
11993 @menu 11989 @menu
11994 * Using GroupLens:: How to make Gnus use GroupLens. 11990 * Using GroupLens:: How to make Gnus use GroupLens.
11995 * Rating Articles:: Letting GroupLens know how you rate articles. 11991 * Rating Articles:: Letting GroupLens know how you rate articles.
12002 @subsection Using GroupLens 11998 @subsection Using GroupLens
12003 11999
12004 To use GroupLens you must register a pseudonym with your local Better 12000 To use GroupLens you must register a pseudonym with your local Better
12005 Bit Bureau (BBB). 12001 Bit Bureau (BBB).
12006 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only 12002 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
12007 better bit in town is at the moment. 12003 better bit in town at the moment.
12008 12004
12009 Once you have registered you'll need to set a couple of variables. 12005 Once you have registered you'll need to set a couple of variables.
12010 12006
12011 @table @code 12007 @table @code
12012 12008
12024 @vindex grouplens-newsgroups 12020 @vindex grouplens-newsgroups
12025 A list of groups that you want to get GroupLens predictions for. 12021 A list of groups that you want to get GroupLens predictions for.
12026 12022
12027 @end table 12023 @end table
12028 12024
12029 Thats the minimum of what you need to get up and running with GroupLens. 12025 That's the minimum of what you need to get up and running with GroupLens.
12030 Once you've registered, GroupLens will start giving you scores for 12026 Once you've registered, GroupLens will start giving you scores for
12031 articles based on the average of what other people think. But, to get 12027 articles based on the average of what other people think. But, to get
12032 the real benefit of GroupLens you need to start rating articles 12028 the real benefit of GroupLens you need to start rating articles
12033 yourself. Then the scores GroupLens gives you will be personalized for 12029 yourself. Then the scores GroupLens gives you will be personalized for
12034 you, based on how the people you usually agree with have already rated. 12030 you, based on how the people you usually agree with have already rated.
12131 12127
12132 @item prediction-num 12128 @item prediction-num
12133 Plain-old numeric value. 12129 Plain-old numeric value.
12134 12130
12135 @item confidence-plus-minus 12131 @item confidence-plus-minus
12136 Prediction +/i confidence. 12132 Prediction +/- confidence.
12137 12133
12138 @end table 12134 @end table
12139 12135
12140 12136
12141 @node GroupLens Variables 12137 @node GroupLens Variables
12142 @subsection GroupLens Variables 12138 @subsection GroupLens Variables
12143 12139
12144 @table @code 12140 @table @code
12145 12141
12146 @item gnus-summary-grouplens-line-format 12142 @item gnus-summary-grouplens-line-format
12147 The summary line format used in summary buffers that are GroupLens 12143 The summary line format used in GroupLens-enhanced summary buffers. It
12148 enhanced. It accepts the same specs as the normal summary line format 12144 accepts the same specs as the normal summary line format (@pxref{Summary
12149 (@pxref{Summary Buffer Lines}). The default is 12145 Buffer Lines}). The default is @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%)
12150 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. 12146 %s\n}.
12151 12147
12152 @item grouplens-bbb-host 12148 @item grouplens-bbb-host
12153 Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the 12149 Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the
12154 default. 12150 default.
12155 12151
12171 @node Advanced Scoring 12167 @node Advanced Scoring
12172 @section Advanced Scoring 12168 @section Advanced Scoring
12173 12169
12174 Scoring on Subjects and From headers is nice enough, but what if you're 12170 Scoring on Subjects and From headers is nice enough, but what if you're
12175 really interested in what a person has to say only when she's talking 12171 really interested in what a person has to say only when she's talking
12176 about a particular subject? Or what about if you really don't want to 12172 about a particular subject? Or what if you really don't want to
12177 read what person A has to say when she's following up to person B, but 12173 read what person A has to say when she's following up to person B, but
12178 want to read what she says when she's following up to person C? 12174 want to read what she says when she's following up to person C?
12179 12175
12180 By using advanced scoring rules you may create arbitrarily complex 12176 By using advanced scoring rules you may create arbitrarily complex
12181 scoring patterns. 12177 scoring patterns.
12216 12212
12217 @item ! 12213 @item !
12218 @itemx not 12214 @itemx not
12219 @itemx ¬ 12215 @itemx ¬
12220 This logical operator only takes a single argument. It returns the 12216 This logical operator only takes a single argument. It returns the
12221 inverse of the value of its argument. 12217 logical negation of the value of its argument.
12222 12218
12223 @end table 12219 @end table
12224 12220
12225 There is an @dfn{indirection operator} that will make its arguments 12221 There is an @dfn{indirection operator} that will make its arguments
12226 apply to the ancestors of the current article being scored. For 12222 apply to the ancestors of the current article being scored. For
12227 instance, @code{1-} will make score rules apply to the parent of the 12223 instance, @code{1-} will make score rules apply to the parent of the
12228 current article. @code{2-} will make score fules apply to the 12224 current article. @code{2-} will make score rules apply to the
12229 grandparent of the current article. Alternatively, you can write 12225 grandparent of the current article. Alternatively, you can write
12230 @code{^^}, where the number of @code{^}s (carets) say how far back into 12226 @code{^^}, where the number of @code{^}s (carets) says how far back into
12231 the ancestry you want to go. 12227 the ancestry you want to go.
12232 12228
12233 Finally, we have the match operators. These are the ones that do the 12229 Finally, we have the match operators. These are the ones that do the
12234 real work. Match operators are header name strings followed by a match 12230 real work. Match operators are header name strings followed by a match
12235 and a match type. A typical match operator looks like @samp{("from" 12231 and a match type. A typical match operator looks like @samp{("from"
12298 The @code{&} and @code{|} logical operators do short-circuit logic. 12294 The @code{&} and @code{|} logical operators do short-circuit logic.
12299 That is, they stop processing their arguments when it's clear what the 12295 That is, they stop processing their arguments when it's clear what the
12300 result of the operation will be. For instance, if one of the arguments 12296 result of the operation will be. For instance, if one of the arguments
12301 of an @code{&} evaluates to @code{false}, there's no point in evaluating 12297 of an @code{&} evaluates to @code{false}, there's no point in evaluating
12302 the rest of the arguments. This means that you should put slow matches 12298 the rest of the arguments. This means that you should put slow matches
12303 (@samp{body}, @code{header}) last and quick matches (@samp{from}, 12299 (@samp{body}, @samp{header}) last and quick matches (@samp{from},
12304 @samp{subject}) first. 12300 @samp{subject}) first.
12305 12301
12306 The indirection arguments (@code{1-} and so on) will make their 12302 The indirection arguments (@code{1-} and so on) will make their
12307 arguments work on previous generations of the thread. If you say 12303 arguments work on previous generations of the thread. If you say
12308 something like: 12304 something like:
12421 @cindex process/prefix convention 12417 @cindex process/prefix convention
12422 12418
12423 Many functions, among them functions for moving, decoding and saving 12419 Many functions, among them functions for moving, decoding and saving
12424 articles, use what is known as the @dfn{Process/Prefix convention}. 12420 articles, use what is known as the @dfn{Process/Prefix convention}.
12425 12421
12426 This is a method for figuring out what articles that the user wants the 12422 This is a method for figuring out what articles the user wants the
12427 command to be performed on. 12423 command to be performed on.
12428 12424
12429 It goes like this: 12425 It goes like this:
12430 12426
12431 If the numeric prefix is N, perform the operation on the next N 12427 If the numeric prefix is N, perform the operation on the next N
12436 @vindex transient-mark-mode 12432 @vindex transient-mark-mode
12437 If @code{transient-mark-mode} in non-@code{nil} and the region is 12433 If @code{transient-mark-mode} in non-@code{nil} and the region is
12438 active, all articles in the region will be worked upon. 12434 active, all articles in the region will be worked upon.
12439 12435
12440 If there is no numeric prefix, but some articles are marked with the 12436 If there is no numeric prefix, but some articles are marked with the
12441 process mark, perform the operation on the articles that are marked with 12437 process mark, perform the operation on the articles marked with
12442 the process mark. 12438 the process mark.
12443 12439
12444 If there is neither a numeric prefix nor any articles marked with the 12440 If there is neither a numeric prefix nor any articles marked with the
12445 process mark, just perform the operation on the current article. 12441 process mark, just perform the operation on the current article.
12446 12442
12496 12492
12497 @node Formatting Variables 12493 @node Formatting Variables
12498 @section Formatting Variables 12494 @section Formatting Variables
12499 @cindex formatting variables 12495 @cindex formatting variables
12500 12496
12501 Throughout this manual you've probably noticed lots of variables that 12497 Throughout this manual you've probably noticed lots of variables called things like @code{gnus-group-line-format} and
12502 are called things like @code{gnus-group-line-format} and
12503 @code{gnus-summary-mode-line-format}. These control how Gnus is to 12498 @code{gnus-summary-mode-line-format}. These control how Gnus is to
12504 output lines in the various buffers. There's quite a lot of them. 12499 output lines in the various buffers. There's quite a lot of them.
12505 Fortunately, they all use the same syntax, so there's not that much to 12500 Fortunately, they all use the same syntax, so there's not that much to
12506 be annoyed by. 12501 be annoyed by.
12507 12502
12646 highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer 12641 highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer
12647 over it. 12642 over it.
12648 12643
12649 Text inside the @samp{%[} and @samp{%]} specifiers will have their 12644 Text inside the @samp{%[} and @samp{%]} specifiers will have their
12650 normal faces set using @code{gnus-face-0}, which is @code{bold} by 12645 normal faces set using @code{gnus-face-0}, which is @code{bold} by
12651 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1} 12646 default. If you say @samp{%1[}, you'll get @code{gnus-face-1} instead,
12652 instead, and so on. Create as many faces as you wish. The same goes 12647 and so on. Create as many faces as you wish. The same goes for the
12653 for the @code{mouse-face} specs---you can say @samp{%3(hello%)} to have 12648 @code{mouse-face} specs---you can say @samp{%3(hello%)} to have
12654 @samp{hello} mouse-highlighted with @code{gnus-mouse-face-3}. 12649 @samp{hello} mouse-highlighted with @code{gnus-mouse-face-3}.
12655 12650
12656 Here's an alternative recipe for the group buffer: 12651 Here's an alternative recipe for the group buffer:
12657 12652
12658 @lisp 12653 @lisp
12965 (if column-number-mode 4 0) 12960 (if column-number-mode 4 0)
12966 (length display-time-string))))) 12961 (length display-time-string)))))
12967 @end lisp 12962 @end lisp
12968 12963
12969 If this variable is @code{nil} (which is the default), the mode line 12964 If this variable is @code{nil} (which is the default), the mode line
12970 strings won't be chopped off, and they won't be padded either. 12965 strings won't be chopped off, and they won't be padded either. Note
12971 Note that the default is unlikely to be desirable, as even the 12966 that the default is unlikely to be desirable, as even the percentage
12972 percentage complete in the buffer may be crowded off the mode line; 12967 complete in the buffer may be crowded off the mode line; the user should
12973 the user should configure this variable appropriately for their 12968 configure this variable appropriately for her configuration.
12974 configuration.
12975 12969
12976 12970
12977 @node Highlighting and Menus 12971 @node Highlighting and Menus
12978 @section Highlighting and Menus 12972 @section Highlighting and Menus
12979 @cindex visual 12973 @cindex visual
12980 @cindex highlighting 12974 @cindex highlighting
12981 @cindex menus 12975 @cindex menus
12982 12976
12983 @vindex gnus-visual 12977 @vindex gnus-visual
12984 The @code{gnus-visual} variable controls most of the prettifying Gnus 12978 The @code{gnus-visual} variable controls most of the Gnus-prettifying
12985 aspects. If @code{nil}, Gnus won't attempt to create menus or use fancy 12979 aspects. If @code{nil}, Gnus won't attempt to create menus or use fancy
12986 colors or fonts. This will also inhibit loading the @file{gnus-vis.el} 12980 colors or fonts. This will also inhibit loading the @file{gnus-vis.el}
12987 file. 12981 file.
12988 12982
12989 This variable can be a list of visual properties that are enabled. The 12983 This variable can be a list of visual properties that are enabled. The
13019 13013
13020 @lisp 13014 @lisp
13021 (setq gnus-visual '(article-highlight menu)) 13015 (setq gnus-visual '(article-highlight menu))
13022 @end lisp 13016 @end lisp
13023 13017
13024 If you want only highlighting and no menus whatsoever, you'd say: 13018 If you want highlighting only and no menus whatsoever, you'd say:
13025 13019
13026 @lisp 13020 @lisp
13027 (setq gnus-visual '(highlight)) 13021 (setq gnus-visual '(highlight))
13028 @end lisp 13022 @end lisp
13029 13023
13121 @vindex gnus-carpal-browse-buffer-buttons 13115 @vindex gnus-carpal-browse-buffer-buttons
13122 Buttons in the browse buffer. 13116 Buttons in the browse buffer.
13123 @end table 13117 @end table
13124 13118
13125 All the @code{buttons} variables are lists. The elements in these list 13119 All the @code{buttons} variables are lists. The elements in these list
13126 is either a cons cell where the car contains a text to be displayed and 13120 are either cons cells where the @code{car} contains a text to be displayed and
13127 the cdr contains a function symbol, or a simple string. 13121 the @code{cdr} contains a function symbol, or a simple string.
13128 13122
13129 13123
13130 @node Daemons 13124 @node Daemons
13131 @section Daemons 13125 @section Daemons
13132 @cindex demons 13126 @cindex demons
13197 @findex gnus-demon-add-nocem 13191 @findex gnus-demon-add-nocem
13198 @findex gnus-demon-add-scanmail 13192 @findex gnus-demon-add-scanmail
13199 @findex gnus-demon-add-rescan 13193 @findex gnus-demon-add-rescan
13200 @findex gnus-demon-add-scan-timestamps 13194 @findex gnus-demon-add-scan-timestamps
13201 @findex gnus-demon-add-disconnection 13195 @findex gnus-demon-add-disconnection
13202 Some ready-made functions to do this has been created: 13196 Some ready-made functions to do this have been created:
13203 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, 13197 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
13204 @code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, and 13198 @code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, and
13205 @code{gnus-demon-add-scanmail}. Just put those functions in your 13199 @code{gnus-demon-add-scanmail}. Just put those functions in your
13206 @file{.gnus} if you want those abilities. 13200 @file{.gnus} if you want those abilities.
13207 13201
13388 13382
13389 13383
13390 @node Picon Requirements 13384 @node Picon Requirements
13391 @subsection Picon Requirements 13385 @subsection Picon Requirements
13392 13386
13393 To use have Gnus display Picons for you, you must be running XEmacs 13387 To have Gnus display Picons for you, you must be running XEmacs
13394 19.13 or greater since all other versions of Emacs aren't yet able to 13388 19.13 or greater since all other versions of Emacs aren't yet able to
13395 display images. 13389 display images.
13396 13390
13397 Additionally, you must have @code{xpm} support compiled into XEmacs. 13391 Additionally, you must have @code{xpm} support compiled into XEmacs.
13398 13392
13462 @vindex gnus-article-display-hook 13456 @vindex gnus-article-display-hook
13463 @vindex gnus-picons-display-where 13457 @vindex gnus-picons-display-where
13464 @table @code 13458 @table @code
13465 @item gnus-article-display-picons 13459 @item gnus-article-display-picons
13466 @findex gnus-article-display-picons 13460 @findex gnus-article-display-picons
13467 Looks up and display the picons for the author and the author's domain 13461 Looks up and displays the picons for the author and the author's domain
13468 in the @code{gnus-picons-display-where} buffer. Should be added to 13462 in the @code{gnus-picons-display-where} buffer. Should be added to the
13469 the @code{gnus-article-display-hook}. 13463 @code{gnus-article-display-hook}.
13470 13464
13471 @item gnus-group-display-picons 13465 @item gnus-group-display-picons
13472 @findex gnus-article-display-picons 13466 @findex gnus-article-display-picons
13473 Displays picons representing the current group. This function should 13467 Displays picons representing the current group. This function should
13474 be added to the @code{gnus-summary-prepare-hook} or to the 13468 be added to the @code{gnus-summary-prepare-hook} or to the
13481 should be added to @code{gnus-article-display-hook}. 13475 should be added to @code{gnus-article-display-hook}.
13482 13476
13483 @end table 13477 @end table
13484 13478
13485 Note: You must append them to the hook, so make sure to specify 't' 13479 Note: You must append them to the hook, so make sure to specify 't'
13486 to the append flag of @code{add-hook}: 13480 for the append flag of @code{add-hook}:
13487 13481
13488 @lisp 13482 @lisp
13489 (add-hook 'gnus-article-display-hook 'gnus-article-display-picons t) 13483 (add-hook 'gnus-article-display-hook 'gnus-article-display-picons t)
13490 @end lisp 13484 @end lisp
13491 13485
13510 newsgroups. 13504 newsgroups.
13511 13505
13512 @item gnus-picons-user-directories 13506 @item gnus-picons-user-directories
13513 @vindex gnus-picons-user-directories 13507 @vindex gnus-picons-user-directories
13514 List of subdirectories to search in @code{gnus-picons-database} for user 13508 List of subdirectories to search in @code{gnus-picons-database} for user
13515 faces. @code{("local" "users" "usenix" "misc/MISC")} is the default. 13509 faces. @code{("local" "users" "usenix" "misc")} is the default.
13516 13510
13517 @item gnus-picons-domain-directories 13511 @item gnus-picons-domain-directories
13518 @vindex gnus-picons-domain-directories 13512 @vindex gnus-picons-domain-directories
13519 List of subdirectories to search in @code{gnus-picons-database} for 13513 List of subdirectories to search in @code{gnus-picons-database} for
13520 domain name faces. Defaults to @code{("domains")}. Some people may 13514 domain name faces. Defaults to @code{("domains")}. Some people may
13547 It is very useful to be able to undo actions one has done. In normal 13541 It is very useful to be able to undo actions one has done. In normal
13548 Emacs buffers, it's easy enough---you just push the @code{undo} button. 13542 Emacs buffers, it's easy enough---you just push the @code{undo} button.
13549 In Gnus buffers, however, it isn't that simple. 13543 In Gnus buffers, however, it isn't that simple.
13550 13544
13551 The things Gnus displays in its buffer is of no value whatsoever to 13545 The things Gnus displays in its buffer is of no value whatsoever to
13552 Gnus---it's all just data that is designed to look nice to the user. 13546 Gnus---it's all just data designed to look nice to the user.
13553 Killing a group in the group buffer with @kbd{C-k} makes the line 13547 Killing a group in the group buffer with @kbd{C-k} makes the line
13554 disappear, but that's just a side-effect of the real action---the 13548 disappear, but that's just a side-effect of the real action---the
13555 removal of the group in question from the internal Gnus structures. 13549 removal of the group in question from the internal Gnus structures.
13556 Undoing something like that can't be done by the normal Emacs 13550 Undoing something like that can't be done by the normal Emacs
13557 @code{undo} function. 13551 @code{undo} function.
13593 (add-hook 'gnus-summary-mode-hook 'gnus-moderate) 13587 (add-hook 'gnus-summary-mode-hook 'gnus-moderate)
13594 @end lisp 13588 @end lisp
13595 13589
13596 in your @file{.gnus.el} file. 13590 in your @file{.gnus.el} file.
13597 13591
13598 If you are the moderation of @samp{rec.zoofle}, this is how it's 13592 If you are the moderator of @samp{rec.zoofle}, this is how it's
13599 supposed to work: 13593 supposed to work:
13600 13594
13601 @enumerate 13595 @enumerate
13602 @item 13596 @item
13603 You split your incoming mail by matching on 13597 You split your incoming mail by matching on
13709 perhaps be a bigger menace than the unsolicited commercial email itself 13703 perhaps be a bigger menace than the unsolicited commercial email itself
13710 in the end. 13704 in the end.
13711 13705
13712 The biggest problem I have with email spam is that it comes in under 13706 The biggest problem I have with email spam is that it comes in under
13713 false pretenses. I press @kbd{g} and Gnus merrily informs me that I 13707 false pretenses. I press @kbd{g} and Gnus merrily informs me that I
13714 have 10 new emails. I say ``Golly gee! Happy is me!'' and selects the 13708 have 10 new emails. I say ``Golly gee! Happy is me!'' and select the
13715 mail group, only to find two pyramid schemes, seven advertisements 13709 mail group, only to find two pyramid schemes, seven advertisements
13716 (``New! Miracle tonic for growing full, lustrouos hair on your toes!'') 13710 (``New! Miracle tonic for growing full, lustrouos hair on your toes!'')
13717 and one mail asking me to repent and find some god. 13711 and one mail asking me to repent and find some god.
13718 13712
13719 This is annoying. 13713 This is annoying.
13830 the absolute max length the backends will try to read before giving up 13824 the absolute max length the backends will try to read before giving up
13831 on finding a separator line between the head and the body. If this 13825 on finding a separator line between the head and the body. If this
13832 variable is @code{nil}, there is no upper read bound. If it is 13826 variable is @code{nil}, there is no upper read bound. If it is
13833 @code{t}, the backends won't try to read the articles piece by piece, 13827 @code{t}, the backends won't try to read the articles piece by piece,
13834 but read the entire articles. This makes sense with some versions of 13828 but read the entire articles. This makes sense with some versions of
13835 @code{ange-ftp}. 13829 @code{ange-ftp} or @code{efs}.
13836 13830
13837 @item nnheader-head-chop-length 13831 @item nnheader-head-chop-length
13838 @vindex nnheader-head-chop-length 13832 @vindex nnheader-head-chop-length
13839 This variable says how big a piece of each article to read when doing 13833 This variable (default 2048) says how big a piece of each article to
13840 the operation described above. 13834 read when doing the operation described above.
13841 13835
13842 @item nnheader-file-name-translation-alist 13836 @item nnheader-file-name-translation-alist
13843 @vindex nnheader-file-name-translation-alist 13837 @vindex nnheader-file-name-translation-alist
13844 @cindex file names 13838 @cindex file names
13845 @cindex illegal characters in file names 13839 @cindex illegal characters in file names
13868 gather statistics on the headers fetched, or perhaps you'd like to prune 13862 gather statistics on the headers fetched, or perhaps you'd like to prune
13869 some headers. I don't see why you'd want that, though. 13863 some headers. I don't see why you'd want that, though.
13870 13864
13871 @item gnus-shell-command-separator 13865 @item gnus-shell-command-separator
13872 @vindex gnus-shell-command-separator 13866 @vindex gnus-shell-command-separator
13873 String used to separate to shell commands. The default is @samp{;}. 13867 String used to separate two shell commands. The default is @samp{;}.
13874 13868
13875 13869
13876 @end table 13870 @end table
13877 13871
13878 13872
13953 releases)) was released under the name ``Gnus 5.2'' (40 releases). 13947 releases)) was released under the name ``Gnus 5.2'' (40 releases).
13954 13948
13955 On July 28th 1996 work on Red Gnus was begun, and it was released on 13949 On July 28th 1996 work on Red Gnus was begun, and it was released on
13956 January 25th 1997 (after 84 releases) as ``Gnus 5.4''. 13950 January 25th 1997 (after 84 releases) as ``Gnus 5.4''.
13957 13951
13958 If you happen upon a version of Gnus that has a name that is prefixed -- 13952 If you happen upon a version of Gnus that has a prefixed name --
13959 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' -- 13953 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
13960 don't panic. Don't let it know that you're frightened. Back away. 13954 don't panic. Don't let it know that you're frightened. Back away.
13961 Slowly. Whatever you do, don't run. Walk away, calmly, until you're 13955 Slowly. Whatever you do, don't run. Walk away, calmly, until you're
13962 out of its reach. Find a proper released version of Gnus and snuggle up 13956 out of its reach. Find a proper released version of Gnus and snuggle up
13963 to that instead. 13957 to that instead.
13992 like to see Gnus being used as a testing ground for new methods of 13986 like to see Gnus being used as a testing ground for new methods of
13993 reading and fetching news. Expanding on @sc{Umeda}-san's wise decision 13987 reading and fetching news. Expanding on @sc{Umeda}-san's wise decision
13994 to separate the newsreader from the backends, Gnus now offers a simple 13988 to separate the newsreader from the backends, Gnus now offers a simple
13995 interface for anybody who wants to write new backends for fetching mail 13989 interface for anybody who wants to write new backends for fetching mail
13996 and news from different sources. I have added hooks for customizations 13990 and news from different sources. I have added hooks for customizations
13997 everywhere I could imagine useful. By doing so, I'm inviting every one 13991 everywhere I could imagine it being useful. By doing so, I'm inviting
13998 of you to explore and invent. 13992 every one of you to explore and invent.
13999 13993
14000 May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}. 13994 May Gnus never be complete. @kbd{C-u 100 M-x all-hail-emacs} and
13995 @kbd{C-u 100 M-x all-hail-xemacs}.
14001 13996
14002 13997
14003 @node Compatibility 13998 @node Compatibility
14004 @subsection Compatibility 13999 @subsection Compatibility
14005 14000
14016 @end quotation 14011 @end quotation
14017 14012
14018 All commands have kept their names. Some internal functions have changed 14013 All commands have kept their names. Some internal functions have changed
14019 their names. 14014 their names.
14020 14015
14021 The @code{gnus-uu} package has changed drastically. @pxref{Decoding 14016 The @code{gnus-uu} package has changed drastically. @xref{Decoding
14022 Articles}. 14017 Articles}.
14023 14018
14024 One major compatibility question is the presence of several summary 14019 One major compatibility question is the presence of several summary
14025 buffers. All variables that are relevant while reading a group are 14020 buffers. All variables relevant while reading a group are
14026 buffer-local to the summary buffer they belong in. Although many 14021 buffer-local to the summary buffer they belong in. Although many
14027 important variables have their values copied into their global 14022 important variables have their values copied into their global
14028 counterparts whenever a command is executed in the summary buffer, this 14023 counterparts whenever a command is executed in the summary buffer, this
14029 change might lead to incorrect values being used unless you are careful. 14024 change might lead to incorrect values being used unless you are careful.
14030 14025
14106 for the @code{X-Newsreader} header. 14101 for the @code{X-Newsreader} header.
14107 @end table 14102 @end table
14108 14103
14109 @end table 14104 @end table
14110 14105
14111 If you ever notice Gnus acting non-compliantly with regards to the texts 14106 If you ever notice Gnus acting non-compliant with regards to the texts
14112 mentioned above, don't hesitate to drop a note to Gnus Towers and let us 14107 mentioned above, don't hesitate to drop a note to Gnus Towers and let us
14113 know. 14108 know.
14114 14109
14115 14110
14116 @node Emacsen 14111 @node Emacsen
14222 14217
14223 @item 14218 @item
14224 David Moore---rewrite of @file{nnvirtual.el} and many other things. 14219 David Moore---rewrite of @file{nnvirtual.el} and many other things.
14225 14220
14226 @item 14221 @item
14227 Ricardo Nassif, Mark Borges, and Jost Krieger---proof-reading.
14228
14229 @item
14230 Kevin Davidson---came up with the name @dfn{ding}, so blame him. 14222 Kevin Davidson---came up with the name @dfn{ding}, so blame him.
14231 14223
14232 @item 14224 @item
14233 François Pinard---many, many interesting and thorough bug reports. 14225 François Pinard---many, many interesting and thorough bug reports.
14234 14226
14235 @end itemize 14227 @end itemize
14228
14229 This manual was proof-read by Adrian Aichner, with Ricardo Nassif, Mark
14230 Borges, and Jost Krieger proof-reading parts of the manual.
14236 14231
14237 The following people have contributed many patches and suggestions: 14232 The following people have contributed many patches and suggestions:
14238 14233
14239 Christopher Davis, 14234 Christopher Davis,
14240 Andrew Eskilsson, 14235 Andrew Eskilsson,
14454 @item 14449 @item
14455 You can browse foreign servers and subscribe to groups from those 14450 You can browse foreign servers and subscribe to groups from those
14456 servers (@pxref{Browse Foreign Server}). 14451 servers (@pxref{Browse Foreign Server}).
14457 14452
14458 @item 14453 @item
14459 Gnus can fetch articles asynchronously on a second connection to the 14454 Gnus can fetch articles, asynchronously, on a second connection to the
14460 server (@pxref{Asynchronous Fetching}). 14455 server (@pxref{Asynchronous Fetching}).
14461 14456
14462 @item 14457 @item
14463 You can cache articles locally (@pxref{Article Caching}). 14458 You can cache articles locally (@pxref{Article Caching}).
14464 14459
14534 14529
14535 @item 14530 @item
14536 Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). 14531 Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}).
14537 14532
14538 @item 14533 @item
14539 A @code{trn}-line tree buffer can be displayed (@pxref{Tree Display}). 14534 A @code{trn}-like tree buffer can be displayed (@pxref{Tree Display}).
14540 14535
14541 @lisp 14536 @lisp
14542 (setq gnus-use-trees t) 14537 (setq gnus-use-trees t)
14543 @end lisp 14538 @end lisp
14544 14539
14595 @item 14590 @item
14596 Groups can be sorted according to many criteria (@pxref{Sorting 14591 Groups can be sorted according to many criteria (@pxref{Sorting
14597 Groups}). 14592 Groups}).
14598 14593
14599 @item 14594 @item
14600 New group parameters have been introduced to set list-address and 14595 New group parameters have been introduced to set list-addresses and
14601 expiry times (@pxref{Group Parameters}). 14596 expiry times (@pxref{Group Parameters}).
14602 14597
14603 @item 14598 @item
14604 All formatting specs allow specifying faces to be used 14599 All formatting specs allow specifying faces to be used
14605 (@pxref{Formatting Fonts}). 14600 (@pxref{Formatting Fonts}).
14768 (setq gnus-suppress-duplicates t) 14763 (setq gnus-suppress-duplicates t)
14769 @end lisp 14764 @end lisp
14770 14765
14771 @item 14766 @item
14772 New variables for specifying what score and adapt files are to be 14767 New variables for specifying what score and adapt files are to be
14773 considered home score and adapt files (@pxref{Home Score File}). 14768 considered home score and adapt files (@pxref{Home Score File}) have
14769 been added.
14774 14770
14775 @item 14771 @item
14776 @code{nndoc} was rewritten to be easily extendable (@pxref{Document 14772 @code{nndoc} was rewritten to be easily extendable (@pxref{Document
14777 Server Internals}). 14773 Server Internals}).
14778 14774
14795 @item 14791 @item
14796 Commands for moving the @file{.newsrc.eld} from one server to 14792 Commands for moving the @file{.newsrc.eld} from one server to
14797 another have been added (@pxref{Changing Servers}). 14793 another have been added (@pxref{Changing Servers}).
14798 14794
14799 @item 14795 @item
14800 A way to specify that ``uninteresting'' fields be suppressed when 14796 There's a way now to specify that ``uninteresting'' fields be suppressed
14801 generating lines in buffers (@pxref{Advanced Formatting}). 14797 when generating lines in buffers (@pxref{Advanced Formatting}).
14802 14798
14803 @item 14799 @item
14804 Several commands in the group buffer can be undone with @kbd{M-C-_} 14800 Several commands in the group buffer can be undone with @kbd{M-C-_}
14805 (@pxref{Undo}). 14801 (@pxref{Undo}).
14806 14802
15039 The top part of a message, where administrative information (etc.) is 15035 The top part of a message, where administrative information (etc.) is
15040 put. 15036 put.
15041 15037
15042 @item body 15038 @item body
15043 @cindex body 15039 @cindex body
15044 The rest of an article. Everything that is not in the head is in the 15040 The rest of an article. Everything not in the head is in the
15045 body. 15041 body.
15046 15042
15047 @item header 15043 @item header
15048 @cindex header 15044 @cindex header
15049 A line from the head of an article. 15045 A line from the head of an article.
15090 server (i.e., it isn't in the active file), is a @emph{bogus group}. 15086 server (i.e., it isn't in the active file), is a @emph{bogus group}.
15091 This means that the group probably doesn't exist (any more). 15087 This means that the group probably doesn't exist (any more).
15092 15088
15093 @item server 15089 @item server
15094 @cindex server 15090 @cindex server
15095 A machine than one can connect to and get news (or mail) from. 15091 A machine one can connect to and get news (or mail) from.
15096 15092
15097 @item select method 15093 @item select method
15098 @cindex select method 15094 @cindex select method
15099 A structure that specifies the backend, the server and the virtual 15095 A structure that specifies the backend, the server and the virtual
15100 server parameters. 15096 server parameters.
15101 15097
15102 @item virtual server 15098 @item virtual server
15103 @cindex virtual server 15099 @cindex virtual server
15104 A named select method. Since a select methods defines all there is to 15100 A named select method. Since a select method defines all there is to
15105 know about connecting to a (physical) server, taking the things as a 15101 know about connecting to a (physical) server, taking the thing as a
15106 whole is a virtual server. 15102 whole is a virtual server.
15107 15103
15108 @item washing 15104 @item washing
15109 @cindex washing 15105 @cindex washing
15110 Taking a buffer and running it through a filter of some sort. The 15106 Taking a buffer and running it through a filter of some sort. The
15170 15166
15171 15167
15172 @node Slow Terminal Connection 15168 @node Slow Terminal Connection
15173 @subsection Slow Terminal Connection 15169 @subsection Slow Terminal Connection
15174 15170
15175 Let's say you use your home computer for dialing up the system that 15171 Let's say you use your home computer for dialing up the system that runs
15176 runs Emacs and Gnus. If your modem is slow, you want to reduce the 15172 Emacs and Gnus. If your modem is slow, you want to reduce (as much as
15177 amount of data that is sent over the wires as much as possible. 15173 possible) the amount of data sent over the wires.
15178 15174
15179 @table @code 15175 @table @code
15180 15176
15181 @item gnus-auto-center-summary 15177 @item gnus-auto-center-summary
15182 Set this to @code{nil} to inhibit Gnus from re-centering the summary 15178 Set this to @code{nil} to inhibit Gnus from re-centering the summary
15183 buffer all the time. If it is @code{vertical}, do only vertical 15179 buffer all the time. If it is @code{vertical}, do only vertical
15184 re-centering. If it is neither @code{nil} nor @code{vertical}, do both 15180 re-centering. If it is neither @code{nil} nor @code{vertical}, do both
15185 horizontal and vertical recentering. 15181 horizontal and vertical recentering.
15186 15182
15187 @item gnus-visible-headers 15183 @item gnus-visible-headers
15188 Cut down on the headers that are included in the articles to the 15184 Cut down on the headers included in the articles to the
15189 minimum. You can, in fact, make do without them altogether---most of the 15185 minimum. You can, in fact, make do without them altogether---most of the
15190 useful data is in the summary buffer, anyway. Set this variable to 15186 useful data is in the summary buffer, anyway. Set this variable to
15191 @samp{^NEVVVVER} or @samp{From:}, or whatever you feel you need. 15187 @samp{^NEVVVVER} or @samp{From:}, or whatever you feel you need.
15192 15188
15193 @item gnus-article-display-hook 15189 @item gnus-article-display-hook
15243 @cindex slow machine 15239 @cindex slow machine
15244 15240
15245 If you have a slow machine, or are just really impatient, there are a 15241 If you have a slow machine, or are just really impatient, there are a
15246 few things you can do to make Gnus run faster. 15242 few things you can do to make Gnus run faster.
15247 15243
15248 Set@code{gnus-check-new-newsgroups} and 15244 Set @code{gnus-check-new-newsgroups} and
15249 @code{gnus-check-bogus-newsgroups} to @code{nil} to make startup faster. 15245 @code{gnus-check-bogus-newsgroups} to @code{nil} to make startup faster.
15250 15246
15251 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and 15247 Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and
15252 @code{gnus-nov-is-evil} to @code{nil} to make entering and exiting the 15248 @code{gnus-nov-is-evil} to @code{nil} to make entering and exiting the
15253 summary buffer faster. 15249 summary buffer faster.
15310 a 10Kb mail each time you use it, and even if you have sent me your 15306 a 10Kb mail each time you use it, and even if you have sent me your
15311 environment 500 times before. I don't care. I want the full info each 15307 environment 500 times before. I don't care. I want the full info each
15312 time. 15308 time.
15313 15309
15314 It is also important to remember that I have no memory whatsoever. If 15310 It is also important to remember that I have no memory whatsoever. If
15315 you send a bug report, and I send you a reply, and then you send back 15311 you send a bug report, and I send you a reply, and then you just send
15316 just ``No, it's not! Moron!'', I will have no idea what you are 15312 back ``No, it's not! Moron!'', I will have no idea what you are
15317 insulting me about. Always over-explain everything. It's much easier 15313 insulting me about. Always over-explain everything. It's much easier
15318 for all of us---if I don't have all the information I need, I will just 15314 for all of us---if I don't have all the information I need, I will just
15319 mail you and ask for more info, and everything takes more time. 15315 mail you and ask for more info, and everything takes more time.
15320 15316
15321 If the problem you're seeing is very visual, and you can't quite explain 15317 If the problem you're seeing is very visual, and you can't quite explain
15343 15339
15344 You can never expect the internals of a program not to change, but I 15340 You can never expect the internals of a program not to change, but I
15345 will be defining (in some details) the interface between Gnus and its 15341 will be defining (in some details) the interface between Gnus and its
15346 backends (this is written in stone), the format of the score files 15342 backends (this is written in stone), the format of the score files
15347 (ditto), data structures (some are less likely to change than others) 15343 (ditto), data structures (some are less likely to change than others)
15348 and general method of operations. 15344 and general methods of operation.
15349 15345
15350 @menu 15346 @menu
15351 * Gnus Utility Functions:: Common functions and variable to use. 15347 * Gnus Utility Functions:: Common functions and variable to use.
15352 * Backend Interface:: How Gnus communicates with the servers. 15348 * Backend Interface:: How Gnus communicates with the servers.
15353 * Score File Syntax:: A BNF definition of the score file standard. 15349 * Score File Syntax:: A BNF definition of the score file standard.
15390 Takes an unprefixed group name and a select method, and returns the full 15386 Takes an unprefixed group name and a select method, and returns the full
15391 (prefixed) Gnus group name. 15387 (prefixed) Gnus group name.
15392 15388
15393 @item gnus-get-info 15389 @item gnus-get-info
15394 @findex gnus-get-info 15390 @findex gnus-get-info
15395 Return the group info list for @var{group}. 15391 Returns the group info list for @var{group}.
15396 15392
15397 @item gnus-add-current-to-buffer-list 15393 @item gnus-add-current-to-buffer-list
15398 @findex gnus-add-current-to-buffer-list 15394 @findex gnus-add-current-to-buffer-list
15399 Add the current buffer to the list of buffers to be killed on Gnus 15395 Adds the current buffer to the list of buffers to be killed on Gnus
15400 exit. 15396 exit.
15401 15397
15402 @item gnus-continuum-version 15398 @item gnus-continuum-version
15403 @findex gnus-continuum-version 15399 @findex gnus-continuum-version
15404 Take a Gnus version string as a parameter and returns a floating point 15400 Takes a Gnus version string as a parameter and returns a floating point
15405 number. Earlier versions will always get a lower number than later 15401 number. Earlier versions will always get a lower number than later
15406 versions. 15402 versions.
15407 15403
15408 @item gnus-group-read-only-p 15404 @item gnus-group-read-only-p
15409 @findex gnus-group-read-only-p 15405 @findex gnus-group-read-only-p
15410 Say whether @var{group} is read-only or not. 15406 Says whether @var{group} is read-only or not.
15411 15407
15412 @item gnus-news-group-p 15408 @item gnus-news-group-p
15413 @findex gnus-news-group-p 15409 @findex gnus-news-group-p
15414 Say whether @var{group} came from a news backend. 15410 Says whether @var{group} came from a news backend.
15415 15411
15416 @item gnus-ephemeral-group-p 15412 @item gnus-ephemeral-group-p
15417 @findex gnus-ephemeral-group-p 15413 @findex gnus-ephemeral-group-p
15418 Say whether @var{group} is ephemeral or not. 15414 Says whether @var{group} is ephemeral or not.
15419 15415
15420 @item gnus-server-to-method 15416 @item gnus-server-to-method
15421 @findex gnus-server-to-method 15417 @findex gnus-server-to-method
15422 Return the select method corresponding to @var{server}. 15418 Returns the select method corresponding to @var{server}.
15423 15419
15424 @item gnus-server-equal 15420 @item gnus-server-equal
15425 @findex gnus-server-equal 15421 @findex gnus-server-equal
15426 Say whether two virtual servers are equal. 15422 Says whether two virtual servers are equal.
15427 15423
15428 @item gnus-group-native-p 15424 @item gnus-group-native-p
15429 @findex gnus-group-native-p 15425 @findex gnus-group-native-p
15430 Say whether @var{group} is native or not. 15426 Says whether @var{group} is native or not.
15431 15427
15432 @item gnus-group-secondary-p 15428 @item gnus-group-secondary-p
15433 @findex gnus-group-secondary-p 15429 @findex gnus-group-secondary-p
15434 Say whether @var{group} is secondary or not. 15430 Says whether @var{group} is secondary or not.
15435 15431
15436 @item gnus-group-foreign-p 15432 @item gnus-group-foreign-p
15437 @findex gnus-group-foreign-p 15433 @findex gnus-group-foreign-p
15438 Say whether @var{group} is foreign or not. 15434 Says whether @var{group} is foreign or not.
15439 15435
15440 @item group-group-find-parameter 15436 @item group-group-find-parameter
15441 @findex group-group-find-parameter 15437 @findex group-group-find-parameter
15442 Return the parameter list of @var{group}. If given a second parameter, 15438 Returns the parameter list of @var{group}. If given a second parameter,
15443 return the value of that parameter for @var{group}. 15439 returns the value of that parameter for @var{group}.
15444 15440
15445 @item gnus-group-set-parameter 15441 @item gnus-group-set-parameter
15446 @findex gnus-group-set-parameter 15442 @findex gnus-group-set-parameter
15447 Takes three parameters; @var{group}, @var{parameter} and @var{value}. 15443 Takes three parameters; @var{group}, @var{parameter} and @var{value}.
15448 15444
15449 @item gnus-narrow-to-body 15445 @item gnus-narrow-to-body
15450 @findex gnus-narrow-to-body 15446 @findex gnus-narrow-to-body
15451 Narrow the current buffer to the body of the article. 15447 Narrows the current buffer to the body of the article.
15452 15448
15453 @item gnus-check-backend-function 15449 @item gnus-check-backend-function
15454 @findex gnus-check-backend-function 15450 @findex gnus-check-backend-function
15455 Takes two parameters, @var{function} and @var{group}. If the backend 15451 Takes two parameters, @var{function} and @var{group}. If the backend
15456 @var{group} comes from supports @var{function}, return non-@code{nil}. 15452 @var{group} comes from supports @var{function}, return non-@code{nil}.
15460 => t 15456 => t
15461 @end lisp 15457 @end lisp
15462 15458
15463 @item gnus-read-method 15459 @item gnus-read-method
15464 @findex gnus-read-method 15460 @findex gnus-read-method
15465 Prompt the user for a select method. 15461 Prompts the user for a select method.
15466 15462
15467 @end table 15463 @end table
15468 15464
15469 15465
15470 @node Backend Interface 15466 @node Backend Interface
15496 Here the virtual server name is @samp{odd-one} while the name of 15492 Here the virtual server name is @samp{odd-one} while the name of
15497 the physical server is @samp{ifi.uio.no}. 15493 the physical server is @samp{ifi.uio.no}.
15498 15494
15499 The backends should be able to switch between several virtual servers. 15495 The backends should be able to switch between several virtual servers.
15500 The standard backends implement this by keeping an alist of virtual 15496 The standard backends implement this by keeping an alist of virtual
15501 server environments that it pulls down/pushes up when needed. 15497 server environments that they pull down/pushe up when needed.
15502 15498
15503 There are two groups of interface functions: @dfn{required functions}, 15499 There are two groups of interface functions: @dfn{required functions},
15504 which must be present, and @dfn{optional functions}, which Gnus will 15500 which must be present, and @dfn{optional functions}, which Gnus will
15505 always check whether are present before attempting to call. 15501 always check for presence before attempting to call 'em.
15506 15502
15507 All these functions are expected to return data in the buffer 15503 All these functions are expected to return data in the buffer
15508 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat 15504 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat
15509 unfortunately named, but we'll have to live with it. When I talk about 15505 unfortunately named, but we'll have to live with it. When I talk about
15510 @dfn{resulting data}, I always refer to the data in that buffer. When I 15506 @dfn{resulting data}, I always refer to the data in that buffer. When I
15511 talk about @dfn{return value}, I talk about the function value returned by 15507 talk about @dfn{return value}, I talk about the function value returned by
15512 the function call. Functions that fail should return @code{nil} as the 15508 the function call. Functions that fail should return @code{nil} as the
15513 return value. 15509 return value.
15514 15510
15515 Some backends could be said to be @dfn{server-forming} backends, and 15511 Some backends could be said to be @dfn{server-forming} backends, and
15516 some might be said to not be. The latter are backends that generally 15512 some might be said not to be. The latter are backends that generally
15517 only operate on one group at a time, and have no concept of ``server'' 15513 only operate on one group at a time, and have no concept of ``server''
15518 -- they have a group, and they deliver info on that group and nothing 15514 -- they have a group, and they deliver info on that group and nothing
15519 more. 15515 more.
15520 15516
15521 In the examples and definitions I will refer to the imaginary backend 15517 In the examples and definitions I will refer to the imaginary backend
15548 The result data should either be HEADs or NOV lines, and the result 15544 The result data should either be HEADs or NOV lines, and the result
15549 value should either be @code{headers} or @code{nov} to reflect this. 15545 value should either be @code{headers} or @code{nov} to reflect this.
15550 This might later be expanded to @code{various}, which will be a mixture 15546 This might later be expanded to @code{various}, which will be a mixture
15551 of HEADs and NOV lines, but this is currently not supported by Gnus. 15547 of HEADs and NOV lines, but this is currently not supported by Gnus.
15552 15548
15553 If @var{fetch-old} is non-@code{nil} it says to try to fetch "extra 15549 If @var{fetch-old} is non-@code{nil} it says to try fetching "extra
15554 headers, in some meaning of the word. This is generally done by 15550 headers", in some meaning of the word. This is generally done by
15555 fetching (at most) @var{fetch-old} extra headers less than the smallest 15551 fetching (at most) @var{fetch-old} extra headers less than the smallest
15556 article number in @code{articles}, and fill in the gaps as well. The 15552 article number in @code{articles}, and filling the gaps as well. The
15557 presence of this parameter can be ignored if the backend finds it 15553 presence of this parameter can be ignored if the backend finds it
15558 cumbersome to follow the request. If this is non-@code{nil} and not a 15554 cumbersome to follow the request. If this is non-@code{nil} and not a
15559 number, do maximum fetches. 15555 number, do maximum fetches.
15560 15556
15561 Here's an example HEAD: 15557 Here's an example HEAD:
15597 nov-buffer = *nov-line 15593 nov-buffer = *nov-line
15598 nov-line = 8*9 [ field <TAB> ] eol 15594 nov-line = 8*9 [ field <TAB> ] eol
15599 field = <text except TAB> 15595 field = <text except TAB>
15600 @end example 15596 @end example
15601 15597
15602 For a closer explanation what should be in those fields, 15598 For a closer look at what should be in those fields,
15603 @pxref{Headers}. 15599 @pxref{Headers}.
15604 15600
15605 15601
15606 @item (nnchoke-open-server SERVER &optional DEFINITIONS) 15602 @item (nnchoke-open-server SERVER &optional DEFINITIONS)
15607 15603
15608 @var{server} is here the virtual server name. @var{definitions} is a 15604 @var{server} is here the virtual server name. @var{definitions} is a
15609 list of @code{(VARIABLE VALUE)} pairs that defines this virtual server. 15605 list of @code{(VARIABLE VALUE)} pairs that define this virtual server.
15610 15606
15611 If the server can't be opened, no error should be signaled. The backend 15607 If the server can't be opened, no error should be signaled. The backend
15612 may then choose to refuse further attempts at connecting to this 15608 may then choose to refuse further attempts at connecting to this
15613 server. In fact, it should do so. 15609 server. In fact, it should do so.
15614 15610
15638 @item (nnchoke-server-opened &optional SERVER) 15634 @item (nnchoke-server-opened &optional SERVER)
15639 15635
15640 If @var{server} is the current virtual server, and the connection to the 15636 If @var{server} is the current virtual server, and the connection to the
15641 physical server is alive, then this function should return a 15637 physical server is alive, then this function should return a
15642 non-@code{nil} vlue. This function should under no circumstances 15638 non-@code{nil} vlue. This function should under no circumstances
15643 attempt to reconnect to a server that is has lost connection to. 15639 attempt to reconnect to a server we have lost connection to.
15644 15640
15645 There should be no data returned. 15641 There should be no data returned.
15646 15642
15647 15643
15648 @item (nnchoke-status-message &optional SERVER) 15644 @item (nnchoke-status-message &optional SERVER)
15660 it would be nice if that were possible. 15656 it would be nice if that were possible.
15661 15657
15662 If @var{to-buffer} is non-@code{nil}, the result data should be returned 15658 If @var{to-buffer} is non-@code{nil}, the result data should be returned
15663 in this buffer instead of the normal data buffer. This is to make it 15659 in this buffer instead of the normal data buffer. This is to make it
15664 possible to avoid copying large amounts of data from one buffer to 15660 possible to avoid copying large amounts of data from one buffer to
15665 another, and Gnus mainly request articles to be inserted directly into 15661 another, while Gnus mainly requests articles to be inserted directly
15666 its article buffer. 15662 into its article buffer.
15667 15663
15668 If it is at all possible, this function should return a cons cell where 15664 If it is at all possible, this function should return a cons cell where
15669 the car is the group name the article was fetched from, and the cdr is 15665 the @code{car} is the group name the article was fetched from, and the @code{cdr} is
15670 the article number. This will enable Gnus to find out what the real 15666 the article number. This will enable Gnus to find out what the real
15671 group and article numbers are when fetching articles by 15667 group and article numbers are when fetching articles by
15672 @code{Message-ID}. If this isn't possible, @code{t} should be returned 15668 @code{Message-ID}. If this isn't possible, @code{t} should be returned
15673 on successful article retrievement. 15669 on successful article retrieval.
15674 15670
15675 15671
15676 @item (nnchoke-request-group GROUP &optional SERVER FAST) 15672 @item (nnchoke-request-group GROUP &optional SERVER FAST)
15677 15673
15678 Get data on @var{group}. This function also has the side effect of 15674 Get data on @var{group}. This function also has the side effect of
15733 flags = "n" / "y" / "m" / "x" / "j" / "=" name 15729 flags = "n" / "y" / "m" / "x" / "j" / "=" name
15734 @end example 15730 @end example
15735 15731
15736 The flag says whether the group is read-only (@samp{n}), is moderated 15732 The flag says whether the group is read-only (@samp{n}), is moderated
15737 (@samp{m}), is dead (@samp{x}), is aliased to some other group 15733 (@samp{m}), is dead (@samp{x}), is aliased to some other group
15738 (@samp{=other-group} or none of the above (@samp{y}). 15734 (@samp{=other-group}) or none of the above (@samp{y}).
15739 15735
15740 15736
15741 @item (nnchoke-request-post &optional SERVER) 15737 @item (nnchoke-request-post &optional SERVER)
15742 15738
15743 This function should post the current buffer. It might return whether 15739 This function should post the current buffer. It might return whether
15787 15783
15788 @item (nnchoke-request-type GROUP &optional ARTICLE) 15784 @item (nnchoke-request-type GROUP &optional ARTICLE)
15789 15785
15790 When the user issues commands for ``sending news'' (@kbd{F} in the 15786 When the user issues commands for ``sending news'' (@kbd{F} in the
15791 summary buffer, for instance), Gnus has to know whether the article the 15787 summary buffer, for instance), Gnus has to know whether the article the
15792 user is following up is news or mail. This function should return 15788 user is following up on is news or mail. This function should return
15793 @code{news} if @var{article} in @var{group} is news, @code{mail} if it 15789 @code{news} if @var{article} in @var{group} is news, @code{mail} if it
15794 is mail and @code{unknown} if the type can't be decided. (The 15790 is mail and @code{unknown} if the type can't be decided. (The
15795 @var{article} parameter is necessary in @code{nnvirtual} groups which 15791 @var{article} parameter is necessary in @code{nnvirtual} groups which
15796 might very well combine mail groups and news groups.) Both @var{group} 15792 might very well combine mail groups and news groups.) Both @var{group}
15797 and @var{article} may be @code{nil}. 15793 and @var{article} may be @code{nil}.
15805 function may change the mark. Gnus will use whatever this function 15801 function may change the mark. Gnus will use whatever this function
15806 returns as the mark for @var{article} instead of the original 15802 returns as the mark for @var{article} instead of the original
15807 @var{mark}. If the backend doesn't care, it must return the original 15803 @var{mark}. If the backend doesn't care, it must return the original
15808 @var{mark}, and not @code{nil} or any other type of garbage. 15804 @var{mark}, and not @code{nil} or any other type of garbage.
15809 15805
15810 The only use for this that I can see is what @code{nnvirtual} does with 15806 The only use for this I can see is what @code{nnvirtual} does with
15811 it---if a component group is auto-expirable, marking an article as read 15807 it---if a component group is auto-expirable, marking an article as read
15812 in the virtual group should result in the article being marked as 15808 in the virtual group should result in the article being marked as
15813 expirable. 15809 expirable.
15814 15810
15815 There should be no result data from this function. 15811 There should be no result data from this function.
15893 15889
15894 If @var{last} is @code{nil}, that means that there is a high likelihood 15890 If @var{last} is @code{nil}, that means that there is a high likelihood
15895 that there will be more requests issued shortly, so that allows some 15891 that there will be more requests issued shortly, so that allows some
15896 optimizations. 15892 optimizations.
15897 15893
15898 The function should return a cons where the car is the group name and 15894 The function should return a cons where the @code{car} is the group name and
15899 the cdr is the article number that the article was entered as. 15895 the @code{cdr} is the article number that the article was entered as.
15900 15896
15901 There should be no data returned. 15897 There should be no data returned.
15902 15898
15903 15899
15904 @item (nnchoke-request-accept-article GROUP &optional SERVER LAST) 15900 @item (nnchoke-request-accept-article GROUP &optional SERVER LAST)
15905 15901
15906 This function takes the current buffer and inserts it into @var{group}. 15902 This function takes the current buffer and inserts it into @var{group}.
15907 If @var{last} in @code{nil}, that means that there will be more calls to 15903 If @var{last} in @code{nil}, that means that there will be more calls to
15908 this function in short order. 15904 this function in short order.
15909 15905
15910 The function should return a cons where the car is the group name and 15906 The function should return a cons where the @code{car} is the group name and
15911 the cdr is the article number that the article was entered as. 15907 the @code{cdr} is the article number that the article was entered as.
15912 15908
15913 There should be no data returned. 15909 There should be no data returned.
15914 15910
15915 15911
15916 @item (nnchoke-request-replace-article ARTICLE GROUP BUFFER) 15912 @item (nnchoke-request-replace-article ARTICLE GROUP BUFFER)
15931 15927
15932 15928
15933 @item (nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER) 15929 @item (nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER)
15934 15930
15935 This function should rename @var{group} into @var{new-name}. All 15931 This function should rename @var{group} into @var{new-name}. All
15936 articles that are in @var{group} should move to @var{new-name}. 15932 articles in @var{group} should move to @var{new-name}.
15937 15933
15938 There should be no data returned. 15934 There should be no data returned.
15939 15935
15940 @end table 15936 @end table
15941 15937
15947 @findex nnheader-get-report 15943 @findex nnheader-get-report
15948 The backends should use the function @code{nnheader-report} to report 15944 The backends should use the function @code{nnheader-report} to report
15949 error conditions---they should not raise errors when they aren't able to 15945 error conditions---they should not raise errors when they aren't able to
15950 perform a request. The first argument to this function is the backend 15946 perform a request. The first argument to this function is the backend
15951 symbol, and the rest are interpreted as arguments to @code{format} if 15947 symbol, and the rest are interpreted as arguments to @code{format} if
15952 there are many of them, or just a string if there is one of them. 15948 there are multiple of them, or just a string if there is one of them.
15953 This function always returns @code{nil}. 15949 This function must always returns @code{nil}.
15954 15950
15955 @lisp 15951 @lisp
15956 (nnheader-report 'nnchoke "You did something totally bogus") 15952 (nnheader-report 'nnchoke "You did something totally bogus")
15957 15953
15958 (nnheader-report 'nnchoke "Could not request group %s" group) 15954 (nnheader-report 'nnchoke "Could not request group %s" group)
15961 Gnus, in turn, will call @code{nnheader-get-report} when it gets a 15957 Gnus, in turn, will call @code{nnheader-get-report} when it gets a
15962 @code{nil} back from a server, and this function returns the most 15958 @code{nil} back from a server, and this function returns the most
15963 recently reported message for the backend in question. This function 15959 recently reported message for the backend in question. This function
15964 takes one argument---the server symbol. 15960 takes one argument---the server symbol.
15965 15961
15966 Internally, these function access @var{backend}@code{-status-string}, so 15962 Internally, these functions access @var{backend}@code{-status-string},
15967 the @code{nnchoke} backend will have its error message stored in 15963 so the @code{nnchoke} backend will have its error message stored in
15968 @code{nnchoke-status-string}. 15964 @code{nnchoke-status-string}.
15969 15965
15970 15966
15971 @node Writing New Backends 15967 @node Writing New Backends
15972 @subsubsection Writing New Backends 15968 @subsubsection Writing New Backends
15973 15969
15986 package called @code{nnoo}. 15982 package called @code{nnoo}.
15987 15983
15988 To inherit functions from other backends (and allow other backends to 15984 To inherit functions from other backends (and allow other backends to
15989 inherit functions from the current backend), you should use the 15985 inherit functions from the current backend), you should use the
15990 following macros: 15986 following macros:
15991 following.
15992 15987
15993 @table @code 15988 @table @code
15994 15989
15995 @item nnoo-declare 15990 @item nnoo-declare
15996 This macro declares the first parameter to be a child of the subsequent 15991 This macro declares the first parameter to be a child of the subsequent
15999 @lisp 15994 @lisp
16000 (nnoo-declare nndir 15995 (nnoo-declare nndir
16001 nnml nnmh) 15996 nnml nnmh)
16002 @end lisp 15997 @end lisp
16003 15998
16004 @code{nndir} has here declared that it intends to inherit functions from 15999 @code{nndir} has declared here that it intends to inherit functions from
16005 both @code{nnml} and @code{nnmh}. 16000 both @code{nnml} and @code{nnmh}.
16006 16001
16007 @item defvoo 16002 @item defvoo
16008 This macro is equivalent to @code{defvar}, but registers the variable as 16003 This macro is equivalent to @code{defvar}, but registers the variable as
16009 a public server variable. Most state-oriented variables should be 16004 a public server variable. Most state-oriented variables should be
16162 @item post 16157 @item post
16163 This is a newsish backend---followups should (probably) go via news. 16158 This is a newsish backend---followups should (probably) go via news.
16164 @item post-mail 16159 @item post-mail
16165 This backend supports both mail and news. 16160 This backend supports both mail and news.
16166 @item none 16161 @item none
16167 This is neither a post or mail backend---it's something completely 16162 This is neither a post nor mail backend---it's something completely
16168 different. 16163 different.
16169 @item respool 16164 @item respool
16170 It supports respooling---or rather, it is able to modify its source 16165 It supports respooling---or rather, it is able to modify its source
16171 articles and groups. 16166 articles and groups.
16172 @item address 16167 @item address
16191 (deffoo nnml-request-scan (&optional group server) 16186 (deffoo nnml-request-scan (&optional group server)
16192 (setq nnml-article-file-alist nil) 16187 (setq nnml-article-file-alist nil)
16193 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group)) 16188 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group))
16194 @end lisp 16189 @end lisp
16195 16190
16196 It simply just calls @code{nnmail-get-new-mail} will a few parameters, 16191 It simply calls @code{nnmail-get-new-mail} with a few parameters,
16197 and @code{nnmail} takes care of all the moving and splitting of the 16192 and @code{nnmail} takes care of all the moving and splitting of the
16198 mail. 16193 mail.
16199 16194
16200 This function takes four parameters. 16195 This function takes four parameters.
16201 16196
16303 space is irrelevant. This means that formatting of the score file is 16298 space is irrelevant. This means that formatting of the score file is
16304 left up to the programmer---if it's simpler to just spew it all out on 16299 left up to the programmer---if it's simpler to just spew it all out on
16305 one looong line, then that's ok. 16300 one looong line, then that's ok.
16306 16301
16307 The meaning of the various atoms are explained elsewhere in this 16302 The meaning of the various atoms are explained elsewhere in this
16308 manual. 16303 manual (@pxref{Score File Format}).
16309 16304
16310 16305
16311 @node Headers 16306 @node Headers
16312 @subsection Headers 16307 @subsection Headers
16313 16308
16314 Gnus uses internally a format for storing article headers that 16309 Internally Gnus uses a format for storing article headers that
16315 corresponds to the @sc{nov} format in a mysterious fashion. One could 16310 corresponds to the @sc{nov} format in a mysterious fashion. One could
16316 almost suspect that the author looked at the @sc{nov} specification and 16311 almost suspect that the author looked at the @sc{nov} specification and
16317 just shamelessly @emph{stole} the entire thing, and one would be right. 16312 just shamelessly @emph{stole} the entire thing, and one would be right.
16318 16313
16319 @dfn{Header} is a severely overloaded term. ``Header'' is used in 16314 @dfn{Header} is a severely overloaded term. ``Header'' is used in
16561 This sort of thing has been done for bunches of functions. Gnus does 16556 This sort of thing has been done for bunches of functions. Gnus does
16562 not redefine any native Emacs functions while running under XEmacs---it 16557 not redefine any native Emacs functions while running under XEmacs---it
16563 does this @code{defalias} thing with Gnus equivalents instead. Cleaner 16558 does this @code{defalias} thing with Gnus equivalents instead. Cleaner
16564 all over. 16559 all over.
16565 16560
16566 In the cases when the XEmacs function interface was obviously 16561 In the cases where the XEmacs function interface was obviously cleaner,
16567 cleaner, I used it instead. For example @code{gnus-region-active-p} 16562 I used it instead. For example @code{gnus-region-active-p} is an alias
16568 is an alias for @code{region-active-p} in XEmacs, whereas in Emacs 16563 for @code{region-active-p} in XEmacs, whereas in Emacs it is a function.
16569 it is a function.
16570 16564
16571 Of course, I could have chosen XEmacs as my native platform and done 16565 Of course, I could have chosen XEmacs as my native platform and done
16572 mapping functions the other way around. But I didn't. The performance 16566 mapping functions the other way around. But I didn't. The performance
16573 hit these indirections impose on Gnus under XEmacs should be slight. 16567 hit these indirections impose on Gnus under XEmacs should be slight.
16574 16568
16583 16577
16584 16578
16585 @node Active File Format 16579 @node Active File Format
16586 @subsubsection Active File Format 16580 @subsubsection Active File Format
16587 16581
16588 The active file lists all groups that are available on the server in 16582 The active file lists all groups available on the server in
16589 question. It also lists the highest and lowest current article numbers 16583 question. It also lists the highest and lowest current article numbers
16590 in each group. 16584 in each group.
16591 16585
16592 Here's an excerpt from a typical active file: 16586 Here's an excerpt from a typical active file:
16593 16587
16666 (notably @code{vi}le users), and the rest of us just love the hell out 16660 (notably @code{vi}le users), and the rest of us just love the hell out
16667 of it. Just give up and submit. Emacs really does stand for 16661 of it. Just give up and submit. Emacs really does stand for
16668 ``Escape-Meta-Alt-Control-Shift'', and not ``Editing Macros'', as you 16662 ``Escape-Meta-Alt-Control-Shift'', and not ``Editing Macros'', as you
16669 may have heard from other disreputable sources (like the Emacs author). 16663 may have heard from other disreputable sources (like the Emacs author).
16670 16664
16671 The shift key is normally located near your pinky fingers, and are 16665 The shift keys are normally located near your pinky fingers, and are
16672 normally used to get capital letters and stuff. You probably use it all 16666 normally used to get capital letters and stuff. You probably use it all
16673 the time. The control key is normally marked ``CTRL'' or something like 16667 the time. The control key is normally marked ``CTRL'' or something like
16674 that. The meta key is, funnily enough, never marked as such on any 16668 that. The meta key is, funnily enough, never marked as such on any
16675 keyboards. The one I'm currently at has a key that's marked ``Alt'', 16669 keyboard. The one I'm currently at has a key that's marked ``Alt'',
16676 which is the meta key on this keyboard. It's usually located somewhere 16670 which is the meta key on this keyboard. It's usually located somewhere
16677 to the left hand side of the keyboard, usually on the bottom row. 16671 to the left hand side of the keyboard, usually on the bottom row.
16678 16672
16679 Now, us Emacs people doesn't say ``press the meta-control-m key'', 16673 Now, us Emacs people don't say ``press the meta-control-m key'',
16680 because that's just too inconvenient. We say ``press the @kbd{M-C-m} 16674 because that's just too inconvenient. We say ``press the @kbd{M-C-m}
16681 key''. @kbd{M-} is the prefix that means ``meta'' and ``C-'' is the 16675 key''. @kbd{M-} is the prefix that means ``meta'' and ``C-'' is the
16682 prefix that means ``control''. So ``press @kbd{C-k}'' means ``press 16676 prefix that means ``control''. So ``press @kbd{C-k}'' means ``press
16683 down the control key, and hold it down while you press @kbd{k}''. 16677 down the control key, and hold it down while you press @kbd{k}''.
16684 ``Press @kbd{M-C-k}'' means ``press down and hold down the meta key and 16678 ``Press @kbd{M-C-k}'' means ``press down and hold down the meta key and
16724 16718
16725 If you have put that thing in your @code{.emacs} file, it will be read 16719 If you have put that thing in your @code{.emacs} file, it will be read
16726 and @code{eval}ed (which is lisp-ese for ``run'') the next time you 16720 and @code{eval}ed (which is lisp-ese for ``run'') the next time you
16727 start Emacs. If you want to change the variable right away, simply say 16721 start Emacs. If you want to change the variable right away, simply say
16728 @kbd{C-x C-e} after the closing parenthesis. That will @code{eval} the 16722 @kbd{C-x C-e} after the closing parenthesis. That will @code{eval} the
16729 previous ``form'', which here is a simple @code{setq} statement. 16723 previous ``form'', which is a simple @code{setq} statement here.
16730 16724
16731 Go ahead---just try it, if you're located at your Emacs. After you 16725 Go ahead---just try it, if you're located at your Emacs. After you
16732 @kbd{C-x C-e}, you will see @samp{4} appear in the echo area, which 16726 @kbd{C-x C-e}, you will see @samp{4} appear in the echo area, which
16733 is the return value of the form you @code{eval}ed. 16727 is the return value of the form you @code{eval}ed.
16734 16728