comparison man/gnus.texi @ 98:0d2f883870bc r20-1b1

Import from CVS: tag r20-1b1
author cvs
date Mon, 13 Aug 2007 09:13:56 +0200
parents 131b0175ea99
children 4be1180a9e89
comparison
equal deleted inserted replaced
97:498bf5da1c90 98:0d2f883870bc
1 \input texinfo @c -*-texinfo-*- 1 \input texinfo @c -*-texinfo-*-
2 2
3 @setfilename ../info/gnus.info 3 @setfilename gnus
4 @settitle Gnus 5.2 Manual 4 @settitle Gnus 5.4 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
12 12
13 @iftex 13 @iftex
14 @iflatex 14 @iflatex
15 \documentclass[twoside,a4paper,openright]{book} 15 \documentclass[twoside,a4paper,openright]{book}
16 \usepackage[latin1]{inputenc} 16 \usepackage[latin1]{inputenc}
17 % \usepackage{fontenc}
18 % \usepackage{babel}
19 \usepackage{pagestyle} 17 \usepackage{pagestyle}
20 \usepackage{epsfig} 18 \usepackage{epsfig}
21 % \usepackage{ifitricks}
22 \fontfamily{bembo}\selectfont 19 \fontfamily{bembo}\selectfont
23 20
24 \makeindex 21 \makeindex
25 \begin{document} 22 \begin{document}
26 23
55 \newcommand{\gnusampersand}{\&} 52 \newcommand{\gnusampersand}{\&}
56 \newcommand{\gnuspercent}{\%} 53 \newcommand{\gnuspercent}{\%}
57 \newcommand{\gnushash}{\#} 54 \newcommand{\gnushash}{\#}
58 \newcommand{\gnushat}{\symbol{"5E}} 55 \newcommand{\gnushat}{\symbol{"5E}}
59 \newcommand{\gnusunderline}{\symbol{"5F}} 56 \newcommand{\gnusunderline}{\symbol{"5F}}
57 \newcommand{\gnusnot}{$\neg$}
60 \newcommand{\gnustilde}{\symbol{"7E}} 58 \newcommand{\gnustilde}{\symbol{"7E}}
61 \newcommand{\gnusless}{{$<$}} 59 \newcommand{\gnusless}{{$<$}}
62 \newcommand{\gnusgreater}{{$>$}} 60 \newcommand{\gnusgreater}{{$>$}}
63 61
64 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} 62 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}}
65 \newcommand{\gnusinteresting}{ 63 \newcommand{\gnusinteresting}{
66 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} 64 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead}
67 } 65 }
68 66
69 \newcommand{\gnuschapter}[1]{ 67 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi}
68
69 \newcommand{\gnuspagechapter}[1]{
70 {\mbox{}}
71 }
72
73 \newdimen{\gnusdimen}
74 \gnusdimen 0pt
75
76 \newcommand{\gnuschapter}[2]{
77 \gnuscleardoublepage
78 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi
79 \chapter{#2}
70 \renewcommand{\gnussectionname}{} 80 \renewcommand{\gnussectionname}{}
71 \chapter{#1} 81 \renewcommand{\gnuschaptername}{#2}
72 \renewcommand{\gnuschaptername}{#1}
73 \thispagestyle{empty} 82 \thispagestyle{empty}
74 % \epsfig{figure=gnus-herd-\arabic{chapter}.eps,height=15cm} 83 \hspace*{-2cm}
84 \begin{picture}(500,500)(0,0)
85 \put(0,0){\makebox(480,350)[tr]{#1}}
86 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}}
87 \end{picture}
75 \clearpage 88 \clearpage
76 } 89 }
77 90
78 \newcommand{\gnusitemx}[1]{\vspace{-\itemsep}\item#1} 91 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
79 92
80 \newcommand{\gnussection}[1]{ 93 \newcommand{\gnussection}[1]{
81 \renewcommand{\gnussectionname}{#1} 94 \renewcommand{\gnussectionname}{#1}
82 \section{#1} 95 \section{#1}
83 } 96 }
116 \newenvironment{emphlist}% 129 \newenvironment{emphlist}%
117 {\begin{list}{}{ 130 {\begin{list}{}{
118 } 131 }
119 }{\end{list}} 132 }{\end{list}}
120 133
121 \newpagestyle{gnus}% 134 \newlength\gnusheadtextwidth
135 \setlength{\gnusheadtextwidth}{\headtextwidth}
136 \addtolength{\gnusheadtextwidth}{1cm}
137
138 \newpagestyle{gnuspreamble}%
122 { 139 {
123 { 140 {
124 \ifodd\count0 141 \ifodd\count0
125 { 142 {
126 \hspace*{-2ex} 143 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}}
127 \underline{
128 \makebox[\headtextwidth]{
129 \hspace*{-2.3ex}
130 \textbf{\arabic{chapter}.\arabic{section}}
131 \textbf{\gnussectionname\hfill\arabic{page}}
132 }}
133 } 144 }
134 \else 145 \else
135 { 146 {
136 \hspace*{-2.25cm} 147 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}}
137 \underline{ 148 }
138 \hspace*{-2.3ex}
139 \makebox[\headtextwidth]{
140 \textbf{\arabic{page}\hfill\gnuschaptername}
141 }}
142 } 149 }
143 \fi 150 \fi
144 } 151 }
145 } 152 }
146 { 153 {
150 \else 157 \else
151 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} 158 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
152 \hfill \mbox{} 159 \hfill \mbox{}
153 \fi 160 \fi
154 } 161 }
155 \pagestyle{gnus} 162
163 \newpagestyle{gnusindex}%
164 {
165 {
166 \ifodd\count0
167 {
168 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}}
169 }
170 \else
171 {
172 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
173 }
174 \fi
175 }
176 }
177 {
178 \ifodd\count0
179 \mbox{} \hfill
180 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
181 \else
182 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
183 \hfill \mbox{}
184 \fi
185 }
186
187 \newpagestyle{gnus}%
188 {
189 {
190 \ifodd\count0
191 {
192 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}
193 }
194 \else
195 {
196 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}
197 }
198 \fi
199 }
200 }
201 {
202 \ifodd\count0
203 \mbox{} \hfill
204 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
205 \else
206 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
207 \hfill \mbox{}
208 \fi
209 }
210
211 \pagenumbering{roman}
212 \pagestyle{gnuspreamble}
156 213
157 @end iflatex 214 @end iflatex
158 @end iftex 215 @end iftex
159 216
160 @iftex 217 @iftex
228 @end ifinfo 285 @end ifinfo
229 286
230 @tex 287 @tex
231 288
232 @titlepage 289 @titlepage
233 @title Gnus Manual 290 @title Gnus 5.4 Manual
234 291
235 @author by Lars Magne Ingebrigtsen 292 @author by Lars Magne Ingebrigtsen
236 @page 293 @page
237 294
238 @vskip 0pt plus 1filll 295 @vskip 0pt plus 1filll
264 You can read news (and mail) from within Emacs by using Gnus. The news 321 You can read news (and mail) from within Emacs by using Gnus. The news
265 can be gotten by any nefarious means you can think of---@sc{nntp}, local 322 can be gotten by any nefarious means you can think of---@sc{nntp}, local
266 spool or your mbox file. All at the same time, if you want to push your 323 spool or your mbox file. All at the same time, if you want to push your
267 luck. 324 luck.
268 325
326 This manual corresponds to Gnus 5.4.
327
269 @end ifinfo 328 @end ifinfo
270 329
271 @iftex 330 @iftex
272 331
273 @iflatex 332 @iflatex
274 \thispagestyle{empty} 333 \tableofcontents
334 \gnuscleardoublepage
275 @end iflatex 335 @end iflatex
276 336
277 Gnus is the advanced, self-documenting, customizable, extensible 337 Gnus is the advanced, self-documenting, customizable, extensible
278 unreal-time newsreader for GNU Emacs. 338 unreal-time newsreader for GNU Emacs.
279 339
308 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals. 368 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals.
309 * Index:: Variable, function and concept index. 369 * Index:: Variable, function and concept index.
310 * Key Index:: Key Index. 370 * Key Index:: Key Index.
311 @end menu 371 @end menu
312 372
313
314 @node Starting Up 373 @node Starting Up
315 @chapter Starting Gnus 374 @chapter Starting Gnus
316 @cindex starting up 375 @cindex starting up
317 376
318 @kindex M-x gnus 377 @kindex M-x gnus
331 390
332 @menu 391 @menu
333 * Finding the News:: Choosing a method for getting news. 392 * Finding the News:: Choosing a method for getting news.
334 * The First Time:: What does Gnus do the first time you start it? 393 * The First Time:: What does Gnus do the first time you start it?
335 * The Server is Down:: How can I read my mail then? 394 * The Server is Down:: How can I read my mail then?
336 * Slave Gnusii:: You can have more than one Gnus active at a time. 395 * Slave Gnusae:: You can have more than one Gnus active at a time.
337 * Fetching a Group:: Starting Gnus just to read a group. 396 * Fetching a Group:: Starting Gnus just to read a group.
338 * New Groups:: What is Gnus supposed to do with new groups? 397 * New Groups:: What is Gnus supposed to do with new groups?
339 * Startup Files:: Those pesky startup files---@file{.newsrc}. 398 * Startup Files:: Those pesky startup files---@file{.newsrc}.
340 * Auto Save:: Recovering from a crash. 399 * Auto Save:: Recovering from a crash.
341 * The Active File:: Reading the active file over a slow line Takes Time. 400 * The Active File:: Reading the active file over a slow line Takes Time.
401 * Changing Servers:: You may want to move from one server to another.
342 * Startup Variables:: Other variables you might change. 402 * Startup Variables:: Other variables you might change.
343 @end menu 403 @end menu
344 404
345 405
346 @node Finding the News 406 @node Finding the News
347 @section Finding the News 407 @section Finding the News
408 @cindex finding news
348 409
349 @vindex gnus-select-method 410 @vindex gnus-select-method
350 @c @head 411 @c @head
351 The @code{gnus-select-method} variable says where Gnus should look for 412 The @code{gnus-select-method} variable says where Gnus should look for
352 news. This variable should be a list where the first element says 413 news. This variable should be a list where the first element says
376 If this variable is not set, Gnus will take a look at the 437 If this variable is not set, Gnus will take a look at the
377 @code{NNTPSERVER} environment variable. If that variable isn't set, 438 @code{NNTPSERVER} environment variable. If that variable isn't set,
378 Gnus will see whether @code{gnus-nntpserver-file} 439 Gnus will see whether @code{gnus-nntpserver-file}
379 (@file{/etc/nntpserver} by default) has any opinions on the matter. If 440 (@file{/etc/nntpserver} by default) has any opinions on the matter. If
380 that fails as well, Gnus will will try to use the machine that is 441 that fails as well, Gnus will will try to use the machine that is
381 running Emacs as an @sc{nntp} server. That's a long-shot, though. 442 running Emacs as an @sc{nntp} server. That's a long shot, though.
382 443
383 @vindex gnus-nntp-server 444 @vindex gnus-nntp-server
384 If @code{gnus-nntp-server} is set, this variable will override 445 If @code{gnus-nntp-server} is set, this variable will override
385 @code{gnus-select-method}. You should therefore set 446 @code{gnus-select-method}. You should therefore set
386 @code{gnus-nntp-server} to @code{nil}, which is what it is by default. 447 @code{gnus-nntp-server} to @code{nil}, which is what it is by default.
459 for some reason or other. If you decide to continue and have no foreign 520 for some reason or other. If you decide to continue and have no foreign
460 groups, you'll find it difficult to actually do anything in the group 521 groups, you'll find it difficult to actually do anything in the group
461 buffer. But, hey, that's your problem. Blllrph! 522 buffer. But, hey, that's your problem. Blllrph!
462 523
463 @findex gnus-no-server 524 @findex gnus-no-server
525 @kindex M-x gnus-no-server
464 @c @head 526 @c @head
465 If you know that the server is definitely down, or you just want to read 527 If you know that the server is definitely down, or you just want to read
466 your mail without bothering with the server at all, you can use the 528 your mail without bothering with the server at all, you can use the
467 @code{gnus-no-server} command to start Gnus. That might come in handy 529 @code{gnus-no-server} command to start Gnus. That might come in handy
468 if you're in a hurry as well. 530 if you're in a hurry as well. This command will not attempt to contact
469 531 your primary server---instead, it will just activate all groups on level
470 532 1 and 2. (You should preferably keep no native groups on those two
471 @node Slave Gnusii 533 levels.)
472 @section Slave Gnusiï 534
535
536 @node Slave Gnusae
537 @section Slave Gnusae
473 @cindex slave 538 @cindex slave
474 539
475 You might want to run more than one Emacs with more than one Gnus at the 540 You might want to run more than one Emacs with more than one Gnus at the
476 same time. If you are using different @file{.newsrc} files (eg., if you 541 same time. If you are using different @file{.newsrc} files (e.g., if you
477 are using the two different Gnusiï to read from two different servers), 542 are using the two different Gnusae to read from two different servers),
478 that is no problem whatsoever. You just do it. 543 that is no problem whatsoever. You just do it.
479 544
480 The problem appears when you want to run two Gnusiï that use the same 545 The problem appears when you want to run two Gnusae that use the same
481 @code{.newsrc} file. 546 @code{.newsrc} file.
482 547
483 To work around that problem some, we here at the Think-Tank at the Gnus 548 To work around that problem some, we here at the Think-Tank at the Gnus
484 Towers have come up with a new concept: @dfn{Masters} and 549 Towers have come up with a new concept: @dfn{Masters} and
485 @dfn{servants}. (We have applied for a patent on this concept, and have 550 @dfn{slaves}. (We have applied for a patent on this concept, and have
486 taken out a copyright on those words. If you wish to use those words in 551 taken out a copyright on those words. If you wish to use those words in
487 conjunction with each other, you have to send $1 per usage instance to 552 conjunction with each other, you have to send $1 per usage instance to
488 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer 553 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer
489 Applications}) will be much more expensive, of course.) 554 Applications}) will be much more expensive, of course.)
490 555
491 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or 556 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
492 however you do it). Each subsequent slave Gnusiï should be started with 557 however you do it). Each subsequent slave Gnusae should be started with
493 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} 558 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc}
494 files, but instead save @dfn{slave files} that contains information only 559 files, but instead save @dfn{slave files} that contain information only
495 on what groups have been read in the slave session. When a master Gnus 560 on what groups have been read in the slave session. When a master Gnus
496 starts, it will read (and delete) these slave files, incorporating all 561 starts, it will read (and delete) these slave files, incorporating all
497 information from them. (The slave files will be read in the sequence 562 information from them. (The slave files will be read in the sequence
498 they were created, so the latest changes will have precedence.) 563 they were created, so the latest changes will have precedence.)
499 564
500 Information from the slave files has, of course, precedence over the 565 Information from the slave files has, of course, precedence over the
501 information in the normal (i. e., master) @code{.newsrc} file. 566 information in the normal (i.e., master) @code{.newsrc} file.
502 567
503 568
504 @node Fetching a Group 569 @node Fetching a Group
505 @section Fetching a Group 570 @section Fetching a Group
571 @cindex fetching a group
506 572
507 @findex gnus-fetch-group 573 @findex gnus-fetch-group
508 It it sometime convenient to be able to just say ``I want to read this 574 It it sometimes convenient to be able to just say ``I want to read this
509 group and I don't care whether Gnus has been started or not''. This is 575 group and I don't care whether Gnus has been started or not''. This is
510 perhaps more useful for people who write code than for users, but the 576 perhaps more useful for people who write code than for users, but the
511 command @code{gnus-fetch-group} provides this functionality in any case. 577 command @code{gnus-fetch-group} provides this functionality in any case.
512 It takes the group name as a parameter. 578 It takes the group name as a parameter.
513 579
514 580
515 @node New Groups 581 @node New Groups
516 @section New Groups 582 @section New Groups
517 @cindex new groups 583 @cindex new groups
584 @cindex subscription
585
586 @vindex gnus-check-new-newsgroups
587 If you are satisfied that you really never want to see any new groups,
588 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will
589 also save you some time at startup. Even if this variable is
590 @code{nil}, you can always subscribe to the new groups just by pressing
591 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable
592 is @code{t} by default. If you set this variable to @code{always}, then
593 Gnus will query the backends for new groups even when you do the @kbd{g}
594 command (@pxref{Scanning New Messages}).
595
596 @menu
597 * Checking New Groups:: Determining what groups are new.
598 * Subscription Methods:: What Gnus should do with new groups.
599 * Filtering New Groups:: Making Gnus ignore certain new groups.
600 @end menu
601
602
603 @node Checking New Groups
604 @subsection Checking New Groups
605
606 Gnus normally determines whether a group is new or not by comparing the
607 list of groups from the active file(s) with the lists of subscribed and
608 dead groups. This isn't a particularly fast method. If
609 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the
610 server for new groups since the last time. This is both faster and
611 cheaper. This also means that you can get rid of the list of killed
612 groups altogether, so you may set @code{gnus-save-killed-list} to
613 @code{nil}, which will save time both at startup, at exit, and all over.
614 Saves disk space, too. Why isn't this the default, then?
615 Unfortunately, not all servers support this command.
616
617 I bet I know what you're thinking now: How do I find out whether my
618 server supports @code{ask-server}? No? Good, because I don't have a
619 fail-safe answer. I would suggest just setting this variable to
620 @code{ask-server} and see whether any new groups appear within the next
621 few days. If any do, then it works. If none do, then it doesn't
622 work. I could write a function to make Gnus guess whether the server
623 supports @code{ask-server}, but it would just be a guess. So I won't.
624 You could @code{telnet} to the server and say @code{HELP} and see
625 whether it lists @samp{NEWGROUPS} among the commands it understands. If
626 it does, then it might work. (But there are servers that lists
627 @samp{NEWGROUPS} without supporting the function properly.)
628
629 This variable can also be a list of select methods. If so, Gnus will
630 issue an @code{ask-server} command to each of the select methods, and
631 subscribe them (or not) using the normal methods. This might be handy
632 if you are monitoring a few servers for new groups. A side effect is
633 that startup will take much longer, so you can meditate while waiting.
634 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss.
635
636
637 @node Subscription Methods
638 @subsection Subscription Methods
518 639
519 @vindex gnus-subscribe-newsgroup-method 640 @vindex gnus-subscribe-newsgroup-method
520 What Gnus does when it encounters a new group is determined by the 641 What Gnus does when it encounters a new group is determined by the
521 @code{gnus-subscribe-newsgroup-method} variable. 642 @code{gnus-subscribe-newsgroup-method} variable.
522 643
525 646
526 @table @code 647 @table @code
527 648
528 @item gnus-subscribe-zombies 649 @item gnus-subscribe-zombies
529 @vindex gnus-subscribe-zombies 650 @vindex gnus-subscribe-zombies
530 Make all new groups zombies. You can browse the zombies later (with 651 Make all new groups zombies. This is the default. You can browse the
531 @kbd{A z}) and either kill them all off properly, or subscribe to them. 652 zombies later (with @kbd{A z}) and either kill them all off properly
532 This is the default. 653 (with @kbd{S z}), or subscribe to them (with @kbd{u}).
533 654
534 @item gnus-subscribe-randomly 655 @item gnus-subscribe-randomly
535 @vindex gnus-subscribe-randomly 656 @vindex gnus-subscribe-randomly
536 Subscribe all new groups randomly. 657 Subscribe all new groups randomly.
537 658
538 @item gnus-subscribe-alphabetically 659 @item gnus-subscribe-alphabetically
539 @vindex gnus-subscribe-alphabetically 660 @vindex gnus-subscribe-alphabetically
540 Subscribe all new groups alphabetically. 661 Subscribe all new groups alphabetically.
541 662
542 @item gnus-subscribe-hierarchically 663 @item gnus-subscribe-hierarchically
543 @vindex gnus-subscribe-hierarchically 664 @vindex gnus-subscribe-hierarchically
544 Subscribe all new groups hierarchically. The difference between this 665 Subscribe all new groups hierarchically. The difference between this
545 function and @code{gnus-subscribe-alphabetically} is slight. 666 function and @code{gnus-subscribe-alphabetically} is slight.
546 @code{gnus-subscribe-alphabetically} will subscribe new groups in a 667 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly
547 strictly alphabetical fashion, while this function will enter groups 668 alphabetical fashion, while this function will enter groups into it's
548 into it's hierarchy. So if you want to have the @samp{rec} hierarchy 669 hierarchy. So if you want to have the @samp{rec} hierarchy before the
549 before the @samp{comp} hierarchy, this function will not mess that 670 @samp{comp} hierarchy, this function will not mess that configuration
550 configuration up. Or something like that. 671 up. Or something like that.
551 672
552 @item gnus-subscribe-interactively 673 @item gnus-subscribe-interactively
553 @vindex gnus-subscribe-interactively 674 @vindex gnus-subscribe-interactively
554 Subscribe new groups interactively. This means that Gnus will ask 675 Subscribe new groups interactively. This means that Gnus will ask
555 you about @strong{all} new groups. 676 you about @strong{all} new groups.
569 hierarchy or not. 690 hierarchy or not.
570 691
571 One common mistake is to set the variable a few paragraphs above to 692 One common mistake is to set the variable a few paragraphs above to
572 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This 693 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This
573 will not work. This is ga-ga. So don't do it. 694 will not work. This is ga-ga. So don't do it.
695
696
697 @node Filtering New Groups
698 @subsection Filtering New Groups
574 699
575 A nice and portable way to control which new newsgroups should be 700 A nice and portable way to control which new newsgroups should be
576 subscribed (or ignored) is to put an @dfn{options} line at the start of 701 subscribed (or ignored) is to put an @dfn{options} line at the start of
577 the @file{.newsrc} file. Here's an example: 702 the @file{.newsrc} file. Here's an example:
578 703
608 more for user fiddling. By default this variable makes all new groups 733 more for user fiddling. By default this variable makes all new groups
609 that come from mail backends (@code{nnml}, @code{nnbabyl}, 734 that come from mail backends (@code{nnml}, @code{nnbabyl},
610 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you 735 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you
611 don't like that, just set this variable to @code{nil}. 736 don't like that, just set this variable to @code{nil}.
612 737
613 @vindex gnus-check-new-newsgroups 738 New groups that match this regexp are subscribed using
614 If you are satisfied that you really never want to see any new groups, 739 @code{gnus-subscribe-options-newsgroup-method}.
615 you could set @code{gnus-check-new-newsgroups} to @code{nil}. This will 740
616 also save you some time at startup. Even if this variable is 741
617 @code{nil}, you can always subscribe to the new groups just by pressing 742 @node Changing Servers
618 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable 743 @section Changing Servers
619 is @code{t} by default. 744 @cindex changing servers
620 745
621 Gnus normally determines whether a group is new or not by comparing the 746 Sometimes it is necessary to move from one @sc{nntp} server to another.
622 list of groups from the active file(s) with the lists of subscribed and 747 This happens very rarely, but perhaps you change jobs, or one server is
623 dead groups. This isn't a particularly fast method. If 748 very flaky and you want to use another.
624 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the 749
625 server for new groups since the last time. This is both faster & 750 Changing the server is pretty easy, right? You just change
626 cheaper. This also means that you can get rid of the list of killed 751 @code{gnus-select-method} to point to the new server?
627 groups altogether, so you may set @code{gnus-save-killed-list} to 752
628 @code{nil}, which will save time both at startup, at exit, and all over. 753 @emph{Wrong!}
629 Saves disk space, too. Why isn't this the default, then? 754
630 Unfortunately, not all servers support this command. 755 Article numbers are not (in any way) kept synchronized between different
631 756 @sc{nntp} servers, and the only way Gnus keeps track of what articles
632 I bet I know what you're thinking now: How do I find out whether my 757 you have read is by keeping track of article numbers. So when you
633 server supports @code{ask-server}? No? Good, because I don't have a 758 change @code{gnus-select-method}, your @file{.newsrc} file becomes
634 fail-safe answer. I would suggest just setting this variable to 759 worthless.
635 @code{ask-server} and see whether any new groups appear within the next 760
636 few days. If any do, then it works. If any don't, then it doesn't 761 Gnus provides a few functions to attempt to translate a @file{.newsrc}
637 work. I could write a function to make Gnus guess whether the server 762 file from one server to another. They all have one thing in
638 supports @code{ask-server}, but it would just be a guess. So I won't. 763 common---they take a looong time to run. You don't want to use these
639 You could @code{telnet} to the server and say @code{HELP} and see 764 functions more than absolutely necessary.
640 whether it lists @samp{NEWGROUPS} among the commands it understands. If 765
641 it does, then it might work. (But there are servers that lists 766 @kindex M-x gnus-change-server
642 @samp{NEWGROUPS} without supporting the function properly.) 767 @findex gnus-change-server
643 768 If you have access to both servers, Gnus can request the headers for all
644 This variable can also be a list of select methods. If so, Gnus will 769 the articles you have read and compare @code{Message-ID}s and map the
645 issue an @code{ask-server} command to each of the select methods, and 770 article numbers of the read articles and article marks. The @kbd{M-x
646 subscribe them (or not) using the normal methods. This might be handy 771 gnus-change-server} command will do this for all your native groups. It
647 if you are monitoring a few servers for new groups. A side effect is 772 will prompt for the method you want to move to.
648 that startup will take much longer, so you can meditate while waiting. 773
649 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss. 774 @kindex M-x gnus-group-move-group-to-server
775 @findex gnus-group-move-group-to-server
776 You can also move individual groups with the @kbd{M-x
777 gnus-group-move-group-to-server} command. This is useful if you want to
778 move a (foreign) group from one server to another.
779
780 @kindex M-x gnus-group-clear-data-on-native-groups
781 @findex gnus-group-clear-data-on-native-groups
782 If you don't have access to both the old and new server, all your marks
783 and read ranges have become worthless. You can use the @kbd{M-x
784 gnus-group-clear-data-on-native-groups} command to clear out all data
785 that you have on your native groups. Use with caution.
650 786
651 787
652 @node Startup Files 788 @node Startup Files
653 @section Startup Files 789 @section Startup Files
654 @cindex startup files 790 @cindex startup files
655 @cindex .newsrc 791 @cindex .newsrc
792 @cindex .newsrc.el
793 @cindex .newsrc.eld
656 794
657 Now, you all know about the @file{.newsrc} file. All subscription 795 Now, you all know about the @file{.newsrc} file. All subscription
658 information is traditionally stored in this file. 796 information is traditionally stored in this file.
659 797
660 Things got a bit more complicated with @sc{gnus}. In addition to 798 Things got a bit more complicated with @sc{gnus}. In addition to
679 817
680 @vindex gnus-save-killed-list 818 @vindex gnus-save-killed-list
681 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus 819 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus
682 will not save the list of killed groups to the startup file. This will 820 will not save the list of killed groups to the startup file. This will
683 save both time (when starting and quitting) and space (on disk). It 821 save both time (when starting and quitting) and space (on disk). It
684 will also means that Gnus has no record of what groups are new or old, 822 will also mean that Gnus has no record of what groups are new or old,
685 so the automatic new groups subscription methods become meaningless. 823 so the automatic new groups subscription methods become meaningless.
686 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or 824 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or
687 @code{ask-server} if you set this variable to @code{nil} (@pxref{New 825 @code{ask-server} if you set this variable to @code{nil} (@pxref{New
688 Groups}). 826 Groups}). This variable can also be a regular expression. If that's
827 the case, remove all groups that do not match this regexp before
828 saving. This can be useful in certain obscure situations that involve
829 several servers where not all servers support @code{ask-server}.
689 830
690 @vindex gnus-startup-file 831 @vindex gnus-startup-file
691 The @code{gnus-startup-file} variable says where the startup files are. 832 The @code{gnus-startup-file} variable says where the startup files are.
692 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup 833 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup
693 file being whatever that one is with a @samp{.eld} appended. 834 file being whatever that one is with a @samp{.eld} appended.
698 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc 839 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc
699 files, while @code{gnus-save-quick-newsrc-hook} is called just before 840 files, while @code{gnus-save-quick-newsrc-hook} is called just before
700 saving the @file{.newsrc.eld} file, and 841 saving the @file{.newsrc.eld} file, and
701 @code{gnus-save-standard-newsrc-hook} is called just before saving the 842 @code{gnus-save-standard-newsrc-hook} is called just before saving the
702 @file{.newsrc} file. The latter two are commonly used to turn version 843 @file{.newsrc} file. The latter two are commonly used to turn version
703 control on or off. Version control is off by default when saving the 844 control on or off. Version control is on by default when saving the
704 startup files. 845 startup files. If you want to turn backup creation off, say something like:
846
847 @lisp
848 (defun turn-off-backup ()
849 (set (make-local-variable 'backup-inhibited) t))
850
851 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup)
852 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
853 @end lisp
705 854
706 @vindex gnus-init-file 855 @vindex gnus-init-file
707 When Gnus starts, it will read the @code{gnus-init-file} file, which is 856 When Gnus starts, it will read the @code{gnus-site-init-file}
708 @file{~/.gnus.el} by default. This is a normal Emacs Lisp file and can 857 (@file{.../site-lisp/gnus.el} by default) and @code{gnus-init-file}
709 be used to avoid cluttering your @file{.emacs} file with Gnus stuff. 858 (@file{~/.gnus.el} by default) files. These are normal Emacs Lisp files
859 and can be used to avoid cluttering your @file{.emacs} and
860 @file{site-init} files with Gnus stuff.
710 861
711 862
712 @node Auto Save 863 @node Auto Save
713 @section Auto Save 864 @section Auto Save
714 @cindex dribble file 865 @cindex dribble file
786 performance, but if the server does not support the aforementioned 937 performance, but if the server does not support the aforementioned
787 @code{LIST ACTIVE group} command, this isn't very nice to the server. 938 @code{LIST ACTIVE group} command, this isn't very nice to the server.
788 939
789 In any case, if you use @code{some} or @code{nil}, you should definitely 940 In any case, if you use @code{some} or @code{nil}, you should definitely
790 kill all groups that you aren't interested in to speed things up. 941 kill all groups that you aren't interested in to speed things up.
942
943 Note that this variable also affects active file retrieval from
944 secondary select methods.
791 945
792 946
793 @node Startup Variables 947 @node Startup Variables
794 @section Startup Variables 948 @section Startup Variables
795 949
815 in a while from the group buffer instead (@pxref{Group Maintenance}). 969 in a while from the group buffer instead (@pxref{Group Maintenance}).
816 970
817 @item gnus-inhibit-startup-message 971 @item gnus-inhibit-startup-message
818 @vindex gnus-inhibit-startup-message 972 @vindex gnus-inhibit-startup-message
819 If non-@code{nil}, the startup message won't be displayed. That way, 973 If non-@code{nil}, the startup message won't be displayed. That way,
820 your boss might not notice that you are reading news instead of doing 974 your boss might not notice as easily that you are reading news instead
821 your job as easily. 975 of doing your job. Note that this variable is used before
976 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead.
822 977
823 @item gnus-no-groups-message 978 @item gnus-no-groups-message
824 @vindex gnus-no-groups-message 979 @vindex gnus-no-groups-message
825 Message displayed by Gnus when no groups are available. 980 Message displayed by Gnus when no groups are available.
981
982 @item gnus-play-startup-jingle
983 @vindex gnus-play-startup-jingle
984 If non-@code{nil}, play the Gnus jingle at startup.
985
986 @item gnus-startup-jingle
987 @vindex gnus-startup-jingle
988 Jingle to be played if the above variable is non-@code{nil}. The
989 default is @samp{Tuxedomoon.Jingle4.au}.
990
826 @end table 991 @end table
827 992
828 993
829 @node The Group Buffer 994 @node The Group Buffer
830 @chapter The Group Buffer 995 @chapter The Group Buffer
836 1001
837 @menu 1002 @menu
838 * Group Buffer Format:: Information listed and how you can change it. 1003 * Group Buffer Format:: Information listed and how you can change it.
839 * Group Maneuvering:: Commands for moving in the group buffer. 1004 * Group Maneuvering:: Commands for moving in the group buffer.
840 * Selecting a Group:: Actually reading news. 1005 * Selecting a Group:: Actually reading news.
1006 * Group Data:: Changing the info for a group.
841 * Subscription Commands:: Unsubscribing, killing, subscribing. 1007 * Subscription Commands:: Unsubscribing, killing, subscribing.
842 * Group Levels:: Levels? What are those, then? 1008 * Group Levels:: Levels? What are those, then?
843 * Group Score:: A mechanism for finding out what groups you like. 1009 * Group Score:: A mechanism for finding out what groups you like.
844 * Marking Groups:: You can mark groups for later processing. 1010 * Marking Groups:: You can mark groups for later processing.
845 * Foreign Groups:: Creating and editing groups. 1011 * Foreign Groups:: Creating and editing groups.
854 @end menu 1020 @end menu
855 1021
856 1022
857 @node Group Buffer Format 1023 @node Group Buffer Format
858 @section Group Buffer Format 1024 @section Group Buffer Format
859 @cindex group buffer format
860 1025
861 @menu 1026 @menu
862 * Group Line Specification:: Deciding how the group buffer is to look. 1027 * Group Line Specification:: Deciding how the group buffer is to look.
863 * Group Modeline Specification:: The group buffer modeline. 1028 * Group Modeline Specification:: The group buffer modeline.
864 * Group Highlighting:: Having nice colors in the group buffer. 1029 * Group Highlighting:: Having nice colors in the group buffer.
865 @end menu 1030 @end menu
866 1031
867 1032
868 @node Group Line Specification 1033 @node Group Line Specification
869 @subsection Group Line Specification 1034 @subsection Group Line Specification
1035 @cindex group buffer format
870 1036
871 The default format of the group buffer is nice and dull, but you can 1037 The default format of the group buffer is nice and dull, but you can
872 make it as exciting and ugly as you feel like. 1038 make it as exciting and ugly as you feel like.
873 1039
874 Here's a couple of example group lines: 1040 Here's a couple of example group lines:
890 @code{gnus-group-line-format} variable. This variable works along the 1056 @code{gnus-group-line-format} variable. This variable works along the
891 lines of a @code{format} specification, which is pretty much the same as 1057 lines of a @code{format} specification, which is pretty much the same as
892 a @code{printf} specifications, for those of you who use (feh!) C. 1058 a @code{printf} specifications, for those of you who use (feh!) C.
893 @xref{Formatting Variables}. 1059 @xref{Formatting Variables}.
894 1060
895 The default value that produced those lines above is 1061 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
896 @samp{%M%S%5y: %(%g%)\n}.
897 1062
898 There should always be a colon on the line; the cursor always moves to 1063 There should always be a colon on the line; the cursor always moves to
899 the colon after performing an operation. Nothing else is required---not 1064 the colon after performing an operation. Nothing else is required---not
900 even the group name. All displayed text is just window dressing, and is 1065 even the group name. All displayed text is just window dressing, and is
901 never examined by Gnus. Gnus stores all real information it needs using 1066 never examined by Gnus. Gnus stores all real information it needs using
908 Here's a list of all available format characters: 1073 Here's a list of all available format characters:
909 1074
910 @table @samp 1075 @table @samp
911 1076
912 @item M 1077 @item M
913 Only marked articles. 1078 An asterisk if the group only has marked articles.
914 1079
915 @item S 1080 @item S
916 Whether the group is subscribed. 1081 Whether the group is subscribed.
917 1082
918 @item L 1083 @item L
929 1094
930 @item R 1095 @item R
931 Number of read articles. 1096 Number of read articles.
932 1097
933 @item t 1098 @item t
934 Total number of articles. 1099 Estimated total number of articles. (This is really @var{max-number}
1100 minus @var{min-number} plus 1.)
935 1101
936 @item y 1102 @item y
937 Number of unread, unticked, non-dormant articles. 1103 Number of unread, unticked, non-dormant articles.
938 1104
939 @item i 1105 @item i
969 1135
970 @item c 1136 @item c
971 @vindex gnus-group-uncollapsed-levels 1137 @vindex gnus-group-uncollapsed-levels
972 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} 1138 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels}
973 variable says how many levels to leave at the end of the group name. 1139 variable says how many levels to leave at the end of the group name.
974 The default is @code{1}. 1140 The default is 1---this will mean that group names like
1141 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}.
1142
1143 @item m
1144 @vindex gnus-new-mail-mark
1145 @cindex %
1146 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to
1147 the group lately.
1148
1149 @item d
1150 A string that says when you last read the group (@pxref{Group
1151 Timestamp}).
975 1152
976 @item u 1153 @item u
977 User defined specifier. The next character in the format string should 1154 User defined specifier. The next character in the format string should
978 be a letter. @sc{gnus} will call the function 1155 be a letter. @sc{gnus} will call the function
979 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter 1156 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
980 following @samp{%u}. The function will be passed the current headers as 1157 following @samp{%u}. The function will be passed a single dummy
981 argument. The function should return a string, which will be inserted 1158 paratere as argument. The function should return a string, which will
982 into the buffer just like information from any other specifier. 1159 be inserted into the buffer just like information from any other
1160 specifier.
983 @end table 1161 @end table
984 1162
985 @cindex * 1163 @cindex *
986 All the ``number-of'' specs will be filled with an asterisk (@samp{*}) 1164 All the ``number-of'' specs will be filled with an asterisk (@samp{*})
987 if no info is available---for instance, if it is a non-activated foreign 1165 if no info is available---for instance, if it is a non-activated foreign
988 group, or a bogus (or semi-bogus) native group. 1166 group, or a bogus native group.
989 1167
990 1168
991 @node Group Modeline Specification 1169 @node Group Modeline Specification
992 @subsection Group Modeline Specification 1170 @subsection Group Modeline Specification
1171 @cindex group modeline
993 1172
994 @vindex gnus-group-mode-line-format 1173 @vindex gnus-group-mode-line-format
995 The mode line can be changed by setting 1174 The mode line can be changed by setting
996 (@code{gnus-group-mode-line-format}). It doesn't understand that many 1175 @code{gnus-group-mode-line-format} (@pxref{Formatting Variables}). It
997 format specifiers: 1176 doesn't understand that many format specifiers:
998 1177
999 @table @samp 1178 @table @samp
1000 @item S 1179 @item S
1001 The native news server. 1180 The native news server.
1002 @item M 1181 @item M
1004 @end table 1183 @end table
1005 1184
1006 1185
1007 @node Group Highlighting 1186 @node Group Highlighting
1008 @subsection Group Highlighting 1187 @subsection Group Highlighting
1188 @cindex highlighting
1189 @cindex group highlighting
1009 1190
1010 @vindex gnus-group-highlight 1191 @vindex gnus-group-highlight
1011 Highlighting in the group buffer is controlled by the 1192 Highlighting in the group buffer is controlled by the
1012 @code{gnus-group-highlight} variable. This is an alist with elements 1193 @code{gnus-group-highlight} variable. This is an alist with elements
1013 that look like @var{(form . face)}. If @var{form} evaluates to 1194 that look like @var{(form . face)}. If @var{form} evaluates to
1016 Here's an example value for this variable that might look nice if the 1197 Here's an example value for this variable that might look nice if the
1017 background is dark: 1198 background is dark:
1018 1199
1019 @lisp 1200 @lisp
1020 (setq gnus-group-highlight 1201 (setq gnus-group-highlight
1021 `(((> unread 200) . 1202 `(((> unread 200) .
1022 ,(custom-face-lookup "Red" nil nil t nil nil)) 1203 ,(custom-face-lookup "Red" nil nil t nil nil))
1023 ((and (< level 3) (zerop unread)) . 1204 ((and (< level 3) (zerop unread)) .
1024 ,(custom-face-lookup "SeaGreen" nil nil t nil nil)) 1205 ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
1025 ((< level 3) . 1206 ((< level 3) .
1026 ,(custom-face-lookup "SpringGreen" nil nil t nil nil)) 1207 ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
1027 ((zerop unread) . 1208 ((zerop unread) .
1028 ,(custom-face-lookup "SteelBlue" nil nil t nil nil)) 1209 ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
1029 (t . 1210 (t .
1030 ,(custom-face-lookup "SkyBlue" nil nil t nil nil)) 1211 ,(custom-face-lookup "SkyBlue" nil nil t nil nil))))
1031 ))
1032 @end lisp 1212 @end lisp
1033 1213
1034 Variables that are dynamically bound when the forms are evaluated 1214 Variables that are dynamically bound when the forms are evaluated
1035 include: 1215 include:
1036 1216
1047 The level of the group. 1227 The level of the group.
1048 @item score 1228 @item score
1049 The score of the group. 1229 The score of the group.
1050 @item ticked 1230 @item ticked
1051 The number of ticked articles in the group. 1231 The number of ticked articles in the group.
1232 @item total
1233 The total number of articles in the group. Or rather, MAX-NUMBER minus
1234 MIN-NUMBER.
1052 @item topic 1235 @item topic
1053 When using the topic minor mode, this variable is bound to the current 1236 When using the topic minor mode, this variable is bound to the current
1054 topic being inserted. 1237 topic being inserted.
1055 @end table 1238 @end table
1056 1239
1079 @findex gnus-group-next-unread-group 1262 @findex gnus-group-next-unread-group
1080 Go to the next group that has unread articles 1263 Go to the next group that has unread articles
1081 (@code{gnus-group-next-unread-group}). 1264 (@code{gnus-group-next-unread-group}).
1082 1265
1083 @item p 1266 @item p
1084
1085 @itemx DEL 1267 @itemx DEL
1086 @kindex DEL (Group) 1268 @kindex DEL (Group)
1087 @kindex p (Group) 1269 @kindex p (Group)
1088 @findex gnus-group-prev-unread-group 1270 @findex gnus-group-prev-unread-group
1089 Go to the previous group group that has unread articles 1271 Go to the previous group that has unread articles
1090 (@code{gnus-group-prev-unread-group}). 1272 (@code{gnus-group-prev-unread-group}).
1091 1273
1092 @item N 1274 @item N
1093 @kindex N (Group) 1275 @kindex N (Group)
1094 @findex gnus-group-next-group 1276 @findex gnus-group-next-group
1100 Go to the previous group (@code{gnus-group-prev-group}). 1282 Go to the previous group (@code{gnus-group-prev-group}).
1101 1283
1102 @item M-p 1284 @item M-p
1103 @kindex M-p (Group) 1285 @kindex M-p (Group)
1104 @findex gnus-group-next-unread-group-same-level 1286 @findex gnus-group-next-unread-group-same-level
1105 Go to the next unread group on the same level (or lower) 1287 Go to the next unread group on the same (or lower) level
1106 (@code{gnus-group-next-unread-group-same-level}). 1288 (@code{gnus-group-next-unread-group-same-level}).
1107 1289
1108 @item M-n 1290 @item M-n
1109 @kindex M-n (Group) 1291 @kindex M-n (Group)
1110 @findex gnus-group-prev-unread-group-same-level 1292 @findex gnus-group-prev-unread-group-same-level
1111 Go to the previous unread group on the same level (or lower) 1293 Go to the previous unread group on the same (or lower) level
1112 (@code{gnus-group-prev-unread-group-same-level}). 1294 (@code{gnus-group-prev-unread-group-same-level}).
1113 @end table 1295 @end table
1114 1296
1115 Three commands for jumping to groups: 1297 Three commands for jumping to groups:
1116 1298
1154 @findex gnus-group-read-group 1336 @findex gnus-group-read-group
1155 Select the current group, switch to the summary buffer and display the 1337 Select the current group, switch to the summary buffer and display the
1156 first unread article (@code{gnus-group-read-group}). If there are no 1338 first unread article (@code{gnus-group-read-group}). If there are no
1157 unread articles in the group, or if you give a non-numerical prefix to 1339 unread articles in the group, or if you give a non-numerical prefix to
1158 this command, Gnus will offer to fetch all the old articles in this 1340 this command, Gnus will offer to fetch all the old articles in this
1159 group from the server. If you give a numerical prefix @var{N}, Gnus 1341 group from the server. If you give a numerical prefix @var{N}, @var{N}
1160 will fetch @var{N} number of articles. If @var{N} is positive, fetch 1342 determines the number of articles Gnus will fetch. If @var{N} is
1161 the @var{N} newest articles, if @var{N} is negative, fetch the 1343 positive, Gnus fetches the @var{N} newest articles, if @var{N} is
1162 @var{abs(N)} oldest articles. 1344 negative, Gnus fetches the @var{abs(N)} oldest articles.
1163 1345
1164 @item RET 1346 @item RET
1165 @kindex RET (Group) 1347 @kindex RET (Group)
1166 @findex gnus-group-select-group 1348 @findex gnus-group-select-group
1167 Select the current group and switch to the summary buffer 1349 Select the current group and switch to the summary buffer
1172 1354
1173 @item M-RET 1355 @item M-RET
1174 @kindex M-RET (Group) 1356 @kindex M-RET (Group)
1175 @findex gnus-group-quick-select-group 1357 @findex gnus-group-quick-select-group
1176 This does the same as the command above, but tries to do it with the 1358 This does the same as the command above, but tries to do it with the
1177 minimum amount off fuzz (@code{gnus-group-quick-select-group}). No 1359 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No
1178 scoring/killing will be performed, there will be no highlights and no 1360 scoring/killing will be performed, there will be no highlights and no
1179 expunging. This might be useful if you're in a real hurry and have to 1361 expunging. This might be useful if you're in a real hurry and have to
1180 enter some humongous group. 1362 enter some humongous group. If you give a 0 prefix to this command
1363 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer.
1364 This might be useful if you want to toggle threading before entering the
1365 group.
1181 1366
1182 @item M-SPACE 1367 @item M-SPACE
1183 @kindex M-RET (Group) 1368 @kindex M-SPACE (Group)
1184 @findex gnus-group-visible-select-group 1369 @findex gnus-group-visible-select-group
1185 This is yet one more command that does the same as the one above, but 1370 This is yet one more command that does the same as the @kbd{RET}
1186 this one does it without expunging and hiding dormants 1371 command, but this one does it without expunging and hiding dormants
1187 (@code{gnus-group-visible-select-group}). 1372 (@code{gnus-group-visible-select-group}).
1188 1373
1189 @item c 1374 @item M-C-RET
1190 @kindex c (Group) 1375 @kindex M-C-RET (Group)
1191 @findex gnus-group-catchup-current 1376 @findex gnus-group-select-group-ephemerally
1192 @vindex gnus-group-catchup-group-hook 1377 Finally, this command selects the current group ephemerally without
1193 Mark all unticked articles in this group as read 1378 doing any processing of its contents
1194 (@code{gnus-group-catchup-current}). 1379 (@code{gnus-group-select-group-ephemerally}). Even threading has been
1195 @code{gnus-group-catchup-group-hook} is when catching up a group from 1380 turned off. Everything you do in the group after selecting it in this
1196 the group buffer. 1381 manner will have no permanent effects.
1197 1382
1198 @item C
1199 @kindex C (Group)
1200 @findex gnus-group-catchup-current-all
1201 Mark all articles in this group, even the ticked ones, as read
1202 (@code{gnus-group-catchup-current-all}).
1203 @end table 1383 @end table
1204 1384
1205 @vindex gnus-large-newsgroup 1385 @vindex gnus-large-newsgroup
1206 The @code{gnus-large-newsgroup} variable says what Gnus should consider 1386 The @code{gnus-large-newsgroup} variable says what Gnus should consider
1207 to be a big group. This is 200 by default. If the group has more 1387 to be a big group. This is 200 by default. If the group has more
1208 unread articles than this, Gnus will query the user before entering the 1388 (unread and/or ticked) articles than this, Gnus will query the user
1209 group. The user can then specify how many articles should be fetched 1389 before entering the group. The user can then specify how many articles
1210 from the server. If the user specifies a negative number (@code{-n}), 1390 should be fetched from the server. If the user specifies a negative
1211 the @code{n} oldest articles will be fetched. If it is positive, the 1391 number (@code{-n}), the @code{n} oldest articles will be fetched. If it
1212 @code{n} articles that have arrived most recently will be fetched. 1392 is positive, the @code{n} articles that have arrived most recently will
1393 be fetched.
1213 1394
1214 @vindex gnus-select-group-hook 1395 @vindex gnus-select-group-hook
1215 @vindex gnus-auto-select-first 1396 @vindex gnus-auto-select-first
1216 @code{gnus-auto-select-first} control whether any articles are selected 1397 @code{gnus-auto-select-first} control whether any articles are selected
1217 automatically when entering a group. 1398 automatically when entering a group with the @kbd{SPACE} command.
1218 1399
1219 @table @code 1400 @table @code
1220 1401
1221 @item nil 1402 @item nil
1222 Don't select any articles when entering the group. Just display the 1403 Don't select any articles when entering the group. Just display the
1236 selected. 1417 selected.
1237 1418
1238 1419
1239 @node Subscription Commands 1420 @node Subscription Commands
1240 @section Subscription Commands 1421 @section Subscription Commands
1241 @cindex subscribing 1422 @cindex subscription
1242 1423
1243 @table @kbd 1424 @table @kbd
1244 1425
1245 @item S t 1426 @item S t
1246 @itemx u 1427 @itemx u
1295 @item S C-k 1476 @item S C-k
1296 @kindex S C-k (Group) 1477 @kindex S C-k (Group)
1297 @findex gnus-group-kill-level 1478 @findex gnus-group-kill-level
1298 Kill all groups on a certain level (@code{gnus-group-kill-level}). 1479 Kill all groups on a certain level (@code{gnus-group-kill-level}).
1299 These groups can't be yanked back after killing, so this command should 1480 These groups can't be yanked back after killing, so this command should
1300 be used with some caution. The only thing where this command comes in 1481 be used with some caution. The only time where this command comes in
1301 really handy is when you have a @file{.newsrc} with lots of unsubscribed 1482 really handy is when you have a @file{.newsrc} with lots of unsubscribed
1302 groups that you want to get rid off. @kbd{S C-k} on level @code{7} will 1483 groups that you want to get rid off. @kbd{S C-k} on level 7 will
1303 kill off all unsubscribed groups that do not have message numbers in the 1484 kill off all unsubscribed groups that do not have message numbers in the
1304 @file{.newsrc} file. 1485 @file{.newsrc} file.
1305 1486
1306 @end table 1487 @end table
1307 1488
1308 Also @pxref{Group Levels}. 1489 Also @pxref{Group Levels}.
1490
1491
1492 @node Group Data
1493 @section Group Data
1494
1495 @table @kbd
1496
1497 @item c
1498 @kindex c (Group)
1499 @findex gnus-group-catchup-current
1500 @vindex gnus-group-catchup-group-hook
1501 Mark all unticked articles in this group as read
1502 (@code{gnus-group-catchup-current}).
1503 @code{gnus-group-catchup-group-hook} is called when catching up a group from
1504 the group buffer.
1505
1506 @item C
1507 @kindex C (Group)
1508 @findex gnus-group-catchup-current-all
1509 Mark all articles in this group, even the ticked ones, as read
1510 (@code{gnus-group-catchup-current-all}).
1511
1512 @item M-c
1513 @kindex M-c (Group)
1514 @findex gnus-group-clear-data
1515 Clear the data from the current group---nix out marks and the list of
1516 read articles (@code{gnus-group-clear-data}).
1517
1518 @item M-x gnus-group-clear-data-on-native-groups
1519 @kindex M-x gnus-group-clear-data-on-native-groups
1520 @findex gnus-group-clear-data-on-native-groups
1521 If you have switched from one @sc{nntp} server to another, all your marks
1522 and read ranges have become worthless. You can use this command to
1523 clear out all data that you have on your native groups. Use with
1524 caution.
1525
1526 @end table
1309 1527
1310 1528
1311 @node Group Levels 1529 @node Group Levels
1312 @section Group Levels 1530 @section Group Levels
1313 @cindex group level 1531 @cindex group level
1532 @cindex level
1314 1533
1315 All groups have a level of @dfn{subscribedness}. For instance, if a 1534 All groups have a level of @dfn{subscribedness}. For instance, if a
1316 group is on level 2, it is more subscribed than a group on level 5. You 1535 group is on level 2, it is more subscribed than a group on level 5. You
1317 can ask Gnus to just list groups on a given level or lower 1536 can ask Gnus to just list groups on a given level or lower
1318 (@pxref{Listing Groups}), or to just check for new articles in groups on 1537 (@pxref{Listing Groups}), or to just check for new articles in groups on
1345 articles you have read, etc, stored. This distinction between dead and 1564 articles you have read, etc, stored. This distinction between dead and
1346 living groups isn't done because it is nice or clever, it is done purely 1565 living groups isn't done because it is nice or clever, it is done purely
1347 for reasons of efficiency. 1566 for reasons of efficiency.
1348 1567
1349 It is recommended that you keep all your mail groups (if any) on quite 1568 It is recommended that you keep all your mail groups (if any) on quite
1350 low levels (eg. 1 or 2). 1569 low levels (e.g. 1 or 2).
1351 1570
1352 If you want to play with the level variables, you should show some care. 1571 If you want to play with the level variables, you should show some care.
1353 Set them once, and don't touch them ever again. Better yet, don't touch 1572 Set them once, and don't touch them ever again. Better yet, don't touch
1354 them at all unless you know exactly what you're doing. 1573 them at all unless you know exactly what you're doing.
1355 1574
1387 1606
1388 @vindex gnus-activate-level 1607 @vindex gnus-activate-level
1389 Gnus will normally just activate groups that are on level 1608 Gnus will normally just activate groups that are on level
1390 @code{gnus-activate-level} or less. If you don't want to activate 1609 @code{gnus-activate-level} or less. If you don't want to activate
1391 unsubscribed groups, for instance, you might set this variable to 1610 unsubscribed groups, for instance, you might set this variable to
1392 @code{5}. 1611 5. The default is 6.
1393 1612
1394 1613
1395 @node Group Score 1614 @node Group Score
1396 @section Group Score 1615 @section Group Score
1397 @cindex group score 1616 @cindex group score
1405 group. You can then sort the group buffer based on this score. 1624 group. You can then sort the group buffer based on this score.
1406 Alternatively, you can sort on score and then level. (Taken together, 1625 Alternatively, you can sort on score and then level. (Taken together,
1407 the level and the score is called the @dfn{rank} of the group. A group 1626 the level and the score is called the @dfn{rank} of the group. A group
1408 that is on level 4 and has a score of 1 has a higher rank than a group 1627 that is on level 4 and has a score of 1 has a higher rank than a group
1409 on level 5 that has a score of 300. (The level is the most significant 1628 on level 5 that has a score of 300. (The level is the most significant
1410 part and the score is the least significant part.) 1629 part and the score is the least significant part.))
1411 1630
1412 @findex gnus-summary-bubble-group 1631 @findex gnus-summary-bubble-group
1413 If you want groups you read often to get higher scores than groups you 1632 If you want groups you read often to get higher scores than groups you
1414 read seldom you can add the @code{gnus-summary-bubble-group} function to 1633 read seldom you can add the @code{gnus-summary-bubble-group} function to
1415 the @code{gnus-summary-exit-hook} hook. This will result (after 1634 the @code{gnus-summary-exit-hook} hook. This will result (after
1481 the command to be executed. 1700 the command to be executed.
1482 1701
1483 1702
1484 @node Foreign Groups 1703 @node Foreign Groups
1485 @section Foreign Groups 1704 @section Foreign Groups
1486 1705 @cindex foreign groups
1487 Here are some group mode commands for making and editing general foreign 1706
1707 Below are some group mode commands for making and editing general foreign
1488 groups, as well as commands to ease the creation of a few 1708 groups, as well as commands to ease the creation of a few
1489 special-purpose groups: 1709 special-purpose groups. All these commands insert the newly created
1710 groups under point---@code{gnus-subscribe-newsgroup-method} is not
1711 consulted.
1490 1712
1491 @table @kbd 1713 @table @kbd
1492 1714
1493 @item G m 1715 @item G m
1494 @kindex G m (Group) 1716 @kindex G m (Group)
1495 @findex gnus-group-make-group 1717 @findex gnus-group-make-group
1718 @cindex making groups
1496 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you 1719 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you
1497 for a name, a method and possibly an @dfn{address}. For an easier way 1720 for a name, a method and possibly an @dfn{address}. For an easier way
1498 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}. 1721 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}.
1499 1722
1500 @item G r 1723 @item G r
1501 @kindex G r (Group) 1724 @kindex G r (Group)
1502 @findex gnus-group-rename-group 1725 @findex gnus-group-rename-group
1726 @cindex renaming groups
1503 Rename the current group to something else 1727 Rename the current group to something else
1504 (@code{gnus-group-rename-group}). This is legal only on some 1728 (@code{gnus-group-rename-group}). This is legal only on some
1505 groups---mail groups mostly. This command might very well be quite slow 1729 groups---mail groups mostly. This command might very well be quite slow
1506 on some backends. 1730 on some backends.
1507 1731
1732 @item G c
1733 @kindex G c (Group)
1734 @cindex customizing
1735 @findex gnus-group-customize
1736 Customize the group parameters (@code{gnus-group-customize}).
1737
1508 @item G e 1738 @item G e
1509 @kindex G e (Group) 1739 @kindex G e (Group)
1510 @findex gnus-group-edit-group-method 1740 @findex gnus-group-edit-group-method
1741 @cindex renaming groups
1511 Enter a buffer where you can edit the select method of the current 1742 Enter a buffer where you can edit the select method of the current
1512 group (@code{gnus-group-edit-group-method}). 1743 group (@code{gnus-group-edit-group-method}).
1513 1744
1514 @item G p 1745 @item G p
1515 @kindex G p (Group) 1746 @kindex G p (Group)
1524 (@code{gnus-group-edit-group}). 1755 (@code{gnus-group-edit-group}).
1525 1756
1526 @item G d 1757 @item G d
1527 @kindex G d (Group) 1758 @kindex G d (Group)
1528 @findex gnus-group-make-directory-group 1759 @findex gnus-group-make-directory-group
1529 Make a directory group. You will be prompted for a directory name 1760 @cindex nndir
1530 (@code{gnus-group-make-directory-group}). 1761 Make a directory group (@pxref{Directory Groups}). You will be prompted
1762 for a directory name (@code{gnus-group-make-directory-group}).
1531 1763
1532 @item G h 1764 @item G h
1533 @kindex G h (Group) 1765 @kindex G h (Group)
1766 @cindex help group
1534 @findex gnus-group-make-help-group 1767 @findex gnus-group-make-help-group
1535 Make the Gnus help group (@code{gnus-group-make-help-group}). 1768 Make the Gnus help group (@code{gnus-group-make-help-group}).
1536 1769
1537 @item G a 1770 @item G a
1538 @kindex G a (Group) 1771 @kindex G a (Group)
1772 @cindex (ding) archive
1773 @cindex archive group
1539 @findex gnus-group-make-archive-group 1774 @findex gnus-group-make-archive-group
1540 @vindex gnus-group-archive-directory 1775 @vindex gnus-group-archive-directory
1541 @vindex gnus-group-recent-archive-directory 1776 @vindex gnus-group-recent-archive-directory
1542 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By 1777 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
1543 default a group pointing to the most recent articles will be created 1778 default a group pointing to the most recent articles will be created
1545 group will be created from @code{gnus-group-archive-directory}. 1780 group will be created from @code{gnus-group-archive-directory}.
1546 1781
1547 @item G k 1782 @item G k
1548 @kindex G k (Group) 1783 @kindex G k (Group)
1549 @findex gnus-group-make-kiboze-group 1784 @findex gnus-group-make-kiboze-group
1785 @cindex nnkiboze
1550 Make a kiboze group. You will be prompted for a name, for a regexp to 1786 Make a kiboze group. You will be prompted for a name, for a regexp to
1551 match groups to be ``included'' in the kiboze group, and a series of 1787 match groups to be ``included'' in the kiboze group, and a series of
1552 strings to match on headers (@code{gnus-group-make-kiboze-group}). 1788 strings to match on headers (@code{gnus-group-make-kiboze-group}).
1553 @xref{Kibozed Groups} 1789 @xref{Kibozed Groups}.
1554 1790
1555 @item G D 1791 @item G D
1556 @kindex G D (Group) 1792 @kindex G D (Group)
1557 @findex gnus-group-enter-directory 1793 @findex gnus-group-enter-directory
1794 @cindex nneething
1558 Read an arbitrary directory as if with were a newsgroup with the 1795 Read an arbitrary directory as if with were a newsgroup with the
1559 @code{nneething} backend (@code{gnus-group-enter-directory}). 1796 @code{nneething} backend (@code{gnus-group-enter-directory}).
1797 @xref{Anything Groups}.
1560 1798
1561 @item G f 1799 @item G f
1562 @kindex G f (Group) 1800 @kindex G f (Group)
1563 @findex gnus-group-make-doc-group 1801 @findex gnus-group-make-doc-group
1564 @cindex ClariNet Briefs 1802 @cindex ClariNet Briefs
1803 @cindex nndoc
1565 Make a group based on some file or other 1804 Make a group based on some file or other
1566 (@code{gnus-group-make-doc-group}). If you give a prefix to this 1805 (@code{gnus-group-make-doc-group}). If you give a prefix to this
1567 command, you will be prompted for a file name and a file type. 1806 command, you will be prompted for a file name and a file type.
1568 Currently supported types are @code{babyl}, @code{mbox}, @code{digest}, 1807 Currently supported types are @code{babyl}, @code{mbox}, @code{digest},
1569 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and 1808 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and
1570 @code{forward}. If you run this command without a prefix, Gnus will 1809 @code{forward}. If you run this command without a prefix, Gnus will
1571 guess at the file type. 1810 guess at the file type. @xref{Document Groups}.
1811
1812 @item G w
1813 @kindex G w (Group)
1814 @findex gnus-group-make-web-group
1815 @cindex DejaNews
1816 @cindex Alta Vista
1817 @cindex InReference
1818 @cindex nnweb
1819 Make an ephemeral group based on a web search
1820 (@code{gnus-group-make-web-group}). If you give a prefix to this
1821 command, make a solid group instead. You will be prompted for the
1822 search engine type and the search string. Legal search engine types
1823 include @code{dejanews}, @code{altavista} and @code{reference}.
1824 @xref{Web Searches}.
1572 1825
1573 @item G DEL 1826 @item G DEL
1574 @kindex G DEL (Group) 1827 @kindex G DEL (Group)
1575 @findex gnus-group-delete-group 1828 @findex gnus-group-delete-group
1576 This function will delete the current group 1829 This function will delete the current group
1581 1834
1582 @item G V 1835 @item G V
1583 @kindex G V (Group) 1836 @kindex G V (Group)
1584 @findex gnus-group-make-empty-virtual 1837 @findex gnus-group-make-empty-virtual
1585 Make a new, fresh, empty @code{nnvirtual} group 1838 Make a new, fresh, empty @code{nnvirtual} group
1586 (@code{gnus-group-make-empty-virtual}). 1839 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}.
1587 1840
1588 @item G v 1841 @item G v
1589 @kindex G v (Group) 1842 @kindex G v (Group)
1590 @findex gnus-group-add-to-virtual 1843 @findex gnus-group-add-to-virtual
1591 Add the current group to an @code{nnvirtual} group 1844 Add the current group to an @code{nnvirtual} group
1594 1847
1595 @xref{Select Methods} for more information on the various select 1848 @xref{Select Methods} for more information on the various select
1596 methods. 1849 methods.
1597 1850
1598 @vindex gnus-activate-foreign-newsgroups 1851 @vindex gnus-activate-foreign-newsgroups
1599 If the @code{gnus-activate-foreign-newsgroups} is a positive number, 1852 If @code{gnus-activate-foreign-newsgroups} is a positive number,
1600 Gnus will check all foreign groups with this level or lower at startup. 1853 Gnus will check all foreign groups with this level or lower at startup.
1601 This might take quite a while, especially if you subscribe to lots of 1854 This might take quite a while, especially if you subscribe to lots of
1602 groups from different @sc{nntp} servers. 1855 groups from different @sc{nntp} servers.
1603 1856
1604 1857
1605 @node Group Parameters 1858 @node Group Parameters
1606 @section Group Parameters 1859 @section Group Parameters
1607 @cindex group parameters 1860 @cindex group parameters
1608
1609 Gnus stores all information on a group in a list that is usually known
1610 as the @dfn{group info}. This list has from three to six elements.
1611 Here's an example info.
1612
1613 @lisp
1614 ("nnml:mail.ding" 3 ((1 . 232) 244 (256 . 270)) ((tick 246 249))
1615 (nnml "private") ((to-address . "ding@@ifi.uio.no")))
1616 @end lisp
1617
1618 The first element is the @dfn{group name}, as Gnus knows the group,
1619 anyway. The second element is the @dfn{subscription level}, which
1620 normally is a small integer. The third element is a list of ranges of
1621 read articles. The fourth element is a list of lists of article marks
1622 of various kinds. The fifth element is the select method (or virtual
1623 server, if you like). The sixth element is a list of @dfn{group
1624 parameters}, which is what this section is about.
1625
1626 Any of the last three elements may be missing if they are not required.
1627 In fact, the vast majority of groups will normally only have the first
1628 three elements, which saves quite a lot of cons cells.
1629 1861
1630 The group parameters store information local to a particular group: 1862 The group parameters store information local to a particular group:
1631 1863
1632 @table @code 1864 @table @code
1633 @item to-address 1865 @item to-address
1664 @code{Reply-To} headers that point back to the listserv itself. This is 1896 @code{Reply-To} headers that point back to the listserv itself. This is
1665 broken behavior. So there! 1897 broken behavior. So there!
1666 1898
1667 @item to-group 1899 @item to-group
1668 @cindex to-group 1900 @cindex to-group
1669 If the group parameter list contains an element like @code{(to-group 1901 Elements like @code{(to-group . "some.group.name")} means that all
1670 . "some.group.name")}, all posts will be sent to that group. 1902 posts in that group will be sent to @code{some.group.name}.
1903
1904 @item newsgroup
1905 @cindex newsgroup
1906 If this symbol is present in the group parameter list, Gnus will treat
1907 all responses as if they were responses to news articles. This can be
1908 useful if you have a mail group that's really a mirror of a news group.
1909
1910 @item gcc-self
1911 @cindex gcc-self
1912 If this symbol is present in the group parameter list and set to
1913 @code{t}, new composed messages will be @code{Gcc}'d to the current
1914 group. If it is present and set to @code{none}, no @code{Gcc:} header
1915 will be generated, if it is present and a string, this string will be
1916 inserted literally as a @code{gcc} header (this symbol takes precedence over
1917 any default @code{Gcc} rules as described later).
1671 1918
1672 @item auto-expire 1919 @item auto-expire
1673 @cindex auto-expire 1920 @cindex auto-expire
1674 If this symbol is present in the group parameter list, all articles that 1921 If the group parameter has an element that looks like @code{(auto-expire
1675 are read will be marked as expirable. For an alternative approach, 1922 . t)}, , all articles that are read will be marked as expirable. For an
1676 @pxref{Expiring Mail}. 1923 alternative approach, @pxref{Expiring Mail}.
1677 1924
1678 @item total-expire 1925 @item total-expire
1679 @cindex total-expire 1926 @cindex total-expire
1680 If this symbol is present, all read articles will be put through the 1927 If the group parameter has an element that looks like
1928 @code{(total-expire . t)}, all read articles will be put through the
1681 expiry process, even if they are not marked as expirable. Use with 1929 expiry process, even if they are not marked as expirable. Use with
1682 caution. 1930 caution.
1683 1931
1684 @item expiry-wait 1932 @item expiry-wait
1685 @cindex expiry-wait 1933 @cindex expiry-wait
1686 @vindex nnmail-expiry-wait-function 1934 @vindex nnmail-expiry-wait-function
1687 If the group parameter has an element that looks like @code{(expiry-wait 1935 If the group parameter has an element that looks like @code{(expiry-wait
1689 @code{nnmail-expiry-wait-function} when expiring expirable messages. 1937 @code{nnmail-expiry-wait-function} when expiring expirable messages.
1690 The value can either be a number of days (not necessarily an integer) or 1938 The value can either be a number of days (not necessarily an integer) or
1691 the symbols @code{never} or @code{immediate}. 1939 the symbols @code{never} or @code{immediate}.
1692 1940
1693 @item score-file 1941 @item score-file
1942 @cindex score file group parameter
1694 Elements that look like @code{(score-file . "file")} will make 1943 Elements that look like @code{(score-file . "file")} will make
1695 @samp{file} into the current score file for the group in question. This 1944 @file{file} into the current score file for the group in question. This
1696 means that all score commands you issue will end up in that file. 1945 means that all score commands you issue will end up in that file.
1946
1947 @item adapt-file
1948 @cindex adapt file group parameter
1949 Elements that look like @code{(adapt-file . "file")} will make
1950 @file{file} into the current adaptive file for the group in question.
1951 All adaptive score entries will be put into this file.
1697 1952
1698 @item admin-address 1953 @item admin-address
1699 When unsubscribing to a mailing list you should never send the 1954 When unsubscribing to a mailing list you should never send the
1700 unsubscription notice to the mailing list itself. Instead, you'd send 1955 unsubscription notice to the mailing list itself. Instead, you'd send
1701 messages to the administrative address. This parameter allows you to 1956 messages to the administrative address. This parameter allows you to
1702 put the admin address somewhere convenient. 1957 put the admin address somewhere convenient.
1703 1958
1959 @item display
1960 Elements that look like @code{(display . MODE)} says which articles to
1961 display on entering the group. Legal values are:
1962
1963 @table @code
1964 @item all
1965 Display all articles, both read and unread.
1966
1967 @item default
1968 Display the default visible articles, which normally includes unread and
1969 ticked articles.
1970 @end table
1971
1704 @item comment 1972 @item comment
1705 This parameter allows you to enter a arbitrary comment on the group. 1973 Elements that look like @code{(comment . "This is a comment")}
1974 are arbitrary comments on the group. They are currently ignored by
1975 Gnus, but provide a place for you to store information on particular
1976 groups.
1706 1977
1707 @item @var{(variable form)} 1978 @item @var{(variable form)}
1708 You can use the group parameters to set variables local to the group you 1979 You can use the group parameters to set variables local to the group you
1709 are entering. Say you want to turn threading off in 1980 are entering. If you want to turn threading off in @samp{news.answers},
1710 @samp{news.answers}. You'd then put @code{(gnus-show-threads nil)} in 1981 you could put @code{(gnus-show-threads nil)} in the group parameters of
1711 the group parameters of that group. @code{gnus-show-threads} will be 1982 that group. @code{gnus-show-threads} will be made into a local variable
1712 made into a local variable in the summary buffer you enter, and the form 1983 in the summary buffer you enter, and the form @code{nil} will be
1713 @code{nil} will be @code{eval}ed there. 1984 @code{eval}ed there.
1714 1985
1715 This can also be used as a group-specific hook function, if you'd like. 1986 This can also be used as a group-specific hook function, if you'd like.
1716 If you want to hear a beep when you enter the group 1987 If you want to hear a beep when you enter a group, you could put
1717 @samp{alt.binaries.pictures.furniture}, you could put something like 1988 something like @code{(dummy-variable (ding))} in the parameters of that
1718 @code{(dummy-variable (ding))} in the parameters of that group. 1989 group. @code{dummy-variable} will be set to the result of the
1719 @code{dummy-variable} will be set to the result of the @code{(ding)} 1990 @code{(ding)} form, but who cares?
1720 form, but who cares? 1991
1721 1992 @end table
1722 @end table 1993
1723 1994 Use the @kbd{G p} command to edit group parameters of a group.
1724 If you want to change the group info you can use the @kbd{G E} command 1995
1725 to enter a buffer where you can edit it. 1996 Also @pxref{Topic Parameters}.
1726
1727 You usually don't want to edit the entire group info, so you'd be better
1728 off using the @kbd{G p} command to just edit the group parameters.
1729 1997
1730 1998
1731 @node Listing Groups 1999 @node Listing Groups
1732 @section Listing Groups 2000 @section Listing Groups
1733 @cindex group listing 2001 @cindex group listing
1742 @kindex l (Group) 2010 @kindex l (Group)
1743 @findex gnus-group-list-groups 2011 @findex gnus-group-list-groups
1744 List all groups that have unread articles 2012 List all groups that have unread articles
1745 (@code{gnus-group-list-groups}). If the numeric prefix is used, this 2013 (@code{gnus-group-list-groups}). If the numeric prefix is used, this
1746 command will list only groups of level ARG and lower. By default, it 2014 command will list only groups of level ARG and lower. By default, it
1747 only lists groups of level five or lower (i.e., just subscribed groups). 2015 only lists groups of level five (i. e.,
2016 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed
2017 groups).
1748 2018
1749 @item L 2019 @item L
1750 @itemx A u 2020 @itemx A u
1751 @kindex A u (Group) 2021 @kindex A u (Group)
1752 @kindex L (Group) 2022 @kindex L (Group)
1792 @kindex A A (Group) 2062 @kindex A A (Group)
1793 @findex gnus-group-list-active 2063 @findex gnus-group-list-active
1794 List absolutely all groups that are in the active file(s) of the 2064 List absolutely all groups that are in the active file(s) of the
1795 server(s) you are connected to (@code{gnus-group-list-active}). This 2065 server(s) you are connected to (@code{gnus-group-list-active}). This
1796 might very well take quite a while. It might actually be a better idea 2066 might very well take quite a while. It might actually be a better idea
1797 to do a @kbd{A m} to list all matching, and just give @samp{.} as the 2067 to do a @kbd{A M} to list all matching, and just give @samp{.} as the
1798 thing to match on. 2068 thing to match on. Also note that this command may list group that
2069 don't exist (yet)---these will be listed as if they are killed groups.
2070 Take the output with some grains of salt.
1799 2071
1800 @item A a 2072 @item A a
1801 @kindex A a (Group) 2073 @kindex A a (Group)
1802 @findex gnus-group-apropos 2074 @findex gnus-group-apropos
1803 List all groups that have names that match a regexp 2075 List all groups that have names that match a regexp
1841 2113
1842 @item gnus-group-sort-by-alphabet 2114 @item gnus-group-sort-by-alphabet
1843 @findex gnus-group-sort-by-alphabet 2115 @findex gnus-group-sort-by-alphabet
1844 Sort the group names alphabetically. This is the default. 2116 Sort the group names alphabetically. This is the default.
1845 2117
2118 @item gnus-group-sort-by-real-name
2119 @findex gnus-group-sort-by-real-name
2120 Sort the group alphabetically on the real (unprefixed) group names.
2121
1846 @item gnus-group-sort-by-level 2122 @item gnus-group-sort-by-level
1847 @findex gnus-group-sort-by-level 2123 @findex gnus-group-sort-by-level
1848 Sort by group level. 2124 Sort by group level.
1849 2125
1850 @item gnus-group-sort-by-score 2126 @item gnus-group-sort-by-score
1860 @findex gnus-group-sort-by-unread 2136 @findex gnus-group-sort-by-unread
1861 Sort by number of unread articles. 2137 Sort by number of unread articles.
1862 2138
1863 @item gnus-group-sort-by-method 2139 @item gnus-group-sort-by-method
1864 @findex gnus-group-sort-by-method 2140 @findex gnus-group-sort-by-method
1865 Sort by alphabetically on the select method. 2141 Sort alphabetically on the select method.
1866 2142
1867 2143
1868 @end table 2144 @end table
1869 2145
1870 @code{gnus-group-sort-function} can also be a list of sorting 2146 @code{gnus-group-sort-function} can also be a list of sorting
1901 (@code{gnus-group-sort-groups-by-score}). 2177 (@code{gnus-group-sort-groups-by-score}).
1902 2178
1903 @item G S r 2179 @item G S r
1904 @kindex G S r (Group) 2180 @kindex G S r (Group)
1905 @findex gnus-group-sort-groups-by-rank 2181 @findex gnus-group-sort-groups-by-rank
1906 Sort the group buffer by group level 2182 Sort the group buffer by group rank
1907 (@code{gnus-group-sort-groups-by-rank}). 2183 (@code{gnus-group-sort-groups-by-rank}).
1908 2184
1909 @item G S m 2185 @item G S m
1910 @kindex G S m (Group) 2186 @kindex G S m (Group)
1911 @findex gnus-group-sort-groups-by-method 2187 @findex gnus-group-sort-groups-by-method
1913 (@code{gnus-group-sort-groups-by-method}). 2189 (@code{gnus-group-sort-groups-by-method}).
1914 2190
1915 @end table 2191 @end table
1916 2192
1917 When given a prefix, all these commands will sort in reverse order. 2193 When given a prefix, all these commands will sort in reverse order.
2194
2195 You can also sort a subset of the groups:
2196
2197 @table @kbd
2198 @item G P a
2199 @kindex G P a (Group)
2200 @findex gnus-group-sort-selected-groups-by-alphabet
2201 Sort the process/prefixed groups in the group buffer alphabetically by
2202 group name (@code{gnus-group-sort-selected-groups-by-alphabet}).
2203
2204 @item G P u
2205 @kindex G P u (Group)
2206 @findex gnus-group-sort-selected-groups-by-unread
2207 Sort the process/prefixed groups in the group buffer by the number of
2208 unread articles (@code{gnus-group-sort-selected-groups-by-unread}).
2209
2210 @item G P l
2211 @kindex G P l (Group)
2212 @findex gnus-group-sort-selected-groups-by-level
2213 Sort the process/prefixed groups in the group buffer by group level
2214 (@code{gnus-group-sort-selected-groups-by-level}).
2215
2216 @item G P v
2217 @kindex G P v (Group)
2218 @findex gnus-group-sort-selected-groups-by-score
2219 Sort the process/prefixed groups in the group buffer by group score
2220 (@code{gnus-group-sort-selected-groups-by-score}).
2221
2222 @item G P r
2223 @kindex G P r (Group)
2224 @findex gnus-group-sort-selected-groups-by-rank
2225 Sort the process/prefixed groups in the group buffer by group rank
2226 (@code{gnus-group-sort-selected-groups-by-rank}).
2227
2228 @item G P m
2229 @kindex G P m (Group)
2230 @findex gnus-group-sort-selected-groups-by-method
2231 Sort the process/prefixed groups in the group buffer alphabetically by
2232 backend name (@code{gnus-group-sort-selected-groups-by-method}).
2233
2234 @end table
2235
1918 2236
1919 2237
1920 @node Group Maintenance 2238 @node Group Maintenance
1921 @section Group Maintenance 2239 @section Group Maintenance
1922 @cindex bogus groups 2240 @cindex bogus groups
1964 (@code{gnus-group-browse-foreign-server}). 2282 (@code{gnus-group-browse-foreign-server}).
1965 @end table 2283 @end table
1966 2284
1967 @findex gnus-browse-mode 2285 @findex gnus-browse-mode
1968 A new buffer with a list of available groups will appear. This buffer 2286 A new buffer with a list of available groups will appear. This buffer
1969 will be use the @code{gnus-browse-mode}. This buffer looks a bit 2287 will be use the @code{gnus-browse-mode}. This buffer looks a bit (well,
1970 (well, a lot) like a normal group buffer, but with one major difference 2288 a lot) like a normal group buffer.
1971 - you can't enter any of the groups. If you want to read any of the
1972 news available on that server, you have to subscribe to the groups you
1973 think may be interesting, and then you have to exit this buffer. The
1974 new groups will be added to the group buffer, and then you can read them
1975 as you would any other group.
1976
1977 Future versions of Gnus may possibly permit reading groups straight from
1978 the browse buffer.
1979 2289
1980 Here's a list of keystrokes available in the browse mode: 2290 Here's a list of keystrokes available in the browse mode:
1981 2291
1982 @table @kbd 2292 @table @kbd
1983 @item n 2293 @item n
2042 Quit Gnus (@code{gnus-group-exit}). 2352 Quit Gnus (@code{gnus-group-exit}).
2043 2353
2044 @item Q 2354 @item Q
2045 @kindex Q (Group) 2355 @kindex Q (Group)
2046 @findex gnus-group-quit 2356 @findex gnus-group-quit
2047 Quit Gnus without saving any startup files (@code{gnus-group-quit}). 2357 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}).
2358 The dribble file will be saved, though (@pxref{Auto Save}).
2048 @end table 2359 @end table
2049 2360
2050 @vindex gnus-exit-gnus-hook 2361 @vindex gnus-exit-gnus-hook
2051 @vindex gnus-suspend-gnus-hook 2362 @vindex gnus-suspend-gnus-hook
2052 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and 2363 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and
2061 trying to customize meta-variables. 2372 trying to customize meta-variables.
2062 2373
2063 Note: 2374 Note:
2064 2375
2065 @quotation 2376 @quotation
2066 Miss Lisa Cannifax, while sitting in English class, feels her feet go 2377 Miss Lisa Cannifax, while sitting in English class, felt her feet go
2067 numbly heavy and herself fall into a hazy trance as the boy sitting 2378 numbly heavy and herself fall into a hazy trance as the boy sitting
2068 behind her drew repeated lines with his pencil across the back of her 2379 behind her drew repeated lines with his pencil across the back of her
2069 plastic chair. 2380 plastic chair.
2070 @end quotation 2381 @end quotation
2071 2382
2079 here, your sex groups over there, and the rest (what, two groups or so?) 2390 here, your sex groups over there, and the rest (what, two groups or so?)
2080 you put in some misc section that you never bother with anyway. You can 2391 you put in some misc section that you never bother with anyway. You can
2081 even group the Emacs sex groups as a sub-topic to either the Emacs 2392 even group the Emacs sex groups as a sub-topic to either the Emacs
2082 groups or the sex groups---or both! Go wild! 2393 groups or the sex groups---or both! Go wild!
2083 2394
2395 Here's an example:
2396
2397 @example
2398 Gnus
2399 Emacs -- I wuw it!
2400 3: comp.emacs
2401 2: alt.religion.emacs
2402 Naughty Emacs
2403 452: alt.sex.emacs
2404 0: comp.talk.emacs.recovery
2405 Misc
2406 8: comp.binaries.fractals
2407 13: comp.sources.unix
2408 @end example
2409
2084 @findex gnus-topic-mode 2410 @findex gnus-topic-mode
2085 @kindex t (Group) 2411 @kindex t (Group)
2086 To get this @emph{fab} functionality you simply turn on (ooh!) the 2412 To get this @emph{fab} functionality you simply turn on (ooh!) the
2087 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This 2413 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This
2088 is a toggling command.) 2414 is a toggling command.)
2101 @end lisp 2427 @end lisp
2102 2428
2103 @menu 2429 @menu
2104 * Topic Variables:: How to customize the topics the Lisp Way. 2430 * Topic Variables:: How to customize the topics the Lisp Way.
2105 * Topic Commands:: Interactive E-Z commands. 2431 * Topic Commands:: Interactive E-Z commands.
2432 * Topic Sorting:: Sorting each topic individually.
2106 * Topic Topology:: A map of the world. 2433 * Topic Topology:: A map of the world.
2434 * Topic Parameters:: Parameters that apply to all groups in a topic.
2107 @end menu 2435 @end menu
2108 2436
2109 2437
2110 @node Topic Variables 2438 @node Topic Variables
2111 @subsection Topic Variables 2439 @subsection Topic Variables
2114 Now, if you select a topic, if will fold/unfold that topic, which is 2442 Now, if you select a topic, if will fold/unfold that topic, which is
2115 really neat, I think. 2443 really neat, I think.
2116 2444
2117 @vindex gnus-topic-line-format 2445 @vindex gnus-topic-line-format
2118 The topic lines themselves are created according to the 2446 The topic lines themselves are created according to the
2119 @code{gnus-topic-line-format} variable. @xref{Formatting Variables}. 2447 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}).
2120 Elements allowed are: 2448 Legal elements are:
2121 2449
2122 @table @samp 2450 @table @samp
2123 @item i 2451 @item i
2124 Indentation. 2452 Indentation.
2125 @item n 2453 @item n
2137 @end table 2465 @end table
2138 2466
2139 @vindex gnus-topic-indent-level 2467 @vindex gnus-topic-indent-level
2140 Each sub-topic (and the groups in the sub-topics) will be indented with 2468 Each sub-topic (and the groups in the sub-topics) will be indented with
2141 @code{gnus-topic-indent-level} times the topic level number of spaces. 2469 @code{gnus-topic-indent-level} times the topic level number of spaces.
2142 The default is @code{2}. 2470 The default is 2.
2143 2471
2144 @vindex gnus-topic-mode-hook 2472 @vindex gnus-topic-mode-hook
2145 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. 2473 @code{gnus-topic-mode-hook} is called in topic minor mode buffers.
2474
2475 @vindex gnus-topic-display-empty-topics
2476 The @code{gnus-topic-display-empty-topics} says whether to display even
2477 topics that have no unread articles in them. The default is @code{t}.
2146 2478
2147 2479
2148 @node Topic Commands 2480 @node Topic Commands
2149 @subsection Topic Commands 2481 @subsection Topic Commands
2150 @cindex topic commands 2482 @cindex topic commands
2154 definitions slightly. 2486 definitions slightly.
2155 2487
2156 @table @kbd 2488 @table @kbd
2157 2489
2158 @item T n 2490 @item T n
2159 @kindex T n (Group) 2491 @kindex T n (Topic)
2160 @findex gnus-topic-create-topic 2492 @findex gnus-topic-create-topic
2161 Prompt for a new topic name and create it 2493 Prompt for a new topic name and create it
2162 (@code{gnus-topic-create-topic}). 2494 (@code{gnus-topic-create-topic}).
2163 2495
2164 @item T m 2496 @item T m
2165 @kindex T m (Group) 2497 @kindex T m (Topic)
2166 @findex gnus-topic-move-group 2498 @findex gnus-topic-move-group
2167 Move the current group to some other topic 2499 Move the current group to some other topic
2168 (@code{gnus-topic-move-group}). This command understands the 2500 (@code{gnus-topic-move-group}). This command uses the process/prefix
2169 process/prefix convention (@pxref{Process/Prefix}). 2501 convention (@pxref{Process/Prefix}).
2170 2502
2171 @item T c 2503 @item T c
2172 @kindex T c (Group) 2504 @kindex T c (Topic)
2173 @findex gnus-topic-copy-group 2505 @findex gnus-topic-copy-group
2174 Copy the current group to some other topic 2506 Copy the current group to some other topic
2175 (@code{gnus-topic-copy-group}). This command understands the 2507 (@code{gnus-topic-copy-group}). This command uses the process/prefix
2176 process/prefix convention (@pxref{Process/Prefix}). 2508 convention (@pxref{Process/Prefix}).
2177 2509
2178 @item T D 2510 @item T D
2179 @kindex T D (Group) 2511 @kindex T D (Topic)
2180 @findex gnus-topic-remove-group 2512 @findex gnus-topic-remove-group
2181 Remove a group from the current topic (@code{gnus-topic-remove-group}). 2513 Remove a group from the current topic (@code{gnus-topic-remove-group}).
2182 This command understands the process/prefix convention 2514 This command uses the process/prefix convention
2183 (@pxref{Process/Prefix}). 2515 (@pxref{Process/Prefix}).
2184 2516
2185 @item T M 2517 @item T M
2186 @kindex T M (Group) 2518 @kindex T M (Topic)
2187 @findex gnus-topic-move-matching 2519 @findex gnus-topic-move-matching
2188 Move all groups that match some regular expression to a topic 2520 Move all groups that match some regular expression to a topic
2189 (@code{gnus-topic-move-matching}). 2521 (@code{gnus-topic-move-matching}).
2190 2522
2191 @item T C 2523 @item T C
2192 @kindex T C (Group) 2524 @kindex T C (Topic)
2193 @findex gnus-topic-copy-matching 2525 @findex gnus-topic-copy-matching
2194 Copy all groups that match some regular expression to a topic 2526 Copy all groups that match some regular expression to a topic
2195 (@code{gnus-topic-copy-matching}). 2527 (@code{gnus-topic-copy-matching}).
2196 2528
2197 @item T # 2529 @item T #
2198 @kindex T # (Group) 2530 @kindex T # (Topic)
2199 @findex gnus-topic-mark-topic 2531 @findex gnus-topic-mark-topic
2200 Mark all groups in the current topic with the process mark 2532 Mark all groups in the current topic with the process mark
2201 (@code{gnus-topic-mark-topic}). 2533 (@code{gnus-topic-mark-topic}).
2202 2534
2203 @item T M-# 2535 @item T M-#
2204 @kindex T M-# (Group) 2536 @kindex T M-# (Topic)
2205 @findex gnus-topic-unmark-topic 2537 @findex gnus-topic-unmark-topic
2206 Remove the process mark from all groups in the current topic 2538 Remove the process mark from all groups in the current topic
2207 (@code{gnus-topic-unmark-topic}). 2539 (@code{gnus-topic-unmark-topic}).
2208 2540
2209 @item RET 2541 @item RET
2210 @kindex RET (Group) 2542 @kindex RET (Topic)
2211 @findex gnus-topic-select-group 2543 @findex gnus-topic-select-group
2212 @itemx SPACE 2544 @itemx SPACE
2213 Either select a group or fold a topic (@code{gnus-topic-select-group}). 2545 Either select a group or fold a topic (@code{gnus-topic-select-group}).
2214 When you perform this command on a group, you'll enter the group, as 2546 When you perform this command on a group, you'll enter the group, as
2215 usual. When done on a topic line, the topic will be folded (if it was 2547 usual. When done on a topic line, the topic will be folded (if it was
2216 visible) or unfolded (if it was folded already). So it's basically a 2548 visible) or unfolded (if it was folded already). So it's basically a
2217 toggling command on topics. In addition, if you give a numerical 2549 toggling command on topics. In addition, if you give a numerical
2218 prefix, group on that level (and lower) will be displayed. 2550 prefix, group on that level (and lower) will be displayed.
2219 2551
2220 @item T TAB 2552 @item T TAB
2221 @kindex T TAB (Group) 2553 @kindex T TAB (Topic)
2222 @findex gnus-topic-indent 2554 @findex gnus-topic-indent
2223 ``Indent'' the current topic so that it becomes a sub-topic of the 2555 ``Indent'' the current topic so that it becomes a sub-topic of the
2224 previous topic (@code{gnus-topic-indent}). If given a prefix, 2556 previous topic (@code{gnus-topic-indent}). If given a prefix,
2225 ``un-indent'' the topic instead. 2557 ``un-indent'' the topic instead.
2226 2558
2227 @item C-k 2559 @item C-k
2228 @kindex C-k (Group) 2560 @kindex C-k (Topic)
2229 @findex gnus-topic-kill-group 2561 @findex gnus-topic-kill-group
2230 Kill a group or topic (@code{gnus-topic-kill-group}). 2562 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the
2563 topic will be removed along with the topic.
2231 2564
2232 @item C-y 2565 @item C-y
2233 @kindex C-y (Group) 2566 @kindex C-y (Topic)
2234 @findex gnus-topic-yank-group 2567 @findex gnus-topic-yank-group
2235 Yank the previously killed group or topic (@code{gnus-topic-yank-group}). 2568 Yank the previously killed group or topic
2236 Note that all topics will be yanked before all groups. 2569 (@code{gnus-topic-yank-group}). Note that all topics will be yanked
2570 before all groups.
2237 2571
2238 @item T r 2572 @item T r
2239 @kindex T r (Group) 2573 @kindex T r (Topic)
2240 @findex gnus-topic-rename 2574 @findex gnus-topic-rename
2241 Rename a topic (@code{gnus-topic-rename}). 2575 Rename a topic (@code{gnus-topic-rename}).
2242 2576
2243 @item T DEL 2577 @item T DEL
2244 @kindex T DEL (Group) 2578 @kindex T DEL (Topic)
2245 @findex gnus-topic-delete 2579 @findex gnus-topic-delete
2246 Delete an empty topic (@code{gnus-topic-delete}). 2580 Delete an empty topic (@code{gnus-topic-delete}).
2247 2581
2248 @item A T 2582 @item A T
2249 @kindex A T (Group) 2583 @kindex A T (Topic)
2250 @findex gnus-topic-list-active 2584 @findex gnus-topic-list-active
2251 List all groups that Gnus knows about in a topics-ified way 2585 List all groups that Gnus knows about in a topics-ified way
2252 (@code{gnus-topic-list-active}). 2586 (@code{gnus-topic-list-active}).
2253 2587
2254 @end table 2588 @item G p
2589 @kindex G p (Topic)
2590 @findex gnus-topic-edit-parameters
2591 @cindex group parameters
2592 @cindex topic parameters
2593 @cindex parameters
2594 Edit the topic parameters (@code{gnus-topic-edit-parameters}).
2595 @xref{Topic Parameters}.
2596
2597 @end table
2598
2599
2600 @node Topic Sorting
2601 @subsection Topic Sorting
2602 @cindex topic sorting
2603
2604 You can sort the groups in each topic individually with the following
2605 commands:
2606
2607
2608 @table @kbd
2609 @item T S a
2610 @kindex T S a (Topic)
2611 @findex gnus-topic-sort-groups-by-alphabet
2612 Sort the current topic alphabetically by group name
2613 (@code{gnus-topic-sort-groups-by-alphabet}).
2614
2615 @item T S u
2616 @kindex T S u (Topic)
2617 @findex gnus-topic-sort-groups-by-unread
2618 Sort the current topic by the number of unread articles
2619 (@code{gnus-topic-sort-groups-by-unread}).
2620
2621 @item T S l
2622 @kindex T S l (Topic)
2623 @findex gnus-topic-sort-groups-by-level
2624 Sort the current topic by group level
2625 (@code{gnus-topic-sort-groups-by-level}).
2626
2627 @item T S v
2628 @kindex T S v (Topic)
2629 @findex gnus-topic-sort-groups-by-score
2630 Sort the current topic by group score
2631 (@code{gnus-topic-sort-groups-by-score}).
2632
2633 @item T S r
2634 @kindex T S r (Topic)
2635 @findex gnus-topic-sort-groups-by-rank
2636 Sort the current topic by group rank
2637 (@code{gnus-topic-sort-groups-by-rank}).
2638
2639 @item T S m
2640 @kindex T S m (Topic)
2641 @findex gnus-topic-sort-groups-by-method
2642 Sort the current topic alphabetically by backend name
2643 (@code{gnus-topic-sort-groups-by-method}).
2644
2645 @end table
2646
2647 @xref{Sorting Groups} for more information about group sorting.
2255 2648
2256 2649
2257 @node Topic Topology 2650 @node Topic Topology
2258 @subsection Topic Topology 2651 @subsection Topic Topology
2259 @cindex topic topology 2652 @cindex topic topology
2262 So, let's have a look at an example group buffer: 2655 So, let's have a look at an example group buffer:
2263 2656
2264 @example 2657 @example
2265 Gnus 2658 Gnus
2266 Emacs -- I wuw it! 2659 Emacs -- I wuw it!
2267 3: comp.emacs 2660 3: comp.emacs
2268 2: alt.religion.emacs 2661 2: alt.religion.emacs
2269 Naughty Emacs 2662 Naughty Emacs
2270 452: alt.sex.emacs 2663 452: alt.sex.emacs
2271 0: comp.talk.emacs.recovery 2664 0: comp.talk.emacs.recovery
2272 Misc 2665 Misc
2273 8: comp.binaries.fractals 2666 8: comp.binaries.fractals
2274 13: comp.sources.unix 2667 13: comp.sources.unix
2275 @end example 2668 @end example
2276 2669
2277 So, here we have one top-level topic, two topics under that, and one 2670 So, here we have one top-level topic (@samp{Gnus}), two topics under
2278 sub-topic under one of the sub-topics. (There is always just one (1) 2671 that, and one sub-topic under one of the sub-topics. (There is always
2279 top-level topic). This topology can be expressed as follows: 2672 just one (1) top-level topic). This topology can be expressed as
2673 follows:
2280 2674
2281 @lisp 2675 @lisp
2282 (("Gnus" visible) 2676 (("Gnus" visible)
2283 (("Emacs -- I wuw it!" visible) 2677 (("Emacs -- I wuw it!" visible)
2284 (("Naughty Emacs" visible))) 2678 (("Naughty Emacs" visible)))
2295 This topology shows what topics are sub-topics of what topics (right), 2689 This topology shows what topics are sub-topics of what topics (right),
2296 and which topics are visible. Two settings are currently 2690 and which topics are visible. Two settings are currently
2297 allowed---@code{visible} and @code{invisible}. 2691 allowed---@code{visible} and @code{invisible}.
2298 2692
2299 2693
2694 @node Topic Parameters
2695 @subsection Topic Parameters
2696 @cindex topic parameters
2697
2698 All groups in a topic will inherit group parameters from the parent (and
2699 ancestor) topic parameters. All legal group parameters are legal topic
2700 parameters (@pxref{Group Parameters}).
2701
2702 Group parameters (of course) override topic parameters, and topic
2703 parameters in sub-topics override topic parameters in super-topics. You
2704 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a
2705 verb, although you may feel free to disagree with me here.)
2706
2707 @example
2708 Gnus
2709 Emacs
2710 3: comp.emacs
2711 2: alt.religion.emacs
2712 452: alt.sex.emacs
2713 Relief
2714 452: alt.sex.emacs
2715 0: comp.talk.emacs.recovery
2716 Misc
2717 8: comp.binaries.fractals
2718 13: comp.sources.unix
2719 452: alt.sex.emacs
2720 @end example
2721
2722 The @samp{Emacs} topic has the topic parameter @code{(score-file
2723 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter
2724 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the
2725 topic parameter @code{(score-file . "emacs.SCORE")}. In addition,
2726 @samp{alt.religion.emacs} has the group parameter @code{(score-file
2727 . "religion.SCORE")}.
2728
2729 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you
2730 will get the @file{relief.SCORE} home score file. If you enter the same
2731 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home
2732 score file. If you enter the group @samp{alt.religion.emacs}, you'll
2733 get the @file{religion.SCORE} home score file.
2734
2735 This seems rather simple and self-evident, doesn't it? Well, yes. But
2736 there are some problems, especially with the @code{total-expiry}
2737 parameter. Say you have a mail group in two topics; one with
2738 @code{total-expiry} and one without. What happens when you do @kbd{M-x
2739 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one
2740 of these topics you mean to expire articles from, so anything may
2741 happen. In fact, I hereby declare that it is @dfn{undefined} what
2742 happens. You just have to be careful if you do stuff like that.
2743
2744
2300 @node Misc Group Stuff 2745 @node Misc Group Stuff
2301 @section Misc Group Stuff 2746 @section Misc Group Stuff
2302 2747
2303 @menu 2748 @menu
2304 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived. 2749 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
2305 * Group Information:: Information and help on groups and Gnus. 2750 * Group Information:: Information and help on groups and Gnus.
2751 * Group Timestamp:: Making Gnus keep track of when you last read a group.
2306 * File Commands:: Reading and writing the Gnus files. 2752 * File Commands:: Reading and writing the Gnus files.
2307 @end menu 2753 @end menu
2308 2754
2309 @table @kbd 2755 @table @kbd
2310 2756
2311 @item ^ 2757 @item ^
2312 @kindex ^ (Group) 2758 @kindex ^ (Group)
2313 @findex gnus-group-enter-server-mode 2759 @findex gnus-group-enter-server-mode
2314 Enter the server buffer (@code{gnus-group-enter-server-mode}). @xref{The 2760 Enter the server buffer (@code{gnus-group-enter-server-mode}).
2315 Server Buffer}. 2761 @xref{The Server Buffer}.
2316 2762
2317 @item a 2763 @item a
2318 @kindex a (Group) 2764 @kindex a (Group)
2319 @findex gnus-group-post-news 2765 @findex gnus-group-post-news
2320 Post an article to a group (@code{gnus-group-post-news}). The current 2766 Post an article to a group (@code{gnus-group-post-news}). The current
2369 @item M-g 2815 @item M-g
2370 @kindex M-g (Group) 2816 @kindex M-g (Group)
2371 @findex gnus-group-get-new-news-this-group 2817 @findex gnus-group-get-new-news-this-group
2372 @vindex gnus-goto-next-group-when-activating 2818 @vindex gnus-goto-next-group-when-activating
2373 Check whether new articles have arrived in the current group 2819 Check whether new articles have arrived in the current group
2374 (@code{gnus-group-get-new-news-this-group}). The 2820 (@code{gnus-group-get-new-news-this-group}).
2375 @code{gnus-goto-next-group-when-activating} variable controls whether 2821 @code{gnus-goto-next-group-when-activating} says whether this command is
2376 this command is to move point to the next group or not. It is @code{t} 2822 to move point to the next group or not. It is @code{t} by default.
2377 by default.
2378 2823
2379 @findex gnus-activate-all-groups 2824 @findex gnus-activate-all-groups
2380 @cindex activating groups 2825 @cindex activating groups
2381 @item C-c M-g 2826 @item C-c M-g
2382 @kindex C-c M-g (Group) 2827 @kindex C-c M-g (Group)
2384 2829
2385 @item R 2830 @item R
2386 @kindex R (Group) 2831 @kindex R (Group)
2387 @cindex restarting 2832 @cindex restarting
2388 @findex gnus-group-restart 2833 @findex gnus-group-restart
2389 Restart Gnus (@code{gnus-group-restart}). 2834 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc}
2835 file(s), closes the connection to all servers, clears up all run-time
2836 Gnus variables, and then starts Gnus all over again.
2390 2837
2391 @end table 2838 @end table
2392 2839
2393 @vindex gnus-get-new-news-hook 2840 @vindex gnus-get-new-news-hook
2394 @code{gnus-get-new-news-hook} is run just before checking for new news. 2841 @code{gnus-get-new-news-hook} is run just before checking for new news.
2403 @cindex group information 2850 @cindex group information
2404 @cindex information on groups 2851 @cindex information on groups
2405 2852
2406 @table @kbd 2853 @table @kbd
2407 2854
2408 @item M-f 2855
2409 @kindex M-f (Group) 2856 @item H f
2857 @kindex H f (Group)
2410 @findex gnus-group-fetch-faq 2858 @findex gnus-group-fetch-faq
2859 @vindex gnus-group-faq-directory
2411 @cindex FAQ 2860 @cindex FAQ
2412 @cindex ange-ftp 2861 @cindex ange-ftp
2413 Try to fetch the FAQ for the current group 2862 Try to fetch the FAQ for the current group
2414 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from 2863 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from
2415 @code{gnus-group-faq-directory}, which is usually a directory on a 2864 @code{gnus-group-faq-directory}, which is usually a directory on a
2416 remote machine. @code{ange-ftp} will be used for fetching the file. 2865 remote machine. This variable can also be a list of directories. In
2417 2866 that case, giving a prefix to this command will allow you to choose
2418 @item D 2867 between the various sites. @code{ange-ftp} (or @code{efs}) will be used
2419 @kindex D (Group) 2868 for fetching the file.
2869
2870 If fetching from the first site is unsuccessful, Gnus will attempt to go
2871 through @code{gnus-group-faq-directory} and try to open them one by one.
2872
2873 @item H d
2874 @itemx C-c C-d
2875 @kindex H d (Group)
2876 @kindex C-c C-d (Group)
2420 @cindex describing groups 2877 @cindex describing groups
2421 @cindex group description 2878 @cindex group description
2422 @findex gnus-group-describe-group 2879 @findex gnus-group-describe-group
2423 Describe the current group (@code{gnus-group-describe-group}). If given 2880 Describe the current group (@code{gnus-group-describe-group}). If given
2424 a prefix, force Gnus to re-read the description from the server. 2881 a prefix, force Gnus to re-read the description from the server.
2447 @findex gnus-info-find-node 2904 @findex gnus-info-find-node
2448 Go to the Gnus info node (@code{gnus-info-find-node}). 2905 Go to the Gnus info node (@code{gnus-info-find-node}).
2449 @end table 2906 @end table
2450 2907
2451 2908
2909 @node Group Timestamp
2910 @subsection Group Timestamp
2911 @cindex timestamps
2912 @cindex group timestamps
2913
2914 It can be convenient to let Gnus keep track of when you last read a
2915 group. To set the ball rolling, you should add
2916 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
2917
2918 @lisp
2919 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
2920 @end lisp
2921
2922 After doing this, each time you enter a group, it'll be recorded.
2923
2924 This information can be displayed in various ways---the easiest is to
2925 use the @samp{%d} spec in the group line format:
2926
2927 @lisp
2928 (setq gnus-group-line-format
2929 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
2930 @end lisp
2931
2932 This will result in lines looking like:
2933
2934 @example
2935 * 0: mail.ding 19961002T012943
2936 0: custom 19961002T012713
2937 @end example
2938
2939 As you can see, the date is displayed in compact ISO 8601 format. This
2940 may be a bit too much, so to just display the date, you could say
2941 something like:
2942
2943 @lisp
2944 (setq gnus-group-line-format
2945 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
2946 @end lisp
2947
2948
2452 @node File Commands 2949 @node File Commands
2453 @subsection File Commands 2950 @subsection File Commands
2454 @cindex file commands 2951 @cindex file commands
2455 2952
2456 @table @kbd 2953 @table @kbd
2458 @item r 2955 @item r
2459 @kindex r (Group) 2956 @kindex r (Group)
2460 @findex gnus-group-read-init-file 2957 @findex gnus-group-read-init-file
2461 @vindex gnus-init-file 2958 @vindex gnus-init-file
2462 @cindex reading init file 2959 @cindex reading init file
2463 Read the init file (@code{gnus-init-file}, which defaults to 2960 Re-read the init file (@code{gnus-init-file}, which defaults to
2464 @file{~/.gnus}) (@code{gnus-group-read-init-file}). 2961 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
2465 2962
2466 @item s 2963 @item s
2467 @kindex s (Group) 2964 @kindex s (Group)
2468 @findex gnus-group-save-newsrc 2965 @findex gnus-group-save-newsrc
2483 @chapter The Summary Buffer 2980 @chapter The Summary Buffer
2484 @cindex summary buffer 2981 @cindex summary buffer
2485 2982
2486 A line for each article is displayed in the summary buffer. You can 2983 A line for each article is displayed in the summary buffer. You can
2487 move around, read articles, post articles and reply to articles. 2984 move around, read articles, post articles and reply to articles.
2985
2986 The most common way to a summary buffer is to select a group from the
2987 group buffer (@pxref{Selecting a Group}).
2988
2989 You can have as many summary buffers open as you wish.
2488 2990
2489 @menu 2991 @menu
2490 * Summary Buffer Format:: Deciding how the summary buffer is to look. 2992 * Summary Buffer Format:: Deciding how the summary buffer is to look.
2491 * Summary Maneuvering:: Moving around the summary buffer. 2993 * Summary Maneuvering:: Moving around the summary buffer.
2492 * Choosing Articles:: Reading articles. 2994 * Choosing Articles:: Reading articles.
2502 * Persistent Articles:: Making articles expiry-resistant. 3004 * Persistent Articles:: Making articles expiry-resistant.
2503 * Article Backlog:: Having already read articles hang around. 3005 * Article Backlog:: Having already read articles hang around.
2504 * Saving Articles:: Ways of customizing article saving. 3006 * Saving Articles:: Ways of customizing article saving.
2505 * Decoding Articles:: Gnus can treat series of (uu)encoded articles. 3007 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
2506 * Article Treatment:: The article buffer can be mangled at will. 3008 * Article Treatment:: The article buffer can be mangled at will.
3009 * Article Commands:: Doing various things with the article buffer.
2507 * Summary Sorting:: Sorting the summary buffer in various ways. 3010 * Summary Sorting:: Sorting the summary buffer in various ways.
2508 * Finding the Parent:: No child support? Get the parent. 3011 * Finding the Parent:: No child support? Get the parent.
2509 * Alternative Approaches:: Reading using non-default summaries. 3012 * Alternative Approaches:: Reading using non-default summaries.
2510 * Tree Display:: A more visual display of threads. 3013 * Tree Display:: A more visual display of threads.
2511 * Mail Group Commands:: Some commands can only be used in mail groups. 3014 * Mail Group Commands:: Some commands can only be used in mail groups.
2512 * Various Summary Stuff:: What didn't fit anywhere else. 3015 * Various Summary Stuff:: What didn't fit anywhere else.
2513 * Exiting the Summary Buffer:: Returning to the Group buffer. 3016 * Exiting the Summary Buffer:: Returning to the Group buffer.
3017 * Crosspost Handling:: How crossposted articles are dealt with.
3018 * Duplicate Suppression:: An alternative when crosspost handling fails.
2514 @end menu 3019 @end menu
2515 3020
2516 3021
2517 @node Summary Buffer Format 3022 @node Summary Buffer Format
2518 @section Summary Buffer Format 3023 @section Summary Buffer Format
2546 @subsection Summary Buffer Lines 3051 @subsection Summary Buffer Lines
2547 3052
2548 @vindex gnus-summary-line-format 3053 @vindex gnus-summary-line-format
2549 You can change the format of the lines in the summary buffer by changing 3054 You can change the format of the lines in the summary buffer by changing
2550 the @code{gnus-summary-line-format} variable. It works along the same 3055 the @code{gnus-summary-line-format} variable. It works along the same
2551 lines a a normal @code{format} string, with some extensions. 3056 lines a a normal @code{format} string, with some extensions
3057 (@pxref{Formatting Variables}).
2552 3058
2553 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. 3059 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
2554 3060
2555 The following format specification characters are understood: 3061 The following format specification characters are understood:
2556 3062
2558 @item N 3064 @item N
2559 Article number. 3065 Article number.
2560 @item S 3066 @item S
2561 Subject string. 3067 Subject string.
2562 @item s 3068 @item s
2563 Subject if the article is the root, @code{gnus-summary-same-subject} 3069 Subject if the article is the root or the previous article had a
2564 otherwise. 3070 different subject, @code{gnus-summary-same-subject} otherwise.
3071 (@code{gnus-summary-same-subject} defaults to @samp{}.)
2565 @item F 3072 @item F
2566 Full @code{From} line. 3073 Full @code{From} header.
2567 @item n 3074 @item n
2568 The name (from the @code{From} header). 3075 The name (from the @code{From} header).
2569 @item a 3076 @item a
2570 The name (from the @code{From} header). This differs from the @code{n} 3077 The name (from the @code{From} header). This differs from the @code{n}
2571 spec in that it uses @code{gnus-extract-address-components}, which is 3078 spec in that it uses the function designated by the
2572 slower, but may be more thorough. 3079 @code{gnus-extract-address-components} variable, which is slower, but
3080 may be more thorough.
2573 @item A 3081 @item A
2574 The address (from the @code{From} header). This works the same way as 3082 The address (from the @code{From} header). This works the same way as
2575 the @code{a} spec. 3083 the @code{a} spec.
2576 @item L 3084 @item L
2577 Number of lines in the article. 3085 Number of lines in the article.
2580 @item I 3088 @item I
2581 Indentation based on thread level (@pxref{Customizing Threading}). 3089 Indentation based on thread level (@pxref{Customizing Threading}).
2582 @item T 3090 @item T
2583 Nothing if the article is a root and lots of spaces if it isn't (it 3091 Nothing if the article is a root and lots of spaces if it isn't (it
2584 pushes everything after it off the screen). 3092 pushes everything after it off the screen).
2585 @item \[ 3093 @item [
2586 Opening bracket, which is normally @samp{\[}, but can also be @samp{<} 3094 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
2587 for adopted articles. 3095 for adopted articles (@pxref{Customizing Threading}).
2588 @item \] 3096 @item ]
2589 Closing bracket, which is normally @samp{\]}, but can also be @samp{>} 3097 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
2590 for adopted articles. 3098 for adopted articles.
2591 @item > 3099 @item >
2592 One space for each thread level. 3100 One space for each thread level.
2593 @item < 3101 @item <
2594 Twenty minus thread level spaces. 3102 Twenty minus thread level spaces.
2608 Total thread score. 3116 Total thread score.
2609 @item x 3117 @item x
2610 @code{Xref}. 3118 @code{Xref}.
2611 @item D 3119 @item D
2612 @code{Date}. 3120 @code{Date}.
3121 @item d
3122 The @code{Date} in @code{DD-MMM} format.
3123 @item o
3124 The @code{Date} in @code{YYYYMMDDTHHMMSS} format.
2613 @item M 3125 @item M
2614 @code{Message-ID}. 3126 @code{Message-ID}.
2615 @item r 3127 @item r
2616 @code{References}. 3128 @code{References}.
2617 @item t 3129 @item t
2618 Number of articles in the current sub-thread. Using this spec will slow 3130 Number of articles in the current sub-thread. Using this spec will slow
2619 down summary buffer generation somewhat. 3131 down summary buffer generation somewhat.
2620 @item e 3132 @item e
2621 A single character will be displayed if the article has any children. 3133 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3134 article has any children.
3135 @item P
3136 The line number.
2622 @item u 3137 @item u
2623 User defined specifier. The next character in the format string should 3138 User defined specifier. The next character in the format string should
2624 be a letter. @sc{gnus} will call the function 3139 be a letter. @sc{gnus} will call the function
2625 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter 3140 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter
2626 following @samp{%u}. The function will be passed the current header as 3141 following @samp{%u}. The function will be passed the current header as
2644 @node Summary Buffer Mode Line 3159 @node Summary Buffer Mode Line
2645 @subsection Summary Buffer Mode Line 3160 @subsection Summary Buffer Mode Line
2646 3161
2647 @vindex gnus-summary-mode-line-format 3162 @vindex gnus-summary-mode-line-format
2648 You can also change the format of the summary mode bar. Set 3163 You can also change the format of the summary mode bar. Set
2649 @code{gnus-summary-mode-line-format} to whatever you like. Here are the 3164 @code{gnus-summary-mode-line-format} to whatever you like. The default
2650 elements you can play with: 3165 is @samp{Gnus: %%b [%A] %Z}.
3166
3167 Here are the elements you can play with:
2651 3168
2652 @table @samp 3169 @table @samp
2653 @item G 3170 @item G
2654 Group name. 3171 Group name.
2655 @item p 3172 @item p
2662 Number of unread articles in this group. 3179 Number of unread articles in this group.
2663 @item e 3180 @item e
2664 Number of unselected articles in this group. 3181 Number of unselected articles in this group.
2665 @item Z 3182 @item Z
2666 A string with the number of unread and unselected articles represented 3183 A string with the number of unread and unselected articles represented
2667 either as @samp{<%U(+%u) more>} if there are both unread and unselected 3184 either as @samp{<%U(+%e) more>} if there are both unread and unselected
2668 articles, and just as @samp{<%U more>} if there are just unread articles 3185 articles, and just as @samp{<%U more>} if there are just unread articles
2669 and no unselected ones. 3186 and no unselected ones.
2670 @item g 3187 @item g
2671 Shortish group name. For instance, @samp{rec.arts.anime} will be 3188 Shortish group name. For instance, @samp{rec.arts.anime} will be
2672 shortened to @samp{r.a.anime}. 3189 shortened to @samp{r.a.anime}.
2673 @item S 3190 @item S
2674 Subject of the current article. 3191 Subject of the current article.
2675 @item u 3192 @item u
2676 Used-defined spec. 3193 User-defined spec.
2677 @item s 3194 @item s
2678 Name of the current score file. 3195 Name of the current score file.
2679 @item d 3196 @item d
2680 Number of dormant articles. 3197 Number of dormant articles.
2681 @item t 3198 @item t
2709 highlight the current article in the summary buffer. 3226 highlight the current article in the summary buffer.
2710 3227
2711 @item gnus-summary-highlight 3228 @item gnus-summary-highlight
2712 @vindex gnus-summary-highlight 3229 @vindex gnus-summary-highlight
2713 Summary lines are highlighted according to this variable, which is a 3230 Summary lines are highlighted according to this variable, which is a
2714 list where the elements are on the format @code{(FORM . FACE)}. If you 3231 list where the elements are on the format @var{(FORM . FACE)}. If you
2715 would, for instance, like ticked articles to be italic and high-scored 3232 would, for instance, like ticked articles to be italic and high-scored
2716 articles to be bold, you could set this variable to something like 3233 articles to be bold, you could set this variable to something like
2717 @lisp 3234 @lisp
2718 (((eq mark gnus-ticked-mark) . italic) 3235 (((eq mark gnus-ticked-mark) . italic)
2719 ((> score default) . bold)) 3236 ((> score default) . bold))
2752 @item G j 3269 @item G j
2753 @itemx j 3270 @itemx j
2754 @kindex j (Summary) 3271 @kindex j (Summary)
2755 @kindex G j (Summary) 3272 @kindex G j (Summary)
2756 @findex gnus-summary-goto-article 3273 @findex gnus-summary-goto-article
2757 Ask for an article number and then go that article 3274 Ask for an article number and then go to that article
2758 (@code{gnus-summary-goto-article}). 3275 (@code{gnus-summary-goto-article}).
2759 3276
2760 @item G g 3277 @item G g
2761 @kindex G g (Summary) 3278 @kindex G g (Summary)
2762 @findex gnus-summary-goto-subject 3279 @findex gnus-summary-goto-subject
2763 Ask for an article number and then go the summary line of that article 3280 Ask for an article number and then go the summary line of that article
2764 (@code{gnus-summary-goto-subject}). 3281 without displaying the article (@code{gnus-summary-goto-subject}).
2765 @end table 3282 @end table
2766 3283
2767 If Gnus asks you to press a key to confirm going to the next group, you 3284 If Gnus asks you to press a key to confirm going to the next group, you
2768 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group 3285 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group
2769 buffer, searching for the next group to read without actually returning 3286 buffer, searching for the next group to read without actually returning
2773 3290
2774 @table @code 3291 @table @code
2775 3292
2776 @vindex gnus-auto-select-next 3293 @vindex gnus-auto-select-next
2777 @item gnus-auto-select-next 3294 @item gnus-auto-select-next
2778 If you are at the end of the group and issue one of the movement 3295 If you issue one of the movement commands (like @kbd{n}) and there are
2779 commands, Gnus will offer to go to the next group. If this variable is 3296 no more unread articles after the current one, Gnus will offer to go to
2780 @code{t} and the next group is empty, Gnus will exit summary mode and 3297 the next group. If this variable is @code{t} and the next group is
2781 return to the group buffer. If this variable is neither @code{t} nor 3298 empty, Gnus will exit summary mode and return to the group buffer. If
2782 @code{nil}, Gnus will select the next group, no matter whether it has 3299 this variable is neither @code{t} nor @code{nil}, Gnus will select the
2783 any unread articles or not. As a special case, if this variable is 3300 next group, no matter whether it has any unread articles or not. As a
2784 @code{quietly}, Gnus will select the next group without asking for 3301 special case, if this variable is @code{quietly}, Gnus will select the
2785 confirmation. If this variable is @code{almost-quietly}, the same will 3302 next group without asking for confirmation. If this variable is
2786 happen only if you are located on the last article in the group. 3303 @code{almost-quietly}, the same will happen only if you are located on
2787 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n} 3304 the last article in the group. Finally, if this variable is
2788 command will go to the next group without confirmation. Also 3305 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
2789 @pxref{Group Levels}. 3306 without confirmation. Also @pxref{Group Levels}.
2790 3307
2791 @item gnus-auto-select-same 3308 @item gnus-auto-select-same
2792 @vindex gnus-auto-select-same 3309 @vindex gnus-auto-select-same
2793 If non-@code{nil}, all the movement commands will try to go to the next 3310 If non-@code{nil}, all the movement commands will try to go to the next
2794 article with the same subject as the current. (@dfn{Same} here might 3311 article with the same subject as the current. (@dfn{Same} here might
2817 3334
2818 @node Choosing Articles 3335 @node Choosing Articles
2819 @section Choosing Articles 3336 @section Choosing Articles
2820 @cindex selecting articles 3337 @cindex selecting articles
2821 3338
3339 @menu
3340 * Choosing Commands:: Commands for choosing articles.
3341 * Choosing Variables:: Variables that influence these commands.
3342 @end menu
3343
3344
3345 @node Choosing Commands
3346 @subsection Choosing Commands
3347
2822 None of the following movement commands understand the numeric prefix, 3348 None of the following movement commands understand the numeric prefix,
2823 and they all select and display an article. 3349 and they all select and display an article.
2824 3350
2825 @table @kbd 3351 @table @kbd
2826 @item SPACE 3352 @item SPACE
2897 Pop an article off the summary history and go to this article 3423 Pop an article off the summary history and go to this article
2898 (@code{gnus-summary-pop-article}). This command differs from the 3424 (@code{gnus-summary-pop-article}). This command differs from the
2899 command above in that you can pop as many previous articles off the 3425 command above in that you can pop as many previous articles off the
2900 history as you like. 3426 history as you like.
2901 @end table 3427 @end table
3428
3429
3430 @node Choosing Variables
3431 @subsection Choosing Variables
2902 3432
2903 Some variables that are relevant for moving and selecting articles: 3433 Some variables that are relevant for moving and selecting articles:
2904 3434
2905 @table @code 3435 @table @code
2906 @item gnus-auto-extend-newsgroup 3436 @item gnus-auto-extend-newsgroup
2981 @kindex A > (Summary) 3511 @kindex A > (Summary)
2982 @findex gnus-summary-end-of-article 3512 @findex gnus-summary-end-of-article
2983 Scroll to the end of the article (@code{gnus-summary-end-of-article}). 3513 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
2984 3514
2985 @item A s 3515 @item A s
3516 @itemx s
2986 @kindex A s (Summary) 3517 @kindex A s (Summary)
3518 @kindex s (Summary)
2987 @findex gnus-summary-isearch-article 3519 @findex gnus-summary-isearch-article
2988 Perform an isearch in the article buffer 3520 Perform an isearch in the article buffer
2989 (@code{gnus-summary-isearch-article}). 3521 (@code{gnus-summary-isearch-article}).
2990 3522
2991 @end table 3523 @end table
3024 @findex gnus-summary-reply-with-original 3556 @findex gnus-summary-reply-with-original
3025 Mail a reply to the author of the current article and include the 3557 Mail a reply to the author of the current article and include the
3026 original message (@code{gnus-summary-reply-with-original}). This 3558 original message (@code{gnus-summary-reply-with-original}). This
3027 command uses the process/prefix convention. 3559 command uses the process/prefix convention.
3028 3560
3561 @item S w
3562 @kindex S w (Summary)
3563 @findex gnus-summary-wide-reply
3564 Mail a wide reply to the author of the current article
3565 (@code{gnus-summary-wide-reply}).
3566
3567 @item S W
3568 @kindex S W (Summary)
3569 @findex gnus-summary-wide-reply-with-original
3570 Mail a wide reply to the current article and include the original
3571 message (@code{gnus-summary-reply-with-original}). This command uses
3572 the process/prefix convention.
3573
3029 @item S o m 3574 @item S o m
3030 @kindex S o m (Summary) 3575 @kindex S o m (Summary)
3031 @findex gnus-summary-mail-forward 3576 @findex gnus-summary-mail-forward
3032 Forward the current article to some other person 3577 Forward the current article to some other person
3033 (@code{gnus-summary-mail-forward}). 3578 (@code{gnus-summary-mail-forward}). If given a prefix, include the full
3034 3579 headers of the forwarded article.
3035 @item S o p
3036 @kindex S o p (Summary)
3037 @findex gnus-summary-post-forward
3038 Forward the current article to a newsgroup
3039 (@code{gnus-summary-post-forward}).
3040 3580
3041 @item S m 3581 @item S m
3042 @itemx m 3582 @itemx m
3043 @kindex m (Summary) 3583 @kindex m (Summary)
3044 @kindex S m (Summary) 3584 @kindex S m (Summary)
3073 3613
3074 This command is mainly used if you have several accounts and want to 3614 This command is mainly used if you have several accounts and want to
3075 ship a mail to a different account of yours. (If you're both 3615 ship a mail to a different account of yours. (If you're both
3076 @code{root} and @code{postmaster} and get a mail for @code{postmaster} 3616 @code{root} and @code{postmaster} and get a mail for @code{postmaster}
3077 to the @code{root} account, you may want to resend it to 3617 to the @code{root} account, you may want to resend it to
3078 @code{postmaster}. Ordnung muss sein! 3618 @code{postmaster}. Ordnung muß sein!
3619
3620 This command understands the process/prefix convention
3621 (@pxref{Process/Prefix}).
3079 3622
3080 @item S O m 3623 @item S O m
3081 @kindex S O m (Summary) 3624 @kindex S O m (Summary)
3082 @findex gnus-uu-digest-mail-forward 3625 @findex gnus-uu-digest-mail-forward
3083 Digest the current series and forward the result using mail 3626 Digest the current series and forward the result using mail
3084 (@code{gnus-uu-digest-mail-forward}). This command uses the 3627 (@code{gnus-uu-digest-mail-forward}). This command uses the
3085 process/prefix convention (@pxref{Process/Prefix}). 3628 process/prefix convention (@pxref{Process/Prefix}).
3086 3629
3087 @item S O p 3630 @item S M-c
3088 @kindex S O p (Summary) 3631 @kindex S M-c (Summary)
3089 @findex gnus-uu-digest-post-forward 3632 @findex gnus-summary-mail-crosspost-complaint
3090 Digest the current series and forward the result to a newsgroup 3633 @cindex crossposting
3091 (@code{gnus-uu-digest-mail-forward}). 3634 @cindex excessive crossposting
3635 Send a complaint about excessive crossposting to the author of the
3636 current article (@code{gnus-summary-mail-crosspost-complaint}).
3637
3638 @findex gnus-crosspost-complaint
3639 This command is provided as a way to fight back agains the current
3640 crossposting pandemic that's sweeping Usenet. It will compose a reply
3641 using the @code{gnus-crosspost-complaint} variable as a preamble. This
3642 command understands the process/prefix convention
3643 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
3644
3092 @end table 3645 @end table
3093 3646
3094 3647
3095 @node Summary Post Commands 3648 @node Summary Post Commands
3096 @subsection Summary Post Commands 3649 @subsection Summary Post Commands
3097 @cindex post 3650 @cindex post
3098 @cindex composing news 3651 @cindex composing news
3099 3652
3100 Commands for posting an article: 3653 Commands for posting a news article:
3101 3654
3102 @table @kbd 3655 @table @kbd
3103 @item S p 3656 @item S p
3104 @itemx a 3657 @itemx a
3105 @kindex a (Summary) 3658 @kindex a (Summary)
3122 @findex gnus-summary-followup-with-original 3675 @findex gnus-summary-followup-with-original
3123 Post a followup to the current article and include the original message 3676 Post a followup to the current article and include the original message
3124 (@code{gnus-summary-followup-with-original}). This command uses the 3677 (@code{gnus-summary-followup-with-original}). This command uses the
3125 process/prefix convention. 3678 process/prefix convention.
3126 3679
3680 @item S n
3681 @kindex S n (Summary)
3682 @findex gnus-summary-followup-to-mail
3683 Post a followup to the current article via news, even if you got the
3684 message through mail (@code{gnus-summary-followup-to-mail}).
3685
3686 @item S n
3687 @kindex S n (Summary)
3688 @findex gnus-summary-followup-to-mail
3689 Post a followup to the current article via news, even if you got the
3690 message through mail and include the original message
3691 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
3692 the process/prefix convention.
3693
3694 @item S o p
3695 @kindex S o p (Summary)
3696 @findex gnus-summary-post-forward
3697 Forward the current article to a newsgroup
3698 (@code{gnus-summary-post-forward}). If given a prefix, include the full
3699 headers of the forwarded article.
3700
3701 @item S O p
3702 @kindex S O p (Summary)
3703 @findex gnus-uu-digest-post-forward
3704 Digest the current series and forward the result to a newsgroup
3705 (@code{gnus-uu-digest-mail-forward}).
3706
3127 @item S u 3707 @item S u
3128 @kindex S u (Summary) 3708 @kindex S u (Summary)
3129 @findex gnus-uu-post-news 3709 @findex gnus-uu-post-news
3130 Uuencode a file, split it into parts, and post it as a series 3710 Uuencode a file, split it into parts, and post it as a series
3131 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). 3711 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
3169 have posted almost the same article twice. 3749 have posted almost the same article twice.
3170 3750
3171 If you have just posted the article, and change your mind right away, 3751 If you have just posted the article, and change your mind right away,
3172 there is a trick you can use to cancel/supersede the article without 3752 there is a trick you can use to cancel/supersede the article without
3173 waiting for the article to appear on your site first. You simply return 3753 waiting for the article to appear on your site first. You simply return
3174 to the post buffer (which is called @code{*post-buf*}). There you will 3754 to the post buffer (which is called @code{*sent ...*}). There you will
3175 find the article you just posted, with all the headers intact. Change 3755 find the article you just posted, with all the headers intact. Change
3176 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes} 3756 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes}
3177 header by substituting one of those words for @code{Message-ID}. Then 3757 header by substituting one of those words for the word
3178 just press @kbd{C-c C-c} to send the article as you would do normally. 3758 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
3179 The previous article will be canceled/superseded. 3759 you would do normally. The previous article will be
3760 canceled/superseded.
3180 3761
3181 Just remember, kids: There is no 'c' in 'supersede'. 3762 Just remember, kids: There is no 'c' in 'supersede'.
3182 3763
3183 3764
3184 @node Marking Articles 3765 @node Marking Articles
3212 3793
3213 3794
3214 @node Unread Articles 3795 @node Unread Articles
3215 @subsection Unread Articles 3796 @subsection Unread Articles
3216 3797
3217 The following marks mark articles as unread, in one form or other. 3798 The following marks mark articles as (kinda) unread, in one form or
3218 3799 other.
3219 @vindex gnus-dormant-mark 3800
3220 @vindex gnus-ticked-mark
3221 @table @samp 3801 @table @samp
3222 @item ! 3802 @item !
3803 @vindex gnus-ticked-mark
3804 Marked as ticked (@code{gnus-ticked-mark}).
3805
3223 @dfn{Ticked articles} are articles that will remain visible always. If 3806 @dfn{Ticked articles} are articles that will remain visible always. If
3224 you see an article that you find interesting, or you want to put off 3807 you see an article that you find interesting, or you want to put off
3225 reading it, or replying to it, until sometime later, you'd typically 3808 reading it, or replying to it, until sometime later, you'd typically
3226 tick it. However, articles can be expired, so if you want to keep an 3809 tick it. However, articles can be expired, so if you want to keep an
3227 article forever, you'll have to save it. Ticked articles have a 3810 article forever, you'll have to make it persistent (@pxref{Persistent
3228 @samp{!} (@code{gnus-ticked-mark}) in the first column. 3811 Articles}).
3229 3812
3230 @item ? 3813 @item ?
3231 @vindex gnus-dormant-mark 3814 @vindex gnus-dormant-mark
3232 A @dfn{dormant} article is marked with a @samp{?} 3815 Marked as dormant (@code{gnus-dormant-mark}).
3233 (@code{gnus-dormant-mark}), and will only appear in the summary buffer 3816
3234 if there are followups to it. 3817 @dfn{Dormant articles} will only appear in the summary buffer if there
3818 are followups to it.
3235 3819
3236 @item SPACE 3820 @item SPACE
3237 @vindex gnus-unread-mark 3821 @vindex gnus-unread-mark
3238 An @dfn{unread} article is marked with a @samp{SPACE} 3822 Markes as unread (@code{gnus-unread-mark}).
3239 (@code{gnus-unread-mark}). These are articles that haven't been read at 3823
3240 all yet. 3824 @dfn{Unread articles} are articles that haven't been read at all yet.
3241 @end table 3825 @end table
3242 3826
3243 3827
3244 @node Read Articles 3828 @node Read Articles
3245 @subsection Read Articles 3829 @subsection Read Articles
3249 3833
3250 @table @samp 3834 @table @samp
3251 3835
3252 @item r 3836 @item r
3253 @vindex gnus-del-mark 3837 @vindex gnus-del-mark
3254 Articles that are marked as read. They have a @samp{r} 3838 These are articles that the user has marked as read with the @kbd{d}
3255 (@code{gnus-del-mark}) in the first column. These are articles that the 3839 command manually, more or less (@code{gnus-del-mark}).
3256 user has marked as read more or less manually.
3257 3840
3258 @item R 3841 @item R
3259 @vindex gnus-read-mark 3842 @vindex gnus-read-mark
3260 Articles that are actually read are marked with @samp{R} 3843 Articles that have actually been read (@code{gnus-read-mark}).
3261 (@code{gnus-read-mark}).
3262 3844
3263 @item O 3845 @item O
3264 @vindex gnus-ancient-mark 3846 @vindex gnus-ancient-mark
3265 Articles that were marked as read in previous sessions are now 3847 Articles that were marked as read in previous sessions and are now
3266 @dfn{old} and marked with @samp{O} (@code{gnus-ancient-mark}). 3848 @dfn{old} (@code{gnus-ancient-mark}).
3267 3849
3268 @item K 3850 @item K
3269 @vindex gnus-killed-mark 3851 @vindex gnus-killed-mark
3270 Marked as killed (@code{gnus-killed-mark}). 3852 Marked as killed (@code{gnus-killed-mark}).
3271 3853
3285 @vindex gnus-canceled-mark 3867 @vindex gnus-canceled-mark
3286 Canceled article (@code{gnus-canceled-mark}) 3868 Canceled article (@code{gnus-canceled-mark})
3287 3869
3288 @item F 3870 @item F
3289 @vindex gnus-souped-mark 3871 @vindex gnus-souped-mark
3290 @sc{SOUP}ed article (@code{gnus-souped-mark}). 3872 @sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
3291 3873
3292 @item Q 3874 @item Q
3293 @vindex gnus-sparse-mark 3875 @vindex gnus-sparse-mark
3294 Sparsely reffed article (@code{gnus-sparse-mark}). 3876 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
3877 Threading}.
3878
3879 @item M
3880 @vindex gnus-duplicate-mark
3881 Article marked as read by duplicate suppression
3882 (@code{gnus-duplicated-mark}). @xref{Duplicate Suppression}.
3883
3295 @end table 3884 @end table
3296 3885
3297 All these marks just mean that the article is marked as read, really. 3886 All these marks just mean that the article is marked as read, really.
3298 They are interpreted differently by the adaptive scoring scheme, 3887 They are interpreted differently when doing adaptive scoring, though.
3299 however.
3300 3888
3301 One more special mark, though: 3889 One more special mark, though:
3302 3890
3303 @table @samp 3891 @table @samp
3304 @item E 3892 @item E
3305 @vindex gnus-expirable-mark 3893 @vindex gnus-expirable-mark
3306 You can also mark articles as @dfn{expirable} (or have them marked as 3894 Marked as expirable (@code{gnus-expirable-mark}).
3307 such automatically). That doesn't make much sense in normal groups, 3895
3308 because a user does not control the expiring of news articles, but in 3896 Marking articles as @dfn{expirable} (or have them marked as such
3309 mail groups, for instance, articles that are marked as @dfn{expirable} 3897 automatically) doesn't make much sense in normal groups---a user doesn't
3310 can be deleted by Gnus at any time. Expirable articles are marked with 3898 control the expiring of news articles, but in mail groups, for instance,
3311 @samp{E} (@code{gnus-expirable-mark}). 3899 articles that are marked as @dfn{expirable} can be deleted by Gnus at
3900 any time.
3312 @end table 3901 @end table
3313 3902
3314 3903
3315 @node Other Marks 3904 @node Other Marks
3316 @subsection Other Marks 3905 @subsection Other Marks
3325 @item 3914 @item
3326 You can set a bookmark in the current article. Say you are reading a 3915 You can set a bookmark in the current article. Say you are reading a
3327 long thesis on cats' urinary tracts, and have to go home for dinner 3916 long thesis on cats' urinary tracts, and have to go home for dinner
3328 before you've finished reading the thesis. You can then set a bookmark 3917 before you've finished reading the thesis. You can then set a bookmark
3329 in the article, and Gnus will jump to this bookmark the next time it 3918 in the article, and Gnus will jump to this bookmark the next time it
3330 encounters the article. 3919 encounters the article. @xref{Setting Marks}
3331 3920
3332 @item 3921 @item
3333 @vindex gnus-replied-mark 3922 @vindex gnus-replied-mark
3334 All articles that you have replied to or made a followup to (i.e., have 3923 All articles that you have replied to or made a followup to (i.e., have
3335 answered) will be marked with an @samp{A} in the second column 3924 answered) will be marked with an @samp{A} in the second column
3399 @kindex M d (Summary) 3988 @kindex M d (Summary)
3400 @kindex d (Summary) 3989 @kindex d (Summary)
3401 @findex gnus-summary-mark-as-read-forward 3990 @findex gnus-summary-mark-as-read-forward
3402 Mark the current article as read 3991 Mark the current article as read
3403 (@code{gnus-summary-mark-as-read-forward}). 3992 (@code{gnus-summary-mark-as-read-forward}).
3993
3994 @item D
3995 @kindex D (Summary)
3996 @findex gnus-summary-mark-as-read-backward
3997 Mark the current article as read and move point to the previous line
3998 (@code{gnus-summary-mark-as-read-backward}).
3404 3999
3405 @item M k 4000 @item M k
3406 @itemx k 4001 @itemx k
3407 @kindex k (Summary) 4002 @kindex k (Summary)
3408 @kindex M k (Summary) 4003 @kindex M k (Summary)
3420 (@code{gnus-summary-kill-same-subject}). 4015 (@code{gnus-summary-kill-same-subject}).
3421 4016
3422 @item M C 4017 @item M C
3423 @kindex M C (Summary) 4018 @kindex M C (Summary)
3424 @findex gnus-summary-catchup 4019 @findex gnus-summary-catchup
3425 Mark all unread articles in the group as read 4020 Mark all unread articles as read (@code{gnus-summary-catchup}).
3426 (@code{gnus-summary-catchup}).
3427 4021
3428 @item M C-c 4022 @item M C-c
3429 @kindex M C-c (Summary) 4023 @kindex M C-c (Summary)
3430 @findex gnus-summary-catchup-all 4024 @findex gnus-summary-catchup-all
3431 Mark all articles in the group as read---even the ticked and dormant 4025 Mark all articles in the group as read---even the ticked and dormant
3533 @kindex M P U (Summary) 4127 @kindex M P U (Summary)
3534 @findex gnus-summary-unmark-all-processable 4128 @findex gnus-summary-unmark-all-processable
3535 Remove the process mark from all articles 4129 Remove the process mark from all articles
3536 (@code{gnus-summary-unmark-all-processable}). 4130 (@code{gnus-summary-unmark-all-processable}).
3537 4131
4132 @item M P i
4133 @kindex M P i (Summary)
4134 @findex gnus-uu-invert-processable
4135 Invert the list of process marked articles
4136 (@code{gnus-uu-invert-processable}).
4137
3538 @item M P R 4138 @item M P R
3539 @kindex M P R (Summary) 4139 @kindex M P R (Summary)
3540 @findex gnus-uu-mark-by-regexp 4140 @findex gnus-uu-mark-by-regexp
3541 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). 4141 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}).
3542 4142
3582 @item M P b 4182 @item M P b
3583 @kindex M P b (Summary) 4183 @kindex M P b (Summary)
3584 @findex gnus-uu-mark-buffer 4184 @findex gnus-uu-mark-buffer
3585 Mark all articles in the buffer in the order they appear 4185 Mark all articles in the buffer in the order they appear
3586 (@code{gnus-uu-mark-buffer}). 4186 (@code{gnus-uu-mark-buffer}).
4187
4188 @item M P k
4189 @kindex M P k (Summary)
4190 @findex gnus-summary-kill-process-mark
4191 Push the current process mark set onto the stack and unmark all articles
4192 (@code{gnus-summary-kill-process-mark}).
4193
4194 @item M P y
4195 @kindex M P y (Summary)
4196 @findex gnus-summary-yank-process-mark
4197 Pop the previous process mark set from the stack and restore it
4198 (@code{gnus-summary-yank-process-mark}).
4199
4200 @item M P w
4201 @kindex M P w (Summary)
4202 @findex gnus-summary-save-process-mark
4203 Push the current process mark set onto the stack
4204 (@code{gnus-summary-save-process-mark}).
4205
3587 @end table 4206 @end table
3588 4207
3589 4208
3590 @node Limiting 4209 @node Limiting
3591 @section Limiting 4210 @section Limiting
3624 @item / m 4243 @item / m
3625 @kindex / m (Summary) 4244 @kindex / m (Summary)
3626 @findex gnus-summary-limit-to-marks 4245 @findex gnus-summary-limit-to-marks
3627 Ask for a mark and then limit to all articles that have not been marked 4246 Ask for a mark and then limit to all articles that have not been marked
3628 with that mark (@code{gnus-summary-limit-to-marks}). 4247 with that mark (@code{gnus-summary-limit-to-marks}).
4248
4249 @item / t
4250 @kindex / t (Summary)
4251 @findex gnus-summary-limit-to-age
4252 Ask for a number and then limit the summary buffer to articles that are
4253 older than (or equal to) that number of days
4254 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to
4255 articles that are younger than that number of days.
3629 4256
3630 @item / n 4257 @item / n
3631 @kindex / n (Summary) 4258 @kindex / n (Summary)
3632 @findex gnus-summary-limit-to-articles 4259 @findex gnus-summary-limit-to-articles
3633 Limit the summary buffer to the current article 4260 Limit the summary buffer to the current article
3769 @c Written by Michael Ernst <mernst@cs.rice.edu> 4396 @c Written by Michael Ernst <mernst@cs.rice.edu>
3770 @lisp 4397 @lisp
3771 (setq gnus-simplify-ignored-prefixes 4398 (setq gnus-simplify-ignored-prefixes
3772 (concat 4399 (concat
3773 "\\`\\[?\\(" 4400 "\\`\\[?\\("
4401 (mapconcat
4402 'identity
4403 '("looking"
4404 "wanted" "followup" "summary\\( of\\)?"
4405 "help" "query" "problem" "question"
4406 "answer" "reference" "announce"
4407 "How can I" "How to" "Comparison of"
4408 ;; ...
4409 )
4410 "\\|")
4411 "\\)\\s *\\("
3774 (mapconcat 'identity 4412 (mapconcat 'identity
3775 '("looking" 4413 '("for" "for reference" "with" "about")
3776 "wanted" "followup" "summary\\( of\\)?"
3777 "help" "query" "problem" "question"
3778 "answer" "reference" "announce"
3779 "How can I" "How to" "Comparison of"
3780 ;; ...
3781 )
3782 "\\|") 4414 "\\|")
3783 "\\)\\s *\\(" 4415 "\\)?\\]?:?[ \t]*"))
3784 (mapconcat 'identity
3785 '("for" "for reference" "with" "about")
3786 "\\|")
3787 "\\)?\\]?:?[ \t]*"))
3788 @end lisp 4416 @end lisp
3789 4417
3790 All words that match this regexp will be removed before comparing two 4418 All words that match this regexp will be removed before comparing two
3791 subjects. 4419 subjects.
3792 4420
3876 @item gnus-thread-hide-subtree 4504 @item gnus-thread-hide-subtree
3877 @vindex gnus-thread-hide-subtree 4505 @vindex gnus-thread-hide-subtree
3878 If non-@code{nil}, all threads will be hidden when the summary buffer is 4506 If non-@code{nil}, all threads will be hidden when the summary buffer is
3879 generated. 4507 generated.
3880 4508
4509 @item gnus-thread-expunge-below
4510 @vindex gnus-thread-expunge-below
4511 All threads that have a total score (as defined by
4512 @code{gnus-thread-score-function}) less than this number will be
4513 expunged. This variable is @code{nil} by default, which means that no
4514 threads are expunged.
4515
3881 @item gnus-thread-hide-killed 4516 @item gnus-thread-hide-killed
3882 @vindex gnus-thread-hide-killed 4517 @vindex gnus-thread-hide-killed
3883 if you kill a thread and this variable is non-@code{nil}, the subtree 4518 if you kill a thread and this variable is non-@code{nil}, the subtree
3884 will be hidden. 4519 will be hidden.
3885 4520
3891 in a new thread. 4526 in a new thread.
3892 4527
3893 @item gnus-thread-indent-level 4528 @item gnus-thread-indent-level
3894 @vindex gnus-thread-indent-level 4529 @vindex gnus-thread-indent-level
3895 This is a number that says how much each sub-thread should be indented. 4530 This is a number that says how much each sub-thread should be indented.
3896 The default is @code{4}. 4531 The default is 4.
4532
4533 @item gnus-parse-headers-hook
4534 @vindex gnus-parse-headers-hook
4535 Hook run before parsing any headers. The default value is
4536 @code{(gnus-decode-rfc1522)}, which means that QPized headers will be
4537 slightly decoded in a hackish way. This is likely to change in the
4538 future when Gnus becomes @sc{MIME}ified.
4539
3897 @end table 4540 @end table
3898 4541
3899 4542
3900 @node Thread Commands 4543 @node Thread Commands
3901 @subsection Thread Commands 4544 @subsection Thread Commands
3906 @item T k 4549 @item T k
3907 @itemx M-C-k 4550 @itemx M-C-k
3908 @kindex T k (Summary) 4551 @kindex T k (Summary)
3909 @kindex M-C-k (Summary) 4552 @kindex M-C-k (Summary)
3910 @findex gnus-summary-kill-thread 4553 @findex gnus-summary-kill-thread
3911 Mark all articles in the current sub-thread as read 4554 Mark all articles in the current (sub-)thread as read
3912 (@code{gnus-summary-kill-thread}). If the prefix argument is positive, 4555 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
3913 remove all marks instead. If the prefix argument is negative, tick 4556 remove all marks instead. If the prefix argument is negative, tick
3914 articles instead. 4557 articles instead.
3915 4558
3916 @item T l 4559 @item T l
3917 @itemx M-C-l 4560 @itemx M-C-l
3918 @kindex T l (Summary) 4561 @kindex T l (Summary)
3919 @kindex M-C-l (Summary) 4562 @kindex M-C-l (Summary)
3920 @findex gnus-summary-lower-thread 4563 @findex gnus-summary-lower-thread
3921 Lower the score of the current thread 4564 Lower the score of the current (sub-)thread
3922 (@code{gnus-summary-lower-thread}). 4565 (@code{gnus-summary-lower-thread}).
3923 4566
3924 @item T i 4567 @item T i
3925 @kindex T i (Summary) 4568 @kindex T i (Summary)
3926 @findex gnus-summary-raise-thread 4569 @findex gnus-summary-raise-thread
3927 Increase the score of the current thread 4570 Increase the score of the current (sub-)thread
3928 (@code{gnus-summary-raise-thread}). 4571 (@code{gnus-summary-raise-thread}).
3929 4572
3930 @item T # 4573 @item T #
3931 @kindex T # (Summary) 4574 @kindex T # (Summary)
3932 @findex gnus-uu-mark-thread 4575 @findex gnus-uu-mark-thread
3933 Set the process mark on the current thread 4576 Set the process mark on the current (sub-)thread
3934 (@code{gnus-uu-mark-thread}). 4577 (@code{gnus-uu-mark-thread}).
3935 4578
3936 @item T M-# 4579 @item T M-#
3937 @kindex T M-# (Summary) 4580 @kindex T M-# (Summary)
3938 @findex gnus-uu-unmark-thread 4581 @findex gnus-uu-unmark-thread
3939 Remove the process mark from the current thread 4582 Remove the process mark from the current (sub-)thread
3940 (@code{gnus-uu-unmark-thread}). 4583 (@code{gnus-uu-unmark-thread}).
3941 4584
3942 @item T T 4585 @item T T
3943 @kindex T T (Summary) 4586 @kindex T T (Summary)
3944 @findex gnus-summary-toggle-threads 4587 @findex gnus-summary-toggle-threads
3945 Toggle threading (@code{gnus-summary-toggle-threads}). 4588 Toggle threading (@code{gnus-summary-toggle-threads}).
3946 4589
3947 @item T s 4590 @item T s
3948 @kindex T s (Summary) 4591 @kindex T s (Summary)
3949 @findex gnus-summary-show-thread 4592 @findex gnus-summary-show-thread
3950 Expose the thread hidden under the current article, if any 4593 Expose the (sub-)thread hidden under the current article, if any
3951 (@code{gnus-summary-show-thread}). 4594 (@code{gnus-summary-show-thread}).
3952 4595
3953 @item T h 4596 @item T h
3954 @kindex T h (Summary) 4597 @kindex T h (Summary)
3955 @findex gnus-summary-hide-thread 4598 @findex gnus-summary-hide-thread
3956 Hide the current (sub)thread (@code{gnus-summary-hide-thread}). 4599 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
3957 4600
3958 @item T S 4601 @item T S
3959 @kindex T S (Summary) 4602 @kindex T S (Summary)
3960 @findex gnus-summary-show-all-threads 4603 @findex gnus-summary-show-all-threads
3961 Expose all hidden threads (@code{gnus-summary-show-all-threads}). 4604 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
4111 4754
4112 4755
4113 @node Asynchronous Fetching 4756 @node Asynchronous Fetching
4114 @section Asynchronous Article Fetching 4757 @section Asynchronous Article Fetching
4115 @cindex asynchronous article fetching 4758 @cindex asynchronous article fetching
4759 @cindex article pre-fetch
4760 @cindex pre-fetch
4116 4761
4117 If you read your news from an @sc{nntp} server that's far away, the 4762 If you read your news from an @sc{nntp} server that's far away, the
4118 network latencies may make reading articles a chore. You have to wait 4763 network latencies may make reading articles a chore. You have to wait
4119 for a while after pressing @kbd{n} to go to the next article before the 4764 for a while after pressing @kbd{n} to go to the next article before the
4120 article appears. Why can't Gnus just go ahead and fetch the article 4765 article appears. Why can't Gnus just go ahead and fetch the article
4121 while you are reading the previous one? Why not, indeed. 4766 while you are reading the previous one? Why not, indeed.
4122 4767
4123 First, some caveats. There are some pitfalls to using asynchronous 4768 First, some caveats. There are some pitfalls to using asynchronous
4124 article fetching, especially the way Gnus does it. 4769 article fetching, especially the way Gnus does it.
4125 4770
4126 Let's say you are reading article 1, which is short, and article 2 is 4771 Let's say you are reading article 1, which is short, and article 2 is
4145 4790
4146 @vindex gnus-asynchronous 4791 @vindex gnus-asynchronous
4147 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should 4792 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
4148 happen automatically. 4793 happen automatically.
4149 4794
4150 @vindex nntp-async-number 4795 @vindex gnus-use-article-prefetch
4151 You can control how many articles that are to be pre-fetched by setting 4796 You can control how many articles that are to be pre-fetched by setting
4152 @code{nntp-async-number}. This is five by default, which means that when 4797 @code{gnus-use-article-prefetch}. This is 30 by default, which means
4153 you read an article in the group, @code{nntp} will pre-fetch the next 4798 that when you read an article in the group, the backend will pre-fetch
4154 five articles. If this variable is @code{t}, @code{nntp} will pre-fetch 4799 the next 30 articles. If this variable is @code{t}, the backend will
4155 all the articles that it can without bound. If it is @code{nil}, no 4800 pre-fetch all the articles that it can without bound. If it is
4156 pre-fetching will be made. 4801 @code{nil}, no pre-fetching will be made.
4157 4802
4158 @vindex gnus-asynchronous-article-function 4803 @vindex gnus-async-prefetch-article-p
4159 You may wish to create some sort of scheme for choosing which articles 4804 @findex gnus-async-read-p
4160 that @code{nntp} should consider as candidates for pre-fetching. For 4805 There are probably some articles that you don't want to pre-fetch---read
4161 instance, you may wish to pre-fetch all articles with high scores, and 4806 articles, for instance. Which articles to pre-fetch is controlled by
4162 not pre-fetch low-scored articles. You can do that by setting the 4807 the @code{gnus-async-prefetch-article-p} variable. This function should
4163 @code{gnus-asynchronous-article-function}, which will be called with an 4808 return non-@code{nil} when the article in question is to be
4164 alist where the keys are the article numbers. Your function should 4809 pre-fetched. The default is @code{gnus-async-read-p}, which returns
4165 return an alist where the articles you are not interested in have been 4810 @code{nil} on read articles. The function is called with an article
4166 removed. You could also do sorting on article score and the like. 4811 data structure as the only parameter.
4812
4813 If, for instance, you wish to pre-fetch only unread articles that are
4814 shorter than 100 lines, you could say something like:
4815
4816 @lisp
4817 (defun my-async-short-unread-p (data)
4818 "Return non-nil for short, unread articles."
4819 (and (gnus-data-unread-p data)
4820 (< (mail-header-lines (gnus-data-header data))
4821 100)))
4822
4823 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
4824 @end lisp
4825
4826 These functions will be called many, many times, so they should
4827 preferrably be short and sweet to avoid slowing down Gnus too much.
4828 It's also probably a good idea to byte-compile things like this.
4829
4830 @vindex gnus-prefetched-article-deletion-strategy
4831 Articles have to be removed from the asynch buffer sooner or later. The
4832 @code{gnus-prefetched-article-deletion-strategy} says when to remove
4833 articles. This is a list that may contain the following elements:
4834
4835 @table @code
4836 @item read
4837 Remove articles when they are read.
4838
4839 @item exit
4840 Remove articles when exiting the group.
4841 @end table
4842
4843 The default value is @code{(read exit)}.
4844
4845 @vindex gnus-use-header-prefetch
4846 If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
4847 from the next group.
4167 4848
4168 4849
4169 @node Article Caching 4850 @node Article Caching
4170 @section Article Caching 4851 @section Article Caching
4171 @cindex article caching 4852 @cindex article caching
4350 @item O f 5031 @item O f
4351 @kindex O f (Summary) 5032 @kindex O f (Summary)
4352 @findex gnus-summary-save-article-file 5033 @findex gnus-summary-save-article-file
4353 Save the current article in plain file format 5034 Save the current article in plain file format
4354 (@code{gnus-summary-save-article-file}). 5035 (@code{gnus-summary-save-article-file}).
5036
5037 @item O F
5038 @kindex O F (Summary)
5039 @findex gnus-summary-write-article-file
5040 Write the current article in plain file format, overwriting any previous
5041 file contents (@code{gnus-summary-write-article-file}).
4355 5042
4356 @item O b 5043 @item O b
4357 @kindex O b (Summary) 5044 @kindex O b (Summary)
4358 @findex gnus-summary-save-article-body-file 5045 @findex gnus-summary-save-article-body-file
4359 Save the current article body in plain file format 5046 Save the current article body in plain file format
4461 5148
4462 @table @code 5149 @table @code
4463 5150
4464 @item gnus-Numeric-save-name 5151 @item gnus-Numeric-save-name
4465 @findex gnus-Numeric-save-name 5152 @findex gnus-Numeric-save-name
4466 Generates file names that look like @file{~/News/Alt.andrea-dworkin/45}. 5153 File names like @file{~/News/Alt.andrea-dworkin/45}.
4467 5154
4468 @item gnus-numeric-save-name 5155 @item gnus-numeric-save-name
4469 @findex gnus-numeric-save-name 5156 @findex gnus-numeric-save-name
4470 Generates file names that look like @file{~/News/alt.andrea-dworkin/45}. 5157 File names like @file{~/News/alt.andrea-dworkin/45}.
4471 5158
4472 @item gnus-Plain-save-name 5159 @item gnus-Plain-save-name
4473 @findex gnus-Plain-save-name 5160 @findex gnus-Plain-save-name
4474 Generates file names that look like @file{~/News/Alt.andrea-dworkin}. 5161 File names like @file{~/News/Alt.andrea-dworkin}.
4475 5162
4476 @item gnus-plain-save-name 5163 @item gnus-plain-save-name
4477 @findex gnus-plain-save-name 5164 @findex gnus-plain-save-name
4478 Generates file names that look like @file{~/News/alt.andrea-dworkin}. 5165 File names like @file{~/News/alt.andrea-dworkin}.
4479 @end table 5166 @end table
4480 5167
4481 @vindex gnus-split-methods 5168 @vindex gnus-split-methods
4482 You can have Gnus suggest where to save articles by plonking a regexp into 5169 You can have Gnus suggest where to save articles by plonking a regexp into
4483 the @code{gnus-split-methods} alist. For instance, if you would like to 5170 the @code{gnus-split-methods} alist. For instance, if you would like to
4722 @cindex sox 5409 @cindex sox
4723 This variable is consulted first when viewing files. If you wish to use, 5410 This variable is consulted first when viewing files. If you wish to use,
4724 for instance, @code{sox} to convert an @samp{.au} sound file, you could 5411 for instance, @code{sox} to convert an @samp{.au} sound file, you could
4725 say something like: 5412 say something like:
4726 @lisp 5413 @lisp
4727 (setq gnus-uu-user-view-rules 5414 (setq gnus-uu-user-view-rules
4728 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\"))) 5415 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
4729 @end lisp 5416 @end lisp
4730 5417
4731 @item gnus-uu-user-view-rules-end 5418 @item gnus-uu-user-view-rules-end
4732 @vindex gnus-uu-user-view-rules-end 5419 @vindex gnus-uu-user-view-rules-end
4733 This variable is consulted if Gnus couldn't make any matches from the 5420 This variable is consulted if Gnus couldn't make any matches from the
4760 5447
4761 @item gnus-uu-grab-move 5448 @item gnus-uu-grab-move
4762 @findex gnus-uu-grab-move 5449 @findex gnus-uu-grab-move
4763 Move the file (if you're using a saving function.) 5450 Move the file (if you're using a saving function.)
4764 @end table 5451 @end table
5452
5453 @item gnus-uu-be-dangerous
5454 @vindex gnus-uu-be-dangerous
5455 Specifies what to do if unusual situations arise during decoding. If
5456 @code{nil}, be as conservative as possible. If @code{t}, ignore things
5457 that didn't work, and overwrite existing files. Otherwise, ask each
5458 time.
4765 5459
4766 @item gnus-uu-ignore-files-by-name 5460 @item gnus-uu-ignore-files-by-name
4767 @vindex gnus-uu-ignore-files-by-name 5461 @vindex gnus-uu-ignore-files-by-name
4768 Files with name matching this regular expression won't be viewed. 5462 Files with name matching this regular expression won't be viewed.
4769 5463
4921 writing, so there are tons of functions and variables to make reading 5615 writing, so there are tons of functions and variables to make reading
4922 these articles easier. 5616 these articles easier.
4923 5617
4924 @menu 5618 @menu
4925 * Article Highlighting:: You want to make the article look like fruit salad. 5619 * Article Highlighting:: You want to make the article look like fruit salad.
5620 * Article Fontisizing:: Making emphasized text look niced.
4926 * Article Hiding:: You also want to make certain info go away. 5621 * Article Hiding:: You also want to make certain info go away.
4927 * Article Washing:: Lots of way-neat functions to make life better. 5622 * Article Washing:: Lots of way-neat functions to make life better.
4928 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. 5623 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
4929 * Article Date:: Grumble, UT! 5624 * Article Date:: Grumble, UT!
5625 * Article Signature:: What is a signature?
4930 @end menu 5626 @end menu
4931 5627
4932 5628
4933 @node Article Highlighting 5629 @node Article Highlighting
4934 @subsection Article Highlighting 5630 @subsection Article Highlighting
5019 @kindex W H s (Summary) 5715 @kindex W H s (Summary)
5020 @vindex gnus-signature-separator 5716 @vindex gnus-signature-separator
5021 @vindex gnus-signature-face 5717 @vindex gnus-signature-face
5022 @findex gnus-article-highlight-signature 5718 @findex gnus-article-highlight-signature
5023 Highlight the signature (@code{gnus-article-highlight-signature}). 5719 Highlight the signature (@code{gnus-article-highlight-signature}).
5024 Everything after @code{gnus-signature-separator} in an article will be 5720 Everything after @code{gnus-signature-separator} (@pxref{Article
5025 considered a signature and will be highlighted with 5721 Signature}) in an article will be considered a signature and will be
5026 @code{gnus-signature-face}, which is @code{italic} by default. 5722 highlighted with @code{gnus-signature-face}, which is @code{italic} by
5027 5723 default.
5028 @end table 5724
5725 @end table
5726
5727
5728 @node Article Fontisizing
5729 @subsection Article Fontisizing
5730 @cindex emphasis
5731 @cindex article emphasis
5732
5733 @findex gnus-article-emphasize
5734 @kindex W e (Summary)
5735 People commonly add emphasis to words in news articles by writing things
5736 like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by
5737 running the article through the @kbd{W e}
5738 (@code{gnus-article-emphasize}) command.
5739
5740 @vindex gnus-article-emphasis
5741 How the emphasis is computed is controlled by the
5742 @code{gnus-article-emphasis} variable. This is an alist where the first
5743 element is a regular expression to be matched. The second is a number
5744 that says what regular expression grouping used to find the entire
5745 emphasized word. The third is a number that says what regexp grouping
5746 should be displayed and highlighted. (The text between these two
5747 groupings will be hidden.) The fourth is the face used for
5748 highlighting.
5749
5750 @lisp
5751 (setq gnus-article-emphasis
5752 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
5753 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
5754 @end lisp
5755
5756 @vindex gnus-emphasis-underline
5757 @vindex gnus-emphasis-bold
5758 @vindex gnus-emphasis-italic
5759 @vindex gnus-emphasis-underline-bold
5760 @vindex gnus-emphasis-underline-italic
5761 @vindex gnus-emphasis-bold-italic
5762 @vindex gnus-emphasis-underline-bold-italic
5763 By default, there are seven rules, and they use the following faces:
5764 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
5765 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
5766 @code{gnus-emphasis-underline-italic},
5767 @code{gnus-emphasis-undeline-bold}, and
5768 @code{gnus-emphasis-underline-bold-italic}.
5769
5770 If you want to change these faces, you can either use @kbd{M-x
5771 customize}, or you can use @code{copy-face}. For instance, if you want
5772 to make @code{gnus-emphasis-italic} use a red face instead, you could
5773 say something like:
5774
5775 @lisp
5776 (copy-face 'red 'gnus-emphasis-italic)
5777 @end lisp
5029 5778
5030 5779
5031 @node Article Hiding 5780 @node Article Hiding
5032 @subsection Article Hiding 5781 @subsection Article Hiding
5033 @cindex article hiding 5782 @cindex article hiding
5055 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. 5804 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
5056 5805
5057 @item W W s 5806 @item W W s
5058 @kindex W W s (Summary) 5807 @kindex W W s (Summary)
5059 @findex gnus-article-hide-signature 5808 @findex gnus-article-hide-signature
5060 Hide signature (@code{gnus-article-hide-signature}). 5809 Hide signature (@code{gnus-article-hide-signature}). @xref{Article
5810 Signature}.
5061 5811
5062 @item W W p 5812 @item W W p
5063 @kindex W W p (Summary) 5813 @kindex W W p (Summary)
5064 @findex gnus-article-hide-pgp 5814 @findex gnus-article-hide-pgp
5065 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). 5815 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}).
5066 5816
5067 @item W W P 5817 @item W W P
5068 @kindex W W P (Summary) 5818 @kindex W W P (Summary)
5069 @findex gnus-article-hide-pem 5819 @findex gnus-article-hide-pem
5070 Hide @sc{pem} (privacy enhavnced hessages) gruft 5820 Hide @sc{pem} (privacy enhanced messages) gruft
5071 (@code{gnus-article-hide-pem}). 5821 (@code{gnus-article-hide-pem}).
5072 5822
5073 @item W W c 5823 @item W W c
5074 @kindex W W c (Summary) 5824 @kindex W W c (Summary)
5075 @findex gnus-article-hide-citation 5825 @findex gnus-article-hide-citation
5090 5840
5091 @item gnus-cited-text-button-line-format 5841 @item gnus-cited-text-button-line-format
5092 @vindex gnus-cited-text-button-line-format 5842 @vindex gnus-cited-text-button-line-format
5093 Gnus adds buttons show where the cited text has been hidden, and to 5843 Gnus adds buttons show where the cited text has been hidden, and to
5094 allow toggle hiding the text. The format of the variable is specified 5844 allow toggle hiding the text. The format of the variable is specified
5095 by this format-like variable. These specs are legal: 5845 by this format-like variable (@pxref{Formatting Variables}). These
5846 specs are legal:
5096 5847
5097 @table @samp 5848 @table @samp
5098 @item b 5849 @item b
5099 Start point of the hidden text. 5850 Start point of the hidden text.
5100 @item e 5851 @item e
5124 hidden. If you give a positive prefix, they will always hide. 5875 hidden. If you give a positive prefix, they will always hide.
5125 5876
5126 Also @pxref{Article Highlighting} for further variables for 5877 Also @pxref{Article Highlighting} for further variables for
5127 citation customization. 5878 citation customization.
5128 5879
5129 @vindex gnus-signature-limit
5130 @code{gnus-signature-limit} provides a limit to what is considered a
5131 signature. If it is a number, no signature may not be longer (in
5132 characters) than that number. If it is a function, the function will be
5133 called without any parameters, and if it returns @code{nil}, there is no
5134 signature in the buffer. If it is a string, it will be used as a
5135 regexp. If it matches, the text in question is not a signature.
5136
5137 5880
5138 @node Article Washing 5881 @node Article Washing
5139 @subsection Article Washing 5882 @subsection Article Washing
5140 @cindex washing 5883 @cindex washing
5141 @cindex article washing 5884 @cindex article washing
5189 @findex gnus-article-fill-cited-article 5932 @findex gnus-article-fill-cited-article
5190 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this 5933 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this
5191 function in @code{gnus-article-display-hook}, it should be run fairly 5934 function in @code{gnus-article-display-hook}, it should be run fairly
5192 late and certainly after any highlighting. 5935 late and certainly after any highlighting.
5193 5936
5937 You can give the command a numerical prefix to specify the width to use
5938 when filling.
5939
5194 @item W c 5940 @item W c
5195 @kindex W c (Summary) 5941 @kindex W c (Summary)
5196 @findex gnus-article-remove-cr 5942 @findex gnus-article-remove-cr
5197 Remove CR (@code{gnus-article-remove-cr}). 5943 Remove CR (@code{gnus-article-remove-cr}).
5198
5199 @item W L
5200 @kindex W L (Summary)
5201 @findex gnus-article-remove-trailing-blank-lines
5202 Remove all blank lines at the end of the article
5203 (@code{gnus-article-remove-trailing-blank-lines}).
5204 5944
5205 @item W q 5945 @item W q
5206 @kindex W q (Summary) 5946 @kindex W q (Summary)
5207 @findex gnus-article-de-quoted-unreadable 5947 @findex gnus-article-de-quoted-unreadable
5208 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). 5948 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
5239 @kindex W B (Summary) 5979 @kindex W B (Summary)
5240 @findex gnus-article-add-buttons-to-head 5980 @findex gnus-article-add-buttons-to-head
5241 Add clickable buttons to the article headers 5981 Add clickable buttons to the article headers
5242 (@code{gnus-article-add-buttons-to-head}). 5982 (@code{gnus-article-add-buttons-to-head}).
5243 5983
5984 @item W E l
5985 @kindex W E l (Summary)
5986 @findex gnus-article-strip-leading-blank-lines
5987 Remove all blank lines from the beginning of the article
5988 (@code{gnus-article-strip-leading-blank-lines}).
5989
5990 @item W E m
5991 @kindex W E m (Summary)
5992 @findex gnus-article-strip-multiple-blank-lines
5993 Replace all blank lines with empty lines and then all multiple empty
5994 lines with a single empty line.
5995 (@code{gnus-article-strip-multiple-blank-lines}).
5996
5997 @item W E t
5998 @kindex W E t (Summary)
5999 @findex gnus-article-remove-trailing-blank-lines
6000 Remove all blank lines at the end of the article
6001 (@code{gnus-article-remove-trailing-blank-lines}).
6002
6003 @item W E a
6004 @kindex W E a (Summary)
6005 @findex gnus-article-strip-blank-lines
6006 Do all the three commands above
6007 (@code{gnus-article-strip-blank-lines}).
6008
5244 @end table 6009 @end table
5245 6010
5246 6011
5247 @node Article Buttons 6012 @node Article Buttons
5248 @subsection Article Buttons 6013 @subsection Article Buttons
5275 @samp{<URL:\\([^\n\r>]*\\)>}. 6040 @samp{<URL:\\([^\n\r>]*\\)>}.
5276 6041
5277 @item button-par 6042 @item button-par
5278 Gnus has to know which parts of the match is to be highlighted. This is 6043 Gnus has to know which parts of the match is to be highlighted. This is
5279 a number that says what sub-expression of the regexp that is to be 6044 a number that says what sub-expression of the regexp that is to be
5280 highlighted. If you want it all highlighted, you use @code{0} here. 6045 highlighted. If you want it all highlighted, you use 0 here.
5281 6046
5282 @item use-p 6047 @item use-p
5283 This form will be @code{eval}ed, and if the result is non-@code{nil}, 6048 This form will be @code{eval}ed, and if the result is non-@code{nil},
5284 this is considered a match. This is useful if you want extra sifting to 6049 this is considered a match. This is useful if you want extra sifting to
5285 avoid false matches. 6050 avoid false matches.
5316 A regular expression that matches embedded URLs. It is used in the 6081 A regular expression that matches embedded URLs. It is used in the
5317 default values of the variables above. 6082 default values of the variables above.
5318 6083
5319 @item gnus-article-button-face 6084 @item gnus-article-button-face
5320 @vindex gnus-article-button-face 6085 @vindex gnus-article-button-face
5321 Face used on bottons. 6086 Face used on buttons.
5322 6087
5323 @item gnus-article-mouse-face 6088 @item gnus-article-mouse-face
5324 @vindex gnus-article-mouse-face 6089 @vindex gnus-article-mouse-face
5325 Face is used when the mouse cursor is over a button. 6090 Face is used when the mouse cursor is over a button.
5326 6091
5344 6109
5345 @item W T l 6110 @item W T l
5346 @kindex W T l (Summary) 6111 @kindex W T l (Summary)
5347 @findex gnus-article-date-local 6112 @findex gnus-article-date-local
5348 Display the date in the local timezone (@code{gnus-article-date-local}). 6113 Display the date in the local timezone (@code{gnus-article-date-local}).
6114
6115 @item W T s
6116 @kindex W T s (Summary)
6117 @vindex gnus-article-time-format
6118 @findex gnus-article-date-user
6119 @findex format-time-string
6120 Display the date using a user-defined format
6121 (@code{gnus-article-date-user}). The format is specified by the
6122 @code{gnus-article-time-format} variable, and is a string that's passed
6123 to @code{format-time-string}. See the documentation of that variable
6124 for a list possible format specs.
5349 6125
5350 @item W T e 6126 @item W T e
5351 @kindex W T e (Summary) 6127 @kindex W T e (Summary)
5352 @findex gnus-article-date-lapsed 6128 @findex gnus-article-date-lapsed
5353 Say how much time has (e)lapsed between the article was posted and now 6129 Say how much time has (e)lapsed between the article was posted and now
5363 @emph{totally} impossible. Don't you trust me? *titter* 6139 @emph{totally} impossible. Don't you trust me? *titter*
5364 6140
5365 @end table 6141 @end table
5366 6142
5367 6143
6144 @node Article Signature
6145 @subsection Article Signature
6146 @cindex signatures
6147 @cindex article signature
6148
6149 @vindex gnus-signature-separator
6150 Each article is divided into two parts---the head and the body. The
6151 body can be divided into a signature part and a text part. The variable
6152 that says what is to be considered a signature is
6153 @code{gnus-signature-separator}. This is normally the standard
6154 @samp{^-- $} as mandated by son-of-RFC 1036. However, many people use
6155 non-standard signature separators, so this variable can also be a list
6156 of regular expressions to be tested, one by one. (Searches are done
6157 from the end of the body towards the beginning.) One likely value is:
6158
6159 @lisp
6160 (setq gnus-signature-separator
6161 '("^-- $" ; The standard
6162 "^-- *$" ; A common mangling
6163 "^-------*$" ; Many people just use a looong
6164 ; line of dashes. Shame!
6165 "^ *--------*$" ; Double-shame!
6166 "^________*$" ; Underscores are also popular
6167 "^========*$")) ; Pervert!
6168 @end lisp
6169
6170 The more permissive you are, the more likely it is that you'll get false
6171 positives.
6172
6173 @vindex gnus-signature-limit
6174 @code{gnus-signature-limit} provides a limit to what is considered a
6175 signature.
6176
6177 @enumerate
6178 @item
6179 If it is an integer, no signature may be longer (in characters) than
6180 that integer.
6181 @item
6182 If it is a floating point number, no signature may be longer (in lines)
6183 than that number.
6184 @item
6185 If it is a function, the function will be called without any parameters,
6186 and if it returns @code{nil}, there is no signature in the buffer.
6187 @item
6188 If it is a string, it will be used as a regexp. If it matches, the text
6189 in question is not a signature.
6190 @end enumerate
6191
6192 This variable can also be a list where the elements may be of the types
6193 listed above.
6194
6195
6196 @node Article Commands
6197 @section Article Commands
6198
6199 @table @kbd
6200
6201 @item A P
6202 @cindex PostScript
6203 @cindex printing
6204 @kindex A P (Summary)
6205 @vindex gnus-ps-print-hook
6206 @findex gnus-summary-print-article
6207 Generate and print a PostScript image of the article buffer
6208 (@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will be
6209 run just before printing the buffer.
6210
6211 @end table
6212
6213
5368 @node Summary Sorting 6214 @node Summary Sorting
5369 @section Summary Sorting 6215 @section Summary Sorting
5370 @cindex summary sorting 6216 @cindex summary sorting
5371 6217
5372 You can have the summary buffer sorted in various ways, even though I 6218 You can have the summary buffer sorted in various ways, even though I
5391 6237
5392 @item C-c C-s C-d 6238 @item C-c C-s C-d
5393 @kindex C-c C-s C-d (Summary) 6239 @kindex C-c C-s C-d (Summary)
5394 @findex gnus-summary-sort-by-date 6240 @findex gnus-summary-sort-by-date
5395 Sort by date (@code{gnus-summary-sort-by-date}). 6241 Sort by date (@code{gnus-summary-sort-by-date}).
6242
6243 @item C-c C-s C-l
6244 @kindex C-c C-s C-l (Summary)
6245 @findex gnus-summary-sort-by-lines
6246 Sort by lines (@code{gnus-summary-sort-by-lines}).
5396 6247
5397 @item C-c C-s C-i 6248 @item C-c C-s C-i
5398 @kindex C-c C-s C-i (Summary) 6249 @kindex C-c C-s C-i (Summary)
5399 @findex gnus-summary-sort-by-score 6250 @findex gnus-summary-sort-by-score
5400 Sort by score (@code{gnus-summary-sort-by-score}). 6251 Sort by score (@code{gnus-summary-sort-by-score}).
5422 can just press @kbd{^} or @kbd{A r} 6273 can just press @kbd{^} or @kbd{A r}
5423 (@code{gnus-summary-refer-parent-article}). If everything goes well, 6274 (@code{gnus-summary-refer-parent-article}). If everything goes well,
5424 you'll get the parent. If the parent is already displayed in the 6275 you'll get the parent. If the parent is already displayed in the
5425 summary buffer, point will just move to this article. 6276 summary buffer, point will just move to this article.
5426 6277
6278 If given a positive numerical prefix, fetch that many articles back into
6279 the ancestry. If given a negative numerical prefix, fetch just that
6280 ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the
6281 grandparent and the grandgrandparent of the current article. If you say
6282 @kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current
6283 article.
6284
5427 @findex gnus-summary-refer-references 6285 @findex gnus-summary-refer-references
5428 @kindex A R (Summary) 6286 @kindex A R (Summary)
5429 You can have Gnus fetch all articles mentioned in the @code{References} 6287 You can have Gnus fetch all articles mentioned in the @code{References}
5430 header of the article by pushing @kbd{A R} 6288 header of the article by pushing @kbd{A R}
5431 (@code{gnus-summary-refer-references}). 6289 (@code{gnus-summary-refer-references}).
5432 6290
5433 @findex gnus-summary-refer-article 6291 @findex gnus-summary-refer-article
5434 @kindex M-^ (Summary) 6292 @kindex M-^ (Summary)
6293 @cindex Message-ID
6294 @cindex fetching by Message-ID
5435 You can also ask the @sc{nntp} server for an arbitrary article, no 6295 You can also ask the @sc{nntp} server for an arbitrary article, no
5436 matter what group it belongs to. @kbd{M-^} 6296 matter what group it belongs to. @kbd{M-^}
5437 (@code{gnus-summary-refer-article}) will ask you for a 6297 (@code{gnus-summary-refer-article}) will ask you for a
5438 @code{Message-ID}, which is one of those long thingies that look 6298 @code{Message-ID}, which is one of those long, hard-to-read thingies
5439 something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You have to get 6299 that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You
5440 it all exactly right. No fuzzy searches, I'm afraid. 6300 have to get it all exactly right. No fuzzy searches, I'm afraid.
5441 6301
5442 @vindex gnus-refer-article-method 6302 @vindex gnus-refer-article-method
5443 If the group you are reading is located on a backend that does not 6303 If the group you are reading is located on a backend that does not
5444 support fetching by @code{Message-ID} very well (like @code{nnspool}), 6304 support fetching by @code{Message-ID} very well (like @code{nnspool}),
5445 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It 6305 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It
5485 available. 6345 available.
5486 6346
5487 Here are the available keystrokes when using pick mode: 6347 Here are the available keystrokes when using pick mode:
5488 6348
5489 @table @kbd 6349 @table @kbd
6350 @item .
6351 @kindex . (Pick)
6352 @findex gnus-summary-mark-as-processable
6353 Pick the article on the current line
6354 (@code{gnus-summary-mark-as-processable}). If given a numerical prefix,
6355 go to the article on that line and pick that article. (The line number
6356 is normally displayed on the beginning of the summary pick lines.)
6357
5490 @item SPACE 6358 @item SPACE
5491 @kindex SPACE (Pick) 6359 @kindex SPACE (Pick)
5492 @findex gnus-summary-mark-as-processable 6360 @findex gnus-pick-next-page
5493 Pick the article (@code{gnus-summary-mark-as-processable}). 6361 Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If
6362 at the end of the buffer, start reading the picked articles.
5494 6363
5495 @item u 6364 @item u
5496 @kindex u (Pick) 6365 @kindex u (Pick)
5497 @findex gnus-summary-unmark-as-processable 6366 @findex gnus-summary-unmark-as-processable
5498 Unpick the article (@code{gnus-summary-unmark-as-processable}). 6367 Unpick the article (@code{gnus-summary-unmark-as-processable}).
5559 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) 6428 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
5560 @end lisp 6429 @end lisp
5561 6430
5562 @vindex gnus-pick-mode-hook 6431 @vindex gnus-pick-mode-hook
5563 @code{gnus-pick-mode-hook} is run in pick minor mode buffers. 6432 @code{gnus-pick-mode-hook} is run in pick minor mode buffers.
6433
6434 @vindex gnus-mark-unpicked-articles-as-read
6435 If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark
6436 all unpicked articles as read. The default is @code{nil}.
6437
6438 @vindex gnus-summary-pick-line-format
6439 The summary line format in pick mode is slightly different than the
6440 standard format. At the beginning of each line the line number is
6441 displayed. The pick mode line format is controlled by the
6442 @code{gnus-summary-pick-line-format} variable (@pxref{Formatting
6443 Variables}). It accepts the same format specs that
6444 @code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}).
5564 6445
5565 6446
5566 @node Binary Groups 6447 @node Binary Groups
5567 @subsection Binary Groups 6448 @subsection Binary Groups
5568 @cindex binary groups 6449 @cindex binary groups
5675 6556
5676 Here's and example from a horizontal tree buffer: 6557 Here's and example from a horizontal tree buffer:
5677 6558
5678 @example 6559 @example
5679 @{***@}-(***)-[odd]-[Gun] 6560 @{***@}-(***)-[odd]-[Gun]
5680 | \[Jan] 6561 | \[Jan]
5681 | \[odd]-[Eri] 6562 | \[odd]-[Eri]
5682 | \(***)-[Eri] 6563 | \(***)-[Eri]
5683 | \[odd]-[Paa] 6564 | \[odd]-[Paa]
5684 \[Bjo] 6565 \[Bjo]
5685 \[Gun] 6566 \[Gun]
5686 \[Gun]-[Jor] 6567 \[Gun]-[Jor]
5687 @end example 6568 @end example
5688 6569
5720 (@code{gnus-summary-expire-articles}). 6601 (@code{gnus-summary-expire-articles}).
5721 6602
5722 @item B M-C-e 6603 @item B M-C-e
5723 @kindex B M-C-e (Summary) 6604 @kindex B M-C-e (Summary)
5724 @findex gnus-summary-expire-articles-now 6605 @findex gnus-summary-expire-articles-now
5725 Expunge all the expirable articles in the group 6606 Delete all the expirable articles in the group
5726 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} 6607 (@code{gnus-summary-expire-articles-now}). This means that @strong{all}
5727 articles that are eligible for expiry in the current group will 6608 articles that are eligible for expiry in the current group will
5728 disappear forever into that big @file{/dev/null} in the sky. 6609 disappear forever into that big @file{/dev/null} in the sky.
5729 6610
5730 @item B DEL 6611 @item B DEL
5766 6647
5767 @item B r 6648 @item B r
5768 @kindex B r (Summary) 6649 @kindex B r (Summary)
5769 @findex gnus-summary-respool-article 6650 @findex gnus-summary-respool-article
5770 Respool the mail article (@code{gnus-summary-move-article}). 6651 Respool the mail article (@code{gnus-summary-move-article}).
6652 @code{gnus-summary-respool-default-method} will be used as the default
6653 select method when respooling. This variable is @code{nil} by default,
6654 which means that the current group select method will be used instead.
5771 6655
5772 @item B w 6656 @item B w
5773 @itemx e 6657 @itemx e
5774 @kindex B w (Summary) 6658 @kindex B w (Summary)
5775 @kindex e (Summary) 6659 @kindex e (Summary)
5783 @kindex B q (Summary) 6667 @kindex B q (Summary)
5784 @findex gnus-summary-respool-query 6668 @findex gnus-summary-respool-query
5785 If you want to re-spool an article, you might be curious as to what group 6669 If you want to re-spool an article, you might be curious as to what group
5786 the article will end up in before you do the re-spooling. This command 6670 the article will end up in before you do the re-spooling. This command
5787 will tell you (@code{gnus-summary-respool-query}). 6671 will tell you (@code{gnus-summary-respool-query}).
6672
6673 @item B p
6674 @kindex B p (Summary)
6675 @findex gnus-summary-article-posted-p
6676 Some people have a tendency to send you "courtesy" copies when they
6677 follow up to articles you have posted. These usually have a
6678 @code{Newsgroups} header in them, but not always. This command
6679 (@code{gnus-summary-article-posted-p}) will try to fetch the current
6680 article from your news server (or rather, from
6681 @code{gnus-refer-article-method} or @code{gnus-select-method}) and will
6682 report back whether it found the article or not. Even if it says that
6683 it didn't find the article, it may have been posted anyway---mail
6684 propagation is much faster than news propagation, and the news copy may
6685 just not have arrived yet.
6686
5788 @end table 6687 @end table
5789 6688
5790 @vindex gnus-move-split-methods 6689 @vindex gnus-move-split-methods
5791 @cindex moving articles 6690 @cindex moving articles
5792 If you move (or copy) articles regularly, you might wish to have Gnus 6691 If you move (or copy) articles regularly, you might wish to have Gnus
5793 suggest where to put the articles. @code{gnus-move-split-methods} is a 6692 suggest where to put the articles. @code{gnus-move-split-methods} is a
5794 variable that uses the same syntax as @code{gnus-split-methods} 6693 variable that uses the same syntax as @code{gnus-split-methods}
5795 (@pxref{Saving Articles}). You may customize that variable to create 6694 (@pxref{Saving Articles}). You may customize that variable to create
5796 suggestions you find reasonable. 6695 suggestions you find reasonable.
5797 6696
6697 @lisp
6698 (setq gnus-move-split-methods
6699 '(("^From:.*Lars Magne" "nnml:junk")
6700 ("^Subject:.*gnus" "nnfolder:important")
6701 (".*" "nnml:misc")))
6702 @end lisp
6703
5798 6704
5799 @node Various Summary Stuff 6705 @node Various Summary Stuff
5800 @section Various Summary Stuff 6706 @section Various Summary Stuff
5801 6707
5802 @menu 6708 @menu
5803 * Summary Group Information:: Information oriented commands. 6709 * Summary Group Information:: Information oriented commands.
5804 * Searching for Articles:: Multiple article commands. 6710 * Searching for Articles:: Multiple article commands.
6711 * Summary Generation Commands:: (Re)generating the summary buffer.
5805 * Really Various Summary Commands:: Those pesky non-conformant commands. 6712 * Really Various Summary Commands:: Those pesky non-conformant commands.
5806 @end menu 6713 @end menu
5807 6714
5808 @table @code 6715 @table @code
5809 @vindex gnus-summary-mode-hook 6716 @vindex gnus-summary-mode-hook
5852 rereading the description from the server. 6759 rereading the description from the server.
5853 6760
5854 @item H h 6761 @item H h
5855 @kindex H h (Summary) 6762 @kindex H h (Summary)
5856 @findex gnus-summary-describe-briefly 6763 @findex gnus-summary-describe-briefly
5857 Give a very brief description of the most important summary keystrokes 6764 Give an extremely brief description of the most important summary
5858 (@code{gnus-summary-describe-briefly}). 6765 keystrokes (@code{gnus-summary-describe-briefly}).
5859 6766
5860 @item H i 6767 @item H i
5861 @kindex H i (Summary) 6768 @kindex H i (Summary)
5862 @findex gnus-info-find-node 6769 @findex gnus-info-find-node
5863 Go to the Gnus info node (@code{gnus-info-find-node}). 6770 Go to the Gnus info node (@code{gnus-info-find-node}).
5893 @findex gnus-summary-universal-argument 6800 @findex gnus-summary-universal-argument
5894 Perform any operation on all articles that have been marked with 6801 Perform any operation on all articles that have been marked with
5895 the process mark (@code{gnus-summary-universal-argument}). 6802 the process mark (@code{gnus-summary-universal-argument}).
5896 @end table 6803 @end table
5897 6804
6805 @node Summary Generation Commands
6806 @subsection Summary Generation Commands
6807
6808 @table @kbd
6809
6810 @item Y g
6811 @kindex Y g (Summary)
6812 @findex gnus-summary-prepare
6813 Regenerate the current summary buffer (@code{gnus-summary-prepare}).
6814
6815 @item Y c
6816 @kindex Y c (Summary)
6817 @findex gnus-summary-insert-cached-articles
6818 Pull all cached articles (for the current group) into the summary buffer
6819 (@code{gnus-summary-insert-cached-articles}).
6820
6821 @end table
6822
5898 6823
5899 @node Really Various Summary Commands 6824 @node Really Various Summary Commands
5900 @subsection Really Various Summary Commands 6825 @subsection Really Various Summary Commands
5901 6826
5902 @table @kbd 6827 @table @kbd
5903 6828
5904 @item A D 6829 @item C-d
5905 @kindex A D (Summary) 6830 @kindex C-d (Summary)
5906 @findex gnus-summary-enter-digest-group 6831 @findex gnus-summary-enter-digest-group
5907 If the current article is a collection of other articles (for instance, 6832 If the current article is a collection of other articles (for instance,
5908 a digest), you might use this command to enter a group based on the that 6833 a digest), you might use this command to enter a group based on the that
5909 article (@code{gnus-summary-enter-digest-group}). Gnus will try to 6834 article (@code{gnus-summary-enter-digest-group}). Gnus will try to
5910 guess what article type is currently displayed unless you give a prefix 6835 guess what article type is currently displayed unless you give a prefix
5911 to this command, which forces a ``digest'' interpretation. Basically, 6836 to this command, which forces a ``digest'' interpretation. Basically,
5912 whenever you see a message that is a collection of other messages on 6837 whenever you see a message that is a collection of other messages on
5913 some format, you @kbd{A D} and read these messages in a more convenient 6838 some format, you @kbd{C-d} and read these messages in a more convenient
5914 fashion. 6839 fashion.
6840
6841 @item M-C-d
6842 @kindex M-C-d (Summary)
6843 @findex gnus-summary-read-document
6844 This command is very similar to the one above, but lets you gather
6845 several documents into one biiig group
6846 (@code{gnus-summary-read-document}). It does this by opening several
6847 @code{nndoc} groups for each document, and then opening an
6848 @code{nnvirtual} group on top of these @code{nndoc} groups. This
6849 command understands the process/prefix convention
6850 (@pxref{Process/Prefix}).
5915 6851
5916 @item C-t 6852 @item C-t
5917 @kindex C-t (Summary) 6853 @kindex C-t (Summary)
5918 @findex gnus-summary-toggle-truncation 6854 @findex gnus-summary-toggle-truncation
5919 Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}). 6855 Toggle truncation of summary lines
6856 (@code{gnus-summary-toggle-truncation}). This will probably confuse the
6857 line centering function in the summary buffer, so it's not a good idea
6858 to have truncation switched off while reading articles.
5920 6859
5921 @item = 6860 @item =
5922 @kindex = (Summary) 6861 @kindex = (Summary)
5923 @findex gnus-summary-expand-window 6862 @findex gnus-summary-expand-window
5924 Expand the summary buffer window (@code{gnus-summary-expand-window}). 6863 Expand the summary buffer window (@code{gnus-summary-expand-window}).
5925 If given a prefix, force an @code{article} window configuration. 6864 If given a prefix, force an @code{article} window configuration.
6865
5926 @end table 6866 @end table
5927 6867
5928 6868
5929 @node Exiting the Summary Buffer 6869 @node Exiting the Summary Buffer
5930 @section Exiting the Summary Buffer 6870 @section Exiting the Summary Buffer
5946 Exit the current group and update all information on the group 6886 Exit the current group and update all information on the group
5947 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is 6887 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is
5948 called before doing much of the exiting, and calls 6888 called before doing much of the exiting, and calls
5949 @code{gnus-summary-expire-articles} by default. 6889 @code{gnus-summary-expire-articles} by default.
5950 @code{gnus-summary-exit-hook} is called after finishing the exiting 6890 @code{gnus-summary-exit-hook} is called after finishing the exiting
5951 process. 6891 process. @code{gnus-group-no-more-groups-hook} is run when returning to
6892 group mode having no more (unread) groups.
5952 6893
5953 @item Z E 6894 @item Z E
5954 @itemx Q 6895 @itemx Q
5955 @kindex Z E (Summary) 6896 @kindex Z E (Summary)
5956 @kindex Q (Summary) 6897 @kindex Q (Summary)
6003 @item Z P 6944 @item Z P
6004 @kindex Z P (Summary) 6945 @kindex Z P (Summary)
6005 @findex gnus-summary-prev-group 6946 @findex gnus-summary-prev-group
6006 Exit the group and go to the previous group 6947 Exit the group and go to the previous group
6007 (@code{gnus-summary-prev-group}). 6948 (@code{gnus-summary-prev-group}).
6949
6950 @item Z s
6951 @kindex Z s (Summary)
6952 @findex gnus-summary-save-newsrc
6953 Save the current number of read/marked articles in the dribble buffer
6954 and then save the dribble buffer (@code{gnus-summary-save-newsrc}). If
6955 given a prefix, also save the @file{.newsrc} file(s). Using this
6956 command will make exit without updating (the @kbd{Q} command) worthless.
6008 @end table 6957 @end table
6009 6958
6010 @vindex gnus-exit-group-hook 6959 @vindex gnus-exit-group-hook
6011 @code{gnus-exit-group-hook} is called when you exit the current 6960 @code{gnus-exit-group-hook} is called when you exit the current
6012 group. 6961 group.
6032 summary buffer. If the @code{gnus-use-cross-reference} variable is 6981 summary buffer. If the @code{gnus-use-cross-reference} variable is
6033 @code{t} (which is the default), articles that are cross-referenced to 6982 @code{t} (which is the default), articles that are cross-referenced to
6034 this group and are marked as read, will also be marked as read in the 6983 this group and are marked as read, will also be marked as read in the
6035 other subscribed groups they were cross-posted to. If this variable is 6984 other subscribed groups they were cross-posted to. If this variable is
6036 neither @code{nil} nor @code{t}, the article will be marked as read in 6985 neither @code{nil} nor @code{t}, the article will be marked as read in
6037 both subscribed and unsubscribed groups. 6986 both subscribed and unsubscribed groups (@pxref{Crosspost Handling}).
6987
6988
6989 @node Crosspost Handling
6990 @section Crosspost Handling
6038 6991
6039 @cindex velveeta 6992 @cindex velveeta
6040 @cindex spamming 6993 @cindex spamming
6041 Marking cross-posted articles as read ensures that you'll never have to 6994 Marking cross-posted articles as read ensures that you'll never have to
6042 read the same article more than once. Unless, of course, somebody has 6995 read the same article more than once. Unless, of course, somebody has
6043 posted it to several groups separately. Posting the same article to 6996 posted it to several groups separately. Posting the same article to
6044 several groups (not cross-posting) is called @dfn{spamming}, and you are 6997 several groups (not cross-posting) is called @dfn{spamming}, and you are
6045 by law required to send nasty-grams to anyone who perpetrates such a 6998 by law required to send nasty-grams to anyone who perpetrates such a
6046 heinous crime. 6999 heinous crime. You may want to try NoCeM handling to filter out spam
7000 (@pxref{NoCeM}).
6047 7001
6048 Remember: Cross-posting is kinda ok, but posting the same article 7002 Remember: Cross-posting is kinda ok, but posting the same article
6049 separately to several groups is not. Massive cross-posting (aka. 7003 separately to several groups is not. Massive cross-posting (aka.
6050 @dfn{velveeta}) is to be avoided. 7004 @dfn{velveeta}) is to be avoided at all costs, and you can even use the
7005 @code{gnus-summary-mail-crosspost-complaint} command to complain about
7006 excessive crossposting (@pxref{Summary Mail Commands}).
6051 7007
6052 @cindex cross-posting 7008 @cindex cross-posting
6053 @cindex Xref 7009 @cindex Xref
6054 @cindex @sc{nov} 7010 @cindex @sc{nov}
6055 One thing that may cause Gnus to not do the cross-posting thing 7011 One thing that may cause Gnus to not do the cross-posting thing
6078 set @code{gnus-nov-is-evil} to @code{t}, which slows things down 7034 set @code{gnus-nov-is-evil} to @code{t}, which slows things down
6079 considerably. 7035 considerably.
6080 7036
6081 C'est la vie. 7037 C'est la vie.
6082 7038
7039 For an alternative approach, @pxref{Duplicate Suppression}.
7040
7041
7042 @node Duplicate Suppression
7043 @section Duplicate Suppression
7044
7045 By default, Gnus tries to make sure that you don't have to read the same
7046 article more than once by utilizing the crossposting mechanism
7047 (@pxref{Crosspost Handling}). However, that simple and efficient
7048 approach may not work satisfactorily for some users for various
7049 reasons.
7050
7051 @enumerate
7052 @item
7053 The @sc{nntp} server may fail to generate the @code{Xref} header. This
7054 is evil and not very common.
7055
7056 @item
7057 The @sc{nntp} server may fail to include the @code{Xref} header in the
7058 @file{.overview} data bases. This is evil and all too common, alas.
7059
7060 @item
7061 You may be reading the same group (or several related groups) from
7062 different @sc{nntp} servers.
7063
7064 @item
7065 You may be getting mail that duplicates articles posted to groups.
7066 @end enumerate
7067
7068 I'm sure there are other situations that @code{Xref} handling fails as
7069 well, but these four are the most common situations.
7070
7071 If, and only if, @code{Xref} handling fails for you, then you may
7072 consider switching on @dfn{duplicate suppression}. If you do so, Gnus
7073 will remember the @code{Message-ID}s of all articles you have read or
7074 otherwise marked as read, and then, as if by magic, mark them as read
7075 all subsequent times you see them---in @emph{all} groups. Using this
7076 mechanism is quite likely to be somewhat inefficient, but not overly
7077 so. It's certainly preferable to reading the same articles more than
7078 once.
7079
7080 Duplicate suppression is not a very subtle instrument. It's more like a
7081 sledge hammer than anything else. It works in a very simple
7082 fashion---if you have marked an article as read, it adds this Message-ID
7083 to a cache. The next time it sees this Message-ID, it will mark the
7084 article as read the the @samp{M} mark. It doesn't care what group it
7085 saw the article in.
7086
7087 @table @code
7088 @item gnus-suppress-duplicates
7089 @vindex gnus-suppress-duplicates
7090 If non-@code{nil}, suppress duplicates.
7091
7092 @item gnus-save-duplicate-list
7093 @vindex gnus-save-duplicate-list
7094 If non-@code{nil}, save the list of duplicates to a file. This will
7095 make startup and shutdown take longer, so the default is @code{nil}.
7096 However, this means that only duplicate articles that is read in a
7097 single Gnus session are suppressed.
7098
7099 @item gnus-duplicate-list-length
7100 @vindex gnus-duplicate-list-length
7101 This variables says how many @code{Message-ID}s to keep in the duplicate
7102 suppression list. The default is 10000.
7103
7104 @item gnus-duplicate-file
7105 @vindex gnus-duplicate-file
7106 The name of the file to store the duplicate suppression list. The
7107 default is @file{~/News/suppression}.
7108 @end table
7109
7110 If you have a tendency to stop and start Gnus often, setting
7111 @code{gnus-save-duplicate-list} to @code{t} is probably a good idea. If
7112 you leave Gnus running for weeks on end, you may have it @code{nil}. On
7113 the other hand, saving the list makes startup and shutdown much slower,
7114 so that means that if you stop and start Gnus often, you should set
7115 @code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up
7116 to you to figure out, I think.
7117
6083 7118
6084 @node The Article Buffer 7119 @node The Article Buffer
6085 @chapter The Article Buffer 7120 @chapter The Article Buffer
6086 @cindex article buffer 7121 @cindex article buffer
6087 7122
6091 7126
6092 @menu 7127 @menu
6093 * Hiding Headers:: Deciding what headers should be displayed. 7128 * Hiding Headers:: Deciding what headers should be displayed.
6094 * Using MIME:: Pushing articles through @sc{mime} before reading them. 7129 * Using MIME:: Pushing articles through @sc{mime} before reading them.
6095 * Customizing Articles:: Tailoring the look of the articles. 7130 * Customizing Articles:: Tailoring the look of the articles.
6096 * Article Keymap:: Keystrokes available in the article buffer 7131 * Article Keymap:: Keystrokes available in the article buffer.
6097 * Misc Article:: Other stuff. 7132 * Misc Article:: Other stuff.
6098 @end menu 7133 @end menu
6099 7134
6100 7135
6101 @node Hiding Headers 7136 @node Hiding Headers
6229 7264
6230 @vindex gnus-show-mime 7265 @vindex gnus-show-mime
6231 @vindex gnus-show-mime-method 7266 @vindex gnus-show-mime-method
6232 @vindex gnus-strict-mime 7267 @vindex gnus-strict-mime
6233 @findex metamail-buffer 7268 @findex metamail-buffer
6234 Gnus handles @sc{mime} by shoving the articles through 7269 Gnus handles @sc{mime} by pushing the articles through
6235 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by 7270 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by
6236 default. Set @code{gnus-show-mime} to @code{t} if you want to use 7271 default. Set @code{gnus-show-mime} to @code{t} if you want to use
6237 @sc{mime} all the time. However, if @code{gnus-strict-mime} is 7272 @sc{mime} all the time. However, if @code{gnus-strict-mime} is
6238 non-@code{nil}, the @sc{mime} method will only be used if there are 7273 non-@code{nil}, the @sc{mime} method will only be used if there are
6239 @sc{mime} headers in the article. 7274 @sc{mime} headers in the article. If you have @code{gnus-show-mime}
7275 set, then you'll see some unfortunate display glitches in the article
7276 buffer. These can't be avoided.
6240 7277
6241 It might be best to just use the toggling functions from the summary 7278 It might be best to just use the toggling functions from the summary
6242 buffer to avoid getting nasty surprises. (For instance, you enter the 7279 buffer to avoid getting nasty surprises. (For instance, you enter the
6243 group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has 7280 group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has
6244 decoded the sound file in the article and some horrible sing-a-long song 7281 decoded the sound file in the article and some horrible sing-a-long song
6259 The @code{gnus-article-display-hook} is called after the article has 7296 The @code{gnus-article-display-hook} is called after the article has
6260 been inserted into the article buffer. It is meant to handle all 7297 been inserted into the article buffer. It is meant to handle all
6261 treatment of the article before it is displayed. 7298 treatment of the article before it is displayed.
6262 7299
6263 @findex gnus-article-maybe-highlight 7300 @findex gnus-article-maybe-highlight
6264 By default it contains @code{gnus-article-hide-headers}, 7301 By default this hook just contains @code{gnus-article-hide-headers},
6265 @code{gnus-article-treat-overstrike}, and 7302 @code{gnus-article-treat-overstrike}, and
6266 @code{gnus-article-maybe-highlight}, but there are thousands, nay 7303 @code{gnus-article-maybe-highlight}, but there are thousands, nay
6267 millions, of functions you can put in this hook. For an overview of 7304 millions, of functions you can put in this hook. For an overview of
6268 functions @pxref{Article Highlighting}, @pxref{Article Hiding}, 7305 functions @pxref{Article Highlighting}, @pxref{Article Hiding},
6269 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article 7306 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article
6270 Date}. 7307 Date}. Note that the order of functions in this hook might affect
7308 things, so you may have to fiddle a bit to get the desired results.
6271 7309
6272 You can, of course, write your own functions. The functions are called 7310 You can, of course, write your own functions. The functions are called
6273 from the article buffer, and you can do anything you like, pretty much. 7311 from the article buffer, and you can do anything you like, pretty much.
6274 There is no information that you have to keep in the buffer---you can 7312 There is no information that you have to keep in the buffer---you can
6275 change everything. However, you shouldn't delete any headers. Instead 7313 change everything. However, you shouldn't delete any headers. Instead
6364 7402
6365 @item gnus-article-mode-hook 7403 @item gnus-article-mode-hook
6366 @vindex gnus-article-mode-hook 7404 @vindex gnus-article-mode-hook
6367 Hook called in article mode buffers. 7405 Hook called in article mode buffers.
6368 7406
7407 @item gnus-article-mode-syntax-table
7408 @vindex gnus-article-mode-syntax-table
7409 Syntax table used in article buffers. It is initialized from
7410 @code{text-mode-syntax-table}.
7411
6369 @vindex gnus-article-mode-line-format 7412 @vindex gnus-article-mode-line-format
6370 @item gnus-article-mode-line-format 7413 @item gnus-article-mode-line-format
6371 This variable is a format string along the same lines as 7414 This variable is a format string along the same lines as
6372 @code{gnus-summary-mode-line-format}. It accepts exactly the same 7415 @code{gnus-summary-mode-line-format}. It accepts the same
6373 format specifications as that variable. 7416 format specifications as that variable, with one extension:
7417
7418 @table @samp
7419 @item w
7420 The @dfn{wash status} of the article. This is a short string with one
7421 character for each possible article wash operation that may have been
7422 performed.
7423 @end table
7424
6374 @vindex gnus-break-pages 7425 @vindex gnus-break-pages
6375 7426
6376 @item gnus-break-pages 7427 @item gnus-break-pages
6377 Controls whether @dfn{page breaking} is to take place. If this variable 7428 Controls whether @dfn{page breaking} is to take place. If this variable
6378 is non-@code{nil}, the articles will be divided into pages whenever a 7429 is non-@code{nil}, the articles will be divided into pages whenever a
6477 Now, if you've done this, and then this server rejects your article, or 7528 Now, if you've done this, and then this server rejects your article, or
6478 this server is down, what do you do then? To override this variable you 7529 this server is down, what do you do then? To override this variable you
6479 can use a non-zero prefix to the @kbd{C-c C-c} command to force using 7530 can use a non-zero prefix to the @kbd{C-c C-c} command to force using
6480 the ``current'' server for posting. 7531 the ``current'' server for posting.
6481 7532
6482 If you give a zero prefix (i. e., @kbd{C-u 0 C-c C-c}) to that command, 7533 If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command,
6483 Gnus will prompt you for what method to use for posting. 7534 Gnus will prompt you for what method to use for posting.
6484 7535
6485 You can also set @code{gnus-post-method} to a list of select methods. 7536 You can also set @code{gnus-post-method} to a list of select methods.
6486 If that's the case, Gnus will always prompt you for what method to use 7537 If that's the case, Gnus will always prompt you for what method to use
6487 for posting. 7538 for posting.
6526 @cindex archived messages 7577 @cindex archived messages
6527 @cindex sent messages 7578 @cindex sent messages
6528 7579
6529 Gnus provides a few different methods for storing the mail you send. 7580 Gnus provides a few different methods for storing the mail you send.
6530 The default method is to use the @dfn{archive virtual server} to store 7581 The default method is to use the @dfn{archive virtual server} to store
6531 the mail. If you want to disable this completely, you should set 7582 the mail. If you want to disable this completely, the
6532 @code{gnus-message-archive-group} to @code{nil}. 7583 @code{gnus-message-archive-group} variable should be @code{nil}, which
7584 is the default.
6533 7585
6534 @vindex gnus-message-archive-method 7586 @vindex gnus-message-archive-method
6535 @code{gnus-message-archive-method} says what virtual server Gnus is to 7587 @code{gnus-message-archive-method} says what virtual server Gnus is to
6536 use to store sent messages. It is @code{(nnfolder "archive" 7588 use to store sent messages. The default is:
6537 (nnfolder-directory "~/Mail/archive/"))} by default, but you can use any 7589
6538 mail select method (@code{nnml}, @code{nnmbox}, etc.). However, 7590 @lisp
6539 @code{nnfolder} is a quite likeable select method for doing this sort of 7591 (nnfolder "archive"
6540 thing. If you don't like the default directory chosen, you could say 7592 (nnfolder-directory "~/Mail/archive/"))
6541 something like: 7593 @end lisp
7594
7595 You can, however, use any mail select method (@code{nnml},
7596 @code{nnmbox}, etc.). @code{nnfolder} is a quite likeable select method
7597 for doing this sort of thing, though. If you don't like the default
7598 directory chosen, you could say something like:
6542 7599
6543 @lisp 7600 @lisp
6544 (setq gnus-message-archive-method 7601 (setq gnus-message-archive-method
6545 '(nnfolder "archive" 7602 '(nnfolder "archive"
6546 (nnfolder-inhibit-expiry t) 7603 (nnfolder-inhibit-expiry t)
6615 group. If the group gets really big and annoying, you can simply rename 7672 group. If the group gets really big and annoying, you can simply rename
6616 if (using @kbd{G r} in the group buffer) to something 7673 if (using @kbd{G r} in the group buffer) to something
6617 nice---@samp{misc-mail-september-1995}, or whatever. New messages will 7674 nice---@samp{misc-mail-september-1995}, or whatever. New messages will
6618 continue to be stored in the old (now empty) group. 7675 continue to be stored in the old (now empty) group.
6619 7676
6620 That's the default method of archiving sent mail. Gnus also offers two 7677 That's the default method of archiving sent mail. Gnus also a different
6621 other variables for the people who don't like the default method. In 7678 way for the people who don't like the default method. In that case you
6622 that case you should set @code{gnus-message-archive-group} to 7679 should set @code{gnus-message-archive-group} to @code{nil}; this will
6623 @code{nil}; this will disable archiving. 7680 disable archiving.
6624 7681
6625 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to 7682 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to
6626 use a different value for @code{gnus-message-archive-group} there. 7683 use a different value for @code{gnus-message-archive-group} there.
6627
6628 7684
6629 @table @code 7685 @table @code
6630 @item gnus-outgoing-message-group 7686 @item gnus-outgoing-message-group
6631 @vindex gnus-outgoing-message-group 7687 @vindex gnus-outgoing-message-group
6632 All outgoing messages will be put in this group. If you want to store 7688 All outgoing messages will be put in this group. If you want to store
6814 @sc{nntp} server, it could be a virtual group, or it could be your own 7870 @sc{nntp} server, it could be a virtual group, or it could be your own
6815 personal mail group. 7871 personal mail group.
6816 7872
6817 A foreign group (or any group, really) is specified by a @dfn{name} and 7873 A foreign group (or any group, really) is specified by a @dfn{name} and
6818 a @dfn{select method}. To take the latter first, a select method is a 7874 a @dfn{select method}. To take the latter first, a select method is a
6819 list where the first element says what backend to use (eg. @code{nntp}, 7875 list where the first element says what backend to use (e.g. @code{nntp},
6820 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server 7876 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server
6821 name}. There may be additional elements in the select method, where the 7877 name}. There may be additional elements in the select method, where the
6822 value may have special meaning for the backend in question. 7878 value may have special meaning for the backend in question.
6823 7879
6824 One could say that a select method defines a @dfn{virtual server}---so 7880 One could say that a select method defines a @dfn{virtual server}---so
6827 The @dfn{name} of the group is the name the backend will recognize the 7883 The @dfn{name} of the group is the name the backend will recognize the
6828 group as. 7884 group as.
6829 7885
6830 For instance, the group @samp{soc.motss} on the @sc{nntp} server 7886 For instance, the group @samp{soc.motss} on the @sc{nntp} server
6831 @samp{some.where.edu} will have the name @samp{soc.motss} and select 7887 @samp{some.where.edu} will have the name @samp{soc.motss} and select
6832 method @code{(nntp "some.where.edu")}. Gnus will call this group, in 7888 method @code{(nntp "some.where.edu")}. Gnus will call this group
6833 all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the 7889 @samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp}
6834 @code{nntp} backend just knows this group as @samp{soc.motss}. 7890 backend just knows this group as @samp{soc.motss}.
6835 7891
6836 The different methods all have their peculiarities, of course. 7892 The different methods all have their peculiarities, of course.
6837 7893
6838 @menu 7894 @menu
6839 * The Server Buffer:: Making and editing virtual servers. 7895 * The Server Buffer:: Making and editing virtual servers.
6859 on the same actual @sc{nntp} server. You tell Gnus which backend to 7915 on the same actual @sc{nntp} server. You tell Gnus which backend to
6860 use, and what parameters to set by specifying a @dfn{select method}. 7916 use, and what parameters to set by specifying a @dfn{select method}.
6861 7917
6862 These select methods specifications can sometimes become quite 7918 These select methods specifications can sometimes become quite
6863 complicated---say, for instance, that you want to read from the 7919 complicated---say, for instance, that you want to read from the
6864 @sc{nntp} server @samp{news.funet.fi} on port number @code{13}, which 7920 @sc{nntp} server @samp{news.funet.fi} on port number 13, which
6865 hangs if queried for @sc{nov} headers and has a buggy select. Ahem. 7921 hangs if queried for @sc{nov} headers and has a buggy select. Ahem.
6866 Anyways, if you had to specify that for each group that used this 7922 Anyways, if you had to specify that for each group that used this
6867 server, that would be too much work, so Gnus offers a way of naming 7923 server, that would be too much work, so Gnus offers a way of naming
6868 select methods, which is what you do in the server buffer. 7924 select methods, which is what you do in the server buffer.
6869 7925
6967 @item l 8023 @item l
6968 @kindex l (Server) 8024 @kindex l (Server)
6969 @findex gnus-server-list-servers 8025 @findex gnus-server-list-servers
6970 List all servers (@code{gnus-server-list-servers}). 8026 List all servers (@code{gnus-server-list-servers}).
6971 8027
8028 @item s
8029 @kindex s (Server)
8030 @findex gnus-server-scan-server
8031 Request that the server scan its sources for new articles
8032 (@code{gnus-server-scan-server}). This is mainly sensible with mail
8033 servers.
8034
8035 @item g
8036 @kindex g (Server)
8037 @findex gnus-server-regenerate-server
8038 Request that the server regenerate all its data structures
8039 (@code{gnus-server-regenerate-server}). This can be useful if you have
8040 a mail backend that has gotten out of synch.
8041
6972 @end table 8042 @end table
6973 8043
6974 8044
6975 @node Example Methods 8045 @node Example Methods
6976 @subsection Example Methods 8046 @subsection Example Methods
6993 8063
6994 After these two elements, there may be a arbitrary number of 8064 After these two elements, there may be a arbitrary number of
6995 @var{(variable form)} pairs. 8065 @var{(variable form)} pairs.
6996 8066
6997 To go back to the first example---imagine that you want to read from 8067 To go back to the first example---imagine that you want to read from
6998 port @code{15} from that machine. This is what the select method should 8068 port 15 from that machine. This is what the select method should
6999 look like then: 8069 look like then:
7000 8070
7001 @lisp 8071 @lisp
7002 (nntp "news.funet.fi" (nntp-port-number 15)) 8072 (nntp "news.funet.fi" (nntp-port-number 15))
7003 @end lisp 8073 @end lisp
7023 (nnmh "public" 8093 (nnmh "public"
7024 (nnmh-directory "/usr/information/spool/") 8094 (nnmh-directory "/usr/information/spool/")
7025 (nnmh-get-new-mail nil)) 8095 (nnmh-get-new-mail nil))
7026 @end lisp 8096 @end lisp
7027 8097
8098 If you are behind a firewall and only have access to the @sc{nntp}
8099 server from the firewall machine, you can instruct Gnus to @code{rlogin}
8100 on the firewall machine and telnet from there to the @sc{nntp} server.
8101 Doing this can be rather fiddly, but your virtual server definition
8102 should probably look something like this:
8103
8104 @lisp
8105 (nntp "firewall"
8106 (nntp-address "the.firewall.machine")
8107 (nntp-open-connection-function nntp-open-rlogin)
8108 (nntp-end-of-line "\n")
8109 (nntp-rlogin-parameters
8110 ("telnet" "the.real.nntp.host" "nntp")))
8111 @end lisp
8112
8113
7028 8114
7029 @node Creating a Virtual Server 8115 @node Creating a Virtual Server
7030 @subsection Creating a Virtual Server 8116 @subsection Creating a Virtual Server
7031 8117
7032 If you're saving lots of articles in the cache by using persistent 8118 If you're saving lots of articles in the cache by using persistent
7049 8135
7050 Change that to: 8136 Change that to:
7051 8137
7052 @lisp 8138 @lisp
7053 (nnspool "cache" 8139 (nnspool "cache"
7054 (nnspool-spool-directory "~/News/cache/") 8140 (nnspool-spool-directory "~/News/cache/")
7055 (nnspool-nov-directory "~/News/cache/") 8141 (nnspool-nov-directory "~/News/cache/")
7056 (nnspool-active-file "~/News/cache/active")) 8142 (nnspool-active-file "~/News/cache/active"))
7057 @end lisp 8143 @end lisp
7058 8144
7059 Type @kbd{C-c C-c} to return to the server buffer. If you now press 8145 Type @kbd{C-c C-c} to return to the server buffer. If you now press
7060 @kbd{RET} over this virtual server, you should be entered into a browse 8146 @kbd{RET} over this virtual server, you should be entered into a browse
7061 buffer, and you should be able to enter any of the groups displayed. 8147 buffer, and you should be able to enter any of the groups displayed.
7063 8149
7064 @node Servers and Methods 8150 @node Servers and Methods
7065 @subsection Servers and Methods 8151 @subsection Servers and Methods
7066 8152
7067 Wherever you would normally use a select method 8153 Wherever you would normally use a select method
7068 (eg. @code{gnus-secondary-select-method}, in the group select method, 8154 (e.g. @code{gnus-secondary-select-method}, in the group select method,
7069 when browsing a foreign server) you can use a virtual server name 8155 when browsing a foreign server) you can use a virtual server name
7070 instead. This could potentially save lots of typing. And it's nice all 8156 instead. This could potentially save lots of typing. And it's nice all
7071 over. 8157 over.
7072 8158
7073 8159
7112 @item D 8198 @item D
7113 @kindex D (Server) 8199 @kindex D (Server)
7114 @findex gnus-server-deny-server 8200 @findex gnus-server-deny-server
7115 Mark the current server as unreachable 8201 Mark the current server as unreachable
7116 (@code{gnus-server-deny-server}). 8202 (@code{gnus-server-deny-server}).
8203
8204 @item M-o
8205 @kindex M-o (Server)
8206 @findex gnus-server-open-all-servers
8207 Open the connections to all servers in the buffer
8208 (@code{gnus-server-open-all-servers}).
8209
8210 @item M-c
8211 @kindex M-c (Server)
8212 @findex gnus-server-close-all-servers
8213 Close the connections to all servers in the buffer
8214 (@code{gnus-server-close-all-servers}).
7117 8215
7118 @item R 8216 @item R
7119 @kindex R (Server) 8217 @kindex R (Server)
7120 @findex gnus-server-remove-denials 8218 @findex gnus-server-remove-denials
7121 Remove all marks to whether Gnus was denied connection from all servers 8219 Remove all marks to whether Gnus was denied connection from all servers
7170 @findex nntp-send-authinfo 8268 @findex nntp-send-authinfo
7171 @findex nntp-send-mode-reader 8269 @findex nntp-send-mode-reader
7172 @code{nntp-server-opened-hook} is run after a connection has been made. 8270 @code{nntp-server-opened-hook} is run after a connection has been made.
7173 It can be used to send commands to the @sc{nntp} server after it has 8271 It can be used to send commands to the @sc{nntp} server after it has
7174 been contacted. By default is sends the command @code{MODE READER} to 8272 been contacted. By default is sends the command @code{MODE READER} to
7175 the server with the @code{nntp-send-mode-reader} function. Another 8273 the server with the @code{nntp-send-mode-reader} function.
7176 popular function is @code{nntp-send-authinfo}, which will prompt you for 8274
7177 an @sc{nntp} password and stuff. 8275 @item nntp-authinfo-function
8276 @vindex nntp-authinfo-function
8277 This function will be used to send @samp{AUTHINFO} to the @sc{nntp}
8278 server. Available functions include:
8279
8280 @table @code
8281 @item nntp-send-authinfo
8282 @findex nntp-send-authinfo
8283 This function will used you current login name as the user name and will
8284 prompt you for the password. This is the default.
8285
8286 @item nntp-send-nosy-authinfo
8287 @findex nntp-send-nosy-authinfo
8288 This function will prompt you for both user name and password.
8289
8290 @item nntp-send-authinfo-from-file
8291 @findex nntp-send-authinfo-from-file
8292 This function will use your current login name as the user name and will
8293 read the @sc{nntp} password from @file{~/.nntp-authinfo}.
8294 @end table
7178 8295
7179 @item nntp-server-action-alist 8296 @item nntp-server-action-alist
7180 @vindex nntp-server-action-alist 8297 @vindex nntp-server-action-alist
7181 This is an list of regexps to match on server types and actions to be 8298 This is an list of regexps to match on server types and actions to be
7182 taken when matches are made. For instance, if you want Gnus to beep 8299 taken when matches are made. For instance, if you want Gnus to beep
7244 This hook is run as the last step when connecting to an @sc{nntp} 8361 This hook is run as the last step when connecting to an @sc{nntp}
7245 server. 8362 server.
7246 8363
7247 @findex nntp-open-rlogin 8364 @findex nntp-open-rlogin
7248 @findex nntp-open-network-stream 8365 @findex nntp-open-network-stream
7249 @item nntp-open-server-function 8366 @item nntp-open-connection-function
7250 @vindex nntp-open-server-function 8367 @vindex nntp-open-connection-function
7251 This function is used to connect to the remote system. Two pre-made 8368 This function is used to connect to the remote system. Two pre-made
7252 functions are @code{nntp-open-network-stream}, which is the default, and 8369 functions are @code{nntp-open-network-stream}, which is the default, and
7253 simply connects to some port or other on the remote system. The other 8370 simply connects to some port or other on the remote system. The other
7254 is @code{nntp-open-rlogin}, which does an rlogin on the remote system, 8371 is @code{nntp-open-rlogin}, which does an rlogin on the remote system,
7255 and then does a telnet to the @sc{nntp} server available there. 8372 and then does a telnet to the @sc{nntp} server available there.
7256 8373
7257 @item nntp-rlogin-parameters 8374 @item nntp-rlogin-parameters
7258 @vindex nntp-rlogin-parameters 8375 @vindex nntp-rlogin-parameters
7259 If you use @code{nntp-open-rlogin} as the 8376 If you use @code{nntp-open-rlogin} as the
7260 @code{nntp-open-server-function}, this list will be used as the 8377 @code{nntp-open-connection-function}, this list will be used as the
7261 parameter list given to @code{rsh}. 8378 parameter list given to @code{rsh}.
7262 8379
7263 @item nntp-end-of-line 8380 @item nntp-end-of-line
7264 @vindex nntp-end-of-line 8381 @vindex nntp-end-of-line
7265 String to use as end-of-line markers when talking to the @sc{nntp} 8382 String to use as end-of-line markers when talking to the @sc{nntp}
7313 8430
7314 @item nntp-prepare-server-hook 8431 @item nntp-prepare-server-hook
7315 @vindex nntp-prepare-server-hook 8432 @vindex nntp-prepare-server-hook
7316 A hook run before attempting to connect to an @sc{nntp} server. 8433 A hook run before attempting to connect to an @sc{nntp} server.
7317 8434
7318 @item nntp-async-number
7319 @vindex nntp-async-number
7320 How many articles should be pre-fetched when in asynchronous mode. If
7321 this variable is @code{t}, @code{nntp} will pre-fetch all the articles
7322 that it can without bound. If it is @code{nil}, no pre-fetching will be
7323 made.
7324
7325 @item nntp-warn-about-losing-connection 8435 @item nntp-warn-about-losing-connection
7326 @vindex nntp-warn-about-losing-connection 8436 @vindex nntp-warn-about-losing-connection
7327 If this variable is non-@code{nil}, some noise will be made when a 8437 If this variable is non-@code{nil}, some noise will be made when a
7328 server closes connection. 8438 server closes connection.
7329 8439
7334 @subsection News Spool 8444 @subsection News Spool
7335 @cindex nnspool 8445 @cindex nnspool
7336 @cindex news spool 8446 @cindex news spool
7337 8447
7338 Subscribing to a foreign group from the local spool is extremely easy, 8448 Subscribing to a foreign group from the local spool is extremely easy,
7339 and might be useful, for instance, to speed up reading groups like 8449 and might be useful, for instance, to speed up reading groups that
7340 @samp{alt.binaries.pictures.furniture}. 8450 contain very big articles---@samp{alt.binaries.pictures.furniture}, for
8451 instance.
7341 8452
7342 Anyways, you just specify @code{nnspool} as the method and @samp{} (or 8453 Anyways, you just specify @code{nnspool} as the method and @samp{} (or
7343 anything else) as the address. 8454 anything else) as the address.
7344 8455
7345 If you have access to a local spool, you should probably use that as the 8456 If you have access to a local spool, you should probably use that as the
7416 * Mail Backend Variables:: Variables for customizing mail handling. 8527 * Mail Backend Variables:: Variables for customizing mail handling.
7417 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. 8528 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
7418 * Mail and Procmail:: Reading mail groups that procmail create. 8529 * Mail and Procmail:: Reading mail groups that procmail create.
7419 * Incorporating Old Mail:: What about the old mail you have? 8530 * Incorporating Old Mail:: What about the old mail you have?
7420 * Expiring Mail:: Getting rid of unwanted mail. 8531 * Expiring Mail:: Getting rid of unwanted mail.
8532 * Washing Mail:: Removing gruft from the mail you get.
7421 * Duplicates:: Dealing with duplicated mail. 8533 * Duplicates:: Dealing with duplicated mail.
7422 * Not Reading Mail:: Using mail backends for reading other files. 8534 * Not Reading Mail:: Using mail backends for reading other files.
7423 * Choosing a Mail Backend:: Gnus can read a variety of mail formats. 8535 * Choosing a Mail Backend:: Gnus can read a variety of mail formats.
7424 @end menu 8536 @end menu
7425 8537
7447 8559
7448 You will probably want to split the mail into several groups, though: 8560 You will probably want to split the mail into several groups, though:
7449 8561
7450 @lisp 8562 @lisp
7451 (setq nnmail-split-methods 8563 (setq nnmail-split-methods
7452 '(("junk" "^From:.*Lars Ingebrigtsen") 8564 '(("junk" "^From:.*Lars Ingebrigtsen")
7453 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") 8565 ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
7454 ("other" ""))) 8566 ("other" "")))
7455 @end lisp 8567 @end lisp
7456 8568
7457 This will result in three new mail groups being created: 8569 This will result in three new @code{nnml} mail groups being created:
7458 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the 8570 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the
7459 mail that doesn't fit into the first two groups will be placed in the 8571 mail that doesn't fit into the first two groups will be placed in the
7460 latter group. 8572 latter group.
7461 8573
7462 This should be sufficient for reading mail with Gnus. You might want to 8574 This should be sufficient for reading mail with Gnus. You might want to
7484 these lists is the name of the mail group (they do not have to be called 8596 these lists is the name of the mail group (they do not have to be called
7485 something beginning with @samp{mail}, by the way), and the second 8597 something beginning with @samp{mail}, by the way), and the second
7486 element is a regular expression used on the header of each mail to 8598 element is a regular expression used on the header of each mail to
7487 determine if it belongs in this mail group. 8599 determine if it belongs in this mail group.
7488 8600
8601 If the first element is the special symbol @code{junk}, then messages
8602 that match the regexp will disappear into the aether. Use with
8603 extreme caution.
8604
7489 The second element can also be a function. In that case, it will be 8605 The second element can also be a function. In that case, it will be
7490 called narrowed to the headers with the first element of the rule as the 8606 called narrowed to the headers with the first element of the rule as the
7491 argument. It should return a non-@code{nil} value if it thinks that the 8607 argument. It should return a non-@code{nil} value if it thinks that the
7492 mail belongs in that group. 8608 mail belongs in that group.
7493 8609
7494 The last of these groups should always be a general one, and the regular 8610 The last of these groups should always be a general one, and the regular
7495 expression should @emph{always} be @samp{} so that it matches any 8611 expression should @emph{always} be @samp{} so that it matches any mails
7496 mails that haven't been matched by any of the other regexps. 8612 that haven't been matched by any of the other regexps. (These rules are
8613 processed from the beginning of the alist toward the end. The first
8614 rule to make a match will "win", unless you have crossposting enabled.
8615 In that case, all matching rules will "win".)
7497 8616
7498 If you like to tinker with this yourself, you can set this variable to a 8617 If you like to tinker with this yourself, you can set this variable to a
7499 function of your choice. This function will be called without any 8618 function of your choice. This function will be called without any
7500 arguments in a buffer narrowed to the headers of an incoming mail 8619 arguments in a buffer narrowed to the headers of an incoming mail
7501 message. The function should return a list of groups names that it 8620 message. The function should return a list of groups names that it
7518 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to 8637 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to
7519 the crossposted articles. However, not all files systems support hard 8638 the crossposted articles. However, not all files systems support hard
7520 links. If that's the case for you, set 8639 links. If that's the case for you, set
7521 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This 8640 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This
7522 variable is @code{add-name-to-file} by default.) 8641 variable is @code{add-name-to-file} by default.)
8642
8643 @kindex M-x nnmail-split-history
8644 @kindex nnmail-split-history
8645 If you wish to see where the previous mail split put the messages, you
8646 can use the @kbd{M-x nnmail-split-history} command.
7523 8647
7524 Gnus gives you all the opportunity you could possibly want for shooting 8648 Gnus gives you all the opportunity you could possibly want for shooting
7525 yourself in the foot. Let's say you create a group that will contain 8649 yourself in the foot. Let's say you create a group that will contain
7526 all the mail you get from your boss. And then you accidentally 8650 all the mail you get from your boss. And then you accidentally
7527 unsubscribe from the group. Gnus will still put all the mail from your 8651 unsubscribe from the group. Gnus will still put all the mail from your
7563 @code{MAILHOST} environment variable. If the POP server needs a 8687 @code{MAILHOST} environment variable. If the POP server needs a
7564 password, you can either set @code{nnmail-pop-password-required} to 8688 password, you can either set @code{nnmail-pop-password-required} to
7565 @code{t} and be prompted for the password, or set 8689 @code{t} and be prompted for the password, or set
7566 @code{nnmail-pop-password} to the password itself. 8690 @code{nnmail-pop-password} to the password itself.
7567 8691
8692 @code{nnmail-spool-file} can also be a list of mailboxes.
8693
8694 Your Emacs has to have been configured with @samp{--with-pop} before
8695 compilation. This is the default, but some installations have it
8696 switched off.
8697
7568 When you use a mail backend, Gnus will slurp all your mail from your 8698 When you use a mail backend, Gnus will slurp all your mail from your
7569 inbox and plonk it down in your home directory. Gnus doesn't move any 8699 inbox and plonk it down in your home directory. Gnus doesn't move any
7570 mail if you're not using a mail backend---you have to do a lot of magic 8700 mail if you're not using a mail backend---you have to do a lot of magic
7571 invocations first. At the time when you have finished drawing the 8701 invocations first. At the time when you have finished drawing the
7572 pentagram, lightened the candles, and sacrificed the goat, you really 8702 pentagram, lightened the candles, and sacrificed the goat, you really
7590 8720
7591 @vindex nnmail-prepare-incoming-hook 8721 @vindex nnmail-prepare-incoming-hook
7592 @item nnmail-prepare-incoming-hook 8722 @item nnmail-prepare-incoming-hook
7593 This is run in a buffer that holds all the new incoming mail, and can be 8723 This is run in a buffer that holds all the new incoming mail, and can be
7594 used for, well, anything, really. 8724 used for, well, anything, really.
8725
8726 @vindex nnmail-split-hook
8727 @item nnmail-split-hook
8728 @findex article-decode-rfc1522
8729 @findex RFC1522 decoding
8730 Hook run in the buffer where the mail headers of each message is kept
8731 just before the splitting based on these headers is done. The hook is
8732 free to modify the buffer contents in any way it sees fit---the buffer
8733 is discarded after the splitting has been done, and no changes performed
8734 in the buffer will show up in any files. @code{gnus-article-decode-rfc1522}
8735 is one likely function to add to this hook.
7595 8736
7596 @vindex nnmail-pre-get-new-mail-hook 8737 @vindex nnmail-pre-get-new-mail-hook
7597 @vindex nnmail-post-get-new-mail-hook 8738 @vindex nnmail-post-get-new-mail-hook
7598 @item nnmail-pre-get-new-mail-hook 8739 @item nnmail-pre-get-new-mail-hook
7599 @itemx nnmail-post-get-new-mail-hook 8740 @itemx nnmail-post-get-new-mail-hook
7622 @item nnmail-movemail-program 8763 @item nnmail-movemail-program
7623 @vindex nnmail-movemail-program 8764 @vindex nnmail-movemail-program
7624 This program is executed to move mail from the user's inbox to her home 8765 This program is executed to move mail from the user's inbox to her home
7625 directory. The default is @samp{movemail}. 8766 directory. The default is @samp{movemail}.
7626 8767
8768 This can also be a function. In that case, the function will be called
8769 with two parameters -- the name of the inbox, and the file to be moved
8770 to.
8771
7627 @item nnmail-delete-incoming 8772 @item nnmail-delete-incoming
7628 @vindex nnmail-delete-incoming 8773 @vindex nnmail-delete-incoming
7629 @cindex incoming mail files 8774 @cindex incoming mail files
7630 @cindex deleting incoming files 8775 @cindex deleting incoming files
7631 If non-@code{nil}, the mail backends will delete the temporary incoming 8776 If non-@code{nil}, the mail backends will delete the temporary incoming
7632 file after splitting mail into the proper groups. This is @code{nil} by 8777 file after splitting mail into the proper groups. This is @code{nil} by
7633 default for reasons of security. 8778 default for reasons of security.
7634 8779
8780 @c Since Red Gnus is an alpha release, it is to be expected to lose mail.
8781 (No Gnus release since (ding) Gnus 0.10 (or something like that) have
8782 lost mail, I think, but that's not the point. (Except certain versions
8783 of Red Gnus.)) By not deleting the Incoming* files, one can be sure to
8784 not lose mail -- if Gnus totally whacks out, one can always recover what
8785 was lost.
8786
8787 Delete the @file{Incoming*} files at will.
8788
7635 @item nnmail-use-long-file-names 8789 @item nnmail-use-long-file-names
7636 @vindex nnmail-use-long-file-names 8790 @vindex nnmail-use-long-file-names
7637 If non-@code{nil}, the mail backends will use long file and directory 8791 If non-@code{nil}, the mail backends will use long file and directory
7638 names. Groups like @samp{mail.misc} will end up in directories like 8792 names. Groups like @samp{mail.misc} will end up in directories like
7639 @file{mail.misc/}. If it is @code{nil}, the same group will end up in 8793 @file{mail.misc/}. If it is @code{nil}, the same group will end up in
7655 @vindex nnmail-split-fancy 8809 @vindex nnmail-split-fancy
7656 @findex nnmail-split-fancy 8810 @findex nnmail-split-fancy
7657 If the rather simple, standard method for specifying how to split mail 8811 If the rather simple, standard method for specifying how to split mail
7658 doesn't allow you to do what you want, you can set 8812 doesn't allow you to do what you want, you can set
7659 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can 8813 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can
7660 play with the @code{nnmail-split-fancy} variable. 8814 play with the @code{nnmail-split-fancy} variable.
7661 8815
7662 Let's look at an example value of this variable first: 8816 Let's look at an example value of this variable first:
7663 8817
7664 @lisp 8818 @lisp
7665 ;; Messages from the mailer daemon are not crossposted to any of 8819 ;; Messages from the mailer daemon are not crossposted to any of
7676 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") 8830 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
7677 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") 8831 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
7678 ;; People... 8832 ;; People...
7679 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen")) 8833 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen"))
7680 ;; Unmatched mail goes to the catch all group. 8834 ;; Unmatched mail goes to the catch all group.
7681 "misc.misc"))") 8835 "misc.misc")
7682 @end lisp 8836 @end lisp
7683 8837
7684 This variable has the format of a @dfn{split}. A split is a (possibly) 8838 This variable has the format of a @dfn{split}. A split is a (possibly)
7685 recursive structure where each split may contain other splits. Here are 8839 recursive structure where each split may contain other splits. Here are
7686 the four possible split syntaxes: 8840 the five possible split syntaxes:
7687 8841
7688 @table @dfn 8842 @enumerate
7689 8843
7690 @item GROUP 8844 @item
7691 If the split is a string, that will be taken as a group name. 8845 @samp{group}: If the split is a string, that will be taken as a group name.
7692 8846
7693 @item (FIELD VALUE SPLIT) 8847 @item
7694 If the split is a list, and the first element is a string, then that 8848 @var{(FIELD VALUE SPLIT)}: If the split is a list, and the first
7695 means that if header FIELD (a regexp) contains VALUE (also a regexp), 8849 element is a string, then that means that if header FIELD (a regexp)
7696 then store the message as specified by SPLIT. 8850 contains VALUE (also a regexp), then store the message as specified by
7697 8851 SPLIT.
7698 @item (| SPLIT...) 8852
7699 If the split is a list, and the first element is @code{|} (vertical 8853 @item
7700 bar), then process each SPLIT until one of them matches. A SPLIT is 8854 @var{(| SPLIT...)}: If the split is a list, and the first element is
7701 said to match if it will cause the mail message to be stored in one or 8855 @code{|} (vertical bar), then process each SPLIT until one of them
7702 more groups. 8856 matches. A SPLIT is said to match if it will cause the mail message to
7703 8857 be stored in one or more groups.
7704 @item (& SPLIT...) 8858
7705 If the split is a list, and the first element is @code{&}, then process 8859 @item
7706 all SPLITs in the list. 8860 @var{(& SPLIT...)}: If the split is a list, and the first element is
7707 @end table 8861 @code{&}, then process all SPLITs in the list.
7708 8862
7709 In these splits, FIELD must match a complete field name. VALUE must 8863 @item
7710 match a complete word according to the fundamental mode syntax table. 8864 @code{junk}: If the split is the symbol @code{junk}, then don't save
7711 You can use @code{.*} in the regexps to match partial field names or 8865 this message anywhere.
7712 words. 8866
8867 @item
8868 @var{(: function arg1 arg2 ...)}: If the split is a list, and the first
8869 element is @code{:}, then the second element will be called as a
8870 function with @var{args} given as arguments. The function should return
8871 a SPLIT.
8872
8873 @end enumerate
8874
8875 In these splits, @var{FIELD} must match a complete field name.
8876 @var{VALUE} must match a complete word according to the fundamental mode
8877 syntax table. You can use @code{.*} in the regexps to match partial
8878 field names or words. In other words, all @var{VALUE}'s are wrapped in
8879 @samp{\<} and @samp{\>} pairs.
7713 8880
7714 @vindex nnmail-split-abbrev-alist 8881 @vindex nnmail-split-abbrev-alist
7715 FIELD and VALUE can also be lisp symbols, in that case they are expanded 8882 @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they
7716 as specified by the variable @code{nnmail-split-abbrev-alist}. This is 8883 are expanded as specified by the variable
7717 an alist of cons cells, where the car of the cells contains the key, and 8884 @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where
7718 the cdr contains a string. 8885 the car of the cells contains the key, and the cdr contains a string.
7719 8886
7720 @vindex nnmail-split-fancy-syntax-table 8887 @vindex nnmail-split-fancy-syntax-table
7721 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect 8888 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect
7722 when all this splitting is performed. 8889 when all this splitting is performed.
8890
8891 If you want to have Gnus create groups dynamically based on some
8892 information in the headers, you can say things like:
8893
8894 @example
8895 (any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1")
8896 @end example
8897
8898 That is, do @code{replace-match}-like substitions in the group names.
7723 8899
7724 8900
7725 @node Mail and Procmail 8901 @node Mail and Procmail
7726 @subsection Mail and Procmail 8902 @subsection Mail and Procmail
7727 @cindex procmail 8903 @cindex procmail
7781 directory (which you shouldn't do), you should set 8957 directory (which you shouldn't do), you should set
7782 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from 8958 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from
7783 ever expiring the final article in a mail newsgroup. This is quite, 8959 ever expiring the final article in a mail newsgroup. This is quite,
7784 quite important. 8960 quite important.
7785 8961
8962 Here's an example setup: The incoming spools are located in
8963 @file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming
8964 spool files have the same names as the equivalent groups). The
8965 @code{nnfolder} backend is to be used as the mail interface, and the
8966 @code{nnfolder} directory is @file{~/fMail/}.
8967
8968 @lisp
8969 (setq nnfolder-directory "~/fMail/")
8970 (setq nnmail-spool-file 'procmail)
8971 (setq nnmail-procmail-directory "~/incoming/")
8972 (setq gnus-secondary-select-methods '((nnfolder "")))
8973 (setq nnmail-procmail-suffix "")
8974 @end lisp
8975
7786 8976
7787 @node Incorporating Old Mail 8977 @node Incorporating Old Mail
7788 @subsection Incorporating Old Mail 8978 @subsection Incorporating Old Mail
7789 8979
7790 Most people have lots of old mail stored in various file formats. If 8980 Most people have lots of old mail stored in various file formats. If
7863 match the regular expression @code{gnus-auto-expirable-newsgroups} will 9053 match the regular expression @code{gnus-auto-expirable-newsgroups} will
7864 have all articles that you read marked as expirable automatically. All 9054 have all articles that you read marked as expirable automatically. All
7865 articles that are marked as expirable have an @samp{E} in the first 9055 articles that are marked as expirable have an @samp{E} in the first
7866 column in the summary buffer. 9056 column in the summary buffer.
7867 9057
9058 Note that making a group auto-expirable don't mean that all read
9059 articles are expired---only the articles that are marked as expirable
9060 will be expired. Also note the using the @kbd{d} command won't make
9061 groups expirable---only semi-automatic marking of articles as read will
9062 mark the articles as expirable in auto-expirable groups.
9063
7868 Let's say you subscribe to a couple of mailing lists, and you want the 9064 Let's say you subscribe to a couple of mailing lists, and you want the
7869 articles you have read to disappear after a while: 9065 articles you have read to disappear after a while:
7870 9066
7871 @lisp 9067 @lisp
7872 (setq gnus-auto-expirable-newsgroups 9068 (setq gnus-auto-expirable-newsgroups
7873 "mail.nonsense-list\\|mail.nice-list") 9069 "mail.nonsense-list\\|mail.nice-list")
7874 @end lisp 9070 @end lisp
7875 9071
7876 Another way to have auto-expiry happen is to have the element 9072 Another way to have auto-expiry happen is to have the element
7877 @code{auto-expire} in the group parameters of the group. 9073 @code{auto-expire} in the group parameters of the group.
9074
9075 If you use adaptive scoring (@pxref{Adaptive Scoring}) and
9076 auto-expiring, you'll have problems. Auto-expiring and adaptive scoring
9077 doesn't really mix very well.
7878 9078
7879 @vindex nnmail-expiry-wait 9079 @vindex nnmail-expiry-wait
7880 The @code{nnmail-expiry-wait} variable supplies the default time an 9080 The @code{nnmail-expiry-wait} variable supplies the default time an
7881 expirable article has to live. The default is seven days. 9081 expirable article has to live. The default is seven days.
7882 9082
7929 crying to me when you discover that the regexp you used matched the 9129 crying to me when you discover that the regexp you used matched the
7930 wrong group and all your important mail has disappeared. Be a 9130 wrong group and all your important mail has disappeared. Be a
7931 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable 9131 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable
7932 with! So there! 9132 with! So there!
7933 9133
9134 Most people make most of their mail groups total-expirable, though.
9135
9136
9137 @node Washing Mail
9138 @subsection Washing Mail
9139 @cindex mail washing
9140 @cindex list server brain damage
9141 @cindex incoming mail treatment
9142
9143 Mailers and list servers are notorious for doing all sorts of really,
9144 really stupid things with mail. ``Hey, RFC822 doesn't explicitly
9145 prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the
9146 end of all lines passing through our server, so let's do that!!!!1!''
9147 Yes, but RFC822 wasn't designed to be read by morons. Things that were
9148 considered to be self-evident were not discussed. So. Here we are.
9149
9150 Case in point: The German version of Microsoft Exchange adds @samp{AW:
9151 } to the subjects of replies instead of @samp{Re: }. I could pretend to
9152 be shocked and dismayed by this, but I haven't got the energy. It is to
9153 laugh.
9154
9155 Gnus provides a plethora of functions for washing articles while
9156 displaying them, but it might be nicer to do the filtering before
9157 storing the mail to disc. For that purpose, we have three hooks and
9158 various functions that can be put in these hooks.
9159
9160 @table @code
9161 @item nnmail-prepare-incoming-hook
9162 @vindex nnmail-prepare-incoming-hook
9163 This hook is called before doing anything with the mail and is meant for
9164 grand, sweeping gestures. Functions to be used include:
9165
9166 @table @code
9167 @item nnheader-ms-strip-cr
9168 @findex nnheader-ms-strip-cr
9169 Remove trailing carriage returns from each line. This is default on
9170 Emacs running on MS machines.
9171
9172 @end table
9173
9174 @item nnmail-prepare-incoming-header-hook
9175 @vindex nnmail-prepare-incoming-header-hook
9176 This hook is called narrowed to each header. It can be used when
9177 cleaning up the headers. Functions that can be used include:
9178
9179 @table @code
9180 @item nnmail-remove-leading-whitespace
9181 @findex nnmail-remove-leading-whitespace
9182 Clear leading white space that ``helpful'' listservs have added to the
9183 headers too make them look nice. Aaah.
9184
9185 @item nnmail-remove-list-identifiers
9186 @findex nnmail-remove-list-identifiers
9187 Some list servers add an identifier---for example, @samp{(idm)}---to the
9188 beginning of all @code{Subject} headers. I'm sure that's nice for
9189 people who use stone age mail readers. This function will remove
9190 strings that match the @code{nnmail-list-identifiers} regexp, which can
9191 also be a list of regexp.
9192
9193 For instance, if you want to remove the @samp{(idm)} and the
9194 @samp{nagnagnag} identifiers:
9195
9196 @lisp
9197 (setq nnmail-list-identifiers
9198 '("(idm)" "nagnagnag"))
9199 @end lisp
9200
9201 @item nnmail-remove-tabs
9202 @findex nnmail-remove-tabs
9203 Translate all @samp{TAB} characters into @samp{SPACE} characters.
9204
9205 @end table
9206
9207 @item nnmail-prepare-incoming-message-hook
9208 @vindex nnmail-prepare-incoming-message-hook
9209 This hook is called narrowed to each message. Functions to be used
9210 include:
9211
9212 @table @code
9213 @item article-de-quoted-unreadable
9214 @findex article-de-quoted-unreadable
9215 Decode Quoted Readable encoding.
9216
9217 @end table
9218 @end table
9219
7934 9220
7935 @node Duplicates 9221 @node Duplicates
7936 @subsection Duplicates 9222 @subsection Duplicates
7937 9223
7938 @vindex nnmail-treat-duplicates 9224 @vindex nnmail-treat-duplicates
7940 @vindex nnmail-message-id-cache-file 9226 @vindex nnmail-message-id-cache-file
7941 @cindex duplicate mails 9227 @cindex duplicate mails
7942 If you are a member of a couple of mailing list, you will sometime 9228 If you are a member of a couple of mailing list, you will sometime
7943 receive two copies of the same mail. This can be quite annoying, so 9229 receive two copies of the same mail. This can be quite annoying, so
7944 @code{nnmail} checks for and treats any duplicates it might find. To do 9230 @code{nnmail} checks for and treats any duplicates it might find. To do
7945 this, it keeps a cache of old @code{Message-ID}s - 9231 this, it keeps a cache of old @code{Message-ID}s---
7946 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by 9232 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by
7947 default. The approximate maximum number of @code{Message-ID}s stored 9233 default. The approximate maximum number of @code{Message-ID}s stored
7948 there is controlled by the @code{nnmail-message-id-cache-length} 9234 there is controlled by the @code{nnmail-message-id-cache-length}
7949 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be 9235 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be
7950 stored.) If all this sounds scary to you, you can set 9236 stored.) If all this sounds scary to you, you can set
8159 @findex nnml-generate-nov-databases 9445 @findex nnml-generate-nov-databases
8160 If your @code{nnml} groups and @sc{nov} files get totally out of whack, 9446 If your @code{nnml} groups and @sc{nov} files get totally out of whack,
8161 you can do a complete update by typing @kbd{M-x 9447 you can do a complete update by typing @kbd{M-x
8162 nnml-generate-nov-databases}. This command will trawl through the 9448 nnml-generate-nov-databases}. This command will trawl through the
8163 entire @code{nnml} hierarchy, looking at each and every article, so it 9449 entire @code{nnml} hierarchy, looking at each and every article, so it
8164 might take a while to complete. 9450 might take a while to complete. A better interface to this
9451 functionality can be found in the server buffer (@pxref{Server
9452 Commands}).
8165 9453
8166 9454
8167 @node MH Spool 9455 @node MH Spool
8168 @subsubsection MH Spool 9456 @subsubsection MH Spool
8169 @cindex nnmh 9457 @cindex nnmh
8241 Gnus can do more than just read news or mail. The methods described 9529 Gnus can do more than just read news or mail. The methods described
8242 below allow Gnus to view directories and files as if they were 9530 below allow Gnus to view directories and files as if they were
8243 newsgroups. 9531 newsgroups.
8244 9532
8245 @menu 9533 @menu
8246 * Directory Groups:: You can read a directory as if it was a newsgroup. 9534 * Directory Groups:: You can read a directory as if it was a newsgroup.
8247 * Anything Groups:: Dired? Who needs dired? 9535 * Anything Groups:: Dired? Who needs dired?
8248 * Document Groups:: Single files can be the basis of a group. 9536 * Document Groups:: Single files can be the basis of a group.
8249 * SOUP:: Reading @sc{SOUP} packets ``offline''. 9537 * SOUP:: Reading @sc{SOUP} packets ``offline''.
9538 * Web Searches:: Creating groups from articles that match a string.
9539 * Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
8250 @end menu 9540 @end menu
8251 9541
8252 9542
8253 @node Directory Groups 9543 @node Directory Groups
8254 @subsection Directory Groups 9544 @subsection Directory Groups
8262 This might be an opportune moment to mention @code{ange-ftp}, that most 9552 This might be an opportune moment to mention @code{ange-ftp}, that most
8263 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I 9553 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I
8264 didn't think much about it---a backend to read directories. Big deal. 9554 didn't think much about it---a backend to read directories. Big deal.
8265 9555
8266 @code{ange-ftp} changes that picture dramatically. For instance, if you 9556 @code{ange-ftp} changes that picture dramatically. For instance, if you
8267 enter @file{"/ftp.hpc.uh.edu:/pub/emacs/ding-list/"} as the the 9557 enter the @code{ange-ftp} file name
8268 directory name, ange-ftp will actually allow you to read this directory 9558 @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the the directory name,
8269 over at @samp{sina} as a newsgroup. Distributed news ahoy! 9559 @code{ange-ftp} will actually allow you to read this directory over at
9560 @samp{sina} as a newsgroup. Distributed news ahoy!
8270 9561
8271 @code{nndir} will use @sc{nov} files if they are present. 9562 @code{nndir} will use @sc{nov} files if they are present.
8272 9563
8273 @code{nndir} is a ``read-only'' backend---you can't delete or expire 9564 @code{nndir} is a ``read-only'' backend---you can't delete or expire
8274 articles with this method. You can use @code{nnmh} or @code{nnml} for 9565 articles with this method. You can use @code{nnmh} or @code{nnml} for
8290 a group, @code{nneething} must create ``headers'' that Gnus can use. 9581 a group, @code{nneething} must create ``headers'' that Gnus can use.
8291 After all, Gnus is a newsreader, in case you're 9582 After all, Gnus is a newsreader, in case you're
8292 forgetting. @code{nneething} does this in a two-step process. First, it 9583 forgetting. @code{nneething} does this in a two-step process. First, it
8293 snoops each file in question. If the file looks like an article (i.e., 9584 snoops each file in question. If the file looks like an article (i.e.,
8294 the first few lines look like headers), it will use this as the head. 9585 the first few lines look like headers), it will use this as the head.
8295 If this is just some arbitrary file without a head (eg. a C source 9586 If this is just some arbitrary file without a head (e.g. a C source
8296 file), @code{nneething} will cobble up a header out of thin air. It 9587 file), @code{nneething} will cobble up a header out of thin air. It
8297 will use file ownership, name and date and do whatever it can with these 9588 will use file ownership, name and date and do whatever it can with these
8298 elements. 9589 elements.
8299 9590
8300 All this should happen automatically for you, and you will be presented 9591 All this should happen automatically for you, and you will be presented
8397 9688
8398 If you have some old archived articles that you want to insert into your 9689 If you have some old archived articles that you want to insert into your
8399 new & spiffy Gnus mail backend, @code{nndoc} can probably help you with 9690 new & spiffy Gnus mail backend, @code{nndoc} can probably help you with
8400 that. Say you have an old @file{RMAIL} file with mail that you now want 9691 that. Say you have an old @file{RMAIL} file with mail that you now want
8401 to split into your new @code{nnml} groups. You look at that file using 9692 to split into your new @code{nnml} groups. You look at that file using
8402 @code{nndoc}, set the process mark on all the articles in the buffer 9693 @code{nndoc} (using the @kbd{G f} command in the group buffer
8403 (@kbd{M P b}, for instance), and then re-spool (@kbd{B r}) using 9694 (@pxref{Foreign Groups})), set the process mark on all the articles in
8404 @code{nnml}. If all goes well, all the mail in the @file{RMAIL} file is 9695 the buffer (@kbd{M P b}, for instance), and then re-spool (@kbd{B r})
8405 now also stored in lots of @code{nnml} directories, and you can delete 9696 using @code{nnml}. If all goes well, all the mail in the @file{RMAIL}
8406 that pesky @file{RMAIL} file. If you have the guts! 9697 file is now also stored in lots of @code{nnml} directories, and you can
9698 delete that pesky @file{RMAIL} file. If you have the guts!
8407 9699
8408 Virtual server variables: 9700 Virtual server variables:
8409 9701
8410 @table @code 9702 @table @code
8411 @item nndoc-article-type 9703 @item nndoc-article-type
8419 This variable says whether Gnus is to consider the group a news group or 9711 This variable says whether Gnus is to consider the group a news group or
8420 a mail group. There are two legal values: @code{mail} (the default) 9712 a mail group. There are two legal values: @code{mail} (the default)
8421 and @code{news}. 9713 and @code{news}.
8422 @end table 9714 @end table
8423 9715
9716 @menu
9717 * Document Server Internals:: How to add your own document types.
9718 @end menu
9719
9720
9721 @node Document Server Internals
9722 @subsubsection Document Server Internals
9723
9724 Adding new document types to be recognized by @code{nndoc} isn't
9725 difficult. You just have to whip up a definition of what the document
9726 looks like, write a predicate function to recognize that document type,
9727 and then hook into @code{nndoc}.
9728
9729 First, here's an example document type definition:
9730
9731 @example
9732 (mmdf
9733 (article-begin . "^\^A\^A\^A\^A\n")
9734 (body-end . "^\^A\^A\^A\^A\n"))
9735 @end example
9736
9737 The definition is simply a unique @dfn{name} followed by a series of
9738 regexp pseudo-variable settings. Below are the possible
9739 variables---don't be daunted by the number of variables; most document
9740 types can be defined with very few settings:
9741
9742 @table @code
9743 @item first-article
9744 If present, @code{nndoc} will skip past all text until it finds
9745 something that match this regexp. All text before this will be
9746 totally ignored.
9747
9748 @item article-begin
9749 This setting has to be present in all document type definitions. It
9750 says what the beginning of each article looks like.
9751
9752 @item head-begin-function
9753 If present, this should be a function that moves point to the head of
9754 the article.
9755
9756 @item nndoc-head-begin
9757 If present, this should be a regexp that matches the head of the
9758 article.
9759
9760 @item nndoc-head-end
9761 This should match the end of the head of the article. It defaults to
9762 @samp{^$}---the empty line.
9763
9764 @item body-begin-function
9765 If present, this function should move point to the beginning of the body
9766 of the article.
9767
9768 @item body-begin
9769 This should match the beginning of the body of the article. It defaults
9770 to @samp{^\n}.
9771
9772 @item body-end-function
9773 If present, this function should move point to the end of the body of
9774 the article.
9775
9776 @item body-end
9777 If present, this should match the end of the body of the article.
9778
9779 @item nndoc-file-end
9780 If present, this should match the end of the file. All text after this
9781 regexp will be totally ignored.
9782
9783 @end table
9784
9785 So, using these variables @code{nndoc} is able to dissect a document
9786 file into a series of articles, each with a head and a body. However, a
9787 few more variables are needed since not all document types are all that
9788 news-like---variables needed to transform the head or the body into
9789 something that's palatable for Gnus:
9790
9791 @table @code
9792 @item prepare-body-function
9793 If present, this function will be called when requesting an article. It
9794 will be called with point at the start of the body, and is useful if the
9795 document has encoded some parts of its contents.
9796
9797 @item article-transform-function
9798 If present, this function is called when requesting an article. It's
9799 meant to be used how more wide-ranging transformation of both head and
9800 body of the article.
9801
9802 @item generate-head-function
9803 If present, this function is called to generate a head that Gnus can
9804 understand. It is called with the article number as a parameter, and is
9805 expected to generate a nice head for the article in question. It is
9806 called when requesting the headers of all articles.
9807
9808 @end table
9809
9810 Let's look at the most complicated example I can come up with---standard
9811 digests:
9812
9813 @example
9814 (standard-digest
9815 (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+"))
9816 (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+"))
9817 (prepare-body-function . nndoc-unquote-dashes)
9818 (body-end-function . nndoc-digest-body-end)
9819 (head-end . "^ ?$")
9820 (body-begin . "^ ?\n")
9821 (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$")
9822 (subtype digest guess))
9823 @end example
9824
9825 We see that all text before a 70-width line of dashes is ignored; all
9826 text after a line that starts with that @samp{^End of} is also ignored;
9827 each article begins with a 30-width line of dashes; the line separating
9828 the head from the body may contain a single space; and that the body is
9829 run through @code{nndoc-unquote-dashes} before being delivered.
9830
9831 To hook your own document definition into @code{nndoc}, use the
9832 @code{nndoc-add-type} function. It takes two parameters---the first is
9833 the definition itself and the second (optional) parameter says where in
9834 the document type definition alist to put this definition. The alist is
9835 traversed sequentially, and @code{nndoc-TYPE-type-p} is called for each
9836 type. So @code{nndoc-mmdf-type-p} is called to see whether a document
9837 is of @code{mmdf} type, and so on. These type predicates should return
9838 @code{nil} if the document is not of the correct type; @code{t} if it is
9839 of the correct type; and a number if the document might be of the
9840 correct type. A high number means high probability; a low number means
9841 low probability with @samp{0} being the lowest legal number.
9842
8424 9843
8425 @node SOUP 9844 @node SOUP
8426 @subsection SOUP 9845 @subsection SOUP
8427 @cindex SOUP 9846 @cindex SOUP
8428 @cindex offline 9847 @cindex offline
8442 9861
8443 A file format called @sc{soup} has been developed for transporting news 9862 A file format called @sc{soup} has been developed for transporting news
8444 and mail from servers to home machines and back again. It can be a bit 9863 and mail from servers to home machines and back again. It can be a bit
8445 fiddly. 9864 fiddly.
8446 9865
9866 First some terminology:
9867
9868 @table @dfn
9869
9870 @item server
9871 This is the machine that is connected to the outside world and where you
9872 get news and/or mail from.
9873
9874 @item home machine
9875 This is the machine that you want to do the actual reading and responding
9876 on. It is typically not connected to the rest of the world in any way.
9877
9878 @item packet
9879 Something that contains messages and/or commands. There are two kinds
9880 of packets:
9881
9882 @table @dfn
9883 @item message packets
9884 These are packets made at the server, and typically contains lots of
9885 messages for you to read. These are called @file{SoupoutX.tgz} by
9886 default, where @var{X} is a number.
9887
9888 @item response packets
9889 These are packets made at the home machine, and typically contains
9890 replies that you've written. These are called @file{SoupinX.tgz} by
9891 default, where @var{X} is a number.
9892
9893 @end table
9894
9895 @end table
9896
9897
8447 @enumerate 9898 @enumerate
8448 9899
8449 @item 9900 @item
8450 You log in on the server and create a @sc{soup} packet. You can either 9901 You log in on the server and create a @sc{soup} packet. You can either
8451 use a dedicated @sc{soup} thingie, or you can use Gnus to create the 9902 use a dedicated @sc{soup} thingie (like the @code{awk} program), or you
8452 packet with the @kbd{O s} command. 9903 can use Gnus to create the packet with its @sc{soup} commands (@kbd{O
9904 s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}).
8453 9905
8454 @item 9906 @item
8455 You transfer the packet home. Rail, boat, car or modem will do fine. 9907 You transfer the packet home. Rail, boat, car or modem will do fine.
8456 9908
8457 @item 9909 @item
8458 You put the packet in your home directory. 9910 You put the packet in your home directory.
8459 9911
8460 @item 9912 @item
8461 You fire up Gnus using the @code{nnsoup} backend as the native server. 9913 You fire up Gnus on your home machine using the @code{nnsoup} backend as
9914 the native or secondary server.
8462 9915
8463 @item 9916 @item
8464 You read articles and mail and answer and followup to the things you 9917 You read articles and mail and answer and followup to the things you
8465 want. 9918 want (@pxref{SOUP Replies}).
8466 9919
8467 @item 9920 @item
8468 You do the @kbd{G s r} command to pack these replies into a @sc{soup} 9921 You do the @kbd{G s r} command to pack these replies into a @sc{soup}
8469 packet. 9922 packet.
8470 9923
8489 @end menu 9942 @end menu
8490 9943
8491 9944
8492 @node SOUP Commands 9945 @node SOUP Commands
8493 @subsubsection SOUP Commands 9946 @subsubsection SOUP Commands
9947
9948 These are commands for creating and manipulating @sc{soup} packets.
8494 9949
8495 @table @kbd 9950 @table @kbd
8496 @item G s b 9951 @item G s b
8497 @kindex G s b (Group) 9952 @kindex G s b (Group)
8498 @findex gnus-group-brew-soup 9953 @findex gnus-group-brew-soup
8501 process/prefix convention. 9956 process/prefix convention.
8502 9957
8503 @item G s w 9958 @item G s w
8504 @kindex G s w (Group) 9959 @kindex G s w (Group)
8505 @findex gnus-soup-save-areas 9960 @findex gnus-soup-save-areas
8506 Save all data files (@code{gnus-soup-save-areas}). 9961 Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
8507 9962
8508 @item G s s 9963 @item G s s
8509 @kindex G s s (Group) 9964 @kindex G s s (Group)
8510 @findex gnus-soup-send-replies 9965 @findex gnus-soup-send-replies
8511 Send all replies from the replies packet 9966 Send all replies from the replies packet
8524 @item O s 9979 @item O s
8525 @kindex O s (Summary) 9980 @kindex O s (Summary)
8526 @findex gnus-soup-add-article 9981 @findex gnus-soup-add-article
8527 This summary-mode command adds the current article to a @sc{soup} packet 9982 This summary-mode command adds the current article to a @sc{soup} packet
8528 (@code{gnus-soup-add-article}). It understands the process/prefix 9983 (@code{gnus-soup-add-article}). It understands the process/prefix
8529 convention. 9984 convention (@pxref{Process/Prefix}).
8530 9985
8531 @end table 9986 @end table
8532 9987
8533 9988
8534 There are a few variables to customize where Gnus will put all these 9989 There are a few variables to customize where Gnus will put all these
8542 @sc{soup} packets. The default is @file{~/SoupBrew/}. 9997 @sc{soup} packets. The default is @file{~/SoupBrew/}.
8543 9998
8544 @item gnus-soup-replies-directory 9999 @item gnus-soup-replies-directory
8545 @vindex gnus-soup-replies-directory 10000 @vindex gnus-soup-replies-directory
8546 This is what Gnus will use as a temporary directory while sending our 10001 This is what Gnus will use as a temporary directory while sending our
8547 reply packets. The default is @file{~/SoupBrew/SoupReplies/}. 10002 reply packets. @file{~/SoupBrew/SoupReplies/} is the default.
8548 10003
8549 @item gnus-soup-prefix-file 10004 @item gnus-soup-prefix-file
8550 @vindex gnus-soup-prefix-file 10005 @vindex gnus-soup-prefix-file
8551 Name of the file where Gnus stores the last used prefix. The default is 10006 Name of the file where Gnus stores the last used prefix. The default is
8552 @samp{gnus-prefix}. 10007 @samp{gnus-prefix}.
8654 @sc{soup} system. 10109 @sc{soup} system.
8655 10110
8656 In specific, this is what it does: 10111 In specific, this is what it does:
8657 10112
8658 @lisp 10113 @lisp
8659 (setq gnus-inews-article-function 'nnsoup-request-post) 10114 (setq message-send-news-function 'nnsoup-request-post)
8660 (setq send-mail-function 'nnsoup-request-mail) 10115 (setq message-send-mail-function 'nnsoup-request-mail)
8661 @end lisp 10116 @end lisp
8662 10117
8663 And that's it, really. If you only want news to go into the @sc{soup} 10118 And that's it, really. If you only want news to go into the @sc{soup}
8664 system you just use the first line. If you only want mail to be 10119 system you just use the first line. If you only want mail to be
8665 @sc{soup}ed you use the second. 10120 @sc{soup}ed you use the second.
10121
10122
10123 @node Web Searches
10124 @subsection Web Searches
10125 @cindex nnweb
10126 @cindex DejaNews
10127 @cindex Alta Vista
10128 @cindex InReference
10129 @cindex Usenet searches
10130 @cindex searching the Usenet
10131
10132 It's, like, too neat to search the Usenet for articles that match a
10133 string, but it, like, totally @emph{sucks}, like, totally, to use one of
10134 those, like, Web browsers, and you, like, have to, rilly, like, look at
10135 the commercials, so, like, with Gnus you can do @emph{rad}, rilly,
10136 searches without having to use a browser.
10137
10138 The @code{nnweb} backend allows an easy interface to the mighty search
10139 engine. You create an @code{nnweb} group, enter a search pattern, and
10140 then enter the group and read the articles like you would any normal
10141 group. The @kbd{G w} command in the group buffer (@pxref{Foreign
10142 Groups}) will do this in an easy-to-use fashion.
10143
10144 @code{nnweb} groups don't really lend themselves to being solid
10145 groups---they have a very fleeting idea of article numbers. In fact,
10146 each time you enter an @code{nnweb} group (not even changing the search
10147 pattern), you are likely to get the articles ordered in a different
10148 manner. Not even using duplicate suppression (@code{Duplicate
10149 Suppression}) will help, since @code{nnweb} doesn't even know the
10150 @code{Message-ID} of the articles before reading them using some search
10151 engines (DejaNews, for instance). The only possible way to keep track
10152 of which articles you've read is by scoring on the @code{Date}
10153 header---mark all articles that were posted before the last date you
10154 read the group as read.
10155
10156 If the search engine changes its output substantially, @code{nnweb}
10157 won't be able to parse it and will fail. One could hardly fault the Web
10158 providers if they were to do this---their @emph{raison d'être} is to
10159 make money off of advertisements, not to provide services to the
10160 community. Since @code{nnweb} washes the ads off all the articles, one
10161 might think that the providers might be somewhat miffed. We'll see.
10162
10163 You must have the @code{url} and @code{w3} package installed to be able
10164 to use @code{nnweb}.
10165
10166 Virtual server variables:
10167
10168 @table @code
10169 @item nnweb-type
10170 @vindex nnweb-type
10171 What search engine type is being used. The currently supported types
10172 are @code{dejanews}, @code{altavista} and @code{reference}.
10173
10174 @item nnweb-search
10175 @vindex nnweb-search
10176 The search string to feed to the search engine.
10177
10178 @item nnweb-max-hits
10179 @vindex nnweb-max-hits
10180 Advisory maximum number of hits per search to display. The default is
10181 100.
10182
10183 @item nnweb-type-definition
10184 @vindex nnweb-type-definition
10185 Type-to-definition alist. This alist says what @code{nnweb} should do
10186 with the various search engine types. The following elements must be
10187 present:
10188
10189 @table @code
10190 @item article
10191 Function to decode the article and provide something that Gnus
10192 understands.
10193
10194 @item map
10195 Function to create an article number to message header and URL alist.
10196
10197 @item search
10198 Function to send the search string to the search engine.
10199
10200 @item address
10201 The address the aforementioned function should send the search string
10202 to.
10203
10204 @item id
10205 Format string URL to fetch an article by @code{Message-ID}.
10206 @end table
10207
10208 @end table
10209
10210
10211
10212 @node Mail-To-News Gateways
10213 @subsection Mail-To-News Gateways
10214 @cindex mail-to-news gateways
10215 @cindex gateways
10216
10217 If your local @code{nntp} server doesn't allow posting, for some reason
10218 or other, you can post using one of the numerous mail-to-news gateways.
10219 The @code{nngateway} backend provides the interface.
10220
10221 Note that you can't read anything from this backend---it can only be
10222 used to post with.
10223
10224 Server variables:
10225
10226 @table @code
10227 @item nngateway-address
10228 @vindex nngateway-address
10229 This is the address of the mail-to-news gateway.
10230
10231 @item nngateway-header-transformation
10232 @vindex nngateway-header-transformation
10233 News headers have often have to be transformed in some odd way or other
10234 for the mail-to-news gateway to accept it. This variable says what
10235 transformation should be called, and defaults to
10236 @code{nngateway-simple-header-transformation}. The function is called
10237 narrowed to the headers to be transformed and with one parameter---the
10238 gateway address.
10239
10240 This default function just inserts a new @code{To} header based on the
10241 @code{Newsgroups} header and the gateway address---an article with this
10242 @code{Newsgroups} header:
10243
10244 @example
10245 Newsgroups: alt.religion.emacs
10246 @end example
10247
10248 will get this @code{From} header inserted:
10249
10250 @example
10251 To: alt-religion-emacs@@GATEWAY
10252 @end example
10253
10254 @end table
10255
10256 So, to use this, simply say something like:
10257
10258 @lisp
10259 (setq gnus-post-method '(nngateway "GATEWAY.ADDRESS"))
10260 @end lisp
8666 10261
8667 10262
8668 @node Combined Groups 10263 @node Combined Groups
8669 @section Combined Groups 10264 @section Combined Groups
8670 10265
8823 * Summary Score Commands:: Adding score entries for the current group. 10418 * Summary Score Commands:: Adding score entries for the current group.
8824 * Group Score Commands:: General score commands. 10419 * Group Score Commands:: General score commands.
8825 * Score Variables:: Customize your scoring. (My, what terminology). 10420 * Score Variables:: Customize your scoring. (My, what terminology).
8826 * Score File Format:: What a score file may contain. 10421 * Score File Format:: What a score file may contain.
8827 * Score File Editing:: You can edit score files by hand as well. 10422 * Score File Editing:: You can edit score files by hand as well.
8828 * Adaptive Scoring:: Big Sister Gnus @emph{knows} what you read. 10423 * Adaptive Scoring:: Big Sister Gnus knows what you read.
10424 * Home Score File:: How to say where new score entries are to go.
8829 * Followups To Yourself:: Having Gnus notice when people answer you. 10425 * Followups To Yourself:: Having Gnus notice when people answer you.
8830 * Scoring Tips:: How to score effectively. 10426 * Scoring Tips:: How to score effectively.
8831 * Reverse Scoring:: That problem child of old is not problem. 10427 * Reverse Scoring:: That problem child of old is not problem.
8832 * Global Score Files:: Earth-spanning, ear-splitting score files. 10428 * Global Score Files:: Earth-spanning, ear-splitting score files.
8833 * Kill Files:: They are still here, but they can be ignored. 10429 * Kill Files:: They are still here, but they can be ignored.
10430 * Converting Kill Files:: Translating kill files to score files.
8834 * GroupLens:: Getting predictions on what you like to read. 10431 * GroupLens:: Getting predictions on what you like to read.
10432 * Advanced Scoring:: Using logical expressions to build score rules.
10433 * Score Decays:: It can be useful to let scores wither away.
8835 @end menu 10434 @end menu
8836 10435
8837 10436
8838 @node Summary Score Commands 10437 @node Summary Score Commands
8839 @section Summary Score Commands 10438 @section Summary Score Commands
8845 @dfn{current score file alist}. The score commands simply insert 10444 @dfn{current score file alist}. The score commands simply insert
8846 entries into this list, and upon group exit, this list is saved. 10445 entries into this list, and upon group exit, this list is saved.
8847 10446
8848 The current score file is by default the group's local score file, even 10447 The current score file is by default the group's local score file, even
8849 if no such score file actually exists. To insert score commands into 10448 if no such score file actually exists. To insert score commands into
8850 some other score file (eg. @file{all.SCORE}), you must first make this 10449 some other score file (e.g. @file{all.SCORE}), you must first make this
8851 score file the current one. 10450 score file the current one.
8852 10451
8853 General score commands that don't actually change the score file: 10452 General score commands that don't actually change the score file:
8854 10453
8855 @table @kbd 10454 @table @kbd
8870 @findex gnus-score-find-trace 10469 @findex gnus-score-find-trace
8871 Display all score rules that have been used on the current article 10470 Display all score rules that have been used on the current article
8872 (@code{gnus-score-find-trace}). 10471 (@code{gnus-score-find-trace}).
8873 10472
8874 @item V R 10473 @item V R
8875 @cindex V R (Summary) 10474 @kindex V R (Summary)
8876 @findex gnus-summary-rescore 10475 @findex gnus-summary-rescore
8877 Run the current summary through the scoring process 10476 Run the current summary through the scoring process
8878 (@code{gnus-summary-rescore}). This might be useful if you're playing 10477 (@code{gnus-summary-rescore}). This might be useful if you're playing
8879 around with your score files behind Gnus' back and want to see the 10478 around with your score files behind Gnus' back and want to see the
8880 effect you're having. 10479 effect you're having.
8905 (@code{gnus-score-edit-file}). 10504 (@code{gnus-score-edit-file}).
8906 10505
8907 @item V F 10506 @item V F
8908 @kindex V F (Summary) 10507 @kindex V F (Summary)
8909 @findex gnus-score-flush-cache 10508 @findex gnus-score-flush-cache
8910 Flush the score cahe (@code{gnus-score-flush-cache}). This is useful 10509 Flush the score cache (@code{gnus-score-flush-cache}). This is useful
8911 after editing score files. 10510 after editing score files.
8912 10511
8913 @item V C 10512 @item V C
8914 @kindex V C (Summary) 10513 @kindex V C (Summary)
8915 @findex gnus-score-customize 10514 @findex gnus-score-customize
9152 10751
9153 @item gnus-summary-default-score 10752 @item gnus-summary-default-score
9154 @vindex gnus-summary-default-score 10753 @vindex gnus-summary-default-score
9155 Default score of an article, which is 0 by default. 10754 Default score of an article, which is 0 by default.
9156 10755
10756 @item gnus-summary-expunge-below
10757 @vindex gnus-summary-expunge-below
10758 Don't display the summary lines of articles that have scores lower than
10759 this variable. This is @code{nil} by default, which means that no
10760 articles will be hidden.
10761
9157 @item gnus-score-over-mark 10762 @item gnus-score-over-mark
9158 @vindex gnus-score-over-mark 10763 @vindex gnus-score-over-mark
9159 Mark (in the third column) used for articles with a score over the 10764 Mark (in the third column) used for articles with a score over the
9160 default. Default is @samp{+}. 10765 default. Default is @samp{+}.
9161 10766
9177 Only apply the group's own score file. 10782 Only apply the group's own score file.
9178 10783
9179 @item gnus-score-find-bnews 10784 @item gnus-score-find-bnews
9180 @findex gnus-score-find-bnews 10785 @findex gnus-score-find-bnews
9181 Apply all score files that match, using bnews syntax. This is the 10786 Apply all score files that match, using bnews syntax. This is the
9182 default. For instance, if the current group is @samp{gnu.emacs.gnus}, 10787 default. If the current group is @samp{gnu.emacs.gnus}, for instance,
9183 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and 10788 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and
9184 @file{gnu.all.SCORE} would all apply. In short, the instances of 10789 @file{gnu.all.SCORE} would all apply. In short, the instances of
9185 @samp{all} in the score file names are translated into @samp{.*}, and 10790 @samp{all} in the score file names are translated into @samp{.*}, and
9186 then a regexp match is done. 10791 then a regexp match is done.
9187 10792
9188 This means that if you have some score entries that you want to apply to 10793 This means that if you have some score entries that you want to apply to
9189 all groups, then you put those entries in the @file{all.SCORE} file. 10794 all groups, then you put those entries in the @file{all.SCORE} file.
9190 10795
10796 The score files are applied in a semi-random order, although Gnus will
10797 try to apply the more general score files before the more specific score
10798 files. It does this by looking at the number of elements in the score
10799 file names---discarding the @samp{all} elements.
10800
9191 @item gnus-score-find-hierarchical 10801 @item gnus-score-find-hierarchical
9192 @findex gnus-score-find-hierarchical 10802 @findex gnus-score-find-hierarchical
9193 Apply all score files from all the parent groups. This means that you 10803 Apply all score files from all the parent groups. This means that you
9194 can't have score files like @file{all.SCORE} or @file{all.emacs.SCORE}, 10804 can't have score files like @file{all.SCORE}, but you can have
9195 but you can have @file{SCORE}, @file{comp.SCORE} and 10805 @file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}.
9196 @file{comp.emacs.SCORE}.
9197 10806
9198 @end table 10807 @end table
9199 This variable can also be a list of functions. In that case, all these 10808 This variable can also be a list of functions. In that case, all these
9200 functions will be called, and all the returned lists of score files will 10809 functions will be called, and all the returned lists of score files will
9201 be applied. These functions can also return lists of score alists 10810 be applied. These functions can also return lists of score alists
9315 whether this score entry matches the article. What match types that can 10924 whether this score entry matches the article. What match types that can
9316 be used depends on what header you wish to perform the match on. 10925 be used depends on what header you wish to perform the match on.
9317 @table @dfn 10926 @table @dfn
9318 10927
9319 @item From, Subject, References, Xref, Message-ID 10928 @item From, Subject, References, Xref, Message-ID
9320 For most header types, there are the @code{r} and @code{R} (regexp) as 10929 For most header types, there are the @code{r} and @code{R} (regexp), as
9321 well as @code{s} and @code{S} (substring) types and @code{e} and 10930 well as @code{s} and @code{S} (substring) types, and @code{e} and
9322 @code{E} (exact match) types. If this element is not present, Gnus will 10931 @code{E} (exact match), and @code{w} (word match) types. If this
9323 assume that substring matching should be used. @code{R} and @code{S} 10932 element is not present, Gnus will assume that substring matching should
9324 differ from the other two in that the matches will be done in a 10933 be used. @code{R}, @code{S}, and @code{E} differ from the others in
9325 case-sensitive manner. All these one-letter types are really just 10934 that the matches will be done in a case-sensitive manner. All these
9326 abbreviations for the @code{regexp}, @code{string} and @code{exact} 10935 one-letter types are really just abbreviations for the @code{regexp},
9327 types, which you can use instead, if you feel like. 10936 @code{string}, @code{exact}, and @code{word} types, which you can use
10937 instead, if you feel like.
9328 10938
9329 @item Lines, Chars 10939 @item Lines, Chars
9330 These two headers use different match types: @code{<}, @code{>}, 10940 These two headers use different match types: @code{<}, @code{>},
9331 @code{=}, @code{>=} and @code{<=}. 10941 @code{=}, @code{>=} and @code{<=}. When matching on @code{Lines}, be
10942 careful because some backends (like @code{nndir}) do not generate
10943 @code{Lines} header, so every article ends up being marked as having 0
10944 lines. This can lead to strange results if you happen to lower score of
10945 the articles with few lines.
9332 10946
9333 @item Date 10947 @item Date
9334 For the Date header we have three match types: @code{before}, @code{at} 10948 For the Date header we have three kinda silly match types:
9335 and @code{after}. I can't really imagine this ever being useful, but, 10949 @code{before}, @code{at} and @code{after}. I can't really imagine this
9336 like, it would feel kinda silly not to provide this function. Just in 10950 ever being useful, but, like, it would feel kinda silly not to provide
9337 case. You never know. Better safe than sorry. Once burnt, twice shy. 10951 this function. Just in case. You never know. Better safe than sorry.
9338 Don't judge a book by its cover. Never not have sex on a first date. 10952 Once burnt, twice shy. Don't judge a book by its cover. Never not have
9339 (I have been told that at least one person, and I quote, ``found this 10953 sex on a first date. (I have been told that at least one person, and I
9340 function indispensable'', however.) 10954 quote, ``found this function indispensable'', however.)
10955
10956 @cindex ISO8601
10957 @cindex date
10958 A more useful match type is @code{regexp}. With it, you can match the
10959 date string using a regular expression. The date is normalized to
10960 ISO8601 compact format first---@samp{YYYYMMDDTHHMMSS}. If you want to
10961 match all articles that have been posted on April 1st in every year, you
10962 could use @samp{....0401.........} as a match string, for instance.
10963 (Note that the date is kept in its original time zone, so this will
10964 match articles that were posted when it was April 1st where the article
10965 was posted from. Time zones are such wholesome fun for the whole
10966 family, eh?)
9341 10967
9342 @item Head, Body, All 10968 @item Head, Body, All
9343 These three match keys use the same match types as the @code{From} (etc) 10969 These three match keys use the same match types as the @code{From} (etc)
9344 header uses. 10970 header uses.
9345 10971
9346 @item Followup 10972 @item Followup
9347 This match key will add a score entry on all articles that followup to 10973 This match key is somewhat special, in that it will match the
9348 some author. Uses the same match types as the @code{From} header uses. 10974 @code{From} header, and affect the score of not only the matching
10975 articles, but also all followups to the matching articles. This allows
10976 you e.g. increase the score of followups to your own articles, or
10977 decrease the score of followups to the articles of some known
10978 trouble-maker. Uses the same match types as the @code{From} header
10979 uses.
9349 10980
9350 @item Thread 10981 @item Thread
9351 This match key will add a score entry on all articles that are part of 10982 This match key works along the same lines as the @code{Followup} match
9352 a thread. Uses the same match types as the @code{References} header 10983 key. If you say that you want to score on a (sub-)thread that is
9353 uses. 10984 started by an article with a @code{Message-ID} @var{X}, then you add a
10985 @samp{thread} match. This will add a new @samp{thread} match for each
10986 article that has @var{X} in its @code{References} header. (These new
10987 @samp{thread} matches will use the @code{Message-ID}s of these matching
10988 articles.) This will ensure that you can raise/lower the score of an
10989 entire thread, even though some articles in the thread may not have
10990 complete @code{References} headers. Note that using this may lead to
10991 undeterministic scores of the articles in the thread.
9354 @end table 10992 @end table
9355 @end enumerate 10993 @end enumerate
9356 10994
9357 @item mark 10995 @item mark
9358 The value of this entry should be a number. Any articles with a score 10996 The value of this entry should be a number. Any articles with a score
9377 The value of this entry should be any number of file names. These files 11015 The value of this entry should be any number of file names. These files
9378 are assumed to be score files as well, and will be loaded the same way 11016 are assumed to be score files as well, and will be loaded the same way
9379 this one was. 11017 this one was.
9380 11018
9381 @item exclude-files 11019 @item exclude-files
9382 The clue of this entry should be any number of files. This files will 11020 The clue of this entry should be any number of files. These files will
9383 not be loaded, even though they would normally be so, for some reason or 11021 not be loaded, even though they would normally be so, for some reason or
9384 other. 11022 other.
9385 11023
9386 @item eval 11024 @item eval
9387 The value of this entry will be @code{eval}el. This element will be 11025 The value of this entry will be @code{eval}el. This element will be
9398 will only follow a few of the threads, also want to see any new threads. 11036 will only follow a few of the threads, also want to see any new threads.
9399 11037
9400 You can do this with the following two score file entries: 11038 You can do this with the following two score file entries:
9401 11039
9402 @example 11040 @example
9403 (orphan -500) 11041 (orphan -500)
9404 (mark-and-expunge -100) 11042 (mark-and-expunge -100)
9405 @end example 11043 @end example
9406 11044
9407 When you enter the group the first time, you will only see the new 11045 When you enter the group the first time, you will only see the new
9408 threads. You then raise the score of the threads that you find 11046 threads. You then raise the score of the threads that you find
9409 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the 11047 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the
9499 @vindex gnus-use-adaptive-scoring 11137 @vindex gnus-use-adaptive-scoring
9500 When you read an article, or mark an article as read, or kill an 11138 When you read an article, or mark an article as read, or kill an
9501 article, you leave marks behind. On exit from the group, Gnus can sniff 11139 article, you leave marks behind. On exit from the group, Gnus can sniff
9502 these marks and add score elements depending on what marks it finds. 11140 these marks and add score elements depending on what marks it finds.
9503 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to 11141 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to
9504 @code{t}. 11142 @code{t} or @code{(line)}. If you want score adaptively on separate
11143 words appearing in the subjects, you should set this variable to
11144 @code{(word)}. If you want to use both adaptive methods, set this
11145 variable to @code{(word line)}.
9505 11146
9506 @vindex gnus-default-adaptive-score-alist 11147 @vindex gnus-default-adaptive-score-alist
9507 To give you complete control over the scoring process, you can customize 11148 To give you complete control over the scoring process, you can customize
9508 the @code{gnus-default-adaptive-score-alist} variable. For instance, it 11149 the @code{gnus-default-adaptive-score-alist} variable. For instance, it
9509 might look something like this: 11150 might look something like this:
9542 If you have marked 10 articles with the same subject with 11183 If you have marked 10 articles with the same subject with
9543 @code{gnus-del-mark}, the rule for that mark will be applied ten times. 11184 @code{gnus-del-mark}, the rule for that mark will be applied ten times.
9544 That means that that subject will get a score of ten times -1, which 11185 That means that that subject will get a score of ten times -1, which
9545 should be, unless I'm much mistaken, -10. 11186 should be, unless I'm much mistaken, -10.
9546 11187
11188 If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all
11189 the read articles will be marked with the @samp{E} mark. This'll
11190 probably make adaptive scoring slightly impossible, so auto-expiring and
11191 adaptive scoring doesn't really mix very well.
11192
9547 The headers you can score on are @code{from}, @code{subject}, 11193 The headers you can score on are @code{from}, @code{subject},
9548 @code{message-id}, @code{references}, @code{xref}, @code{lines}, 11194 @code{message-id}, @code{references}, @code{xref}, @code{lines},
9549 @code{chars} and @code{date}. In addition, you can score on 11195 @code{chars} and @code{date}. In addition, you can score on
9550 @code{followup}, which will create an adaptive score entry that matches 11196 @code{followup}, which will create an adaptive score entry that matches
9551 on the @code{References} header using the @code{Message-ID} of the 11197 on the @code{References} header using the @code{Message-ID} of the
9582 the length of the match is less than 11228 the length of the match is less than
9583 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If 11229 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If
9584 this variable is @code{nil}, exact matching will always be used to avoid 11230 this variable is @code{nil}, exact matching will always be used to avoid
9585 this problem. 11231 this problem.
9586 11232
11233 @vindex gnus-default-adaptive-word-score-alist
11234 As mentioned above, you can adapt either on individual words or entire
11235 headers. If you adapt on words, the
11236 @code{gnus-default-adaptive-word-score-alist} variable says what score
11237 each instance of a word should add given a mark.
11238
11239 @lisp
11240 (setq gnus-default-adaptive-word-score-alist
11241 `((,gnus-read-mark . 30)
11242 (,gnus-catchup-mark . -10)
11243 (,gnus-killed-mark . -20)
11244 (,gnus-del-mark . -15)))
11245 @end lisp
11246
11247 This is the default value. If you have adaption on words enabled, every
11248 word that appears in subjects of articles that are marked with
11249 @code{gnus-read-mark} will result in a score rule that increase the
11250 score with 30 points.
11251
11252 @vindex gnus-default-ignored-adaptive-words
11253 @vindex gnus-ignored-adaptive-words
11254 Words that appear in the @code{gnus-default-ignored-adaptive-words} list
11255 will be ignored. If you wish to add more words to be ignored, use the
11256 @code{gnus-ignored-adaptive-words} list instead.
11257
11258 @vindex gnus-adaptive-word-syntax-table
11259 When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
11260 syntax table in effect. It is similar to the standard syntax table, but
11261 it considers numbers to be non-word-constituent characters.
11262
11263 After using this scheme for a while, it might be nice to write a
11264 @code{gnus-psychoanalyze-user} command to go through the rules and see
11265 what words you like and what words you don't like. Or perhaps not.
11266
11267 Note that the adaptive word scoring thing is highly experimental and is
11268 likely to change in the future. Initial impressions seem to indicate
11269 that it's totally useless as it stands. Some more work (involving more
11270 rigorous statistical methods) will have to be done to make this useful.
11271
11272
11273 @node Home Score File
11274 @section Home Score File
11275
11276 The score file where new score file entries will go is called the
11277 @dfn{home score file}. This is normally (and by default) the score file
11278 for the group itself. For instance, the home score file for
11279 @samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}.
11280
11281 However, this may not be what you want. It is often convenient to share
11282 a common home score file among many groups---all @samp{emacs} groups
11283 could perhaps use the same home score file.
11284
11285 @vindex gnus-home-score-file
11286 The variable that controls this is @code{gnus-home-score-file}. It can
11287 be:
11288
11289 @enumerate
11290 @item
11291 A string. Then this file will be used as the home score file for all
11292 groups.
11293
11294 @item
11295 A function. The result of this function will be used as the home score
11296 file. The function will be called with the name of the group as the
11297 parameter.
11298
11299 @item
11300 A list. The elements in this list can be:
11301
11302 @enumerate
11303 @item
11304 @var{(regexp file-name)}. If the @var{regexp} matches the group name,
11305 the @var{file-name} will will be used as the home score file.
11306
11307 @item
11308 A function. If the function returns non-nil, the result will be used as
11309 the home score file.
11310
11311 @item
11312 A string. Use the string as the home score file.
11313 @end enumerate
11314
11315 The list will be traversed from the beginning towards the end looking
11316 for matches.
11317
11318 @end enumerate
11319
11320 So, if you want to use just a single score file, you could say:
11321
11322 @lisp
11323 (setq gnus-home-score-file
11324 "my-total-score-file.SCORE")
11325 @end lisp
11326
11327 If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and
11328 @file{rec.SCORE} for all @samp{rec} groups (and so on), you can say:
11329
11330 @lisp
11331 (setq gnus-home-score-file
11332 'gnus-hierarchial-home-score-file)
11333 @end lisp
11334
11335 This is a ready-made function provided for your convenience.
11336
11337 If you want to have one score file for the @samp{emacs} groups and
11338 another for the @samp{comp} groups, while letting all other groups use
11339 their own home score files:
11340
11341 @lisp
11342 (setq gnus-home-score-file
11343 ;; All groups that match the regexp "\\.emacs"
11344 '("\\.emacs" "emacs.SCORE")
11345 ;; All the comp groups in one score file
11346 ("^comp" "comp.SCORE"))
11347 @end lisp
11348
11349 @vindex gnus-home-adapt-file
11350 @code{gnus-home-adapt-file} works exactly the same way as
11351 @code{gnus-home-score-file}, but says what the home adaptive score file
11352 is instead. All new adaptive file entries will go into the file
11353 specified by this variable, and the same syntax is allowed.
11354
11355 In addition to using @code{gnus-home-score-file} and
11356 @code{gnus-home-adapt-file}, you can also use group parameters
11357 (@pxref{Group Parameters}) and topic parameters (@pxref{Topic
11358 Parameters}) to achieve much the same. Group and topic parameters take
11359 precedence over this variable.
11360
9587 11361
9588 @node Followups To Yourself 11362 @node Followups To Yourself
9589 @section Followups To Yourself 11363 @section Followups To Yourself
9590 11364
9591 Gnus offers two commands for picking out the @code{Message-ID} header in 11365 Gnus offers two commands for picking out the @code{Message-ID} header in
9606 @findex gnus-score-followup-thread 11380 @findex gnus-score-followup-thread
9607 This will add a score to all articles that appear in a thread ``below'' 11381 This will add a score to all articles that appear in a thread ``below''
9608 your own article. 11382 your own article.
9609 @end table 11383 @end table
9610 11384
9611 @vindex gnus-inews-article-hook 11385 @vindex message-sent-hook
9612 These two functions are both primarily meant to be used in hooks like 11386 These two functions are both primarily meant to be used in hooks like
9613 @code{message-send-hook}. 11387 @code{message-sent-hook}.
11388
11389 If you look closely at your own @code{Message-ID}, you'll notice that
11390 the first two or three characters are always the same. Here's two of
11391 mine:
11392
11393 @example
11394 <x6u3u47icf.fsf@@eyesore.no>
11395 <x6sp9o7ibw.fsf@@eyesore.no>
11396 @end example
11397
11398 So ``my'' ident on this machine is @samp{x6}. This can be
11399 exploited---the following rule will raise the score on all followups to
11400 myself:
11401
11402 @lisp
11403 ("references"
11404 ("<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r))
11405 @end lisp
11406
11407 Whether it's the first two or first three characters that are ``yours''
11408 is system-dependent.
11409
9614 11410
9615 @node Scoring Tips 11411 @node Scoring Tips
9616 @section Scoring Tips 11412 @section Scoring Tips
9617 @cindex scoring tips 11413 @cindex scoring tips
9618 11414
9695 All you have to do to use other people's score files is to set the 11491 All you have to do to use other people's score files is to set the
9696 @code{gnus-global-score-files} variable. One entry for each score file, 11492 @code{gnus-global-score-files} variable. One entry for each score file,
9697 or each score file directory. Gnus will decide by itself what score 11493 or each score file directory. Gnus will decide by itself what score
9698 files are applicable to which group. 11494 files are applicable to which group.
9699 11495
9700 Say you want to use all score files in the 11496 Say you want to use the score file
9701 @file{/ftp@@ftp.some-where:/pub/score} directory and the single score 11497 @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE} and
9702 file @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE}: 11498 all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
9703 11499
9704 @lisp 11500 @lisp
9705 (setq gnus-global-score-files 11501 (setq gnus-global-score-files
9706 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" 11502 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE"
9707 "/ftp@@ftp.some-where:/pub/score/")) 11503 "/ftp@@ftp.some-where:/pub/score/"))
9768 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any 11564 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any
9769 forms into this file, which means that you can use kill files as some 11565 forms into this file, which means that you can use kill files as some
9770 sort of primitive hook function to be run on group entry, even though 11566 sort of primitive hook function to be run on group entry, even though
9771 that isn't a very good idea. 11567 that isn't a very good idea.
9772 11568
9773 XCNormal kill files look like this: 11569 Normal kill files look like this:
9774 11570
9775 @lisp 11571 @lisp
9776 (gnus-kill "From" "Lars Ingebrigtsen") 11572 (gnus-kill "From" "Lars Ingebrigtsen")
9777 (gnus-kill "Subject" "ding") 11573 (gnus-kill "Subject" "ding")
9778 (gnus-expunge "X") 11574 (gnus-expunge "X")
9847 A hook called in kill-file mode buffers. 11643 A hook called in kill-file mode buffers.
9848 11644
9849 @end table 11645 @end table
9850 11646
9851 11647
11648 @node Converting Kill Files
11649 @section Converting Kill Files
11650 @cindex kill files
11651 @cindex converting kill files
11652
11653 If you have loads of old kill files, you may want to convert them into
11654 score files. If they are ``regular'', you can use
11655 the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
11656 by hand.
11657
11658 The kill to score conversion package isn't included in Gnus by default.
11659 You can fetch it from
11660 @file{http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}.
11661
11662 If your old kill files are very complex---if they contain more
11663 non-@code{gnus-kill} forms than not, you'll have to convert them by
11664 hand. Or just let them be as they are. Gnus will still use them as
11665 before.
11666
11667
9852 @node GroupLens 11668 @node GroupLens
9853 @section GroupLens 11669 @section GroupLens
9854 @cindex GroupLens 11670 @cindex GroupLens
9855 11671
9856 GroupLens is a collaborative filtering system that helps you work 11672 GroupLens is a collaborative filtering system that helps you work
9877 11693
9878 @node Using GroupLens 11694 @node Using GroupLens
9879 @subsection Using GroupLens 11695 @subsection Using GroupLens
9880 11696
9881 To use GroupLens you must register a pseudonym with your local Better 11697 To use GroupLens you must register a pseudonym with your local Better
9882 Bit Bureau (BBB). At the moment the only better bit in town is at 11698 Bit Bureau (BBB).
9883 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html}. 11699 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
11700 better bit in town is at the moment.
9884 11701
9885 Once you have registered you'll need to set a couple of variables. 11702 Once you have registered you'll need to set a couple of variables.
9886 11703
9887 @table @code 11704 @table @code
9888 11705
9891 Setting this variable to a non-@code{nil} value will make Gnus hook into 11708 Setting this variable to a non-@code{nil} value will make Gnus hook into
9892 all the relevant GroupLens functions. 11709 all the relevant GroupLens functions.
9893 11710
9894 @item grouplens-pseudonym 11711 @item grouplens-pseudonym
9895 @vindex grouplens-pseudonym 11712 @vindex grouplens-pseudonym
9896 This variable should be set to the pseudonum you got when registering 11713 This variable should be set to the pseudonym you got when registering
9897 with the Better Bit Bureau. 11714 with the Better Bit Bureau.
9898 11715
9899 @item grouplens-newsgroups 11716 @item grouplens-newsgroups
9900 @vindex grouplens-newsgroups 11717 @vindex grouplens-newsgroups
9901 A list of groups that you want to get GroupLens predictions for. 11718 A list of groups that you want to get GroupLens predictions for.
10024 enhanced. It accepts the same specs as the normal summary line format 11841 enhanced. It accepts the same specs as the normal summary line format
10025 (@pxref{Summary Buffer Lines}). The default is 11842 (@pxref{Summary Buffer Lines}). The default is
10026 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. 11843 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}.
10027 11844
10028 @item grouplens-bbb-host 11845 @item grouplens-bbb-host
10029 Host running the bbbd server. The default is 11846 Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the
10030 @samp{grouplens.cs.umn.edu}. 11847 default.
10031 11848
10032 @item grouplens-bbb-port 11849 @item grouplens-bbb-port
10033 Port of the host running the bbbd server. The default is 9000. 11850 Port of the host running the bbbd server. The default is 9000.
10034 11851
10035 @item grouplens-score-offset 11852 @item grouplens-score-offset
10041 This variable allows the user to magnify the effect of GroupLens scores. 11858 This variable allows the user to magnify the effect of GroupLens scores.
10042 The scale factor is applied after the offset. The default is 1. 11859 The scale factor is applied after the offset. The default is 1.
10043 11860
10044 @end table 11861 @end table
10045 11862
11863
11864 @node Advanced Scoring
11865 @section Advanced Scoring
11866
11867 Scoring on Subjects and From headers is nice enough, but what if you're
11868 really interested in what a person has to say only when she's talking
11869 about a particular subject? Or what about if you really don't want to
11870 read what person A has to say when she's following up to person B, but
11871 want to read what she says when she's following up to person C?
11872
11873 By using advanced scoring rules you may create arbitrarily complex
11874 scoring patterns.
11875
11876 @menu
11877 * Advanced Scoring Syntax:: A definition.
11878 * Advanced Scoring Examples:: What they look like.
11879 * Advanced Scoring Tips:: Getting the most out of it.
11880 @end menu
11881
11882
11883 @node Advanced Scoring Syntax
11884 @subsection Advanced Scoring Syntax
11885
11886 Ordinary scoring rules have a string as the first element in the rule.
11887 Advanced scoring rules have a list as the first element. The second
11888 element is the score to be applied if the first element evaluated to a
11889 non-@code{nil} value.
11890
11891 These lists may consist of three logical operators, one redirection
11892 operator, and various match operators.
11893
11894 Logical operators:
11895
11896 @table @code
11897 @item &
11898 @itemx and
11899 This logical operator will evaluate each of its arguments until it finds
11900 one that evaluates to @code{false}, and then it'll stop. If all arguments
11901 evaluate to @code{true} values, then this operator will return
11902 @code{true}.
11903
11904 @item |
11905 @itemx or
11906 This logical operator will evaluate each of its arguments until it finds
11907 one that evaluates to @code{true}. If no arguments are @code{true},
11908 then this operator will return @code{false}.
11909
11910 @item !
11911 @itemx not
11912 @itemx ¬
11913 This logical operator only takes a single argument. It returns the
11914 inverse of the value of its argument.
11915
11916 @end table
11917
11918 There is an @dfn{indirection operator} that will make its arguments
11919 apply to the ancestors of the current article being scored. For
11920 instance, @code{1-} will make score rules apply to the parent of the
11921 current article. @code{2-} will make score fules apply to the
11922 grandparent of the current article. Alternatively, you can write
11923 @code{^^}, where the number of @code{^}s (carets) say how far back into
11924 the ancestry you want to go.
11925
11926 Finally, we have the match operators. These are the ones that do the
11927 real work. Match operators are header name strings followed by a match
11928 and a match type. A typical match operator looks like @samp{("from"
11929 "Lars Ingebrigtsen" s)}. The header names are the same as when using
11930 simple scoring, and the match types are also the same.
11931
11932
11933 @node Advanced Scoring Examples
11934 @subsection Advanced Scoring Examples
11935
11936 Let's say you want to increase the score of articles written by Lars
11937 when he's talking about Gnus:
11938
11939 @example
11940 ((&
11941 ("from" "Lars Ingebrigtsen")
11942 ("subject" "Gnus"))
11943 1000)
11944 @end example
11945
11946 Quite simple, huh?
11947
11948 When he writes long articles, he sometimes has something nice to say:
11949
11950 @example
11951 ((&
11952 ("from" "Lars Ingebrigtsen")
11953 (|
11954 ("subject" "Gnus")
11955 ("lines" 100 >)))
11956 1000)
11957 @end example
11958
11959 However, when he responds to things written by Reig Eigil Logge, you
11960 really don't want to read what he's written:
11961
11962 @example
11963 ((&
11964 ("from" "Lars Ingebrigtsen")
11965 (1- ("from" "Reig Eigir Logge")))
11966 -100000)
11967 @end example
11968
11969 Everybody that follows up Redmondo when he writes about disappearing
11970 socks should have their scores raised, but only when they talk about
11971 white socks. However, when Lars talks about socks, it's usually not
11972 very interesting:
11973
11974 @example
11975 ((&
11976 (1-
11977 (&
11978 ("from" "redmondo@@.*no" r)
11979 ("body" "disappearing.*socks" t)))
11980 (! ("from" "Lars Ingebrigtsen"))
11981 ("body" "white.*socks"))
11982 1000)
11983 @end example
11984
11985 The possibilities are endless.
11986
11987
11988 @node Advanced Scoring Tips
11989 @subsection Advanced Scoring Tips
11990
11991 The @code{&} and @code{|} logical operators do short-circuit logic.
11992 That is, they stop processing their arguments when it's clear what the
11993 result of the operation will be. For instance, if one of the arguments
11994 of an @code{&} evaluates to @code{false}, there's no point in evaluating
11995 the rest of the arguments. This means that you should put slow matches
11996 (@samp{body}, @code{header}) last and quick matches (@samp{from},
11997 @samp{subject}) first.
11998
11999 The indirection arguments (@code{1-} and so on) will make their
12000 arguments work on previous generations of the thread. If you say
12001 something like:
12002
12003 @example
12004 ...
12005 (1-
12006 (1-
12007 ("from" "lars")))
12008 ...
12009 @end example
12010
12011 Then that means "score on the from header of the grandparent of the
12012 current article". An indirection is quite fast, but it's better to say:
12013
12014 @example
12015 (1-
12016 (&
12017 ("from" "Lars")
12018 ("subject" "Gnus")))
12019 @end example
12020
12021 than it is to say:
12022
12023 @example
12024 (&
12025 (1- ("from" "Lars"))
12026 (1- ("subject" "Gnus")))
12027 @end example
12028
12029
12030 @node Score Decays
12031 @section Score Decays
12032 @cindex score decays
12033 @cindex decays
12034
12035 You may find that your scores have a tendency to grow without
12036 bounds, especially if you're using adaptive scoring. If scores get too
12037 big, they lose all meaning---they simply max out and it's difficult to
12038 use them in any sensible way.
12039
12040 @vindex gnus-decay-scores
12041 @findex gnus-decay-score
12042 @vindex gnus-score-decay-function
12043 Gnus provides a mechanism for decaying scores to help with this problem.
12044 When score files are loaded and @code{gnus-decay-scores} is
12045 non-@code{nil}, Gnus will run the score files through the decaying
12046 mechanism thereby lowering the scores of all non-permanent score rules.
12047 The decay itself if performed by the @code{gnus-score-decay-function}
12048 function, which is @code{gnus-decay-score} by default. Here's the
12049 definition of that function:
12050
12051 @lisp
12052 (defun gnus-decay-score (score)
12053 (floor
12054 (- score
12055 (* (if (< score 0) 1 -1)
12056 (min score
12057 (max gnus-score-decay-constant
12058 (* (abs score)
12059 gnus-score-decay-scale)))))))
12060 @end lisp
12061
12062 @vindex gnus-score-decay-scale
12063 @vindex gnus-score-decay-constant
12064 @code{gnus-score-decay-constant} is 3 by default and
12065 @code{gnus-score-decay-scale} is 0.05. This should cause the following:
12066
12067 @enumerate
12068 @item
12069 Scores between -3 and 3 will be set to 0 when this function is called.
12070
12071 @item
12072 Scores with magnitudes between 3 and 60 will be shrunk by 3.
12073
12074 @item
12075 Scores with magnitudes greater than 60 will be shrunk by 5% of the
12076 score.
12077 @end enumerate
12078
12079 If you don't like this decay function, write your own. It is called
12080 with the score to be decayed as its only parameter, and it should return
12081 the new score, which should be an integer.
12082
12083 Gnus will try to decay scores once a day. If you haven't run Gnus for
12084 four days, Gnus will decay the scores four times, for instance.
10046 12085
10047 12086
10048 @node Various 12087 @node Various
10049 @chapter Various 12088 @chapter Various
10050 12089
10058 * Highlighting and Menus:: Making buffers look all nice and cozy. 12097 * Highlighting and Menus:: Making buffers look all nice and cozy.
10059 * Buttons:: Get tendonitis in ten easy steps! 12098 * Buttons:: Get tendonitis in ten easy steps!
10060 * Daemons:: Gnus can do things behind your back. 12099 * Daemons:: Gnus can do things behind your back.
10061 * NoCeM:: How to avoid spam and other fatty foods. 12100 * NoCeM:: How to avoid spam and other fatty foods.
10062 * Picons:: How to display pictures of what your reading. 12101 * Picons:: How to display pictures of what your reading.
12102 * Undo:: Some actions can be undone.
12103 * Moderation:: What to do if you're a moderator.
12104 * XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
10063 * Various Various:: Things that are really various. 12105 * Various Various:: Things that are really various.
10064 @end menu 12106 @end menu
10065 12107
10066 12108
10067 @node Process/Prefix 12109 @node Process/Prefix
10092 If there is neither a numeric prefix nor any articles marked with the 12134 If there is neither a numeric prefix nor any articles marked with the
10093 process mark, just perform the operation on the current article. 12135 process mark, just perform the operation on the current article.
10094 12136
10095 Quite simple, really, but it needs to be made clear so that surprises 12137 Quite simple, really, but it needs to be made clear so that surprises
10096 are avoided. 12138 are avoided.
12139
12140 Commands that react to the process mark will push the current list of
12141 process marked articles onto a stack and will then clear all process
12142 marked articles. You can restore the previous configuration with the
12143 @kbd{M P y} command (@pxref{Setting Process Marks}).
10097 12144
10098 @vindex gnus-summary-goto-unread 12145 @vindex gnus-summary-goto-unread
10099 One thing that seems to shock & horrify lots of people is that, for 12146 One thing that seems to shock & horrify lots of people is that, for
10100 instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}. 12147 instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}.
10101 Since each @kbd{d} (which marks the current article as read) by default 12148 Since each @kbd{d} (which marks the current article as read) by default
10150 12197
10151 Here's an example format spec (from the group buffer): @samp{%M%S%5y: 12198 Here's an example format spec (from the group buffer): @samp{%M%S%5y:
10152 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are 12199 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are
10153 lots of percentages everywhere. 12200 lots of percentages everywhere.
10154 12201
12202 @menu
12203 * Formatting Basics:: A formatting variable is basically a format string.
12204 * Advanced Formatting:: Modifying output in various ways.
12205 * User-Defined Specs:: Having Gnus call your own functions.
12206 * Formatting Fonts:: Making the formatting look colorful and nice.
12207 @end menu
12208
12209 Currently Gnus uses the following formatting variables:
12210 @code{gnus-group-line-format}, @code{gnus-summary-line-format},
12211 @code{gnus-server-line-format}, @code{gnus-topic-line-format},
12212 @code{gnus-group-mode-line-format},
12213 @code{gnus-summary-mode-line-format},
12214 @code{gnus-article-mode-line-format},
12215 @code{gnus-server-mode-line-format}, and
12216 @code{gnus-summary-pick-line-format}.
12217
12218 All these format variables can also be arbitrary elisp forms. In that
12219 case, they will be @code{eval}ed to insert the required lines.
12220
12221 @kindex M-x gnus-update-format
12222 @findex gnus-update-format
12223 Gnus includes a command to help you while creating your own format
12224 specs. @kbd{M-x gnus-update-format} will @code{eval} the current form,
12225 update the spec in question and pop you to a buffer where you can
12226 examine the resulting lisp code to be run to generate the line.
12227
12228
12229
12230 @node Formatting Basics
12231 @subsection Formatting Basics
12232
10155 Each @samp{%} element will be replaced by some string or other when the 12233 Each @samp{%} element will be replaced by some string or other when the
10156 buffer in question is generated. @samp{%5y} means ``insert the @samp{y} 12234 buffer in question is generated. @samp{%5y} means ``insert the @samp{y}
10157 spec, and pad with spaces to get a 5-character field''. Just like a 12235 spec, and pad with spaces to get a 5-character field''.
10158 normal format spec, almost. 12236
10159 12237 As with normal C and Emacs Lisp formatting strings, the numerical
10160 You can also say @samp{%6,4y}, which means that the field will never be 12238 modifier between the @samp{%} and the formatting type character will
10161 more than 4 characters wide and never less than 6 characters wide. 12239 @dfn{pad} the output so that it is always at least that long.
10162 12240 @samp{%5y} will make the field always (at least) five characters wide by
10163 There are also specs for highlighting, and these are shared by all the 12241 padding with spaces to the left. If you say @samp{%-5y}, it will pad to
10164 format variables. Text inside the @samp{%(} and @samp{%)} specifiers 12242 the right instead.
10165 will get the special @code{mouse-face} property set, which means that it 12243
10166 will be highlighted (with @code{gnus-mouse-face}) when you put the mouse 12244 You may also wish to limit the length of the field to protect against
10167 pointer over it. 12245 particularly wide values. For that you can say @samp{%4,6y}, which
12246 means that the field will never be more than 6 characters wide and never
12247 less than 4 characters wide.
12248
12249
12250 @node Advanced Formatting
12251 @subsection Advanced Formatting
12252
12253 It is frequently useful to post-process the fields in some way.
12254 Padding, limiting, cutting off parts and suppressing certain values can
12255 be achieved by using @dfn{tilde modifiers}. A typical tilde spec might
12256 look like @samp{%~(cut 3)~(ignore "0")y}.
12257
12258 These are the legal modifiers:
12259
12260 @table @code
12261 @item pad
12262 @itemx pad-left
12263 Pad the field to the left with spaces until it reaches the required
12264 length.
12265
12266 @item pad-right
12267 Pad the field to the right with spaces until it reaches the required
12268 length.
12269
12270 @item max
12271 @itemx max-left
12272 Cut off characters from the left until it reaches the specified length.
12273
12274 @item max-right
12275 Cut off characters from the right until it reaches the specified
12276 length.
12277
12278 @item cut
12279 @itemx cut-left
12280 Cut off the specified number of characters from the left.
12281
12282 @item cut-right
12283 Cut off the specified number of characters from the right.
12284
12285 @item ignore
12286 Return an empty string if the field is equal to the specified value.
12287
12288 @item form
12289 Use the specified form as the field value when the @samp{@@} spec is
12290 used.
12291 @end table
12292
12293 Let's take an example. The @samp{%o} spec in the summary mode lines
12294 will return a date in compact ISO8601 format---@samp{19960809T230410}.
12295 This is quite a mouthful, so we want to shave off the century number and
12296 the time, leaving us with a six-character date. That would be
12297 @samp{%~(cut-left 2)~(max-right 6)~(pad 6)o}. (Cutting is done before
12298 maxing, and we need the padding to ensure that the date is never less
12299 than 6 characters to make it look nice in columns.)
12300
12301 Ignoring is done first; then cutting; then maxing; and then as the very
12302 last operation, padding.
12303
12304 If you use lots of these advanced thingies, you'll find that Gnus gets
12305 quite slow. This can be helped enormously by running @kbd{M-x
12306 gnus-compile} when you are satisfied with the look of your lines.
12307 @xref{Compilation}.
12308
12309
12310 @node User-Defined Specs
12311 @subsection User-Defined Specs
12312
12313 All the specs allow for inserting user defined specifiers---@samp{u}.
12314 The next character in the format string should be a letter. Gnus
12315 will call the function @code{gnus-user-format-function-}@samp{X}, where
12316 @samp{X} is the letter following @samp{%u}. The function will be passed
12317 a single parameter---what the parameter means depends on what buffer
12318 it's being called from. The function should return a string, which will
12319 be inserted into the buffer just like information from any other
12320 specifier. This function may also be called with dummy values, so it
12321 should protect against that.
12322
12323 You can also use tilde modifiers (@pxref{Advanced Formatting} to achieve
12324 much the same without defining new functions. Here's an example:
12325 @samp{%~(form (count-lines (point-min) (point)))@@}. The form
12326 given here will be evaluated to yield the current line number, and then
12327 inserted.
12328
12329
12330 @node Formatting Fonts
12331 @subsection Formatting Fonts
12332
12333 There are specs for highlighting, and these are shared by all the format
12334 variables. Text inside the @samp{%(} and @samp{%)} specifiers will get
12335 the special @code{mouse-face} property set, which means that it will be
12336 highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer
12337 over it.
10168 12338
10169 Text inside the @samp{%[} and @samp{%]} specifiers will have their 12339 Text inside the @samp{%[} and @samp{%]} specifiers will have their
10170 normal faces set using @code{gnus-face-0}, which is @code{bold} by 12340 normal faces set using @code{gnus-face-0}, which is @code{bold} by
10171 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1} 12341 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1}
10172 instead, and so on. Create as many faces as you wish. The same goes 12342 instead, and so on. Create as many faces as you wish. The same goes
10194 @end lisp 12364 @end lisp
10195 12365
10196 I'm sure you'll be able to use this scheme to create totally unreadable 12366 I'm sure you'll be able to use this scheme to create totally unreadable
10197 and extremely vulgar displays. Have fun! 12367 and extremely vulgar displays. Have fun!
10198 12368
10199 Currently Gnus uses the following formatting variables:
10200 @code{gnus-group-line-format}, @code{gnus-summary-line-format},
10201 @code{gnus-server-line-format}, @code{gnus-topic-line-format},
10202 @code{gnus-group-mode-line-format},
10203 @code{gnus-summary-mode-line-format},
10204 @code{gnus-article-mode-line-format},
10205 @code{gnus-server-mode-line-format}.
10206
10207 Note that the @samp{%(} specs (and friends) do not make any sense on the 12369 Note that the @samp{%(} specs (and friends) do not make any sense on the
10208 mode-line variables. 12370 mode-line variables.
10209
10210 All these format variables can also be arbitrary elisp forms. In that
10211 case, they will be @code{eval}ed to insert the required lines.
10212
10213 @kindex M-x gnus-update-format
10214 @findex gnus-update-format
10215 Gnus includes a command to help you while creating your own format
10216 specs. @kbd{M-x gnus-update-format} will @code{eval} the current form,
10217 update the spec in question and pop you to a buffer where you can
10218 examine the resulting lisp code to be run to generate the line.
10219 12371
10220 12372
10221 @node Windows Configuration 12373 @node Windows Configuration
10222 @section Windows Configuration 12374 @section Windows Configuration
10223 @cindex windows configuration 12375 @cindex windows configuration
10243 This is an alist. The @dfn{key} is a symbol that names some action or 12395 This is an alist. The @dfn{key} is a symbol that names some action or
10244 other. For instance, when displaying the group buffer, the window 12396 other. For instance, when displaying the group buffer, the window
10245 configuration function will use @code{group} as the key. A full list of 12397 configuration function will use @code{group} as the key. A full list of
10246 possible names is listed below. 12398 possible names is listed below.
10247 12399
10248 The @dfn{value} (i. e., the @dfn{split}) says how much space each buffer 12400 The @dfn{value} (i.e., the @dfn{split}) says how much space each buffer
10249 should occupy. To take the @code{article} split as an example - 12401 should occupy. To take the @code{article} split as an example -
10250 12402
10251 @lisp 12403 @lisp
10252 (article (vertical 1.0 (summary 0.25 point) 12404 (article (vertical 1.0 (summary 0.25 point)
10253 (article 1.0))) 12405 (article 1.0)))
10404 @code{reply-yank}, @code{mail-bounce}, @code{draft}, 12556 @code{reply-yank}, @code{mail-bounce}, @code{draft},
10405 @code{pipe}, @code{bug}, @code{compose-bounce}. 12557 @code{pipe}, @code{bug}, @code{compose-bounce}.
10406 12558
10407 Note that the @code{message} key is used for both 12559 Note that the @code{message} key is used for both
10408 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If 12560 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If
10409 it is desireable to distinguish between the two, something like this 12561 it is desirable to distinguish between the two, something like this
10410 might be used: 12562 might be used:
10411 12563
10412 @lisp 12564 @lisp
10413 (message (horizontal 1.0 12565 (message (horizontal 1.0
10414 (vertical 1.0 (message 1.0 point)) 12566 (vertical 1.0 (message 1.0 point))
10415 (vertical 0.24 12567 (vertical 0.24
10416 (if (buffer-live-p gnus-summary-buffer) 12568 (if (buffer-live-p gnus-summary-buffer)
10417 '(summary 0.5)) 12569 '(summary 0.5))
10418 (group 1.0))))) 12570 (group 1.0)))))
10419 @end lisp 12571 @end lisp
10420 12572
10421 @findex gnus-add-configuration 12573 @findex gnus-add-configuration
10422 Since the @code{gnus-buffer-configuration} variable is so long and 12574 Since the @code{gnus-buffer-configuration} variable is so long and
10423 complicated, there's a function you can use to ease changing the config 12575 complicated, there's a function you can use to ease changing the config
10431 (summary .25 point) 12583 (summary .25 point)
10432 (article 1.0)))) 12584 (article 1.0))))
10433 @end lisp 12585 @end lisp
10434 12586
10435 You'd typically stick these @code{gnus-add-configuration} calls in your 12587 You'd typically stick these @code{gnus-add-configuration} calls in your
10436 @file{.gnus} file or in some startup hook---they should be run after 12588 @file{.gnus.el} file or in some startup hook---they should be run after
10437 Gnus has been loaded. 12589 Gnus has been loaded.
10438 12590
10439 12591 @vindex gnus-always-force-window-configuration
10440 @node Compilation 12592 If all windows mentioned in the configuration are already visible, Gnus
10441 @section Compilation 12593 won't change the window configuration. If you always want to force the
12594 ``right'' window configuration, you can set
12595 @code{gnus-always-force-window-configuration} to non-@code{nil}.
12596
12597
12598 @node Compilation
12599 @section Compilation
10442 @cindex compilation 12600 @cindex compilation
10443 @cindex byte-compilation 12601 @cindex byte-compilation
10444 12602
10445 @findex gnus-compile 12603 @findex gnus-compile
10446 12604
10453 course.) 12611 course.)
10454 12612
10455 To help with this, you can run @kbd{M-x gnus-compile} after you've 12613 To help with this, you can run @kbd{M-x gnus-compile} after you've
10456 fiddled around with the variables and feel that you're (kind of) 12614 fiddled around with the variables and feel that you're (kind of)
10457 satisfied. This will result in the new specs being byte-compiled, and 12615 satisfied. This will result in the new specs being byte-compiled, and
10458 you'll get top speed again. 12616 you'll get top speed again. Gnus will save these compiled specs in the
12617 @file{.newsrc.eld} file. (User-defined functions aren't compiled by
12618 this function, though---you should compile them yourself by sticking
12619 them into the @code{.gnus.el} file and byte-compiling that file.)
10459 12620
10460 12621
10461 @node Mode Lines 12622 @node Mode Lines
10462 @section Mode Lines 12623 @section Mode Lines
10463 @cindex mode lines 12624 @cindex mode lines
10474 @cindex display-time 12635 @cindex display-time
10475 12636
10476 @vindex gnus-mode-non-string-length 12637 @vindex gnus-mode-non-string-length
10477 By default, Gnus displays information on the current article in the mode 12638 By default, Gnus displays information on the current article in the mode
10478 lines of the summary and article buffers. The information Gnus wishes 12639 lines of the summary and article buffers. The information Gnus wishes
10479 to display (eg. the subject of the article) is often longer than the 12640 to display (e.g. the subject of the article) is often longer than the
10480 mode lines, and therefore have to be cut off at some point. The 12641 mode lines, and therefore have to be cut off at some point. The
10481 @code{gnus-mode-non-string-length} variable says how long the other 12642 @code{gnus-mode-non-string-length} variable says how long the other
10482 elements on the line is (i.e., the non-info part). If you put 12643 elements on the line is (i.e., the non-info part). If you put
10483 additional elements on the mode line (eg. a clock), you should modify 12644 additional elements on the mode line (e.g. a clock), you should modify
10484 this variable: 12645 this variable:
10485 12646
10486 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it> 12647 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it>
10487 @lisp 12648 @lisp
10488 (add-hook 'display-time-hook 12649 (add-hook 'display-time-hook
10493 (length display-time-string))))) 12654 (length display-time-string)))))
10494 @end lisp 12655 @end lisp
10495 12656
10496 If this variable is @code{nil} (which is the default), the mode line 12657 If this variable is @code{nil} (which is the default), the mode line
10497 strings won't be chopped off, and they won't be padded either. 12658 strings won't be chopped off, and they won't be padded either.
12659 Note that the default is unlikely to be desirable, as even the
12660 percentage complete in the buffer may be crowded off the mode line;
12661 the user should configure this variable appropriately for their
12662 configuration.
10498 12663
10499 12664
10500 @node Highlighting and Menus 12665 @node Highlighting and Menus
10501 @section Highlighting and Menus 12666 @section Highlighting and Menus
10502 @cindex visual 12667 @cindex visual
10559 @item gnus-mouse-face 12724 @item gnus-mouse-face
10560 @vindex gnus-mouse-face 12725 @vindex gnus-mouse-face
10561 This is the face (i.e., font) used for mouse highlighting in Gnus. No 12726 This is the face (i.e., font) used for mouse highlighting in Gnus. No
10562 mouse highlights will be done if @code{gnus-visual} is @code{nil}. 12727 mouse highlights will be done if @code{gnus-visual} is @code{nil}.
10563 12728
10564 @item gnus-display-type
10565 @vindex gnus-display-type
10566 This variable is symbol indicating the display type Emacs is running
10567 under. The symbol should be one of @code{color}, @code{grayscale} or
10568 @code{mono}. If Gnus guesses this display attribute wrongly, either set
10569 this variable in your @file{~/.emacs} or set the resource
10570 @code{Emacs.displayType} in your @file{~/.Xdefaults}.
10571
10572 @item gnus-background-mode
10573 @vindex gnus-background-mode
10574 This is a symbol indicating the Emacs background brightness. The symbol
10575 should be one of @code{light} or @code{dark}. If Gnus guesses this
10576 frame attribute wrongly, either set this variable in your @file{~/.emacs} or
10577 set the resource @code{Emacs.backgroundMode} in your @file{~/.Xdefaults}.
10578 `gnus-display-type'.
10579 @end table 12729 @end table
10580 12730
10581 There are hooks associated with the creation of all the different menus: 12731 There are hooks associated with the creation of all the different menus:
10582 12732
10583 @table @code 12733 @table @code
10715 the function will then be called once every day somewhere near that 12865 the function will then be called once every day somewhere near that
10716 time. Modified by the @var{idle} parameter, of course. 12866 time. Modified by the @var{idle} parameter, of course.
10717 12867
10718 @vindex gnus-demon-timestep 12868 @vindex gnus-demon-timestep
10719 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep} 12869 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep}
10720 seconds. This is @code{60} by default. If you change that variable, 12870 seconds. This is 60 by default. If you change that variable,
10721 all the timings in the handlers will be affected.) 12871 all the timings in the handlers will be affected.)
10722 12872
10723 @vindex gnus-use-demon 12873 @vindex gnus-use-demon
10724 To set the whole thing in motion, though, you have to set 12874 To set the whole thing in motion, though, you have to set
10725 @code{gnus-use-demon} to @code{t}. 12875 @code{gnus-use-demon} to @code{t}.
10732 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) 12882 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30)
10733 @end lisp 12883 @end lisp
10734 12884
10735 @findex gnus-demon-add-nocem 12885 @findex gnus-demon-add-nocem
10736 @findex gnus-demon-add-scanmail 12886 @findex gnus-demon-add-scanmail
12887 @findex gnus-demon-add-rescan
10737 @findex gnus-demon-add-disconnection 12888 @findex gnus-demon-add-disconnection
10738 Some ready-made functions to do this has been created: 12889 Some ready-made functions to do this has been created:
10739 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, and 12890 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
10740 @code{gnus-demon-add-scanmail}. Just put those functions in your 12891 @code{gnus-demon-add-rescan}, and @code{gnus-demon-add-scanmail}. Just
10741 @file{.gnus} if you want those abilities. 12892 put those functions in your @file{.gnus} if you want those abilities.
10742 12893
10743 @findex gnus-demon-init 12894 @findex gnus-demon-init
10744 @findex gnus-demon-cancel 12895 @findex gnus-demon-cancel
10745 @vindex gnus-demon-handlers 12896 @vindex gnus-demon-handlers
10746 If you add handlers to @code{gnus-demon-handlers} directly, you should 12897 If you add handlers to @code{gnus-demon-handlers} directly, you should
10784 by default. 12935 by default.
10785 12936
10786 @item gnus-nocem-groups 12937 @item gnus-nocem-groups
10787 @vindex gnus-nocem-groups 12938 @vindex gnus-nocem-groups
10788 Gnus will look for NoCeM messages in the groups in this list. The 12939 Gnus will look for NoCeM messages in the groups in this list. The
10789 default is @code{("alt.nocem.misc" "news.admin.net-abuse.announce")}. 12940 default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins"
12941 "alt.nocem.misc" "news.admin.net-abuse.announce")}.
10790 12942
10791 @item gnus-nocem-issuers 12943 @item gnus-nocem-issuers
10792 @vindex gnus-nocem-issuers 12944 @vindex gnus-nocem-issuers
10793 There are many people issuing NoCeM messages. This list says what 12945 There are many people issuing NoCeM messages. This list says what
10794 people you want to listen to. The default is @code{("Automoose-1" 12946 people you want to listen to. The default is @code{("Automoose-1"
10808 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be 12960 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be
10809 Norwegian, and was the person(s) who invented NoCeM. 12961 Norwegian, and was the person(s) who invented NoCeM.
10810 12962
10811 @item jem@@xpat.com; 12963 @item jem@@xpat.com;
10812 @cindex Jem 12964 @cindex Jem
10813 Jem---Korean despammer who is getting very busy these days. 12965 John Milburn---despammer located in Korea who is getting very busy these
12966 days.
10814 12967
10815 @item red@@redpoll.mrfs.oh.us (Richard E. Depew) 12968 @item red@@redpoll.mrfs.oh.us (Richard E. Depew)
10816 Richard E. Depew---lone American despammer. He mostly cancels binary 12969 Richard E. Depew---lone American despammer. He mostly cancels binary
10817 postings to non-binary groups and removes spews (regurgitated articles). 12970 postings to non-binary groups and removes spews (regurgitated articles).
10818 @end table 12971 @end table
10819 12972
10820 You do not have to heed NoCeM messages from all these people---just the 12973 You do not have to heed NoCeM messages from all these people---just the
10821 ones you want to listen to. 12974 ones you want to listen to.
12975
12976 @item gnus-nocem-verifyer
12977 @vindex gnus-nocem-verifyer
12978 @findex mc-verify
12979 This should be a function for verifying that the NoCeM issuer is who she
12980 says she is. The default is @code{mc-verify}, which is a Mailcrypt
12981 function. If this is too slow and you don't care for verification
12982 (which may be dangerous), you can set this variable to @code{nil}.
10822 12983
10823 @item gnus-nocem-directory 12984 @item gnus-nocem-directory
10824 @vindex gnus-nocem-directory 12985 @vindex gnus-nocem-directory
10825 This is where Gnus will store its NoCeM cache files. The default is 12986 This is where Gnus will store its NoCeM cache files. The default is
10826 @file{~/News/NoCeM/}. 12987 @file{~/News/NoCeM/}.
10851 13012
10852 13013
10853 @node Picon Basics 13014 @node Picon Basics
10854 @subsection Picon Basics 13015 @subsection Picon Basics
10855 13016
10856 What are Picons? To quote directly from the Picons Web site 13017 What are Picons? To quote directly from the Picons Web site:
10857 (@samp{http://www.cs.indiana.edu/picons/ftp/index.html}):
10858 13018
10859 @quotation 13019 @quotation
10860 @dfn{Picons} is short for ``personal icons''. They're small, 13020 @dfn{Picons} is short for ``personal icons''. They're small,
10861 constrained images used to represent users and domains on the net, 13021 constrained images used to represent users and domains on the net,
10862 organized into databases so that the appropriate image for a given 13022 organized into databases so that the appropriate image for a given
10864 databases for Usenet newsgroups and weather forecasts. The picons are 13024 databases for Usenet newsgroups and weather forecasts. The picons are
10865 in either monochrome @code{XBM} format or color @code{XPM} and 13025 in either monochrome @code{XBM} format or color @code{XPM} and
10866 @code{GIF} formats. 13026 @code{GIF} formats.
10867 @end quotation 13027 @end quotation
10868 13028
10869 Please see the above mentioned web site for instructions on obtaining 13029 For instructions on obtaining and installing the picons databases, point
10870 and installing the picons databases, or the following ftp site: 13030 your Web browser at
10871 @samp{http://www.cs.indiana.edu/picons/ftp/index.html}. 13031 @file{http://www.cs.indiana.edu/picons/ftp/index.html}.
10872 13032
10873 @vindex gnus-picons-database 13033 @vindex gnus-picons-database
10874 Gnus expects picons to be installed into a location pointed to by 13034 Gnus expects picons to be installed into a location pointed to by
10875 @code{gnus-picons-database}. 13035 @code{gnus-picons-database}.
10876 13036
10918 @item gnus-picons-display-where 13078 @item gnus-picons-display-where
10919 @vindex gnus-picons-display-where 13079 @vindex gnus-picons-display-where
10920 Where the picon images should be displayed. It is @code{picons} by 13080 Where the picon images should be displayed. It is @code{picons} by
10921 default (which by default maps to the buffer @samp{*Picons*}). Other 13081 default (which by default maps to the buffer @samp{*Picons*}). Other
10922 valid places could be @code{article}, @code{summary}, or 13082 valid places could be @code{article}, @code{summary}, or
10923 @samp{"*scratch*"} for all I care. Just make sure that you've made the 13083 @samp{*scratch*} for all I care. Just make sure that you've made the
10924 buffer visible using the standard Gnus window configuration 13084 buffer visible using the standard Gnus window configuration
10925 routines---@xref{Windows Configuration}. 13085 routines---@pxref{Windows Configuration}.
10926 13086
10927 @end table 13087 @end table
10928 13088
10929 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your 13089 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your
10930 window configuration for you to include the @code{picons} buffer. 13090 window configuration for you to include the @code{picons} buffer.
10984 newsgroups. 13144 newsgroups.
10985 13145
10986 @item gnus-picons-user-directories 13146 @item gnus-picons-user-directories
10987 @vindex gnus-picons-user-directories 13147 @vindex gnus-picons-user-directories
10988 List of subdirectories to search in @code{gnus-picons-database} for user 13148 List of subdirectories to search in @code{gnus-picons-database} for user
10989 faces. Defaults to @code{("local" "users" "usenix" "misc/MISC")}. 13149 faces. @code{("local" "users" "usenix" "misc/MISC")} is the default.
10990 13150
10991 @item gnus-picons-domain-directories 13151 @item gnus-picons-domain-directories
10992 @vindex gnus-picons-domain-directories 13152 @vindex gnus-picons-domain-directories
10993 List of subdirectories to search in @code{gnus-picons-database} for 13153 List of subdirectories to search in @code{gnus-picons-database} for
10994 domain name faces. Defaults to @code{("domains")}. Some people may 13154 domain name faces. Defaults to @code{("domains")}. Some people may
11012 @samp{*Icon Buffer*}. 13172 @samp{*Icon Buffer*}.
11013 13173
11014 @end table 13174 @end table
11015 13175
11016 13176
13177 @node Undo
13178 @section Undo
13179 @cindex undo
13180
13181 It is very useful to be able to undo actions one has done. In normal
13182 Emacs buffers, it's easy enough---you just push the @code{undo} button.
13183 In Gnus buffers, however, it isn't that simple.
13184
13185 The things Gnus displays in its buffer is of no value whatsoever to
13186 Gnus---it's all just data that is designed to look nice to the user.
13187 Killing a group in the group buffer with @kbd{C-k} makes the line
13188 disappear, but that's just a side-effect of the real action---the
13189 removal of the group in question from the internal Gnus structures.
13190 Undoing something like that can't be done by the normal Emacs
13191 @code{undo} function.
13192
13193 Gnus tries to remedy this somewhat by keeping track of what the user
13194 does and coming up with actions that would reverse the actions the user
13195 takes. When the user then presses the @code{undo} key, Gnus will run
13196 the code to reverse the previous action, or the previous actions.
13197 However, not all actions are easily reversible, so Gnus currently offers
13198 a few key functions to be undoable. These include killing groups,
13199 yanking groups, and changing the list of read articles of groups.
13200 That's it, really. More functions may be added in the future, but each
13201 added function means an increase in data to be stored, so Gnus will
13202 never be totally undoable.
13203
13204 @findex gnus-undo-mode
13205 @vindex gnus-use-undo
13206 @findex gnus-undo
13207 The undoability is provided by the @code{gnus-undo-mode} minor mode. It
13208 is used if @code{gnus-use-undo} is non-@code{nil}, which is the
13209 default. The @kbd{M-C-_} key performs the @code{gnus-undo} command
13210 command, which should feel kinda like the normal Emacs @code{undo}
13211 command.
13212
13213
13214 @node Moderation
13215 @section Moderation
13216 @cindex moderation
13217
13218 If you are a moderator, you can use the @file{gnus-mdrtn.el} package.
13219 It is not included in the standard Gnus package. Write a mail to
13220 @samp{larsi@@ifi.uio.no} and state what group you moderate, and you'll
13221 get a copy.
13222
13223 The moderation package is implemented as a minor mode for summary
13224 buffers. Put
13225
13226 @lisp
13227 (add-hook 'gnus-summary-mode-hook 'gnus-moderate)
13228 @end lisp
13229
13230 in your @file{.gnus.el} file.
13231
13232 If you are the moderation of @samp{rec.zoofle}, this is how it's
13233 supposed to work:
13234
13235 @enumerate
13236 @item
13237 You split your incoming mail by matching on
13238 @samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted
13239 articles in some mail group---for instance, @samp{nnml:rec.zoofle}.
13240
13241 @item
13242 You enter that group once in a while and post articles using the @kbd{e}
13243 (edit-and-post) or @kbd{s} (just send unedited) commands.
13244
13245 @item
13246 If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some
13247 articles that weren't approved by you, you can cancel them with the
13248 @kbd{c} command.
13249 @end enumerate
13250
13251 To use moderation mode in these two groups, say:
13252
13253 @lisp
13254 (setq gnus-moderated-list
13255 "^nnml:rec.zoofle$\\|^rec.zoofle$")
13256 @end lisp
13257
13258
13259 @node XEmacs Enhancements
13260 @section XEmacs Enhancements
13261 @cindex XEmacs
13262
13263 XEmacs is able to display pictures and stuff, so Gnus has taken
13264 advantage of that. Relevant variables include:
13265
13266 @table @code
13267 @item gnus-xmas-glyph-directory
13268 @vindex gnus-xmas-glyph-directory
13269 This is where Gnus will look for pictures. Gnus will normally
13270 auto-detect this directory, but you may set it manually if you have an
13271 unusual directory structure.
13272
13273 @item gnus-xmas-logo-color-alist
13274 @vindex gnus-xmas-logo-color-alist
13275 This is an alist where the key is a type symbol and the values are the
13276 foreground and background color of the splash page glyph.
13277
13278 @item gnus-xmas-logo-color-style
13279 @vindex gnus-xmas-logo-color-style
13280 This is the key used to look up the color in the alist described above.
13281 Legal values include @code{flame}, @code{pine}, @code{moss},
13282 @code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
13283 @code{labia}, @code{berry}, @code{neutral}, and @code{september}.
13284
13285 @item gnus-use-toolbar
13286 @vindex gnus-use-toolbar
13287 If @code{nil}, don't display toolbars. If non-@code{nil}, it should be
13288 one of @code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar},
13289 @code{right-toolbar}, or @code{left-toolbar}.
13290
13291 @item gnus-group-toolbar
13292 @vindex gnus-group-toolbar
13293 The toolbar in the group buffer.
13294
13295 @item gnus-summary-toolbar
13296 @vindex gnus-summary-toolbar
13297 The toolbar in the summary buffer.
13298
13299 @item gnus-summary-mail-toolbar
13300 @vindex gnus-summary-mail-toolbar
13301 The toolbar in the summary buffer of mail groups.
13302
13303 @item gnus-xmas-modeline-glyph
13304 @vindex gnus-xmas-modeline-glyph
13305 A glyph displayed in all Gnus mode lines. It is a tiny gnu head by
13306 default.
13307
13308 @end table
13309
13310
11017 @node Various Various 13311 @node Various Various
11018 @section Various Various 13312 @section Various Various
11019 @cindex mode lines 13313 @cindex mode lines
11020 @cindex highlights 13314 @cindex highlights
11021 13315
11022 @table @code 13316 @table @code
13317
13318 @item gnus-directory
13319 @vindex gnus-directory
13320 All Gnus directories will be initialized from this variable, which
13321 defaults to the @samp{SAVEDIR} environment variable, or @file{~/News/}
13322 if that variable isn't set.
13323
13324 @item gnus-default-directory
13325 @vindex gnus-default-directory
13326 Not related to the above variable at all---this variable says what the
13327 default directory of all Gnus buffers should be. If you issue commands
13328 like @kbd{C-x C-f}, the prompt you'll get starts in the current buffer's
13329 default directory. If this variable is @code{nil} (which is the
13330 default), the default directory will be the default directory of the
13331 buffer you were in when you started Gnus.
11023 13332
11024 @item gnus-verbose 13333 @item gnus-verbose
11025 @vindex gnus-verbose 13334 @vindex gnus-verbose
11026 This variable is an integer between zero and ten. The higher the value, 13335 This variable is an integer between zero and ten. The higher the value,
11027 the more messages will be displayed. If this variable is zero, Gnus 13336 the more messages will be displayed. If this variable is zero, Gnus
11035 to the Gnus backends instead of Gnus proper. 13344 to the Gnus backends instead of Gnus proper.
11036 13345
11037 @item nnheader-max-head-length 13346 @item nnheader-max-head-length
11038 @vindex nnheader-max-head-length 13347 @vindex nnheader-max-head-length
11039 When the backends read straight heads of articles, they all try to read 13348 When the backends read straight heads of articles, they all try to read
11040 as little as possible. This variable (default @code{4096}) specifies 13349 as little as possible. This variable (default 4096) specifies
11041 the absolute max length the backends will try to read before giving up 13350 the absolute max length the backends will try to read before giving up
11042 on finding a separator line between the head and the body. If this 13351 on finding a separator line between the head and the body. If this
11043 variable is @code{nil}, there is no upper read bound. If it is 13352 variable is @code{nil}, there is no upper read bound. If it is
11044 @code{t}, the backends won't try to read the articles piece by piece, 13353 @code{t}, the backends won't try to read the articles piece by piece,
11045 but read the entire articles. This makes sense with some versions of 13354 but read the entire articles. This makes sense with some versions of
11046 @code{ange-ftp}. 13355 @code{ange-ftp}.
13356
13357 @item nnheader-head-chop-length
13358 @vindex nnheader-head-chop-length
13359 This variable says how big a piece of each article to read when doing
13360 the operation described above.
11047 13361
11048 @item nnheader-file-name-translation-alist 13362 @item nnheader-file-name-translation-alist
11049 @vindex nnheader-file-name-translation-alist 13363 @vindex nnheader-file-name-translation-alist
11050 @cindex file names 13364 @cindex file names
11051 @cindex illegal characters in file names 13365 @cindex illegal characters in file names
11092 13406
11093 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: 13407 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him:
11094 13408
11095 @quotation 13409 @quotation
11096 @strong{Te Deum} 13410 @strong{Te Deum}
13411
11097 @sp 1 13412 @sp 1
11098 Not because of victories @* 13413 Not because of victories @*
11099 I sing,@* 13414 I sing,@*
11100 having none,@* 13415 having none,@*
11101 but for the common sunshine,@* 13416 but for the common sunshine,@*
11102 the breeze,@* 13417 the breeze,@*
11103 the largess of the spring. 13418 the largess of the spring.
13419
11104 @sp 1 13420 @sp 1
11105 Not for victory@* 13421 Not for victory@*
11106 but for the day's work done@* 13422 but for the day's work done@*
11107 as well as I was able;@* 13423 as well as I was able;@*
11108 not for a seat upon the dais@* 13424 not for a seat upon the dais@*
11136 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary 13452 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary
11137 distribution point for the new and spiffy versions of Gnus, and is known 13453 distribution point for the new and spiffy versions of Gnus, and is known
11138 as The Site That Destroys Newsrcs And Drives People Mad. 13454 as The Site That Destroys Newsrcs And Drives People Mad.
11139 13455
11140 During the first extended alpha period of development, the new Gnus was 13456 During the first extended alpha period of development, the new Gnus was
11141 called ``(ding) Gnus''. @dfn{(ding)}, is, of course, short for 13457 called ``(ding) Gnus''. @dfn{(ding)} is, of course, short for
11142 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares? 13458 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares?
11143 (Besides, the ``Gnus'' in this abbreviation should probably be 13459 (Besides, the ``Gnus'' in this abbreviation should probably be
11144 pronounced ``news'' as @sc{Umeda} intended, which makes it a more 13460 pronounced ``news'' as @sc{Umeda} intended, which makes it a more
11145 appropriate name, don't you think?) 13461 appropriate name, don't you think?)
11146 13462
11148 spunky name, we decided that the name was @emph{too} spunky, so we 13464 spunky name, we decided that the name was @emph{too} spunky, so we
11149 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. 13465 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs.
11150 ``@sc{gnus}''. New vs. old. 13466 ``@sc{gnus}''. New vs. old.
11151 13467
11152 The first ``proper'' release of Gnus 5 was done in November 1995 when it 13468 The first ``proper'' release of Gnus 5 was done in November 1995 when it
11153 was included in the Emacs 19.30 distribution. 13469 was included in the Emacs 19.30 distribution (132 (ding) Gnus releases
11154 13470 plus 15 Gnus 5.0 releases).
11155 In May 1996 the next Gnus generation (aka. ``September Gnus'') was 13471
11156 released under the name ``Gnus 5.2''. 13472 In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99
13473 releases)) was released under the name ``Gnus 5.2'' (40 releases).
13474
13475 On July 28th 1996 work on Red Gnus was begun, and it was released on
13476 January 25th 1997 (after 84 releases) as ``Gnus 5.4''.
13477
13478 If you happen upon a version of Gnus that has a name that is prefixed --
13479 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
13480 don't panic. Don't let it know that you're frightened. Back away.
13481 Slowly. Whatever you do, don't run. Walk away, calmly, until you're
13482 out of its reach. Find a proper released version of Gnus and snuggle up
13483 to that instead.
11157 13484
11158 @menu 13485 @menu
11159 * Why?:: What's the point of Gnus? 13486 * Why?:: What's the point of Gnus?
11160 * Compatibility:: Just how compatible is Gnus with @sc{gnus}? 13487 * Compatibility:: Just how compatible is Gnus with @sc{gnus}?
11161 * Conformity:: Gnus tries to conform to all standards. 13488 * Conformity:: Gnus tries to conform to all standards.
11295 This is considered to be a ``vanity header'', while I consider it to be 13622 This is considered to be a ``vanity header'', while I consider it to be
11296 consumer information. After seeing so many badly formatted articles 13623 consumer information. After seeing so many badly formatted articles
11297 coming from @code{tin} and @code{Netscape} I know not to use either of 13624 coming from @code{tin} and @code{Netscape} I know not to use either of
11298 those for posting articles. I would not have known that if it wasn't 13625 those for posting articles. I would not have known that if it wasn't
11299 for the @code{X-Newsreader} header. 13626 for the @code{X-Newsreader} header.
11300
11301 @item References
11302 Gnus does line breaking on this header. I infer from RFC1036 that being
11303 conservative in what you output is not creating 5000-character lines, so
11304 it seems like a good idea to me. However, this standard-to-be says that
11305 whitespace in the @code{References} header is to be preserved, so... It
11306 doesn't matter one way or the other to Gnus, so if somebody tells me
11307 what The Way is, I'll change it. Or not.
11308 @end table 13627 @end table
11309 13628
11310 @end table 13629 @end table
11311 13630
11312 If you ever notice Gnus acting non-compliantly with regards to the texts 13631 If you ever notice Gnus acting non-compliantly with regards to the texts
11324 Gnus should work on : 13643 Gnus should work on :
11325 13644
11326 @itemize @bullet 13645 @itemize @bullet
11327 13646
11328 @item 13647 @item
11329 Emacs 19.30 and up. 13648 Emacs 19.32 and up.
11330 13649
11331 @item 13650 @item
11332 XEmacs 19.13 and up. 13651 XEmacs 19.14 and up.
11333 13652
11334 @item 13653 @item
11335 Mule versions based on Emacs 19.30 and up. 13654 Mule versions based on Emacs 19.32 and up.
11336 13655
11337 @end itemize 13656 @end itemize
11338 13657
11339 Gnus will absolutely not work on any Emacsen older than that. Not 13658 Gnus will absolutely not work on any Emacsen older than that. Not
11340 reliably, at least. 13659 reliably, at least.
11341 13660
11342 There are some vague differences between Gnus on the various platforms: 13661 There are some vague differences between Gnus on the various
11343 13662 platforms---XEmacs features more graphics (a logo and a toolbar)---but
11344 @itemize @bullet 13663 other than that, things should look pretty much the same under all
11345 13664 Emacsen.
11346 @item
11347 The mouse-face on Gnus lines under Emacs and Mule is delimited to
11348 certain parts of the lines while they cover the entire line under
11349 XEmacs.
11350
11351 @item
11352 The same with current-article marking---XEmacs puts an underline under
11353 the entire summary line while Emacs and Mule are nicer and kinder.
11354
11355 @item
11356 XEmacs features more graphics---a logo and a toolbar.
11357
11358 @item
11359 Citation highlighting us better under Emacs and Mule than under XEmacs.
11360
11361 @item
11362 Emacs 19.26-19.28 have tangible hidden headers, which can be a bit
11363 confusing.
11364
11365 @end itemize
11366 13665
11367 13666
11368 @node Contributors 13667 @node Contributors
11369 @subsection Contributors 13668 @subsection Contributors
11370 @cindex contributors 13669 @cindex contributors
11383 I would like to take this opportunity to thank the Academy for... oops, 13682 I would like to take this opportunity to thank the Academy for... oops,
11384 wrong show. 13683 wrong show.
11385 13684
11386 @itemize @bullet 13685 @itemize @bullet
11387 13686
11388 @item Masanobu @sc{Umeda} 13687 @item
11389 The writer of the original @sc{gnus}. 13688 Masanobu @sc{Umeda}---the writer of the original @sc{gnus}.
11390 13689
11391 @item Per Abrahamsen 13690 @item
11392 Custom, scoring, highlighting and @sc{soup} code (as well as numerous 13691 Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as
11393 other things). 13692 well as numerous other things).
11394 13693
11395 @item Luis Fernandes 13694 @item
11396 Design and graphics. 13695 Luis Fernandes---design and graphics.
11397 13696
11398 @item Wes Hardaker 13697 @item
11399 @file{gnus-picon.el} and the manual section on @dfn{picons} 13698 Erik Naggum---help, ideas, support, code and stuff.
11400 (@pxref{Picons}). 13699
11401 13700 @item
11402 @item Brad Miller 13701 Wes Hardaker---@file{gnus-picon.el} and the manual section on
11403 @file{gnus-gl.el} and the GroupLens manual section (@pxref{GroupLens}). 13702 @dfn{picons} (@pxref{Picons}).
11404 13703
11405 @item Sudish Joseph 13704 @item
11406 Innumerable bug fixes. 13705 Brad Miller---@file{gnus-gl.el} and the GroupLens manual section
11407 13706 (@pxref{GroupLens}).
11408 @item Ilja Weis 13707
11409 @file{gnus-topic.el}. 13708 @item
11410 13709 Sudish Joseph---innumerable bug fixes.
11411 @item Steven L. Baur 13710
11412 Lots and lots of bugs detections and fixes. 13711 @item
11413 13712 Ilja Weis---@file{gnus-topic.el}.
11414 @item Vladimir Alexiev 13713
11415 The refcard and reference booklets. 13714 @item
11416 13715 Steven L. Baur---lots and lots and lots of bugs detections and fixes.
11417 @item Felix Lee & JWZ 13716
11418 I stole some pieces from the XGnus distribution by Felix Lee and JWZ. 13717 @item
11419 13718 Vladimir Alexiev---the refcard and reference booklets.
11420 @item Scott Byer 13719
11421 @file{nnfolder.el} enhancements & rewrite. 13720 @item
11422 13721 Felix Lee & Jamie Zawinsky---I stole some pieces from the XGnus
11423 @item Peter Mutsaers 13722 distribution by Felix Lee and JWZ.
11424 Orphan article scoring code. 13723
11425 13724 @item
11426 @item Ken Raeburn 13725 Scott Byer---@file{nnfolder.el} enhancements & rewrite.
11427 POP mail support. 13726
11428 13727 @item
11429 @item Hallvard B Furuseth 13728 Peter Mutsaers---orphan article scoring code.
11430 Various bits and pieces, especially dealing with .newsrc files. 13729
11431 13730 @item
11432 @item Brian Edmonds 13731 Ken Raeburn---POP mail support.
11433 @file{gnus-bbdb.el}. 13732
11434 13733 @item
11435 @item Ricardo Nassif and Mark Borges 13734 Hallvard B Furuseth---various bits and pieces, especially dealing with
11436 Proof-reading. 13735 .newsrc files.
11437 13736
11438 @item Kevin Davidson 13737 @item
11439 Came up with the name @dfn{ding}, so blame him. 13738 Brian Edmonds---@file{gnus-bbdb.el}.
13739
13740 @item
13741 David Moore---rewrite of @file{nnvirtual.el} and many other things.
13742
13743 @item
13744 Ricardo Nassif, Mark Borges, and Jost Krieger---proof-reading.
13745
13746 @item
13747 Kevin Davidson---came up with the name @dfn{ding}, so blame him.
13748
13749 @item
13750 François Pinard---many, many interesting and thorough bug reports.
11440 13751
11441 @end itemize 13752 @end itemize
11442 13753
11443 Peter Arius, Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel 13754 The following people have contributed many patches and suggestions:
11444 Quinlan, Frank D. Cringle, Geoffrey T. Dairiki, Fabrice Popineau and 13755
11445 Andrew Eskilsson have all contributed code and suggestions. 13756 Christopher Davis,
13757 Andrew Eskilsson,
13758 Kai Grossjohann,
13759 David Kågedal,
13760 Richard Pieri,
13761 Fabrice Popineau,
13762 Daniel Quinlan,
13763 Jason L. Tibbitts, III,
13764 and
13765 Jack Vinson.
13766
13767 Also thanks to the following for patches and stuff:
13768
13769 Peter Arius,
13770 Marc Auslander,
13771 Chris Bone,
13772 Mark Borges,
13773 Lance A. Brown,
13774 Kees de Bruin,
13775 Martin Buchholz,
13776 Kevin Buhr,
13777 Alastair Burt,
13778 Joao Cachopo,
13779 Massimo Campostrini,
13780 Michael R. Cook,
13781 Glenn Coombs,
13782 Frank D. Cringle,
13783 Geoffrey T. Dairiki,
13784 Andre Deparade,
13785 Ulrik Dickow,
13786 Dave Disser,
13787 Joev Dubach,
13788 Paul Eggert,
13789 Michael Ernst,
13790 Luc Van Eycken,
13791 Sam Falkner,
13792 Paul Franklin,
13793 David S. Goldberg,
13794 D. Hall,
13795 Magnus Hammerin,
13796 Raja R. Harinath,
13797 Hisashige Kenji, @c Hisashige
13798 Marc Horowitz,
13799 François Felix Ingrand,
13800 Ishikawa Ichiro, @c Ishikawa
13801 Lee Iverson,
13802 Rajappa Iyer,
13803 Randell Jesup,
13804 Fred Johansen,
13805 Greg Klanderman,
13806 Peter Skov Knudsen,
13807 Shuhei Kobayashi, @c Kobayashi
13808 Thor Kristoffersen,
13809 Jens Lautenbacher,
13810 Carsten Leonhardt,
13811 Christian Limpach,
13812 Markus Linnala,
13813 Dave Love,
13814 Tonny Madsen,
13815 Shlomo Mahlab,
13816 Nat Makarevitch,
13817 Timo Metzemakers,
13818 Richard Mlynarik,
13819 Lantz Moore,
13820 Morioka Tomohiko, @c Morioka
13821 Erik Toubro Nielsen,
13822 Hrvoje Niksic,
13823 Andy Norman,
13824 C. R. Oldham,
13825 Alexandre Oliva,
13826 Ken Olstad,
13827 Masaharu Onishi, @c Onishi
13828 Hideki Ono, @c Ono
13829 William Perry,
13830 Stephen Peters,
13831 Ulrich Pfeifer,
13832 John McClary Prevost,
13833 Colin Rafferty,
13834 Bart Robinson,
13835 Jason Rumney,
13836 Loren Schall,
13837 Dan Schmidt,
13838 Ralph Schleicher,
13839 Randal L. Schwartz,
13840 Danny Siu,
13841 Paul D. Smith,
13842 Jeff Sparkes,
13843 Michael Sperber,
13844 Richard Stallman,
13845 Greg Stark,
13846 Paul Stodghill,
13847 Kurt Swanson,
13848 Samuel Tardieu,
13849 Teddy,
13850 Chuck Thompson,
13851 Philippe Troin,
13852 Jan Vroonhof,
13853 Barry A. Warsaw,
13854 Christoph Wedler,
13855 Joe Wells,
13856 and
13857 Katsumi Yamaoka. @c Yamaoka
13858
13859 For a full overview of what each person has done, the ChangeLogs
13860 included in the Gnus alpha distributions should give ample reading
13861 (550kB and counting).
13862
13863 Apologies to everybody that I've forgotten, of which there are many, I'm
13864 sure.
13865
13866 Gee, that's quite a list of people. I guess that must mean that there
13867 actually are people who are using Gnus. Who'd'a thunk it!
11446 13868
11447 13869
11448 @node New Features 13870 @node New Features
11449 @subsection New Features 13871 @subsection New Features
11450 @cindex new features 13872 @cindex new features
13873
13874 @menu
13875 * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
13876 * September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
13877 * Red Gnus:: Third time best---Gnus 5.4/5.5.
13878 @end menu
13879
13880 These lists are, of course, just @emph{short} overviews of the
13881 @emph{most} important new features. No, really. There are tons more.
13882 Yes, we have feeping creaturism in full effect.
13883
13884
13885 @node ding Gnus
13886 @subsubsection (ding) Gnus
13887
13888 New features in Gnus 5.0/5.1:
11451 13889
11452 @itemize @bullet 13890 @itemize @bullet
11453 13891
11454 @item 13892 @item
11455 The look of all buffers can be changed by setting format-like variables 13893 The look of all buffers can be changed by setting format-like variables
11556 13994
11557 @item 13995 @item
11558 You can click on buttons instead of using the keyboard 13996 You can click on buttons instead of using the keyboard
11559 (@pxref{Buttons}). 13997 (@pxref{Buttons}).
11560 13998
11561 @item
11562 Gnus can use NoCeM files to weed out spam (@pxref{NoCeM}).
11563
11564 @end itemize 13999 @end itemize
11565 14000
11566 This is, of course, just a @emph{short} overview of the @emph{most} 14001
11567 important new features. No, really. There are tons more. Yes, we have 14002 @node September Gnus
11568 feeping creaturism in full effect, but nothing too gratuitous, I would 14003 @subsubsection September Gnus
11569 hope. 14004
14005 New features in Gnus 5.2/5.3:
14006
14007 @itemize @bullet
14008
14009 @item
14010 A new message composition mode is used. All old customization variables
14011 for @code{mail-mode}, @code{rnews-reply-mode} and @code{gnus-msg} are
14012 now obsolete.
14013
14014 @item
14015 Gnus is now able to generate @dfn{sparse} threads---threads where
14016 missing articles are represented by empty nodes (@pxref{Customizing
14017 Threading}).
14018
14019 @lisp
14020 (setq gnus-build-sparse-threads 'some)
14021 @end lisp
14022
14023 @item
14024 Outgoing articles are stored on a special archive server
14025 (@pxref{Archived Messages}).
14026
14027 @item
14028 Partial thread regeneration now happens when articles are
14029 referred.
14030
14031 @item
14032 Gnus can make use of GroupLens predictions (@pxref{GroupLens}).
14033
14034 @item
14035 Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}).
14036
14037 @item
14038 A @code{trn}-line tree buffer can be displayed (@pxref{Tree Display}).
14039
14040 @lisp
14041 (setq gnus-use-trees t)
14042 @end lisp
14043
14044 @item
14045 An @code{nn}-like pick-and-read minor mode is available for the summary
14046 buffers (@pxref{Pick and Read}).
14047
14048 @lisp
14049 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
14050 @end lisp
14051
14052 @item
14053 In binary groups you can use a special binary minor mode (@pxref{Binary
14054 Groups}).
14055
14056 @item
14057 Groups can be grouped in a folding topic hierarchy (@pxref{Group
14058 Topics}).
14059
14060 @lisp
14061 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
14062 @end lisp
14063
14064 @item
14065 Gnus can re-send and bounce mail (@pxref{Summary Mail Commands}).
14066
14067 @item
14068 Groups can now have a score, and bubbling based on entry frequency
14069 is possible (@pxref{Group Score}).
14070
14071 @lisp
14072 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
14073 @end lisp
14074
14075 @item
14076 Groups can be process-marked, and commands can be performed on
14077 groups of groups (@pxref{Marking Groups}).
14078
14079 @item
14080 Caching is possible in virtual groups.
14081
14082 @item
14083 @code{nndoc} now understands all kinds of digests, mail boxes, rnews
14084 news batches, ClariNet briefs collections, and just about everything
14085 else (@pxref{Document Groups}).
14086
14087 @item
14088 Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets
14089 (@pxref{SOUP}).
14090
14091 @item
14092 The Gnus cache is much faster.
14093
14094 @item
14095 Groups can be sorted according to many criteria (@pxref{Sorting
14096 Groups}).
14097
14098 @item
14099 New group parameters have been introduced to set list-address and
14100 expiry times (@pxref{Group Parameters}).
14101
14102 @item
14103 All formatting specs allow specifying faces to be used
14104 (@pxref{Formatting Fonts}).
14105
14106 @item
14107 There are several more commands for setting/removing/acting on process
14108 marked articles on the @kbd{M P} submap (@pxref{Setting Process Marks}).
14109
14110 @item
14111 The summary buffer can be limited to show parts of the available
14112 articles based on a wide range of criteria. These commands have been
14113 bound to keys on the @kbd{/} submap (@pxref{Limiting}).
14114
14115 @item
14116 Articles can be made persistent with the @kbd{*} command
14117 (@pxref{Persistent Articles}).
14118
14119 @item
14120 All functions for hiding article elements are now toggles.
14121
14122 @item
14123 Article headers can be buttonized (@pxref{Article Washing}).
14124
14125 @lisp
14126 (add-hook 'gnus-article-display-hook
14127 'gnus-article-add-buttons-to-head)
14128 @end lisp
14129
14130 @item
14131 All mail backends support fetching articles by @code{Message-ID}.
14132
14133 @item
14134 Duplicate mail can now be treated properly (@pxref{Duplicates}).
14135
14136 @item
14137 All summary mode commands are available directly from the article
14138 buffer (@pxref{Article Keymap}).
14139
14140 @item
14141 Frames can be part of @code{gnus-buffer-configuration} (@pxref{Windows
14142 Configuration}).
14143
14144 @item
14145 Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
14146
14147 @item
14148 Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}).
14149
14150 @lisp
14151 (setq gnus-use-nocem t)
14152 @end lisp
14153
14154 @item
14155 Groups can be made permanently visible (@pxref{Listing Groups}).
14156
14157 @lisp
14158 (setq gnus-permanently-visible-groups "^nnml:")
14159 @end lisp
14160
14161 @item
14162 Many new hooks have been introduced to make customizing easier.
14163
14164 @item
14165 Gnus respects the @code{Mail-Copies-To} header.
14166
14167 @item
14168 Threads can be gathered by looking at the @code{References} header
14169 (@pxref{Customizing Threading}).
14170
14171 @lisp
14172 (setq gnus-summary-thread-gathering-function
14173 'gnus-gather-threads-by-references)
14174 @end lisp
14175
14176 @item
14177 Read articles can be stored in a special backlog buffer to avoid
14178 refetching (@pxref{Article Backlog}).
14179
14180 @lisp
14181 (setq gnus-keep-backlog 50)
14182 @end lisp
14183
14184 @item
14185 A clean copy of the current article is always stored in a separate
14186 buffer to allow easier treatment.
14187
14188 @item
14189 Gnus can suggest where to save articles (@pxref{Saving Articles}).
14190
14191 @item
14192 Gnus doesn't have to do as much prompting when saving (@pxref{Saving
14193 Articles}).
14194
14195 @lisp
14196 (setq gnus-prompt-before-saving t)
14197 @end lisp
14198
14199 @item
14200 @code{gnus-uu} can view decoded files asynchronously while fetching
14201 articles (@pxref{Other Decode Variables}).
14202
14203 @lisp
14204 (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
14205 @end lisp
14206
14207 @item
14208 Filling in the article buffer now works properly on cited text
14209 (@pxref{Article Washing}).
14210
14211 @item
14212 Hiding cited text adds buttons to toggle hiding, and how much
14213 cited text to hide is now customizable (@pxref{Article Hiding}).
14214
14215 @lisp
14216 (setq gnus-cited-lines-visible 2)
14217 @end lisp
14218
14219 @item
14220 Boring headers can be hidden (@pxref{Article Hiding}).
14221
14222 @lisp
14223 (add-hook 'gnus-article-display-hook
14224 'gnus-article-hide-boring-headers t)
14225 @end lisp
14226
14227 @item
14228 Default scoring values can now be set from the menu bar.
14229
14230 @item
14231 Further syntax checking of outgoing articles have been added.
14232
14233 @end itemize
14234
14235
14236 @node Red Gnus
14237 @subsubsection Red Gnus
14238
14239 New features in Gnus 5.4/5.5:
14240
14241 @itemize @bullet
14242
14243 @item
14244 @file{nntp.el} has been totally rewritten in an asynchronous fashion.
14245
14246 @item
14247 Article prefetching functionality has been moved up into
14248 Gnus (@pxref{Asynchronous Fetching}).
14249
14250 @item
14251 Scoring can now be performed with logical operators like @code{and},
14252 @code{or}, @code{not}, and parent redirection (@pxref{Advanced
14253 Scoring}).
14254
14255 @item
14256 Article washing status can be displayed in the
14257 article mode line (@pxref{Misc Article}).
14258
14259 @item
14260 @file{gnus.el} has been split into many smaller files.
14261
14262 @item
14263 Suppression of duplicate articles based on Message-ID can be done
14264 (@pxref{Duplicate Suppression}).
14265
14266 @lisp
14267 (setq gnus-suppress-duplicates t)
14268 @end lisp
14269
14270 @item
14271 New variables for specifying what score and adapt files are to be
14272 considered home score and adapt files (@pxref{Home Score File}).
14273
14274 @item
14275 @code{nndoc} was rewritten to be easily extendable (@pxref{Document
14276 Server Internals}).
14277
14278 @item
14279 Groups can inherit group parameters from parent topics (@pxref{Topic
14280 Parameters}).
14281
14282 @item
14283 Article editing has been revamped and is now actually usable.
14284
14285 @item
14286 Signatures can be recognized in more intelligent fashions
14287 (@pxref{Article Signature}).
14288
14289 @item
14290 Summary pick mode has been made to look more @code{nn}-like. Line
14291 numbers are displayed and the @kbd{.} command can be used to pick
14292 articles (@code{Pick and Read}).
14293
14294 @item
14295 Commands for moving the @file{.newsrc.eld} from one server to
14296 another have been added (@pxref{Changing Servers}).
14297
14298 @item
14299 A way to specify that ``uninteresting'' fields be suppressed when
14300 generating lines in buffers (@pxref{Advanced Formatting}).
14301
14302 @item
14303 Several commands in the group buffer can be undone with @kbd{M-C-_}
14304 (@pxref{Undo}).
14305
14306 @item
14307 Scoring can be done on words using the new score type @code{w}
14308 (@pxref{Score File Format}).
14309
14310 @item
14311 Adaptive scoring can be done on a Subject word-by-word basis
14312 (@pxref{Adaptive Scoring}).
14313
14314 @lisp
14315 (setq gnus-use-adaptive-scoring '(word))
14316 @end lisp
14317
14318 @item
14319 Scores can be decayed (@pxref{Score Decays}).
14320
14321 @lisp
14322 (setq gnus-decay-scores t)
14323 @end lisp
14324
14325 @item
14326 Scoring can be performed using a regexp on the Date header. The Date is
14327 normalized to compact ISO 8601 format first (@pxref{Score File Format}).
14328
14329 @item
14330 A new command has been added to remove all data on articles from
14331 the native server (@pxref{Changing Servers}).
14332
14333 @item
14334 A new command for reading collections of documents
14335 (@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{M-C-d}
14336 (@pxref{Really Various Summary Commands}).
14337
14338 @item
14339 Process mark sets can be pushed and popped (@pxref{Setting Process
14340 Marks}).
14341
14342 @item
14343 A new mail-to-news backend makes it possible to post even when the NNTP
14344 server doesn't allow posting (@pxref{Mail-To-News Gateways}).
14345
14346 @item
14347 A new backend for reading searches from Web search engines
14348 (@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added
14349 (@pxref{Web Searches}).
14350
14351 @item
14352 Groups inside topics can now be sorted using the standard sorting
14353 functions, and each topic can be sorted independently (@pxref{Topic
14354 Sorting}).
14355
14356 @item
14357 Subsets of the groups can be sorted independently (@code{Sorting
14358 Groups}).
14359
14360 @item
14361 Cached articles can be pulled into the groups (@pxref{Summary Generation
14362 Commands}).
14363
14364 @item
14365 Score files are now applied in a more reliable order (@pxref{Score
14366 Variables}).
14367
14368 @item
14369 Reports on where mail messages end up can be generated (@pxref{Splitting
14370 Mail}).
14371
14372 @item
14373 More hooks and functions have been added to remove junk from incoming
14374 mail before saving the mail (@pxref{Washing Mail}).
14375
14376 @item
14377 Emphasized text can be properly fontisized:
14378
14379 @lisp
14380 (add-hook 'gnus-article-display-hook 'gnus-article-emphasize)
14381 @end lisp
14382
14383 @end itemize
11570 14384
11571 14385
11572 @node Newest Features 14386 @node Newest Features
11573 @subsection Newest Features 14387 @subsection Newest Features
11574 @cindex todo 14388 @cindex todo
11580 14394
11581 @itemize @bullet 14395 @itemize @bullet
11582 @item 14396 @item
11583 Native @sc{mime} support is something that should be done. 14397 Native @sc{mime} support is something that should be done.
11584 @item 14398 @item
11585 A better and simpler method for specifying mail composing methods.
11586 @item
11587 Allow posting through mail-to-news gateways.
11588 @item
11589 Really do unbinhexing. 14399 Really do unbinhexing.
11590 @end itemize 14400 @end itemize
11591 14401
11592 And much, much, much more. There is more to come than has already been 14402 And much, much, much more. There is more to come than has already been
11593 implemented. (But that's always true, isn't it?) 14403 implemented. (But that's always true, isn't it?)
11594 14404
11595 @code{<URL:http://www.ifi.uio.no/~larsi/sgnus/todo>} is where the actual 14405 @file{<URL:http://www.ifi.uio.no/~larsi/rgnus/todo>} is where the actual
11596 up-to-the-second todo list is located, so if you're really curious, you 14406 up-to-the-second todo list is located, so if you're really curious, you
11597 could point your Web browser over that-a-way. 14407 could point your Web browser over that-a-way.
14408
14409 @iftex
14410
14411 @node The Manual
14412 @section The Manual
14413 @cindex colophon
14414 @cindex manual
14415
14416 This manual was generated from a TeXinfo file and then run through
14417 either @code{texi2dvi}
14418 @iflatex
14419 or my own home-brewed TeXinfo to \LaTeX\ transformer,
14420 and then run through @code{latex} and @code{dvips}
14421 @end iflatex
14422 to get what you hold in your hands now.
14423
14424 The following conventions have been used:
14425
14426 @enumerate
14427
14428 @item
14429 This is a @samp{string}
14430
14431 @item
14432 This is a @kbd{keystroke}
14433
14434 @item
14435 This is a @file{file}
14436
14437 @item
14438 This is a @code{symbol}
14439
14440 @end enumerate
14441
14442 So if I were to say ``set @code{flargnoze} to @samp{yes}'', that would
14443 mean:
14444
14445 @lisp
14446 (setq flargnoze "yes")
14447 @end lisp
14448
14449 If I say ``set @code{flumphel} to @code{yes}'', that would mean:
14450
14451 @lisp
14452 (setq flumphel 'yes)
14453 @end lisp
14454
14455 @samp{yes} and @code{yes} are two @emph{very} different things---don't
14456 ever get them confused.
14457
14458 @iflatex
14459 @c @head
14460 Of course, everything in this manual is of vital interest, so you should
14461 read it all. Several times. However, if you feel like skimming the
14462 manual, look for that gnu head you should see in the margin over
14463 there---it means that what's being discussed is of more importance than
14464 the rest of the stuff. (On the other hand, if everything is infinitely
14465 important, how can anything be more important than that? Just one more
14466 of the mysteries of this world, I guess.)
14467 @end iflatex
14468
14469 @end iftex
11598 14470
11599 14471
11600 @node Terminology 14472 @node Terminology
11601 @section Terminology 14473 @section Terminology
11602 14474
11648 Secondary backends are somewhere half-way between being native and being 14520 Secondary backends are somewhere half-way between being native and being
11649 foreign, but they mostly act like they are native. 14521 foreign, but they mostly act like they are native.
11650 14522
11651 @item article 14523 @item article
11652 @cindex article 14524 @cindex article
11653 A nessage that has been posted as news. 14525 A message that has been posted as news.
11654 14526
11655 @item mail message 14527 @item mail message
11656 @cindex mail message 14528 @cindex mail message
11657 A message that has been mailed. 14529 A message that has been mailed.
11658 14530
11711 is rather large, as you might surmise. 14583 is rather large, as you might surmise.
11712 14584
11713 @item bogus groups 14585 @item bogus groups
11714 @cindex bogus groups 14586 @cindex bogus groups
11715 A group that exists in the @file{.newsrc} file, but isn't known to the 14587 A group that exists in the @file{.newsrc} file, but isn't known to the
11716 server (i. e., it isn't in the active file), is a @emph{bogus group}. 14588 server (i.e., it isn't in the active file), is a @emph{bogus group}.
11717 This means that the group probably doesn't exist (any more). 14589 This means that the group probably doesn't exist (any more).
11718 14590
11719 @item server 14591 @item server
11720 @cindex server 14592 @cindex server
11721 A machine than one can connect to and get news (or mail) from. 14593 A machine than one can connect to and get news (or mail) from.
11726 server parameters. 14598 server parameters.
11727 14599
11728 @item virtual server 14600 @item virtual server
11729 @cindex virtual server 14601 @cindex virtual server
11730 A named select method. Since a select methods defines all there is to 14602 A named select method. Since a select methods defines all there is to
11731 know about connecting to a (physical) server, taking the who things as a 14603 know about connecting to a (physical) server, taking the things as a
11732 whole is a virtual server. 14604 whole is a virtual server.
14605
14606 @item washing
14607 @cindex washing
14608 Taking a buffer and running it through a filter of some sort. The
14609 result will (more often than not) be cleaner and more pleasing than the
14610 original.
14611
14612 @item ephemeral groups
14613 @cindex ephemeral groups
14614 Most groups store data on what articles you have read. @dfn{Ephemeral}
14615 groups are groups that will have no data stored---when you exit the
14616 group, it'll disappear into the aether.
14617
14618 @item solid groups
14619 @cindex solid groups
14620 This is the opposite of ephemeral groups. All groups listed in the
14621 group buffer are solid groups.
14622
14623 @item sparse articles
14624 @cindex sparse articles
14625 These are article placeholders shown in the summary buffer when
14626 @code{gnus-build-sparse-threads} has been switched on.
11733 14627
11734 @end table 14628 @end table
11735 14629
11736 14630
11737 @node Customization 14631 @node Customization
11760 @table @code 14654 @table @code
11761 14655
11762 @item gnus-read-active-file 14656 @item gnus-read-active-file
11763 Set this to @code{nil}, which will inhibit Gnus from requesting the 14657 Set this to @code{nil}, which will inhibit Gnus from requesting the
11764 entire active file from the server. This file is often v. large. You 14658 entire active file from the server. This file is often v. large. You
11765 also have to set @code{gnus-check-new-news} and 14659 also have to set @code{gnus-check-new-newsgroups} and
11766 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus 14660 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus
11767 doesn't suddenly decide to fetch the active file anyway. 14661 doesn't suddenly decide to fetch the active file anyway.
11768 14662
11769 @item gnus-nov-is-evil 14663 @item gnus-nov-is-evil
11770 This one has to be @code{nil}. If not, grabbing article headers from 14664 This one has to be @code{nil}. If not, grabbing article headers from
11886 flee}, you have some old @file{.el} files lying around. Delete these. 14780 flee}, you have some old @file{.el} files lying around. Delete these.
11887 14781
11888 @item 14782 @item
11889 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a 14783 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a
11890 how-to. 14784 how-to.
14785
14786 @item
14787 @vindex max-lisp-eval-depth
14788 Gnus works on many recursive structures, and in some extreme (and very
14789 rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at
14790 you. If this happens to you, set @code{max-lisp-eval-depth} to 500 or
14791 something like that.
11891 @end enumerate 14792 @end enumerate
11892 14793
11893 If all else fails, report the problem as a bug. 14794 If all else fails, report the problem as a bug.
11894 14795
11895 @cindex bugs 14796 @cindex bugs
11916 mail you and ask for more info, and everything takes more time. 14817 mail you and ask for more info, and everything takes more time.
11917 14818
11918 If the problem you're seeing is very visual, and you can't quite explain 14819 If the problem you're seeing is very visual, and you can't quite explain
11919 it, copy the Emacs window to a file (with @code{xwd}, for instance), put 14820 it, copy the Emacs window to a file (with @code{xwd}, for instance), put
11920 it somewhere it can be reached, and include the URL of the picture in 14821 it somewhere it can be reached, and include the URL of the picture in
11921 the bug report.a 14822 the bug report.
11922 14823
11923 If you just need help, you are better off asking on 14824 If you just need help, you are better off asking on
11924 @samp{gnu.emacs.gnus}. I'm not very helpful. 14825 @samp{gnu.emacs.gnus}. I'm not very helpful.
11925 14826
11926 @cindex gnu.emacs.gnus 14827 @cindex gnu.emacs.gnus
11928 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. 14829 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}.
11929 Write to @samp{ding-request@@ifi.uio.no} to subscribe. 14830 Write to @samp{ding-request@@ifi.uio.no} to subscribe.
11930 14831
11931 14832
11932 @node A Programmers Guide to Gnus 14833 @node A Programmers Guide to Gnus
11933 @section A Programmer's Guide to Gnus 14834 @section A Programmer@'s Guide to Gnus
11934 14835
11935 It is my hope that other people will figure out smart stuff that Gnus 14836 It is my hope that other people will figure out smart stuff that Gnus
11936 can do, and that other people will write those smart things as well. To 14837 can do, and that other people will write those smart things as well. To
11937 facilitate that I thought it would be a good idea to describe the inner 14838 facilitate that I thought it would be a good idea to describe the inner
11938 workings of Gnus. And some of the not-so-inner workings, while I'm at 14839 workings of Gnus. And some of the not-so-inner workings, while I'm at
11993 always check whether are present before attempting to call. 14894 always check whether are present before attempting to call.
11994 14895
11995 All these functions are expected to return data in the buffer 14896 All these functions are expected to return data in the buffer
11996 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat 14897 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat
11997 unfortunately named, but we'll have to live with it. When I talk about 14898 unfortunately named, but we'll have to live with it. When I talk about
11998 ``resulting data'', I always refer to the data in that buffer. When I 14899 @dfn{resulting data}, I always refer to the data in that buffer. When I
11999 talk about ``return value'', I talk about the function value returned by 14900 talk about @dfn{return value}, I talk about the function value returned by
12000 the function call. 14901 the function call. Functions that fail should return @code{nil} as the
14902 return value.
12001 14903
12002 Some backends could be said to be @dfn{server-forming} backends, and 14904 Some backends could be said to be @dfn{server-forming} backends, and
12003 some might be said to not be. The latter are backends that generally 14905 some might be said to not be. The latter are backends that generally
12004 only operate on one group at a time, and have no concept of ``server'' 14906 only operate on one group at a time, and have no concept of ``server''
12005 -- they have a group, and they deliver info on that group and nothing 14907 -- they have a group, and they deliver info on that group and nothing
12011 @cindex @code{nnchoke} 14913 @cindex @code{nnchoke}
12012 14914
12013 @menu 14915 @menu
12014 * Required Backend Functions:: Functions that must be implemented. 14916 * Required Backend Functions:: Functions that must be implemented.
12015 * Optional Backend Functions:: Functions that need not be implemented. 14917 * Optional Backend Functions:: Functions that need not be implemented.
14918 * Error Messaging:: How to get messages and report errors.
12016 * Writing New Backends:: Extending old backends. 14919 * Writing New Backends:: Extending old backends.
14920 * Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
14921 * Mail-like Backends:: Some tips on mail backends.
12017 @end menu 14922 @end menu
12018 14923
12019 14924
12020 @node Required Backend Functions 14925 @node Required Backend Functions
12021 @subsubsection Required Backend Functions 14926 @subsubsection Required Backend Functions
12155 group and article numbers are when fetching articles by 15060 group and article numbers are when fetching articles by
12156 @code{Message-ID}. If this isn't possible, @code{t} should be returned 15061 @code{Message-ID}. If this isn't possible, @code{t} should be returned
12157 on successful article retrievement. 15062 on successful article retrievement.
12158 15063
12159 15064
12160 @item (nnchoke-open-group GROUP &optional SERVER) 15065 @item (nnchoke-request-group GROUP &optional SERVER FAST)
12161
12162 Make @var{group} the current group.
12163
12164 There should be no data returned by this function.
12165
12166
12167 @item (nnchoke-request-group GROUP &optional SERVER)
12168 15066
12169 Get data on @var{group}. This function also has the side effect of 15067 Get data on @var{group}. This function also has the side effect of
12170 making @var{group} the current group. 15068 making @var{group} the current group.
15069
15070 If @var{FAST}, don't bother to return useful data, just make @var{group}
15071 the current group.
12171 15072
12172 Here's an example of some result data and a definition of the same: 15073 Here's an example of some result data and a definition of the same:
12173 15074
12174 @example 15075 @example
12175 211 56 1000 1059 ifi.discussion 15076 211 56 1000 1059 ifi.discussion
12176 @end example 15077 @end example
12177 15078
12178 The first number is the status, which should be @code{211}. Next is the 15079 The first number is the status, which should be 211. Next is the
12179 total number of articles in the group, the lowest article number, the 15080 total number of articles in the group, the lowest article number, the
12180 highest article number, and finally the group name. Note that the total 15081 highest article number, and finally the group name. Note that the total
12181 number of articles may be less than one might think while just 15082 number of articles may be less than one might think while just
12182 considering the highest and lowest article numbers, but some articles 15083 considering the highest and lowest article numbers, but some articles
12183 may have been canceled. Gnus just discards the total-number, so 15084 may have been canceled. Gnus just discards the total-number, so
12265 @item (nnchoke-request-update-info GROUP INFO &optional SERVER) 15166 @item (nnchoke-request-update-info GROUP INFO &optional SERVER)
12266 15167
12267 A Gnus group info (@pxref{Group Info}) is handed to the backend for 15168 A Gnus group info (@pxref{Group Info}) is handed to the backend for
12268 alterations. This comes in handy if the backend really carries all the 15169 alterations. This comes in handy if the backend really carries all the
12269 information (as is the case with virtual an imap groups). This function 15170 information (as is the case with virtual an imap groups). This function
12270 may alter the info in any manner it sees fit, and should return the 15171 should destructively alter the info to suit its needs, and should return
12271 (altered) group info. This function may alter the group info 15172 the (altered) group info.
12272 destructively, so no copying is needed before boogeying.
12273 15173
12274 There should be no result data from this function. 15174 There should be no result data from this function.
12275 15175
12276 15176
12277 @item (nnchoke-request-type GROUP &optional ARTICLE) 15177 @item (nnchoke-request-type GROUP &optional ARTICLE)
12280 summary buffer, for instance), Gnus has to know whether the article the 15180 summary buffer, for instance), Gnus has to know whether the article the
12281 user is following up is news or mail. This function should return 15181 user is following up is news or mail. This function should return
12282 @code{news} if @var{article} in @var{group} is news, @code{mail} if it 15182 @code{news} if @var{article} in @var{group} is news, @code{mail} if it
12283 is mail and @code{unknown} if the type can't be decided. (The 15183 is mail and @code{unknown} if the type can't be decided. (The
12284 @var{article} parameter is necessary in @code{nnvirtual} groups which 15184 @var{article} parameter is necessary in @code{nnvirtual} groups which
12285 might very well combine mail groups and news groups.) 15185 might very well combine mail groups and news groups.) Both @var{group}
15186 and @var{article} may be @code{nil}.
12286 15187
12287 There should be no result data from this function. 15188 There should be no result data from this function.
12288 15189
12289 15190
12290 @item (nnchoke-request-update-mark GROUP ARTICLE MARK) 15191 @item (nnchoke-request-update-mark GROUP ARTICLE MARK)
12314 would be nice, however, to keep things local if that's practical. 15215 would be nice, however, to keep things local if that's practical.
12315 15216
12316 There should be no result data from this function. 15217 There should be no result data from this function.
12317 15218
12318 15219
12319 @item (nnchoke-request-asynchronous GROUP &optional SERVER ARTICLES)
12320
12321 This is a request to fetch articles asynchronously later.
12322 @var{articles} is an alist of @var{(article-number line-number)}. One
12323 would generally expect that if one later fetches article number 4, for
12324 instance, some sort of asynchronous fetching of the articles after 4
12325 (which might be 5, 6, 7 or 11, 3, 909 depending on the order in that
12326 alist) would be fetched asynchronously, but that is left up to the
12327 backend. Gnus doesn't care.
12328
12329 There should be no result data from this function.
12330
12331
12332 @item (nnchoke-request-group-description GROUP &optional SERVER) 15220 @item (nnchoke-request-group-description GROUP &optional SERVER)
12333 15221
12334 The result data from this function should be a description of 15222 The result data from this function should be a description of
12335 @var{group}. 15223 @var{group}.
12336 15224
12439 There should be no data returned. 15327 There should be no data returned.
12440 15328
12441 @end table 15329 @end table
12442 15330
12443 15331
15332 @node Error Messaging
15333 @subsubsection Error Messaging
15334
15335 @findex nnheader-report
15336 @findex nnheader-get-report
15337 The backends should use the function @code{nnheader-report} to report
15338 error conditions---they should not raise errors when they aren't able to
15339 perform a request. The first argument to this function is the backend
15340 symbol, and the rest are interpreted as arguments to @code{format} if
15341 there are many of them, or just a string if there is one of them.
15342 This function always returns @code{nil}.
15343
15344 @lisp
15345 (nnheader-report 'nnchoke "You did something totally bogus")
15346
15347 (nnheader-report 'nnchoke "Could not request group %s" group)
15348 @end lisp
15349
15350 Gnus, in turn, will call @code{nnheader-get-report} when it gets a
15351 @code{nil} back from a server, and this function returns the most
15352 recently reported message for the backend in question. This function
15353 takes one argument---the server symbol.
15354
15355 Internally, these function access @var{backend}@code{-status-string}, so
15356 the @code{nnchoke} backend will have its error message stored in
15357 @code{nnchoke-status-string}.
15358
15359
12444 @node Writing New Backends 15360 @node Writing New Backends
12445 @subsubsection Writing New Backends 15361 @subsubsection Writing New Backends
12446 15362
12447 The various backends share many similarities. @code{nnml} is just like 15363 Many backends are quite similar. @code{nnml} is just like
12448 @code{nnspool}, but it allows you to edit the articles on the server. 15364 @code{nnspool}, but it allows you to edit the articles on the server.
12449 @code{nnmh} is just like @code{nnml}, but it doesn't use an active file, 15365 @code{nnmh} is just like @code{nnml}, but it doesn't use an active file,
12450 and it doesn't maintain overview databases. @code{nndir} is just like 15366 and it doesn't maintain overview databases. @code{nndir} is just like
12451 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow 15367 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow
12452 editing articles. 15368 editing articles.
12580 15496
12581 (nnoo-define-basics nndir) 15497 (nnoo-define-basics nndir)
12582 15498
12583 (deffoo nndir-open-server (server &optional defs) 15499 (deffoo nndir-open-server (server &optional defs)
12584 (setq nndir-directory 15500 (setq nndir-directory
12585 (or (cadr (assq 'nndir-directory defs)) 15501 (or (cadr (assq 'nndir-directory defs))
12586 server)) 15502 server))
12587 (unless (assq 'nndir-directory defs) 15503 (unless (assq 'nndir-directory defs)
12588 (push `(nndir-directory ,server) defs)) 15504 (push `(nndir-directory ,server) defs))
12589 (push `(nndir-current-group 15505 (push `(nndir-current-group
12590 ,(file-name-nondirectory (directory-file-name nndir-directory))) 15506 ,(file-name-nondirectory (directory-file-name nndir-directory)))
12591 defs) 15507 defs)
12592 (push `(nndir-top-directory 15508 (push `(nndir-top-directory
12593 ,(file-name-directory (directory-file-name nndir-directory))) 15509 ,(file-name-directory (directory-file-name nndir-directory)))
12594 defs) 15510 defs)
12595 (nnoo-change-server 'nndir server defs)) 15511 (nnoo-change-server 'nndir server defs))
12596 15512
12597 (nnoo-map-functions nndir 15513 (nnoo-map-functions nndir
12598 (nnml-retrieve-headers 0 nndir-current-group 0 0) 15514 (nnml-retrieve-headers 0 nndir-current-group 0 0)
12599 (nnmh-request-article 0 nndir-current-group 0 0) 15515 (nnmh-request-article 0 nndir-current-group 0 0)
12607 nnmh-request-newgroups)) 15523 nnmh-request-newgroups))
12608 15524
12609 (provide 'nndir) 15525 (provide 'nndir)
12610 @end lisp 15526 @end lisp
12611 15527
15528
15529 @node Hooking New Backends Into Gnus
15530 @subsubsection Hooking New Backends Into Gnus
15531
15532 @vindex gnus-valid-select-methods
15533 Having Gnus start using your new backend is rather easy---you just
15534 declare it with the @code{gnus-declare-backend} functions. This will
15535 enter the backend into the @code{gnus-valid-select-methods} variable.
15536
15537 @code{gnus-declare-backend} takes two parameters---the backend name and
15538 an arbitrary number of @dfn{abilities}.
15539
15540 Here's an example:
15541
15542 @lisp
15543 (gnus-declare-backend "nnchoke" 'mail 'respool 'address)
15544 @end lisp
15545
15546 The abilities can be:
15547
15548 @table @code
15549 @item mail
15550 This is a mailish backend---followups should (probably) go via mail.
15551 @item post
15552 This is a newsish backend---followups should (probably) go via news.
15553 @item post-mail
15554 This backend supports both mail and news.
15555 @item none
15556 This is neither a post or mail backend---it's something completely
15557 different.
15558 @item respool
15559 It supports respooling---or rather, it is able to modify its source
15560 articles and groups.
15561 @item address
15562 The name of the server should be in the virtual server name. This is
15563 true for almost all backends.
15564 @item prompt-address
15565 The user should be prompted for an address when doing commands like
15566 @kbd{B} in the group buffer. This is true for backends like
15567 @code{nntp}, but not @code{nnmbox}, for instance.
15568 @end table
15569
15570
15571 @node Mail-like Backends
15572 @subsubsection Mail-like Backends
15573
15574 One of the things that separate the mail backends from the rest of the
15575 backends is the heavy dependence by the mail backends on common
15576 functions in @file{nnmail.el}. For instance, here's the definition of
15577 @code{nnml-request-scan}:
15578
15579 @lisp
15580 (deffoo nnml-request-scan (&optional group server)
15581 (setq nnml-article-file-alist nil)
15582 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group))
15583 @end lisp
15584
15585 It simply just calls @code{nnmail-get-new-mail} will a few parameters,
15586 and @code{nnmail} takes care of all the moving and splitting of the
15587 mail.
15588
15589 This function takes four parameters.
15590
15591 @table @var
15592 @item method
15593 This should be a symbol to designate which backend is responsible for
15594 the call.
15595
15596 @item exit-function
15597 This function should be called after the splitting has been performed.
15598
15599 @item temp-directory
15600 Where the temporary files should be stored.
15601
15602 @item group
15603 This optional argument should be a group name if the splitting is to be
15604 performed for one group only.
15605 @end table
15606
15607 @code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to
15608 save each article. @var{backend}@code{-active-number} will be called to
15609 find the article number assigned to this article.
15610
15611 The function also uses the following variables:
15612 @var{backend}@code{-get-new-mail} (to see whether to get new mail for
15613 this backend); and @var{backend}@code{-group-alist} and
15614 @var{backend}@code{-active-file} to generate the new active file.
15615 @var{backend}@code{-group-alist} should be a group-active alist, like
15616 this:
15617
15618 @example
15619 (("a-group" (1 . 10))
15620 ("some-group" (34 . 39)))
15621 @end example
12612 15622
12613 15623
12614 @node Score File Syntax 15624 @node Score File Syntax
12615 @subsection Score File Syntax 15625 @subsection Score File Syntax
12616 15626
12694 corresponds to the @sc{nov} format in a mysterious fashion. One could 15704 corresponds to the @sc{nov} format in a mysterious fashion. One could
12695 almost suspect that the author looked at the @sc{nov} specification and 15705 almost suspect that the author looked at the @sc{nov} specification and
12696 just shamelessly @emph{stole} the entire thing, and one would be right. 15706 just shamelessly @emph{stole} the entire thing, and one would be right.
12697 15707
12698 @dfn{Header} is a severely overloaded term. ``Header'' is used in 15708 @dfn{Header} is a severely overloaded term. ``Header'' is used in
12699 RFC1036 to talk about lines in the head of an article (eg., 15709 RFC1036 to talk about lines in the head of an article (e.g.,
12700 @code{From}). It is used by many people as a synonym for 15710 @code{From}). It is used by many people as a synonym for
12701 ``head''---``the header and the body''. (That should be avoided, in my 15711 ``head''---``the header and the body''. (That should be avoided, in my
12702 opinion.) And Gnus uses a format internally that it calls ``header'', 15712 opinion.) And Gnus uses a format internally that it calls ``header'',
12703 which is what I'm talking about here. This is a 9-element vector, 15713 which is what I'm talking about here. This is a 9-element vector,
12704 basically, with each header (ouch) having one slot. 15714 basically, with each header (ouch) having one slot.
12719 @sc{gnus} introduced a concept that I found so useful that I've started 15729 @sc{gnus} introduced a concept that I found so useful that I've started
12720 using it a lot and have elaborated on it greatly. 15730 using it a lot and have elaborated on it greatly.
12721 15731
12722 The question is simple: If you have a large amount of objects that are 15732 The question is simple: If you have a large amount of objects that are
12723 identified by numbers (say, articles, to take a @emph{wild} example) 15733 identified by numbers (say, articles, to take a @emph{wild} example)
12724 that you want to callify as being ``included'', a normal sequence isn't 15734 that you want to qualify as being ``included'', a normal sequence isn't
12725 very useful. (A 200,000 length sequence is a bit long-winded.) 15735 very useful. (A 200,000 length sequence is a bit long-winded.)
12726 15736
12727 The solution is as simple as the question: You just collapse the 15737 The solution is as simple as the question: You just collapse the
12728 sequence. 15738 sequence.
12729 15739
12810 ((tick (15 . 19)) (replied 3 6 (19 . 3))) 15820 ((tick (15 . 19)) (replied 3 6 (19 . 3)))
12811 (nnml "") 15821 (nnml "")
12812 (auto-expire (to-address "ding@@ifi.uio.no"))) 15822 (auto-expire (to-address "ding@@ifi.uio.no")))
12813 @end example 15823 @end example
12814 15824
12815 The first element is the group name as Gnus knows the group; the second 15825 The first element is the @dfn{group name}---as Gnus knows the group,
12816 is the group level; the third is the read articles in range format; the 15826 anyway. The second element is the @dfn{subscription level}, which
12817 fourth is a list of article marks lists; the fifth is the select method; 15827 normally is a small integer. The third element is a list of ranges of
12818 and the sixth contains the group parameters. 15828 read articles. The fourth element is a list of lists of article marks
15829 of various kinds. The fifth element is the select method (or virtual
15830 server, if you like). The sixth element is a list of @dfn{group
15831 parameters}, which is what this section is about.
15832
15833 Any of the last three elements may be missing if they are not required.
15834 In fact, the vast majority of groups will normally only have the first
15835 three elements, which saves quite a lot of cons cells.
12819 15836
12820 Here's a BNF definition of the group info format: 15837 Here's a BNF definition of the group info format:
12821 15838
12822 @example 15839 @example
12823 info = "(" group space level space read 15840 info = "(" group space level space read