comparison man/gnus.texi @ 16:0293115a14e9 r19-15b91

Import from CVS: tag r19-15b91
author cvs
date Mon, 13 Aug 2007 08:49:20 +0200
parents ac2d302a0011
children d95e72db5c07
comparison
equal deleted inserted replaced
15:ad457d5f7d04 16:0293115a14e9
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)
2858 @itemx M-f
2410 @findex gnus-group-fetch-faq 2859 @findex gnus-group-fetch-faq
2860 @vindex gnus-group-faq-directory
2411 @cindex FAQ 2861 @cindex FAQ
2412 @cindex ange-ftp 2862 @cindex ange-ftp
2413 Try to fetch the FAQ for the current group 2863 Try to fetch the FAQ for the current group
2414 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from 2864 (@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 2865 @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. 2866 remote machine. This variable can also be a list of directories. In
2417 2867 that case, giving a prefix to this command will allow you to choose
2418 @item D 2868 between the various sites. @code{ange-ftp} (or @code{efs}) will be used
2419 @kindex D (Group) 2869 for fetching the file.
2870
2871 If fetching from the first site is unsuccessful, Gnus will attempt to go
2872 through @code{gnus-group-faq-directory} and try to open them one by one.
2873
2874 @item H d
2875 @itemx C-c C-d
2876 @kindex H d (Group)
2877 @kindex C-c C-d (Group)
2420 @cindex describing groups 2878 @cindex describing groups
2421 @cindex group description 2879 @cindex group description
2422 @findex gnus-group-describe-group 2880 @findex gnus-group-describe-group
2423 Describe the current group (@code{gnus-group-describe-group}). If given 2881 Describe the current group (@code{gnus-group-describe-group}). If given
2424 a prefix, force Gnus to re-read the description from the server. 2882 a prefix, force Gnus to re-read the description from the server.
2447 @findex gnus-info-find-node 2905 @findex gnus-info-find-node
2448 Go to the Gnus info node (@code{gnus-info-find-node}). 2906 Go to the Gnus info node (@code{gnus-info-find-node}).
2449 @end table 2907 @end table
2450 2908
2451 2909
2910 @node Group Timestamp
2911 @subsection Group Timestamp
2912 @cindex timestamps
2913 @cindex group timestamps
2914
2915 It can be convenient to let Gnus keep track of when you last read a
2916 group. To set the ball rolling, you should add
2917 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}:
2918
2919 @lisp
2920 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
2921 @end lisp
2922
2923 After doing this, each time you enter a group, it'll be recorded.
2924
2925 This information can be displayed in various ways---the easiest is to
2926 use the @samp{%d} spec in the group line format:
2927
2928 @lisp
2929 (setq gnus-group-line-format
2930 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
2931 @end lisp
2932
2933 This will result in lines looking like:
2934
2935 @example
2936 * 0: mail.ding 19961002T012943
2937 0: custom 19961002T012713
2938 @end example
2939
2940 As you can see, the date is displayed in compact ISO 8601 format. This
2941 may be a bit too much, so to just display the date, you could say
2942 something like:
2943
2944 @lisp
2945 (setq gnus-group-line-format
2946 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
2947 @end lisp
2948
2949
2452 @node File Commands 2950 @node File Commands
2453 @subsection File Commands 2951 @subsection File Commands
2454 @cindex file commands 2952 @cindex file commands
2455 2953
2456 @table @kbd 2954 @table @kbd
2458 @item r 2956 @item r
2459 @kindex r (Group) 2957 @kindex r (Group)
2460 @findex gnus-group-read-init-file 2958 @findex gnus-group-read-init-file
2461 @vindex gnus-init-file 2959 @vindex gnus-init-file
2462 @cindex reading init file 2960 @cindex reading init file
2463 Read the init file (@code{gnus-init-file}, which defaults to 2961 Re-read the init file (@code{gnus-init-file}, which defaults to
2464 @file{~/.gnus}) (@code{gnus-group-read-init-file}). 2962 @file{~/.gnus}) (@code{gnus-group-read-init-file}).
2465 2963
2466 @item s 2964 @item s
2467 @kindex s (Group) 2965 @kindex s (Group)
2468 @findex gnus-group-save-newsrc 2966 @findex gnus-group-save-newsrc
2483 @chapter The Summary Buffer 2981 @chapter The Summary Buffer
2484 @cindex summary buffer 2982 @cindex summary buffer
2485 2983
2486 A line for each article is displayed in the summary buffer. You can 2984 A line for each article is displayed in the summary buffer. You can
2487 move around, read articles, post articles and reply to articles. 2985 move around, read articles, post articles and reply to articles.
2986
2987 The most common way to a summary buffer is to select a group from the
2988 group buffer (@pxref{Selecting a Group}).
2989
2990 You can have as many summary buffers open as you wish.
2488 2991
2489 @menu 2992 @menu
2490 * Summary Buffer Format:: Deciding how the summary buffer is to look. 2993 * Summary Buffer Format:: Deciding how the summary buffer is to look.
2491 * Summary Maneuvering:: Moving around the summary buffer. 2994 * Summary Maneuvering:: Moving around the summary buffer.
2492 * Choosing Articles:: Reading articles. 2995 * Choosing Articles:: Reading articles.
2502 * Persistent Articles:: Making articles expiry-resistant. 3005 * Persistent Articles:: Making articles expiry-resistant.
2503 * Article Backlog:: Having already read articles hang around. 3006 * Article Backlog:: Having already read articles hang around.
2504 * Saving Articles:: Ways of customizing article saving. 3007 * Saving Articles:: Ways of customizing article saving.
2505 * Decoding Articles:: Gnus can treat series of (uu)encoded articles. 3008 * Decoding Articles:: Gnus can treat series of (uu)encoded articles.
2506 * Article Treatment:: The article buffer can be mangled at will. 3009 * Article Treatment:: The article buffer can be mangled at will.
3010 * Article Commands:: Doing various things with the article buffer.
2507 * Summary Sorting:: Sorting the summary buffer in various ways. 3011 * Summary Sorting:: Sorting the summary buffer in various ways.
2508 * Finding the Parent:: No child support? Get the parent. 3012 * Finding the Parent:: No child support? Get the parent.
2509 * Alternative Approaches:: Reading using non-default summaries. 3013 * Alternative Approaches:: Reading using non-default summaries.
2510 * Tree Display:: A more visual display of threads. 3014 * Tree Display:: A more visual display of threads.
2511 * Mail Group Commands:: Some commands can only be used in mail groups. 3015 * Mail Group Commands:: Some commands can only be used in mail groups.
2512 * Various Summary Stuff:: What didn't fit anywhere else. 3016 * Various Summary Stuff:: What didn't fit anywhere else.
2513 * Exiting the Summary Buffer:: Returning to the Group buffer. 3017 * Exiting the Summary Buffer:: Returning to the Group buffer.
3018 * Crosspost Handling:: How crossposted articles are dealt with.
3019 * Duplicate Suppression:: An alternative when crosspost handling fails.
2514 @end menu 3020 @end menu
2515 3021
2516 3022
2517 @node Summary Buffer Format 3023 @node Summary Buffer Format
2518 @section Summary Buffer Format 3024 @section Summary Buffer Format
2546 @subsection Summary Buffer Lines 3052 @subsection Summary Buffer Lines
2547 3053
2548 @vindex gnus-summary-line-format 3054 @vindex gnus-summary-line-format
2549 You can change the format of the lines in the summary buffer by changing 3055 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 3056 the @code{gnus-summary-line-format} variable. It works along the same
2551 lines a a normal @code{format} string, with some extensions. 3057 lines a a normal @code{format} string, with some extensions
3058 (@pxref{Formatting Variables}).
2552 3059
2553 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. 3060 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
2554 3061
2555 The following format specification characters are understood: 3062 The following format specification characters are understood:
2556 3063
2558 @item N 3065 @item N
2559 Article number. 3066 Article number.
2560 @item S 3067 @item S
2561 Subject string. 3068 Subject string.
2562 @item s 3069 @item s
2563 Subject if the article is the root, @code{gnus-summary-same-subject} 3070 Subject if the article is the root or the previous article had a
2564 otherwise. 3071 different subject, @code{gnus-summary-same-subject} otherwise.
3072 (@code{gnus-summary-same-subject} defaults to @samp{}.)
2565 @item F 3073 @item F
2566 Full @code{From} line. 3074 Full @code{From} header.
2567 @item n 3075 @item n
2568 The name (from the @code{From} header). 3076 The name (from the @code{From} header).
2569 @item a 3077 @item a
2570 The name (from the @code{From} header). This differs from the @code{n} 3078 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 3079 spec in that it uses the function designated by the
2572 slower, but may be more thorough. 3080 @code{gnus-extract-address-components} variable, which is slower, but
3081 may be more thorough.
2573 @item A 3082 @item A
2574 The address (from the @code{From} header). This works the same way as 3083 The address (from the @code{From} header). This works the same way as
2575 the @code{a} spec. 3084 the @code{a} spec.
2576 @item L 3085 @item L
2577 Number of lines in the article. 3086 Number of lines in the article.
2580 @item I 3089 @item I
2581 Indentation based on thread level (@pxref{Customizing Threading}). 3090 Indentation based on thread level (@pxref{Customizing Threading}).
2582 @item T 3091 @item T
2583 Nothing if the article is a root and lots of spaces if it isn't (it 3092 Nothing if the article is a root and lots of spaces if it isn't (it
2584 pushes everything after it off the screen). 3093 pushes everything after it off the screen).
2585 @item \[ 3094 @item [
2586 Opening bracket, which is normally @samp{\[}, but can also be @samp{<} 3095 Opening bracket, which is normally @samp{[}, but can also be @samp{<}
2587 for adopted articles. 3096 for adopted articles (@pxref{Customizing Threading}).
2588 @item \] 3097 @item ]
2589 Closing bracket, which is normally @samp{\]}, but can also be @samp{>} 3098 Closing bracket, which is normally @samp{]}, but can also be @samp{>}
2590 for adopted articles. 3099 for adopted articles.
2591 @item > 3100 @item >
2592 One space for each thread level. 3101 One space for each thread level.
2593 @item < 3102 @item <
2594 Twenty minus thread level spaces. 3103 Twenty minus thread level spaces.
2608 Total thread score. 3117 Total thread score.
2609 @item x 3118 @item x
2610 @code{Xref}. 3119 @code{Xref}.
2611 @item D 3120 @item D
2612 @code{Date}. 3121 @code{Date}.
3122 @item d
3123 The @code{Date} in @code{DD-MMM} format.
3124 @item o
3125 The @code{Date} in @code{YYYYMMDDTHHMMSS} format.
2613 @item M 3126 @item M
2614 @code{Message-ID}. 3127 @code{Message-ID}.
2615 @item r 3128 @item r
2616 @code{References}. 3129 @code{References}.
2617 @item t 3130 @item t
2618 Number of articles in the current sub-thread. Using this spec will slow 3131 Number of articles in the current sub-thread. Using this spec will slow
2619 down summary buffer generation somewhat. 3132 down summary buffer generation somewhat.
2620 @item e 3133 @item e
2621 A single character will be displayed if the article has any children. 3134 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the
3135 article has any children.
3136 @item P
3137 The line number.
2622 @item u 3138 @item u
2623 User defined specifier. The next character in the format string should 3139 User defined specifier. The next character in the format string should
2624 be a letter. @sc{gnus} will call the function 3140 be a letter. @sc{gnus} will call the function
2625 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter 3141 @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 3142 following @samp{%u}. The function will be passed the current header as
2644 @node Summary Buffer Mode Line 3160 @node Summary Buffer Mode Line
2645 @subsection Summary Buffer Mode Line 3161 @subsection Summary Buffer Mode Line
2646 3162
2647 @vindex gnus-summary-mode-line-format 3163 @vindex gnus-summary-mode-line-format
2648 You can also change the format of the summary mode bar. Set 3164 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 3165 @code{gnus-summary-mode-line-format} to whatever you like. The default
2650 elements you can play with: 3166 is @samp{Gnus: %%b [%A] %Z}.
3167
3168 Here are the elements you can play with:
2651 3169
2652 @table @samp 3170 @table @samp
2653 @item G 3171 @item G
2654 Group name. 3172 Group name.
2655 @item p 3173 @item p
2662 Number of unread articles in this group. 3180 Number of unread articles in this group.
2663 @item e 3181 @item e
2664 Number of unselected articles in this group. 3182 Number of unselected articles in this group.
2665 @item Z 3183 @item Z
2666 A string with the number of unread and unselected articles represented 3184 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 3185 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 3186 articles, and just as @samp{<%U more>} if there are just unread articles
2669 and no unselected ones. 3187 and no unselected ones.
2670 @item g 3188 @item g
2671 Shortish group name. For instance, @samp{rec.arts.anime} will be 3189 Shortish group name. For instance, @samp{rec.arts.anime} will be
2672 shortened to @samp{r.a.anime}. 3190 shortened to @samp{r.a.anime}.
2673 @item S 3191 @item S
2674 Subject of the current article. 3192 Subject of the current article.
2675 @item u 3193 @item u
2676 Used-defined spec. 3194 User-defined spec.
2677 @item s 3195 @item s
2678 Name of the current score file. 3196 Name of the current score file.
2679 @item d 3197 @item d
2680 Number of dormant articles. 3198 Number of dormant articles.
2681 @item t 3199 @item t
2709 highlight the current article in the summary buffer. 3227 highlight the current article in the summary buffer.
2710 3228
2711 @item gnus-summary-highlight 3229 @item gnus-summary-highlight
2712 @vindex gnus-summary-highlight 3230 @vindex gnus-summary-highlight
2713 Summary lines are highlighted according to this variable, which is a 3231 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 3232 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 3233 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 3234 articles to be bold, you could set this variable to something like
2717 @lisp 3235 @lisp
2718 (((eq mark gnus-ticked-mark) . italic) 3236 (((eq mark gnus-ticked-mark) . italic)
2719 ((> score default) . bold)) 3237 ((> score default) . bold))
2752 @item G j 3270 @item G j
2753 @itemx j 3271 @itemx j
2754 @kindex j (Summary) 3272 @kindex j (Summary)
2755 @kindex G j (Summary) 3273 @kindex G j (Summary)
2756 @findex gnus-summary-goto-article 3274 @findex gnus-summary-goto-article
2757 Ask for an article number and then go that article 3275 Ask for an article number and then go to that article
2758 (@code{gnus-summary-goto-article}). 3276 (@code{gnus-summary-goto-article}).
2759 3277
2760 @item G g 3278 @item G g
2761 @kindex G g (Summary) 3279 @kindex G g (Summary)
2762 @findex gnus-summary-goto-subject 3280 @findex gnus-summary-goto-subject
2763 Ask for an article number and then go the summary line of that article 3281 Ask for an article number and then go the summary line of that article
2764 (@code{gnus-summary-goto-subject}). 3282 without displaying the article (@code{gnus-summary-goto-subject}).
2765 @end table 3283 @end table
2766 3284
2767 If Gnus asks you to press a key to confirm going to the next group, you 3285 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 3286 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 3287 buffer, searching for the next group to read without actually returning
2773 3291
2774 @table @code 3292 @table @code
2775 3293
2776 @vindex gnus-auto-select-next 3294 @vindex gnus-auto-select-next
2777 @item gnus-auto-select-next 3295 @item gnus-auto-select-next
2778 If you are at the end of the group and issue one of the movement 3296 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 3297 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 3298 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 3299 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 3300 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 3301 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 3302 special case, if this variable is @code{quietly}, Gnus will select the
2785 confirmation. If this variable is @code{almost-quietly}, the same will 3303 next group without asking for confirmation. If this variable is
2786 happen only if you are located on the last article in the group. 3304 @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} 3305 the last article in the group. Finally, if this variable is
2788 command will go to the next group without confirmation. Also 3306 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group
2789 @pxref{Group Levels}. 3307 without confirmation. Also @pxref{Group Levels}.
2790 3308
2791 @item gnus-auto-select-same 3309 @item gnus-auto-select-same
2792 @vindex gnus-auto-select-same 3310 @vindex gnus-auto-select-same
2793 If non-@code{nil}, all the movement commands will try to go to the next 3311 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 3312 article with the same subject as the current. (@dfn{Same} here might
2817 3335
2818 @node Choosing Articles 3336 @node Choosing Articles
2819 @section Choosing Articles 3337 @section Choosing Articles
2820 @cindex selecting articles 3338 @cindex selecting articles
2821 3339
3340 @menu
3341 * Choosing Commands:: Commands for choosing articles.
3342 * Choosing Variables:: Variables that influence these commands.
3343 @end menu
3344
3345
3346 @node Choosing Commands
3347 @subsection Choosing Commands
3348
2822 None of the following movement commands understand the numeric prefix, 3349 None of the following movement commands understand the numeric prefix,
2823 and they all select and display an article. 3350 and they all select and display an article.
2824 3351
2825 @table @kbd 3352 @table @kbd
2826 @item SPACE 3353 @item SPACE
2897 Pop an article off the summary history and go to this article 3424 Pop an article off the summary history and go to this article
2898 (@code{gnus-summary-pop-article}). This command differs from the 3425 (@code{gnus-summary-pop-article}). This command differs from the
2899 command above in that you can pop as many previous articles off the 3426 command above in that you can pop as many previous articles off the
2900 history as you like. 3427 history as you like.
2901 @end table 3428 @end table
3429
3430
3431 @node Choosing Variables
3432 @subsection Choosing Variables
2902 3433
2903 Some variables that are relevant for moving and selecting articles: 3434 Some variables that are relevant for moving and selecting articles:
2904 3435
2905 @table @code 3436 @table @code
2906 @item gnus-auto-extend-newsgroup 3437 @item gnus-auto-extend-newsgroup
2981 @kindex A > (Summary) 3512 @kindex A > (Summary)
2982 @findex gnus-summary-end-of-article 3513 @findex gnus-summary-end-of-article
2983 Scroll to the end of the article (@code{gnus-summary-end-of-article}). 3514 Scroll to the end of the article (@code{gnus-summary-end-of-article}).
2984 3515
2985 @item A s 3516 @item A s
3517 @itemx s
2986 @kindex A s (Summary) 3518 @kindex A s (Summary)
3519 @kindex s (Summary)
2987 @findex gnus-summary-isearch-article 3520 @findex gnus-summary-isearch-article
2988 Perform an isearch in the article buffer 3521 Perform an isearch in the article buffer
2989 (@code{gnus-summary-isearch-article}). 3522 (@code{gnus-summary-isearch-article}).
2990 3523
2991 @end table 3524 @end table
3024 @findex gnus-summary-reply-with-original 3557 @findex gnus-summary-reply-with-original
3025 Mail a reply to the author of the current article and include the 3558 Mail a reply to the author of the current article and include the
3026 original message (@code{gnus-summary-reply-with-original}). This 3559 original message (@code{gnus-summary-reply-with-original}). This
3027 command uses the process/prefix convention. 3560 command uses the process/prefix convention.
3028 3561
3562 @item S w
3563 @kindex S w (Summary)
3564 @findex gnus-summary-wide-reply
3565 Mail a wide reply to the author of the current article
3566 (@code{gnus-summary-wide-reply}).
3567
3568 @item S W
3569 @kindex S W (Summary)
3570 @findex gnus-summary-wide-reply-with-original
3571 Mail a wide reply to the current article and include the original
3572 message (@code{gnus-summary-reply-with-original}). This command uses
3573 the process/prefix convention.
3574
3029 @item S o m 3575 @item S o m
3030 @kindex S o m (Summary) 3576 @kindex S o m (Summary)
3031 @findex gnus-summary-mail-forward 3577 @findex gnus-summary-mail-forward
3032 Forward the current article to some other person 3578 Forward the current article to some other person
3033 (@code{gnus-summary-mail-forward}). 3579 (@code{gnus-summary-mail-forward}). If given a prefix, include the full
3034 3580 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 3581
3041 @item S m 3582 @item S m
3042 @itemx m 3583 @itemx m
3043 @kindex m (Summary) 3584 @kindex m (Summary)
3044 @kindex S m (Summary) 3585 @kindex S m (Summary)
3073 3614
3074 This command is mainly used if you have several accounts and want to 3615 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 3616 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} 3617 @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 3618 to the @code{root} account, you may want to resend it to
3078 @code{postmaster}. Ordnung muss sein! 3619 @code{postmaster}. Ordnung muß sein!
3620
3621 This command understands the process/prefix convention
3622 (@pxref{Process/Prefix}).
3079 3623
3080 @item S O m 3624 @item S O m
3081 @kindex S O m (Summary) 3625 @kindex S O m (Summary)
3082 @findex gnus-uu-digest-mail-forward 3626 @findex gnus-uu-digest-mail-forward
3083 Digest the current series and forward the result using mail 3627 Digest the current series and forward the result using mail
3084 (@code{gnus-uu-digest-mail-forward}). This command uses the 3628 (@code{gnus-uu-digest-mail-forward}). This command uses the
3085 process/prefix convention (@pxref{Process/Prefix}). 3629 process/prefix convention (@pxref{Process/Prefix}).
3086 3630
3087 @item S O p 3631 @item S M-c
3088 @kindex S O p (Summary) 3632 @kindex S M-c (Summary)
3089 @findex gnus-uu-digest-post-forward 3633 @findex gnus-summary-mail-crosspost-complaint
3090 Digest the current series and forward the result to a newsgroup 3634 @cindex crossposting
3091 (@code{gnus-uu-digest-mail-forward}). 3635 @cindex excessive crossposting
3636 Send a complaint about excessive crossposting to the author of the
3637 current article (@code{gnus-summary-mail-crosspost-complaint}).
3638
3639 @findex gnus-crosspost-complaint
3640 This command is provided as a way to fight back agains the current
3641 crossposting pandemic that's sweeping Usenet. It will compose a reply
3642 using the @code{gnus-crosspost-complaint} variable as a preamble. This
3643 command understands the process/prefix convention
3644 (@pxref{Process/Prefix}) and will prompt you before sending each mail.
3645
3092 @end table 3646 @end table
3093 3647
3094 3648
3095 @node Summary Post Commands 3649 @node Summary Post Commands
3096 @subsection Summary Post Commands 3650 @subsection Summary Post Commands
3097 @cindex post 3651 @cindex post
3098 @cindex composing news 3652 @cindex composing news
3099 3653
3100 Commands for posting an article: 3654 Commands for posting a news article:
3101 3655
3102 @table @kbd 3656 @table @kbd
3103 @item S p 3657 @item S p
3104 @itemx a 3658 @itemx a
3105 @kindex a (Summary) 3659 @kindex a (Summary)
3122 @findex gnus-summary-followup-with-original 3676 @findex gnus-summary-followup-with-original
3123 Post a followup to the current article and include the original message 3677 Post a followup to the current article and include the original message
3124 (@code{gnus-summary-followup-with-original}). This command uses the 3678 (@code{gnus-summary-followup-with-original}). This command uses the
3125 process/prefix convention. 3679 process/prefix convention.
3126 3680
3681 @item S n
3682 @kindex S n (Summary)
3683 @findex gnus-summary-followup-to-mail
3684 Post a followup to the current article via news, even if you got the
3685 message through mail (@code{gnus-summary-followup-to-mail}).
3686
3687 @item S n
3688 @kindex S n (Summary)
3689 @findex gnus-summary-followup-to-mail
3690 Post a followup to the current article via news, even if you got the
3691 message through mail and include the original message
3692 (@code{gnus-summary-followup-to-mail-with-original}). This command uses
3693 the process/prefix convention.
3694
3695 @item S o p
3696 @kindex S o p (Summary)
3697 @findex gnus-summary-post-forward
3698 Forward the current article to a newsgroup
3699 (@code{gnus-summary-post-forward}). If given a prefix, include the full
3700 headers of the forwarded article.
3701
3702 @item S O p
3703 @kindex S O p (Summary)
3704 @findex gnus-uu-digest-post-forward
3705 Digest the current series and forward the result to a newsgroup
3706 (@code{gnus-uu-digest-mail-forward}).
3707
3127 @item S u 3708 @item S u
3128 @kindex S u (Summary) 3709 @kindex S u (Summary)
3129 @findex gnus-uu-post-news 3710 @findex gnus-uu-post-news
3130 Uuencode a file, split it into parts, and post it as a series 3711 Uuencode a file, split it into parts, and post it as a series
3131 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). 3712 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}).
3169 have posted almost the same article twice. 3750 have posted almost the same article twice.
3170 3751
3171 If you have just posted the article, and change your mind right away, 3752 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 3753 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 3754 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 3755 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 3756 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} 3757 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 3758 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. 3759 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as
3179 The previous article will be canceled/superseded. 3760 you would do normally. The previous article will be
3761 canceled/superseded.
3180 3762
3181 Just remember, kids: There is no 'c' in 'supersede'. 3763 Just remember, kids: There is no 'c' in 'supersede'.
3182 3764
3183 3765
3184 @node Marking Articles 3766 @node Marking Articles
3212 3794
3213 3795
3214 @node Unread Articles 3796 @node Unread Articles
3215 @subsection Unread Articles 3797 @subsection Unread Articles
3216 3798
3217 The following marks mark articles as unread, in one form or other. 3799 The following marks mark articles as (kinda) unread, in one form or
3218 3800 other.
3219 @vindex gnus-dormant-mark 3801
3220 @vindex gnus-ticked-mark
3221 @table @samp 3802 @table @samp
3222 @item ! 3803 @item !
3804 @vindex gnus-ticked-mark
3805 Marked as ticked (@code{gnus-ticked-mark}).
3806
3223 @dfn{Ticked articles} are articles that will remain visible always. If 3807 @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 3808 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 3809 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 3810 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 3811 article forever, you'll have to make it persistent (@pxref{Persistent
3228 @samp{!} (@code{gnus-ticked-mark}) in the first column. 3812 Articles}).
3229 3813
3230 @item ? 3814 @item ?
3231 @vindex gnus-dormant-mark 3815 @vindex gnus-dormant-mark
3232 A @dfn{dormant} article is marked with a @samp{?} 3816 Marked as dormant (@code{gnus-dormant-mark}).
3233 (@code{gnus-dormant-mark}), and will only appear in the summary buffer 3817
3234 if there are followups to it. 3818 @dfn{Dormant articles} will only appear in the summary buffer if there
3819 are followups to it.
3235 3820
3236 @item SPACE 3821 @item SPACE
3237 @vindex gnus-unread-mark 3822 @vindex gnus-unread-mark
3238 An @dfn{unread} article is marked with a @samp{SPACE} 3823 Markes as unread (@code{gnus-unread-mark}).
3239 (@code{gnus-unread-mark}). These are articles that haven't been read at 3824
3240 all yet. 3825 @dfn{Unread articles} are articles that haven't been read at all yet.
3241 @end table 3826 @end table
3242 3827
3243 3828
3244 @node Read Articles 3829 @node Read Articles
3245 @subsection Read Articles 3830 @subsection Read Articles
3249 3834
3250 @table @samp 3835 @table @samp
3251 3836
3252 @item r 3837 @item r
3253 @vindex gnus-del-mark 3838 @vindex gnus-del-mark
3254 Articles that are marked as read. They have a @samp{r} 3839 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 3840 command manually, more or less (@code{gnus-del-mark}).
3256 user has marked as read more or less manually.
3257 3841
3258 @item R 3842 @item R
3259 @vindex gnus-read-mark 3843 @vindex gnus-read-mark
3260 Articles that are actually read are marked with @samp{R} 3844 Articles that have actually been read (@code{gnus-read-mark}).
3261 (@code{gnus-read-mark}).
3262 3845
3263 @item O 3846 @item O
3264 @vindex gnus-ancient-mark 3847 @vindex gnus-ancient-mark
3265 Articles that were marked as read in previous sessions are now 3848 Articles that were marked as read in previous sessions and are now
3266 @dfn{old} and marked with @samp{O} (@code{gnus-ancient-mark}). 3849 @dfn{old} (@code{gnus-ancient-mark}).
3267 3850
3268 @item K 3851 @item K
3269 @vindex gnus-killed-mark 3852 @vindex gnus-killed-mark
3270 Marked as killed (@code{gnus-killed-mark}). 3853 Marked as killed (@code{gnus-killed-mark}).
3271 3854
3285 @vindex gnus-canceled-mark 3868 @vindex gnus-canceled-mark
3286 Canceled article (@code{gnus-canceled-mark}) 3869 Canceled article (@code{gnus-canceled-mark})
3287 3870
3288 @item F 3871 @item F
3289 @vindex gnus-souped-mark 3872 @vindex gnus-souped-mark
3290 @sc{SOUP}ed article (@code{gnus-souped-mark}). 3873 @sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
3291 3874
3292 @item Q 3875 @item Q
3293 @vindex gnus-sparse-mark 3876 @vindex gnus-sparse-mark
3294 Sparsely reffed article (@code{gnus-sparse-mark}). 3877 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
3878 Threading}.
3879
3880 @item M
3881 @vindex gnus-duplicate-mark
3882 Article marked as read by duplicate suppression
3883 (@code{gnus-duplicated-mark}). @xref{Duplicate Suppression}.
3884
3295 @end table 3885 @end table
3296 3886
3297 All these marks just mean that the article is marked as read, really. 3887 All these marks just mean that the article is marked as read, really.
3298 They are interpreted differently by the adaptive scoring scheme, 3888 They are interpreted differently when doing adaptive scoring, though.
3299 however.
3300 3889
3301 One more special mark, though: 3890 One more special mark, though:
3302 3891
3303 @table @samp 3892 @table @samp
3304 @item E 3893 @item E
3305 @vindex gnus-expirable-mark 3894 @vindex gnus-expirable-mark
3306 You can also mark articles as @dfn{expirable} (or have them marked as 3895 Marked as expirable (@code{gnus-expirable-mark}).
3307 such automatically). That doesn't make much sense in normal groups, 3896
3308 because a user does not control the expiring of news articles, but in 3897 Marking articles as @dfn{expirable} (or have them marked as such
3309 mail groups, for instance, articles that are marked as @dfn{expirable} 3898 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 3899 control the expiring of news articles, but in mail groups, for instance,
3311 @samp{E} (@code{gnus-expirable-mark}). 3900 articles that are marked as @dfn{expirable} can be deleted by Gnus at
3901 any time.
3312 @end table 3902 @end table
3313 3903
3314 3904
3315 @node Other Marks 3905 @node Other Marks
3316 @subsection Other Marks 3906 @subsection Other Marks
3325 @item 3915 @item
3326 You can set a bookmark in the current article. Say you are reading a 3916 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 3917 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 3918 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 3919 in the article, and Gnus will jump to this bookmark the next time it
3330 encounters the article. 3920 encounters the article. @xref{Setting Marks}
3331 3921
3332 @item 3922 @item
3333 @vindex gnus-replied-mark 3923 @vindex gnus-replied-mark
3334 All articles that you have replied to or made a followup to (i.e., have 3924 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 3925 answered) will be marked with an @samp{A} in the second column
3399 @kindex M d (Summary) 3989 @kindex M d (Summary)
3400 @kindex d (Summary) 3990 @kindex d (Summary)
3401 @findex gnus-summary-mark-as-read-forward 3991 @findex gnus-summary-mark-as-read-forward
3402 Mark the current article as read 3992 Mark the current article as read
3403 (@code{gnus-summary-mark-as-read-forward}). 3993 (@code{gnus-summary-mark-as-read-forward}).
3994
3995 @item D
3996 @kindex D (Summary)
3997 @findex gnus-summary-mark-as-read-backward
3998 Mark the current article as read and move point to the previous line
3999 (@code{gnus-summary-mark-as-read-backward}).
3404 4000
3405 @item M k 4001 @item M k
3406 @itemx k 4002 @itemx k
3407 @kindex k (Summary) 4003 @kindex k (Summary)
3408 @kindex M k (Summary) 4004 @kindex M k (Summary)
3420 (@code{gnus-summary-kill-same-subject}). 4016 (@code{gnus-summary-kill-same-subject}).
3421 4017
3422 @item M C 4018 @item M C
3423 @kindex M C (Summary) 4019 @kindex M C (Summary)
3424 @findex gnus-summary-catchup 4020 @findex gnus-summary-catchup
3425 Mark all unread articles in the group as read 4021 Mark all unread articles as read (@code{gnus-summary-catchup}).
3426 (@code{gnus-summary-catchup}).
3427 4022
3428 @item M C-c 4023 @item M C-c
3429 @kindex M C-c (Summary) 4024 @kindex M C-c (Summary)
3430 @findex gnus-summary-catchup-all 4025 @findex gnus-summary-catchup-all
3431 Mark all articles in the group as read---even the ticked and dormant 4026 Mark all articles in the group as read---even the ticked and dormant
3533 @kindex M P U (Summary) 4128 @kindex M P U (Summary)
3534 @findex gnus-summary-unmark-all-processable 4129 @findex gnus-summary-unmark-all-processable
3535 Remove the process mark from all articles 4130 Remove the process mark from all articles
3536 (@code{gnus-summary-unmark-all-processable}). 4131 (@code{gnus-summary-unmark-all-processable}).
3537 4132
4133 @item M P i
4134 @kindex M P i (Summary)
4135 @findex gnus-uu-invert-processable
4136 Invert the list of process marked articles
4137 (@code{gnus-uu-invert-processable}).
4138
3538 @item M P R 4139 @item M P R
3539 @kindex M P R (Summary) 4140 @kindex M P R (Summary)
3540 @findex gnus-uu-mark-by-regexp 4141 @findex gnus-uu-mark-by-regexp
3541 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). 4142 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}).
3542 4143
3582 @item M P b 4183 @item M P b
3583 @kindex M P b (Summary) 4184 @kindex M P b (Summary)
3584 @findex gnus-uu-mark-buffer 4185 @findex gnus-uu-mark-buffer
3585 Mark all articles in the buffer in the order they appear 4186 Mark all articles in the buffer in the order they appear
3586 (@code{gnus-uu-mark-buffer}). 4187 (@code{gnus-uu-mark-buffer}).
4188
4189 @item M P k
4190 @kindex M P k (Summary)
4191 @findex gnus-summary-kill-process-mark
4192 Push the current process mark set onto the stack and unmark all articles
4193 (@code{gnus-summary-kill-process-mark}).
4194
4195 @item M P y
4196 @kindex M P y (Summary)
4197 @findex gnus-summary-yank-process-mark
4198 Pop the previous process mark set from the stack and restore it
4199 (@code{gnus-summary-yank-process-mark}).
4200
4201 @item M P w
4202 @kindex M P w (Summary)
4203 @findex gnus-summary-save-process-mark
4204 Push the current process mark set onto the stack
4205 (@code{gnus-summary-save-process-mark}).
4206
3587 @end table 4207 @end table
3588 4208
3589 4209
3590 @node Limiting 4210 @node Limiting
3591 @section Limiting 4211 @section Limiting
3624 @item / m 4244 @item / m
3625 @kindex / m (Summary) 4245 @kindex / m (Summary)
3626 @findex gnus-summary-limit-to-marks 4246 @findex gnus-summary-limit-to-marks
3627 Ask for a mark and then limit to all articles that have not been marked 4247 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}). 4248 with that mark (@code{gnus-summary-limit-to-marks}).
4249
4250 @item / t
4251 @kindex / t (Summary)
4252 @findex gnus-summary-limit-to-age
4253 Ask for a number and then limit the summary buffer to articles that are
4254 older than (or equal to) that number of days
4255 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to
4256 articles that are younger than that number of days.
3629 4257
3630 @item / n 4258 @item / n
3631 @kindex / n (Summary) 4259 @kindex / n (Summary)
3632 @findex gnus-summary-limit-to-articles 4260 @findex gnus-summary-limit-to-articles
3633 Limit the summary buffer to the current article 4261 Limit the summary buffer to the current article
3769 @c Written by Michael Ernst <mernst@cs.rice.edu> 4397 @c Written by Michael Ernst <mernst@cs.rice.edu>
3770 @lisp 4398 @lisp
3771 (setq gnus-simplify-ignored-prefixes 4399 (setq gnus-simplify-ignored-prefixes
3772 (concat 4400 (concat
3773 "\\`\\[?\\(" 4401 "\\`\\[?\\("
4402 (mapconcat
4403 'identity
4404 '("looking"
4405 "wanted" "followup" "summary\\( of\\)?"
4406 "help" "query" "problem" "question"
4407 "answer" "reference" "announce"
4408 "How can I" "How to" "Comparison of"
4409 ;; ...
4410 )
4411 "\\|")
4412 "\\)\\s *\\("
3774 (mapconcat 'identity 4413 (mapconcat 'identity
3775 '("looking" 4414 '("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 "\\|") 4415 "\\|")
3783 "\\)\\s *\\(" 4416 "\\)?\\]?:?[ \t]*"))
3784 (mapconcat 'identity
3785 '("for" "for reference" "with" "about")
3786 "\\|")
3787 "\\)?\\]?:?[ \t]*"))
3788 @end lisp 4417 @end lisp
3789 4418
3790 All words that match this regexp will be removed before comparing two 4419 All words that match this regexp will be removed before comparing two
3791 subjects. 4420 subjects.
3792 4421
3876 @item gnus-thread-hide-subtree 4505 @item gnus-thread-hide-subtree
3877 @vindex gnus-thread-hide-subtree 4506 @vindex gnus-thread-hide-subtree
3878 If non-@code{nil}, all threads will be hidden when the summary buffer is 4507 If non-@code{nil}, all threads will be hidden when the summary buffer is
3879 generated. 4508 generated.
3880 4509
4510 @item gnus-thread-expunge-below
4511 @vindex gnus-thread-expunge-below
4512 All threads that have a total score (as defined by
4513 @code{gnus-thread-score-function}) less than this number will be
4514 expunged. This variable is @code{nil} by default, which means that no
4515 threads are expunged.
4516
3881 @item gnus-thread-hide-killed 4517 @item gnus-thread-hide-killed
3882 @vindex gnus-thread-hide-killed 4518 @vindex gnus-thread-hide-killed
3883 if you kill a thread and this variable is non-@code{nil}, the subtree 4519 if you kill a thread and this variable is non-@code{nil}, the subtree
3884 will be hidden. 4520 will be hidden.
3885 4521
3891 in a new thread. 4527 in a new thread.
3892 4528
3893 @item gnus-thread-indent-level 4529 @item gnus-thread-indent-level
3894 @vindex gnus-thread-indent-level 4530 @vindex gnus-thread-indent-level
3895 This is a number that says how much each sub-thread should be indented. 4531 This is a number that says how much each sub-thread should be indented.
3896 The default is @code{4}. 4532 The default is 4.
4533
4534 @item gnus-parse-headers-hook
4535 @vindex gnus-parse-headers-hook
4536 Hook run before parsing any headers. The default value is
4537 @code{(gnus-decode-rfc1522)}, which means that QPized headers will be
4538 slightly decoded in a hackish way. This is likely to change in the
4539 future when Gnus becomes @sc{MIME}ified.
4540
3897 @end table 4541 @end table
3898 4542
3899 4543
3900 @node Thread Commands 4544 @node Thread Commands
3901 @subsection Thread Commands 4545 @subsection Thread Commands
3906 @item T k 4550 @item T k
3907 @itemx M-C-k 4551 @itemx M-C-k
3908 @kindex T k (Summary) 4552 @kindex T k (Summary)
3909 @kindex M-C-k (Summary) 4553 @kindex M-C-k (Summary)
3910 @findex gnus-summary-kill-thread 4554 @findex gnus-summary-kill-thread
3911 Mark all articles in the current sub-thread as read 4555 Mark all articles in the current (sub-)thread as read
3912 (@code{gnus-summary-kill-thread}). If the prefix argument is positive, 4556 (@code{gnus-summary-kill-thread}). If the prefix argument is positive,
3913 remove all marks instead. If the prefix argument is negative, tick 4557 remove all marks instead. If the prefix argument is negative, tick
3914 articles instead. 4558 articles instead.
3915 4559
3916 @item T l 4560 @item T l
3917 @itemx M-C-l 4561 @itemx M-C-l
3918 @kindex T l (Summary) 4562 @kindex T l (Summary)
3919 @kindex M-C-l (Summary) 4563 @kindex M-C-l (Summary)
3920 @findex gnus-summary-lower-thread 4564 @findex gnus-summary-lower-thread
3921 Lower the score of the current thread 4565 Lower the score of the current (sub-)thread
3922 (@code{gnus-summary-lower-thread}). 4566 (@code{gnus-summary-lower-thread}).
3923 4567
3924 @item T i 4568 @item T i
3925 @kindex T i (Summary) 4569 @kindex T i (Summary)
3926 @findex gnus-summary-raise-thread 4570 @findex gnus-summary-raise-thread
3927 Increase the score of the current thread 4571 Increase the score of the current (sub-)thread
3928 (@code{gnus-summary-raise-thread}). 4572 (@code{gnus-summary-raise-thread}).
3929 4573
3930 @item T # 4574 @item T #
3931 @kindex T # (Summary) 4575 @kindex T # (Summary)
3932 @findex gnus-uu-mark-thread 4576 @findex gnus-uu-mark-thread
3933 Set the process mark on the current thread 4577 Set the process mark on the current (sub-)thread
3934 (@code{gnus-uu-mark-thread}). 4578 (@code{gnus-uu-mark-thread}).
3935 4579
3936 @item T M-# 4580 @item T M-#
3937 @kindex T M-# (Summary) 4581 @kindex T M-# (Summary)
3938 @findex gnus-uu-unmark-thread 4582 @findex gnus-uu-unmark-thread
3939 Remove the process mark from the current thread 4583 Remove the process mark from the current (sub-)thread
3940 (@code{gnus-uu-unmark-thread}). 4584 (@code{gnus-uu-unmark-thread}).
3941 4585
3942 @item T T 4586 @item T T
3943 @kindex T T (Summary) 4587 @kindex T T (Summary)
3944 @findex gnus-summary-toggle-threads 4588 @findex gnus-summary-toggle-threads
3945 Toggle threading (@code{gnus-summary-toggle-threads}). 4589 Toggle threading (@code{gnus-summary-toggle-threads}).
3946 4590
3947 @item T s 4591 @item T s
3948 @kindex T s (Summary) 4592 @kindex T s (Summary)
3949 @findex gnus-summary-show-thread 4593 @findex gnus-summary-show-thread
3950 Expose the thread hidden under the current article, if any 4594 Expose the (sub-)thread hidden under the current article, if any
3951 (@code{gnus-summary-show-thread}). 4595 (@code{gnus-summary-show-thread}).
3952 4596
3953 @item T h 4597 @item T h
3954 @kindex T h (Summary) 4598 @kindex T h (Summary)
3955 @findex gnus-summary-hide-thread 4599 @findex gnus-summary-hide-thread
3956 Hide the current (sub)thread (@code{gnus-summary-hide-thread}). 4600 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}).
3957 4601
3958 @item T S 4602 @item T S
3959 @kindex T S (Summary) 4603 @kindex T S (Summary)
3960 @findex gnus-summary-show-all-threads 4604 @findex gnus-summary-show-all-threads
3961 Expose all hidden threads (@code{gnus-summary-show-all-threads}). 4605 Expose all hidden threads (@code{gnus-summary-show-all-threads}).
4111 4755
4112 4756
4113 @node Asynchronous Fetching 4757 @node Asynchronous Fetching
4114 @section Asynchronous Article Fetching 4758 @section Asynchronous Article Fetching
4115 @cindex asynchronous article fetching 4759 @cindex asynchronous article fetching
4760 @cindex article pre-fetch
4761 @cindex pre-fetch
4116 4762
4117 If you read your news from an @sc{nntp} server that's far away, the 4763 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 4764 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 4765 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 4766 article appears. Why can't Gnus just go ahead and fetch the article
4121 while you are reading the previous one? Why not, indeed. 4767 while you are reading the previous one? Why not, indeed.
4122 4768
4123 First, some caveats. There are some pitfalls to using asynchronous 4769 First, some caveats. There are some pitfalls to using asynchronous
4124 article fetching, especially the way Gnus does it. 4770 article fetching, especially the way Gnus does it.
4125 4771
4126 Let's say you are reading article 1, which is short, and article 2 is 4772 Let's say you are reading article 1, which is short, and article 2 is
4145 4791
4146 @vindex gnus-asynchronous 4792 @vindex gnus-asynchronous
4147 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should 4793 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should
4148 happen automatically. 4794 happen automatically.
4149 4795
4150 @vindex nntp-async-number 4796 @vindex gnus-use-article-prefetch
4151 You can control how many articles that are to be pre-fetched by setting 4797 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 4798 @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 4799 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 4800 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 4801 pre-fetch all the articles that it can without bound. If it is
4156 pre-fetching will be made. 4802 @code{nil}, no pre-fetching will be made.
4157 4803
4158 @vindex gnus-asynchronous-article-function 4804 @vindex gnus-async-prefetch-article-p
4159 You may wish to create some sort of scheme for choosing which articles 4805 @findex gnus-async-read-p
4160 that @code{nntp} should consider as candidates for pre-fetching. For 4806 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 4807 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 4808 the @code{gnus-async-prefetch-article-p} variable. This function should
4163 @code{gnus-asynchronous-article-function}, which will be called with an 4809 return non-@code{nil} when the article in question is to be
4164 alist where the keys are the article numbers. Your function should 4810 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 4811 @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. 4812 data structure as the only parameter.
4813
4814 If, for instance, you wish to pre-fetch only unread articles that are
4815 shorter than 100 lines, you could say something like:
4816
4817 @lisp
4818 (defun my-async-short-unread-p (data)
4819 "Return non-nil for short, unread articles."
4820 (and (gnus-data-unread-p data)
4821 (< (mail-header-lines (gnus-data-header data))
4822 100)))
4823
4824 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p)
4825 @end lisp
4826
4827 These functions will be called many, many times, so they should
4828 preferrably be short and sweet to avoid slowing down Gnus too much.
4829 It's also probably a good idea to byte-compile things like this.
4830
4831 @vindex gnus-prefetched-article-deletion-strategy
4832 Articles have to be removed from the asynch buffer sooner or later. The
4833 @code{gnus-prefetched-article-deletion-strategy} says when to remove
4834 articles. This is a list that may contain the following elements:
4835
4836 @table @code
4837 @item read
4838 Remove articles when they are read.
4839
4840 @item exit
4841 Remove articles when exiting the group.
4842 @end table
4843
4844 The default value is @code{(read exit)}.
4845
4846 @vindex gnus-use-header-prefetch
4847 If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles
4848 from the next group.
4167 4849
4168 4850
4169 @node Article Caching 4851 @node Article Caching
4170 @section Article Caching 4852 @section Article Caching
4171 @cindex article caching 4853 @cindex article caching
4350 @item O f 5032 @item O f
4351 @kindex O f (Summary) 5033 @kindex O f (Summary)
4352 @findex gnus-summary-save-article-file 5034 @findex gnus-summary-save-article-file
4353 Save the current article in plain file format 5035 Save the current article in plain file format
4354 (@code{gnus-summary-save-article-file}). 5036 (@code{gnus-summary-save-article-file}).
5037
5038 @item O F
5039 @kindex O F (Summary)
5040 @findex gnus-summary-write-article-file
5041 Write the current article in plain file format, overwriting any previous
5042 file contents (@code{gnus-summary-write-article-file}).
4355 5043
4356 @item O b 5044 @item O b
4357 @kindex O b (Summary) 5045 @kindex O b (Summary)
4358 @findex gnus-summary-save-article-body-file 5046 @findex gnus-summary-save-article-body-file
4359 Save the current article body in plain file format 5047 Save the current article body in plain file format
4461 5149
4462 @table @code 5150 @table @code
4463 5151
4464 @item gnus-Numeric-save-name 5152 @item gnus-Numeric-save-name
4465 @findex gnus-Numeric-save-name 5153 @findex gnus-Numeric-save-name
4466 Generates file names that look like @file{~/News/Alt.andrea-dworkin/45}. 5154 File names like @file{~/News/Alt.andrea-dworkin/45}.
4467 5155
4468 @item gnus-numeric-save-name 5156 @item gnus-numeric-save-name
4469 @findex gnus-numeric-save-name 5157 @findex gnus-numeric-save-name
4470 Generates file names that look like @file{~/News/alt.andrea-dworkin/45}. 5158 File names like @file{~/News/alt.andrea-dworkin/45}.
4471 5159
4472 @item gnus-Plain-save-name 5160 @item gnus-Plain-save-name
4473 @findex gnus-Plain-save-name 5161 @findex gnus-Plain-save-name
4474 Generates file names that look like @file{~/News/Alt.andrea-dworkin}. 5162 File names like @file{~/News/Alt.andrea-dworkin}.
4475 5163
4476 @item gnus-plain-save-name 5164 @item gnus-plain-save-name
4477 @findex gnus-plain-save-name 5165 @findex gnus-plain-save-name
4478 Generates file names that look like @file{~/News/alt.andrea-dworkin}. 5166 File names like @file{~/News/alt.andrea-dworkin}.
4479 @end table 5167 @end table
4480 5168
4481 @vindex gnus-split-methods 5169 @vindex gnus-split-methods
4482 You can have Gnus suggest where to save articles by plonking a regexp into 5170 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 5171 the @code{gnus-split-methods} alist. For instance, if you would like to
4722 @cindex sox 5410 @cindex sox
4723 This variable is consulted first when viewing files. If you wish to use, 5411 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 5412 for instance, @code{sox} to convert an @samp{.au} sound file, you could
4725 say something like: 5413 say something like:
4726 @lisp 5414 @lisp
4727 (setq gnus-uu-user-view-rules 5415 (setq gnus-uu-user-view-rules
4728 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\"))) 5416 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
4729 @end lisp 5417 @end lisp
4730 5418
4731 @item gnus-uu-user-view-rules-end 5419 @item gnus-uu-user-view-rules-end
4732 @vindex gnus-uu-user-view-rules-end 5420 @vindex gnus-uu-user-view-rules-end
4733 This variable is consulted if Gnus couldn't make any matches from the 5421 This variable is consulted if Gnus couldn't make any matches from the
4760 5448
4761 @item gnus-uu-grab-move 5449 @item gnus-uu-grab-move
4762 @findex gnus-uu-grab-move 5450 @findex gnus-uu-grab-move
4763 Move the file (if you're using a saving function.) 5451 Move the file (if you're using a saving function.)
4764 @end table 5452 @end table
5453
5454 @item gnus-uu-be-dangerous
5455 @vindex gnus-uu-be-dangerous
5456 Specifies what to do if unusual situations arise during decoding. If
5457 @code{nil}, be as conservative as possible. If @code{t}, ignore things
5458 that didn't work, and overwrite existing files. Otherwise, ask each
5459 time.
4765 5460
4766 @item gnus-uu-ignore-files-by-name 5461 @item gnus-uu-ignore-files-by-name
4767 @vindex gnus-uu-ignore-files-by-name 5462 @vindex gnus-uu-ignore-files-by-name
4768 Files with name matching this regular expression won't be viewed. 5463 Files with name matching this regular expression won't be viewed.
4769 5464
4921 writing, so there are tons of functions and variables to make reading 5616 writing, so there are tons of functions and variables to make reading
4922 these articles easier. 5617 these articles easier.
4923 5618
4924 @menu 5619 @menu
4925 * Article Highlighting:: You want to make the article look like fruit salad. 5620 * Article Highlighting:: You want to make the article look like fruit salad.
5621 * Article Fontisizing:: Making emphasized text look niced.
4926 * Article Hiding:: You also want to make certain info go away. 5622 * Article Hiding:: You also want to make certain info go away.
4927 * Article Washing:: Lots of way-neat functions to make life better. 5623 * Article Washing:: Lots of way-neat functions to make life better.
4928 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. 5624 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like.
4929 * Article Date:: Grumble, UT! 5625 * Article Date:: Grumble, UT!
5626 * Article Signature:: What is a signature?
4930 @end menu 5627 @end menu
4931 5628
4932 5629
4933 @node Article Highlighting 5630 @node Article Highlighting
4934 @subsection Article Highlighting 5631 @subsection Article Highlighting
5019 @kindex W H s (Summary) 5716 @kindex W H s (Summary)
5020 @vindex gnus-signature-separator 5717 @vindex gnus-signature-separator
5021 @vindex gnus-signature-face 5718 @vindex gnus-signature-face
5022 @findex gnus-article-highlight-signature 5719 @findex gnus-article-highlight-signature
5023 Highlight the signature (@code{gnus-article-highlight-signature}). 5720 Highlight the signature (@code{gnus-article-highlight-signature}).
5024 Everything after @code{gnus-signature-separator} in an article will be 5721 Everything after @code{gnus-signature-separator} (@pxref{Article
5025 considered a signature and will be highlighted with 5722 Signature}) in an article will be considered a signature and will be
5026 @code{gnus-signature-face}, which is @code{italic} by default. 5723 highlighted with @code{gnus-signature-face}, which is @code{italic} by
5027 5724 default.
5028 @end table 5725
5726 @end table
5727
5728
5729 @node Article Fontisizing
5730 @subsection Article Fontisizing
5731 @cindex emphasis
5732 @cindex article emphasis
5733
5734 @findex gnus-article-emphasize
5735 @kindex W e (Summary)
5736 People commonly add emphasis to words in news articles by writing things
5737 like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by
5738 running the article through the @kbd{W e}
5739 (@code{gnus-article-emphasize}) command.
5740
5741 @vindex gnus-article-emphasis
5742 How the emphasis is computed is controlled by the
5743 @code{gnus-article-emphasis} variable. This is an alist where the first
5744 element is a regular expression to be matched. The second is a number
5745 that says what regular expression grouping used to find the entire
5746 emphasized word. The third is a number that says what regexp grouping
5747 should be displayed and highlighted. (The text between these two
5748 groupings will be hidden.) The fourth is the face used for
5749 highlighting.
5750
5751 @lisp
5752 (setq gnus-article-emphasis
5753 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline)
5754 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold)))
5755 @end lisp
5756
5757 @vindex gnus-emphasis-underline
5758 @vindex gnus-emphasis-bold
5759 @vindex gnus-emphasis-italic
5760 @vindex gnus-emphasis-underline-bold
5761 @vindex gnus-emphasis-underline-italic
5762 @vindex gnus-emphasis-bold-italic
5763 @vindex gnus-emphasis-underline-bold-italic
5764 By default, there are seven rules, and they use the following faces:
5765 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic},
5766 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic},
5767 @code{gnus-emphasis-underline-italic},
5768 @code{gnus-emphasis-undeline-bold}, and
5769 @code{gnus-emphasis-underline-bold-italic}.
5770
5771 If you want to change these faces, you can either use @kbd{M-x
5772 customize}, or you can use @code{copy-face}. For instance, if you want
5773 to make @code{gnus-emphasis-italic} use a red face instead, you could
5774 say something like:
5775
5776 @lisp
5777 (copy-face 'red 'gnus-emphasis-italic)
5778 @end lisp
5029 5779
5030 5780
5031 @node Article Hiding 5781 @node Article Hiding
5032 @subsection Article Hiding 5782 @subsection Article Hiding
5033 @cindex article hiding 5783 @cindex article hiding
5055 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. 5805 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}.
5056 5806
5057 @item W W s 5807 @item W W s
5058 @kindex W W s (Summary) 5808 @kindex W W s (Summary)
5059 @findex gnus-article-hide-signature 5809 @findex gnus-article-hide-signature
5060 Hide signature (@code{gnus-article-hide-signature}). 5810 Hide signature (@code{gnus-article-hide-signature}). @xref{Article
5811 Signature}.
5061 5812
5062 @item W W p 5813 @item W W p
5063 @kindex W W p (Summary) 5814 @kindex W W p (Summary)
5064 @findex gnus-article-hide-pgp 5815 @findex gnus-article-hide-pgp
5065 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). 5816 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}).
5066 5817
5067 @item W W P 5818 @item W W P
5068 @kindex W W P (Summary) 5819 @kindex W W P (Summary)
5069 @findex gnus-article-hide-pem 5820 @findex gnus-article-hide-pem
5070 Hide @sc{pem} (privacy enhavnced hessages) gruft 5821 Hide @sc{pem} (privacy enhanced messages) gruft
5071 (@code{gnus-article-hide-pem}). 5822 (@code{gnus-article-hide-pem}).
5072 5823
5073 @item W W c 5824 @item W W c
5074 @kindex W W c (Summary) 5825 @kindex W W c (Summary)
5075 @findex gnus-article-hide-citation 5826 @findex gnus-article-hide-citation
5090 5841
5091 @item gnus-cited-text-button-line-format 5842 @item gnus-cited-text-button-line-format
5092 @vindex gnus-cited-text-button-line-format 5843 @vindex gnus-cited-text-button-line-format
5093 Gnus adds buttons show where the cited text has been hidden, and to 5844 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 5845 allow toggle hiding the text. The format of the variable is specified
5095 by this format-like variable. These specs are legal: 5846 by this format-like variable (@pxref{Formatting Variables}). These
5847 specs are legal:
5096 5848
5097 @table @samp 5849 @table @samp
5098 @item b 5850 @item b
5099 Start point of the hidden text. 5851 Start point of the hidden text.
5100 @item e 5852 @item e
5124 hidden. If you give a positive prefix, they will always hide. 5876 hidden. If you give a positive prefix, they will always hide.
5125 5877
5126 Also @pxref{Article Highlighting} for further variables for 5878 Also @pxref{Article Highlighting} for further variables for
5127 citation customization. 5879 citation customization.
5128 5880
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 5881
5138 @node Article Washing 5882 @node Article Washing
5139 @subsection Article Washing 5883 @subsection Article Washing
5140 @cindex washing 5884 @cindex washing
5141 @cindex article washing 5885 @cindex article washing
5189 @findex gnus-article-fill-cited-article 5933 @findex gnus-article-fill-cited-article
5190 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this 5934 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 5935 function in @code{gnus-article-display-hook}, it should be run fairly
5192 late and certainly after any highlighting. 5936 late and certainly after any highlighting.
5193 5937
5938 You can give the command a numerical prefix to specify the width to use
5939 when filling.
5940
5194 @item W c 5941 @item W c
5195 @kindex W c (Summary) 5942 @kindex W c (Summary)
5196 @findex gnus-article-remove-cr 5943 @findex gnus-article-remove-cr
5197 Remove CR (@code{gnus-article-remove-cr}). 5944 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 5945
5205 @item W q 5946 @item W q
5206 @kindex W q (Summary) 5947 @kindex W q (Summary)
5207 @findex gnus-article-de-quoted-unreadable 5948 @findex gnus-article-de-quoted-unreadable
5208 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). 5949 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
5239 @kindex W B (Summary) 5980 @kindex W B (Summary)
5240 @findex gnus-article-add-buttons-to-head 5981 @findex gnus-article-add-buttons-to-head
5241 Add clickable buttons to the article headers 5982 Add clickable buttons to the article headers
5242 (@code{gnus-article-add-buttons-to-head}). 5983 (@code{gnus-article-add-buttons-to-head}).
5243 5984
5985 @item W E l
5986 @kindex W E l (Summary)
5987 @findex gnus-article-strip-leading-blank-lines
5988 Remove all blank lines from the beginning of the article
5989 (@code{gnus-article-strip-leading-blank-lines}).
5990
5991 @item W E m
5992 @kindex W E m (Summary)
5993 @findex gnus-article-strip-multiple-blank-lines
5994 Replace all blank lines with empty lines and then all multiple empty
5995 lines with a single empty line.
5996 (@code{gnus-article-strip-multiple-blank-lines}).
5997
5998 @item W E t
5999 @kindex W E t (Summary)
6000 @findex gnus-article-remove-trailing-blank-lines
6001 Remove all blank lines at the end of the article
6002 (@code{gnus-article-remove-trailing-blank-lines}).
6003
6004 @item W E a
6005 @kindex W E a (Summary)
6006 @findex gnus-article-strip-blank-lines
6007 Do all the three commands above
6008 (@code{gnus-article-strip-blank-lines}).
6009
5244 @end table 6010 @end table
5245 6011
5246 6012
5247 @node Article Buttons 6013 @node Article Buttons
5248 @subsection Article Buttons 6014 @subsection Article Buttons
5275 @samp{<URL:\\([^\n\r>]*\\)>}. 6041 @samp{<URL:\\([^\n\r>]*\\)>}.
5276 6042
5277 @item button-par 6043 @item button-par
5278 Gnus has to know which parts of the match is to be highlighted. This is 6044 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 6045 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. 6046 highlighted. If you want it all highlighted, you use 0 here.
5281 6047
5282 @item use-p 6048 @item use-p
5283 This form will be @code{eval}ed, and if the result is non-@code{nil}, 6049 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 6050 this is considered a match. This is useful if you want extra sifting to
5285 avoid false matches. 6051 avoid false matches.
5316 A regular expression that matches embedded URLs. It is used in the 6082 A regular expression that matches embedded URLs. It is used in the
5317 default values of the variables above. 6083 default values of the variables above.
5318 6084
5319 @item gnus-article-button-face 6085 @item gnus-article-button-face
5320 @vindex gnus-article-button-face 6086 @vindex gnus-article-button-face
5321 Face used on bottons. 6087 Face used on buttons.
5322 6088
5323 @item gnus-article-mouse-face 6089 @item gnus-article-mouse-face
5324 @vindex gnus-article-mouse-face 6090 @vindex gnus-article-mouse-face
5325 Face is used when the mouse cursor is over a button. 6091 Face is used when the mouse cursor is over a button.
5326 6092
5344 6110
5345 @item W T l 6111 @item W T l
5346 @kindex W T l (Summary) 6112 @kindex W T l (Summary)
5347 @findex gnus-article-date-local 6113 @findex gnus-article-date-local
5348 Display the date in the local timezone (@code{gnus-article-date-local}). 6114 Display the date in the local timezone (@code{gnus-article-date-local}).
6115
6116 @item W T s
6117 @kindex W T s (Summary)
6118 @vindex gnus-article-time-format
6119 @findex gnus-article-date-user
6120 @findex format-time-string
6121 Display the date using a user-defined format
6122 (@code{gnus-article-date-user}). The format is specified by the
6123 @code{gnus-article-time-format} variable, and is a string that's passed
6124 to @code{format-time-string}. See the documentation of that variable
6125 for a list possible format specs.
5349 6126
5350 @item W T e 6127 @item W T e
5351 @kindex W T e (Summary) 6128 @kindex W T e (Summary)
5352 @findex gnus-article-date-lapsed 6129 @findex gnus-article-date-lapsed
5353 Say how much time has (e)lapsed between the article was posted and now 6130 Say how much time has (e)lapsed between the article was posted and now
5363 @emph{totally} impossible. Don't you trust me? *titter* 6140 @emph{totally} impossible. Don't you trust me? *titter*
5364 6141
5365 @end table 6142 @end table
5366 6143
5367 6144
6145 @node Article Signature
6146 @subsection Article Signature
6147 @cindex signatures
6148 @cindex article signature
6149
6150 @vindex gnus-signature-separator
6151 Each article is divided into two parts---the head and the body. The
6152 body can be divided into a signature part and a text part. The variable
6153 that says what is to be considered a signature is
6154 @code{gnus-signature-separator}. This is normally the standard
6155 @samp{^-- $} as mandated by son-of-RFC 1036. However, many people use
6156 non-standard signature separators, so this variable can also be a list
6157 of regular expressions to be tested, one by one. (Searches are done
6158 from the end of the body towards the beginning.) One likely value is:
6159
6160 @lisp
6161 (setq gnus-signature-separator
6162 '("^-- $" ; The standard
6163 "^-- *$" ; A common mangling
6164 "^-------*$" ; Many people just use a looong
6165 ; line of dashes. Shame!
6166 "^ *--------*$" ; Double-shame!
6167 "^________*$" ; Underscores are also popular
6168 "^========*$")) ; Pervert!
6169 @end lisp
6170
6171 The more permissive you are, the more likely it is that you'll get false
6172 positives.
6173
6174 @vindex gnus-signature-limit
6175 @code{gnus-signature-limit} provides a limit to what is considered a
6176 signature.
6177
6178 @enumerate
6179 @item
6180 If it is an integer, no signature may be longer (in characters) than
6181 that integer.
6182 @item
6183 If it is a floating point number, no signature may be longer (in lines)
6184 than that number.
6185 @item
6186 If it is a function, the function will be called without any parameters,
6187 and if it returns @code{nil}, there is no signature in the buffer.
6188 @item
6189 If it is a string, it will be used as a regexp. If it matches, the text
6190 in question is not a signature.
6191 @end enumerate
6192
6193 This variable can also be a list where the elements may be of the types
6194 listed above.
6195
6196
6197 @node Article Commands
6198 @section Article Commands
6199
6200 @table @kbd
6201
6202 @item A P
6203 @cindex PostScript
6204 @cindex printing
6205 @kindex A P (Summary)
6206 @findex gnus-summary-print-article
6207 Generate and print a PostScript image of the article buffer
6208 (@code{gnus-summary-print-article}).
6209
6210 @end table
6211
6212
5368 @node Summary Sorting 6213 @node Summary Sorting
5369 @section Summary Sorting 6214 @section Summary Sorting
5370 @cindex summary sorting 6215 @cindex summary sorting
5371 6216
5372 You can have the summary buffer sorted in various ways, even though I 6217 You can have the summary buffer sorted in various ways, even though I
5391 6236
5392 @item C-c C-s C-d 6237 @item C-c C-s C-d
5393 @kindex C-c C-s C-d (Summary) 6238 @kindex C-c C-s C-d (Summary)
5394 @findex gnus-summary-sort-by-date 6239 @findex gnus-summary-sort-by-date
5395 Sort by date (@code{gnus-summary-sort-by-date}). 6240 Sort by date (@code{gnus-summary-sort-by-date}).
6241
6242 @item C-c C-s C-l
6243 @kindex C-c C-s C-l (Summary)
6244 @findex gnus-summary-sort-by-lines
6245 Sort by lines (@code{gnus-summary-sort-by-lines}).
5396 6246
5397 @item C-c C-s C-i 6247 @item C-c C-s C-i
5398 @kindex C-c C-s C-i (Summary) 6248 @kindex C-c C-s C-i (Summary)
5399 @findex gnus-summary-sort-by-score 6249 @findex gnus-summary-sort-by-score
5400 Sort by score (@code{gnus-summary-sort-by-score}). 6250 Sort by score (@code{gnus-summary-sort-by-score}).
5422 can just press @kbd{^} or @kbd{A r} 6272 can just press @kbd{^} or @kbd{A r}
5423 (@code{gnus-summary-refer-parent-article}). If everything goes well, 6273 (@code{gnus-summary-refer-parent-article}). If everything goes well,
5424 you'll get the parent. If the parent is already displayed in the 6274 you'll get the parent. If the parent is already displayed in the
5425 summary buffer, point will just move to this article. 6275 summary buffer, point will just move to this article.
5426 6276
6277 If given a positive numerical prefix, fetch that many articles back into
6278 the ancestry. If given a negative numerical prefix, fetch just that
6279 ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the
6280 grandparent and the grandgrandparent of the current article. If you say
6281 @kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current
6282 article.
6283
5427 @findex gnus-summary-refer-references 6284 @findex gnus-summary-refer-references
5428 @kindex A R (Summary) 6285 @kindex A R (Summary)
5429 You can have Gnus fetch all articles mentioned in the @code{References} 6286 You can have Gnus fetch all articles mentioned in the @code{References}
5430 header of the article by pushing @kbd{A R} 6287 header of the article by pushing @kbd{A R}
5431 (@code{gnus-summary-refer-references}). 6288 (@code{gnus-summary-refer-references}).
5432 6289
5433 @findex gnus-summary-refer-article 6290 @findex gnus-summary-refer-article
5434 @kindex M-^ (Summary) 6291 @kindex M-^ (Summary)
6292 @cindex Message-ID
6293 @cindex fetching by Message-ID
5435 You can also ask the @sc{nntp} server for an arbitrary article, no 6294 You can also ask the @sc{nntp} server for an arbitrary article, no
5436 matter what group it belongs to. @kbd{M-^} 6295 matter what group it belongs to. @kbd{M-^}
5437 (@code{gnus-summary-refer-article}) will ask you for a 6296 (@code{gnus-summary-refer-article}) will ask you for a
5438 @code{Message-ID}, which is one of those long thingies that look 6297 @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 6298 that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You
5440 it all exactly right. No fuzzy searches, I'm afraid. 6299 have to get it all exactly right. No fuzzy searches, I'm afraid.
5441 6300
5442 @vindex gnus-refer-article-method 6301 @vindex gnus-refer-article-method
5443 If the group you are reading is located on a backend that does not 6302 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}), 6303 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 6304 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It
5485 available. 6344 available.
5486 6345
5487 Here are the available keystrokes when using pick mode: 6346 Here are the available keystrokes when using pick mode:
5488 6347
5489 @table @kbd 6348 @table @kbd
6349 @item .
6350 @kindex . (Pick)
6351 @findex gnus-summary-mark-as-processable
6352 Pick the article on the current line
6353 (@code{gnus-summary-mark-as-processable}). If given a numerical prefix,
6354 go to the article on that line and pick that article. (The line number
6355 is normally displayed on the beginning of the summary pick lines.)
6356
5490 @item SPACE 6357 @item SPACE
5491 @kindex SPACE (Pick) 6358 @kindex SPACE (Pick)
5492 @findex gnus-summary-mark-as-processable 6359 @findex gnus-pick-next-page
5493 Pick the article (@code{gnus-summary-mark-as-processable}). 6360 Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If
6361 at the end of the buffer, start reading the picked articles.
5494 6362
5495 @item u 6363 @item u
5496 @kindex u (Pick) 6364 @kindex u (Pick)
5497 @findex gnus-summary-unmark-as-processable 6365 @findex gnus-summary-unmark-as-processable
5498 Unpick the article (@code{gnus-summary-unmark-as-processable}). 6366 Unpick the article (@code{gnus-summary-unmark-as-processable}).
5559 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) 6427 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
5560 @end lisp 6428 @end lisp
5561 6429
5562 @vindex gnus-pick-mode-hook 6430 @vindex gnus-pick-mode-hook
5563 @code{gnus-pick-mode-hook} is run in pick minor mode buffers. 6431 @code{gnus-pick-mode-hook} is run in pick minor mode buffers.
6432
6433 @vindex gnus-mark-unpicked-articles-as-read
6434 If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark
6435 all unpicked articles as read. The default is @code{nil}.
6436
6437 @vindex gnus-summary-pick-line-format
6438 The summary line format in pick mode is slightly different than the
6439 standard format. At the beginning of each line the line number is
6440 displayed. The pick mode line format is controlled by the
6441 @code{gnus-summary-pick-line-format} variable (@pxref{Formatting
6442 Variables}). It accepts the same format specs that
6443 @code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}).
5564 6444
5565 6445
5566 @node Binary Groups 6446 @node Binary Groups
5567 @subsection Binary Groups 6447 @subsection Binary Groups
5568 @cindex binary groups 6448 @cindex binary groups
5675 6555
5676 Here's and example from a horizontal tree buffer: 6556 Here's and example from a horizontal tree buffer:
5677 6557
5678 @example 6558 @example
5679 @{***@}-(***)-[odd]-[Gun] 6559 @{***@}-(***)-[odd]-[Gun]
5680 | \[Jan] 6560 | \[Jan]
5681 | \[odd]-[Eri] 6561 | \[odd]-[Eri]
5682 | \(***)-[Eri] 6562 | \(***)-[Eri]
5683 | \[odd]-[Paa] 6563 | \[odd]-[Paa]
5684 \[Bjo] 6564 \[Bjo]
5685 \[Gun] 6565 \[Gun]
5686 \[Gun]-[Jor] 6566 \[Gun]-[Jor]
5687 @end example 6567 @end example
5688 6568
5720 (@code{gnus-summary-expire-articles}). 6600 (@code{gnus-summary-expire-articles}).
5721 6601
5722 @item B M-C-e 6602 @item B M-C-e
5723 @kindex B M-C-e (Summary) 6603 @kindex B M-C-e (Summary)
5724 @findex gnus-summary-expire-articles-now 6604 @findex gnus-summary-expire-articles-now
5725 Expunge all the expirable articles in the group 6605 Delete all the expirable articles in the group
5726 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} 6606 (@code{gnus-summary-expire-articles-now}). This means that @strong{all}
5727 articles that are eligible for expiry in the current group will 6607 articles that are eligible for expiry in the current group will
5728 disappear forever into that big @file{/dev/null} in the sky. 6608 disappear forever into that big @file{/dev/null} in the sky.
5729 6609
5730 @item B DEL 6610 @item B DEL
5766 6646
5767 @item B r 6647 @item B r
5768 @kindex B r (Summary) 6648 @kindex B r (Summary)
5769 @findex gnus-summary-respool-article 6649 @findex gnus-summary-respool-article
5770 Respool the mail article (@code{gnus-summary-move-article}). 6650 Respool the mail article (@code{gnus-summary-move-article}).
6651 @code{gnus-summary-respool-default-method} will be used as the default
6652 select method when respooling. This variable is @code{nil} by default,
6653 which means that the current group select method will be used instead.
5771 6654
5772 @item B w 6655 @item B w
5773 @itemx e 6656 @itemx e
5774 @kindex B w (Summary) 6657 @kindex B w (Summary)
5775 @kindex e (Summary) 6658 @kindex e (Summary)
5783 @kindex B q (Summary) 6666 @kindex B q (Summary)
5784 @findex gnus-summary-respool-query 6667 @findex gnus-summary-respool-query
5785 If you want to re-spool an article, you might be curious as to what group 6668 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 6669 the article will end up in before you do the re-spooling. This command
5787 will tell you (@code{gnus-summary-respool-query}). 6670 will tell you (@code{gnus-summary-respool-query}).
6671
6672 @item B p
6673 @kindex B p (Summary)
6674 @findex gnus-summary-article-posted-p
6675 Some people have a tendency to send you "courtesy" copies when they
6676 follow up to articles you have posted. These usually have a
6677 @code{Newsgroups} header in them, but not always. This command
6678 (@code{gnus-summary-article-posted-p}) will try to fetch the current
6679 article from your news server (or rather, from
6680 @code{gnus-refer-article-method} or @code{gnus-select-method}) and will
6681 report back whether it found the article or not. Even if it says that
6682 it didn't find the article, it may have been posted anyway---mail
6683 propagation is much faster than news propagation, and the news copy may
6684 just not have arrived yet.
6685
5788 @end table 6686 @end table
5789 6687
5790 @vindex gnus-move-split-methods 6688 @vindex gnus-move-split-methods
5791 @cindex moving articles 6689 @cindex moving articles
5792 If you move (or copy) articles regularly, you might wish to have Gnus 6690 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 6691 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} 6692 variable that uses the same syntax as @code{gnus-split-methods}
5795 (@pxref{Saving Articles}). You may customize that variable to create 6693 (@pxref{Saving Articles}). You may customize that variable to create
5796 suggestions you find reasonable. 6694 suggestions you find reasonable.
5797 6695
6696 @lisp
6697 (setq gnus-move-split-methods
6698 '(("^From:.*Lars Magne" "nnml:junk")
6699 ("^Subject:.*gnus" "nnfolder:important")
6700 (".*" "nnml:misc")))
6701 @end lisp
6702
5798 6703
5799 @node Various Summary Stuff 6704 @node Various Summary Stuff
5800 @section Various Summary Stuff 6705 @section Various Summary Stuff
5801 6706
5802 @menu 6707 @menu
5803 * Summary Group Information:: Information oriented commands. 6708 * Summary Group Information:: Information oriented commands.
5804 * Searching for Articles:: Multiple article commands. 6709 * Searching for Articles:: Multiple article commands.
6710 * Summary Generation Commands:: (Re)generating the summary buffer.
5805 * Really Various Summary Commands:: Those pesky non-conformant commands. 6711 * Really Various Summary Commands:: Those pesky non-conformant commands.
5806 @end menu 6712 @end menu
5807 6713
5808 @table @code 6714 @table @code
5809 @vindex gnus-summary-mode-hook 6715 @vindex gnus-summary-mode-hook
5852 rereading the description from the server. 6758 rereading the description from the server.
5853 6759
5854 @item H h 6760 @item H h
5855 @kindex H h (Summary) 6761 @kindex H h (Summary)
5856 @findex gnus-summary-describe-briefly 6762 @findex gnus-summary-describe-briefly
5857 Give a very brief description of the most important summary keystrokes 6763 Give an extremely brief description of the most important summary
5858 (@code{gnus-summary-describe-briefly}). 6764 keystrokes (@code{gnus-summary-describe-briefly}).
5859 6765
5860 @item H i 6766 @item H i
5861 @kindex H i (Summary) 6767 @kindex H i (Summary)
5862 @findex gnus-info-find-node 6768 @findex gnus-info-find-node
5863 Go to the Gnus info node (@code{gnus-info-find-node}). 6769 Go to the Gnus info node (@code{gnus-info-find-node}).
5893 @findex gnus-summary-universal-argument 6799 @findex gnus-summary-universal-argument
5894 Perform any operation on all articles that have been marked with 6800 Perform any operation on all articles that have been marked with
5895 the process mark (@code{gnus-summary-universal-argument}). 6801 the process mark (@code{gnus-summary-universal-argument}).
5896 @end table 6802 @end table
5897 6803
6804 @node Summary Generation Commands
6805 @subsection Summary Generation Commands
6806
6807 @table @kbd
6808
6809 @item Y g
6810 @kindex Y g (Summary)
6811 @findex gnus-summary-prepare
6812 Regenerate the current summary buffer (@code{gnus-summary-prepare}).
6813
6814 @item Y c
6815 @kindex Y c (Summary)
6816 @findex gnus-summary-insert-cached-articles
6817 Pull all cached articles (for the current group) into the summary buffer
6818 (@code{gnus-summary-insert-cached-articles}).
6819
6820 @end table
6821
5898 6822
5899 @node Really Various Summary Commands 6823 @node Really Various Summary Commands
5900 @subsection Really Various Summary Commands 6824 @subsection Really Various Summary Commands
5901 6825
5902 @table @kbd 6826 @table @kbd
5903 6827
5904 @item A D 6828 @item C-d
5905 @kindex A D (Summary) 6829 @kindex C-d (Summary)
5906 @findex gnus-summary-enter-digest-group 6830 @findex gnus-summary-enter-digest-group
5907 If the current article is a collection of other articles (for instance, 6831 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 6832 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 6833 article (@code{gnus-summary-enter-digest-group}). Gnus will try to
5910 guess what article type is currently displayed unless you give a prefix 6834 guess what article type is currently displayed unless you give a prefix
5911 to this command, which forces a ``digest'' interpretation. Basically, 6835 to this command, which forces a ``digest'' interpretation. Basically,
5912 whenever you see a message that is a collection of other messages on 6836 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 6837 some format, you @kbd{C-d} and read these messages in a more convenient
5914 fashion. 6838 fashion.
6839
6840 @item M-C-d
6841 @kindex M-C-d (Summary)
6842 @findex gnus-summary-read-document
6843 This command is very similar to the one above, but lets you gather
6844 several documents into one biiig group
6845 (@code{gnus-summary-read-document}). It does this by opening several
6846 @code{nndoc} groups for each document, and then opening an
6847 @code{nnvirtual} group on top of these @code{nndoc} groups. This
6848 command understands the process/prefix convention
6849 (@pxref{Process/Prefix}).
5915 6850
5916 @item C-t 6851 @item C-t
5917 @kindex C-t (Summary) 6852 @kindex C-t (Summary)
5918 @findex gnus-summary-toggle-truncation 6853 @findex gnus-summary-toggle-truncation
5919 Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}). 6854 Toggle truncation of summary lines
6855 (@code{gnus-summary-toggle-truncation}). This will probably confuse the
6856 line centering function in the summary buffer, so it's not a good idea
6857 to have truncation switched off while reading articles.
5920 6858
5921 @item = 6859 @item =
5922 @kindex = (Summary) 6860 @kindex = (Summary)
5923 @findex gnus-summary-expand-window 6861 @findex gnus-summary-expand-window
5924 Expand the summary buffer window (@code{gnus-summary-expand-window}). 6862 Expand the summary buffer window (@code{gnus-summary-expand-window}).
5925 If given a prefix, force an @code{article} window configuration. 6863 If given a prefix, force an @code{article} window configuration.
6864
5926 @end table 6865 @end table
5927 6866
5928 6867
5929 @node Exiting the Summary Buffer 6868 @node Exiting the Summary Buffer
5930 @section Exiting the Summary Buffer 6869 @section Exiting the Summary Buffer
5946 Exit the current group and update all information on the group 6885 Exit the current group and update all information on the group
5947 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is 6886 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is
5948 called before doing much of the exiting, and calls 6887 called before doing much of the exiting, and calls
5949 @code{gnus-summary-expire-articles} by default. 6888 @code{gnus-summary-expire-articles} by default.
5950 @code{gnus-summary-exit-hook} is called after finishing the exiting 6889 @code{gnus-summary-exit-hook} is called after finishing the exiting
5951 process. 6890 process. @code{gnus-group-no-more-groups-hook} is run when returning to
6891 group mode having no more (unread) groups.
5952 6892
5953 @item Z E 6893 @item Z E
5954 @itemx Q 6894 @itemx Q
5955 @kindex Z E (Summary) 6895 @kindex Z E (Summary)
5956 @kindex Q (Summary) 6896 @kindex Q (Summary)
6003 @item Z P 6943 @item Z P
6004 @kindex Z P (Summary) 6944 @kindex Z P (Summary)
6005 @findex gnus-summary-prev-group 6945 @findex gnus-summary-prev-group
6006 Exit the group and go to the previous group 6946 Exit the group and go to the previous group
6007 (@code{gnus-summary-prev-group}). 6947 (@code{gnus-summary-prev-group}).
6948
6949 @item Z s
6950 @kindex Z s (Summary)
6951 @findex gnus-summary-save-newsrc
6952 Save the current number of read/marked articles in the dribble buffer
6953 and then save the dribble buffer (@code{gnus-summary-save-newsrc}). If
6954 given a prefix, also save the @file{.newsrc} file(s). Using this
6955 command will make exit without updating (the @kbd{Q} command) worthless.
6008 @end table 6956 @end table
6009 6957
6010 @vindex gnus-exit-group-hook 6958 @vindex gnus-exit-group-hook
6011 @code{gnus-exit-group-hook} is called when you exit the current 6959 @code{gnus-exit-group-hook} is called when you exit the current
6012 group. 6960 group.
6032 summary buffer. If the @code{gnus-use-cross-reference} variable is 6980 summary buffer. If the @code{gnus-use-cross-reference} variable is
6033 @code{t} (which is the default), articles that are cross-referenced to 6981 @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 6982 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 6983 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 6984 neither @code{nil} nor @code{t}, the article will be marked as read in
6037 both subscribed and unsubscribed groups. 6985 both subscribed and unsubscribed groups (@pxref{Crosspost Handling}).
6986
6987
6988 @node Crosspost Handling
6989 @section Crosspost Handling
6038 6990
6039 @cindex velveeta 6991 @cindex velveeta
6040 @cindex spamming 6992 @cindex spamming
6041 Marking cross-posted articles as read ensures that you'll never have to 6993 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 6994 read the same article more than once. Unless, of course, somebody has
6043 posted it to several groups separately. Posting the same article to 6995 posted it to several groups separately. Posting the same article to
6044 several groups (not cross-posting) is called @dfn{spamming}, and you are 6996 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 6997 by law required to send nasty-grams to anyone who perpetrates such a
6046 heinous crime. 6998 heinous crime. You may want to try NoCeM handling to filter out spam
6999 (@pxref{NoCeM}).
6047 7000
6048 Remember: Cross-posting is kinda ok, but posting the same article 7001 Remember: Cross-posting is kinda ok, but posting the same article
6049 separately to several groups is not. Massive cross-posting (aka. 7002 separately to several groups is not. Massive cross-posting (aka.
6050 @dfn{velveeta}) is to be avoided. 7003 @dfn{velveeta}) is to be avoided at all costs, and you can even use the
7004 @code{gnus-summary-mail-crosspost-complaint} command to complain about
7005 excessive crossposting (@pxref{Summary Mail Commands}).
6051 7006
6052 @cindex cross-posting 7007 @cindex cross-posting
6053 @cindex Xref 7008 @cindex Xref
6054 @cindex @sc{nov} 7009 @cindex @sc{nov}
6055 One thing that may cause Gnus to not do the cross-posting thing 7010 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 7033 set @code{gnus-nov-is-evil} to @code{t}, which slows things down
6079 considerably. 7034 considerably.
6080 7035
6081 C'est la vie. 7036 C'est la vie.
6082 7037
7038 For an alternative approach, @pxref{Duplicate Suppression}.
7039
7040
7041 @node Duplicate Suppression
7042 @section Duplicate Suppression
7043
7044 By default, Gnus tries to make sure that you don't have to read the same
7045 article more than once by utilizing the crossposting mechanism
7046 (@pxref{Crosspost Handling}). However, that simple and efficient
7047 approach may not work satisfactorily for some users for various
7048 reasons.
7049
7050 @enumerate
7051 @item
7052 The @sc{nntp} server may fail to generate the @code{Xref} header. This
7053 is evil and not very common.
7054
7055 @item
7056 The @sc{nntp} server may fail to include the @code{Xref} header in the
7057 @file{.overview} data bases. This is evil and all too common, alas.
7058
7059 @item
7060 You may be reading the same group (or several related groups) from
7061 different @sc{nntp} servers.
7062
7063 @item
7064 You may be getting mail that duplicates articles posted to groups.
7065 @end enumerate
7066
7067 I'm sure there are other situations that @code{Xref} handling fails as
7068 well, but these four are the most common situations.
7069
7070 If, and only if, @code{Xref} handling fails for you, then you may
7071 consider switching on @dfn{duplicate suppression}. If you do so, Gnus
7072 will remember the @code{Message-ID}s of all articles you have read or
7073 otherwise marked as read, and then, as if by magic, mark them as read
7074 all subsequent times you see them---in @emph{all} groups. Using this
7075 mechanism is quite likely to be somewhat inefficient, but not overly
7076 so. It's certainly preferable to reading the same articles more than
7077 once.
7078
7079 Duplicate suppression is not a very subtle instrument. It's more like a
7080 sledge hammer than anything else. It works in a very simple
7081 fashion---if you have marked an article as read, it adds this Message-ID
7082 to a cache. The next time it sees this Message-ID, it will mark the
7083 article as read the the @samp{M} mark. It doesn't care what group it
7084 saw the article in.
7085
7086 @table @code
7087 @item gnus-suppress-duplicates
7088 @vindex gnus-suppress-duplicates
7089 If non-@code{nil}, suppress duplicates.
7090
7091 @item gnus-save-duplicate-list
7092 @vindex gnus-save-duplicate-list
7093 If non-@code{nil}, save the list of duplicates to a file. This will
7094 make startup and shutdown take longer, so the default is @code{nil}.
7095 However, this means that only duplicate articles that is read in a
7096 single Gnus session are suppressed.
7097
7098 @item gnus-duplicate-list-length
7099 @vindex gnus-duplicate-list-length
7100 This variables says how many @code{Message-ID}s to keep in the duplicate
7101 suppression list. The default is 10000.
7102
7103 @item gnus-duplicate-file
7104 @vindex gnus-duplicate-file
7105 The name of the file to store the duplicate suppression list. The
7106 default is @file{~/News/suppression}.
7107 @end table
7108
7109 If you have a tendency to stop and start Gnus often, setting
7110 @code{gnus-save-duplicate-list} to @code{t} is probably a good idea. If
7111 you leave Gnus running for weeks on end, you may have it @code{nil}. On
7112 the other hand, saving the list makes startup and shutdown much slower,
7113 so that means that if you stop and start Gnus often, you should set
7114 @code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up
7115 to you to figure out, I think.
7116
6083 7117
6084 @node The Article Buffer 7118 @node The Article Buffer
6085 @chapter The Article Buffer 7119 @chapter The Article Buffer
6086 @cindex article buffer 7120 @cindex article buffer
6087 7121
6091 7125
6092 @menu 7126 @menu
6093 * Hiding Headers:: Deciding what headers should be displayed. 7127 * Hiding Headers:: Deciding what headers should be displayed.
6094 * Using MIME:: Pushing articles through @sc{mime} before reading them. 7128 * Using MIME:: Pushing articles through @sc{mime} before reading them.
6095 * Customizing Articles:: Tailoring the look of the articles. 7129 * Customizing Articles:: Tailoring the look of the articles.
6096 * Article Keymap:: Keystrokes available in the article buffer 7130 * Article Keymap:: Keystrokes available in the article buffer.
6097 * Misc Article:: Other stuff. 7131 * Misc Article:: Other stuff.
6098 @end menu 7132 @end menu
6099 7133
6100 7134
6101 @node Hiding Headers 7135 @node Hiding Headers
6229 7263
6230 @vindex gnus-show-mime 7264 @vindex gnus-show-mime
6231 @vindex gnus-show-mime-method 7265 @vindex gnus-show-mime-method
6232 @vindex gnus-strict-mime 7266 @vindex gnus-strict-mime
6233 @findex metamail-buffer 7267 @findex metamail-buffer
6234 Gnus handles @sc{mime} by shoving the articles through 7268 Gnus handles @sc{mime} by pushing the articles through
6235 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by 7269 @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 7270 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 7271 @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 7272 non-@code{nil}, the @sc{mime} method will only be used if there are
6239 @sc{mime} headers in the article. 7273 @sc{mime} headers in the article. If you have @code{gnus-show-mime}
7274 set, then you'll see some unfortunate display glitches in the article
7275 buffer. These can't be avoided.
6240 7276
6241 It might be best to just use the toggling functions from the summary 7277 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 7278 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 7279 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 7280 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 7295 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 7296 been inserted into the article buffer. It is meant to handle all
6261 treatment of the article before it is displayed. 7297 treatment of the article before it is displayed.
6262 7298
6263 @findex gnus-article-maybe-highlight 7299 @findex gnus-article-maybe-highlight
6264 By default it contains @code{gnus-article-hide-headers}, 7300 By default this hook just contains @code{gnus-article-hide-headers},
6265 @code{gnus-article-treat-overstrike}, and 7301 @code{gnus-article-treat-overstrike}, and
6266 @code{gnus-article-maybe-highlight}, but there are thousands, nay 7302 @code{gnus-article-maybe-highlight}, but there are thousands, nay
6267 millions, of functions you can put in this hook. For an overview of 7303 millions, of functions you can put in this hook. For an overview of
6268 functions @pxref{Article Highlighting}, @pxref{Article Hiding}, 7304 functions @pxref{Article Highlighting}, @pxref{Article Hiding},
6269 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article 7305 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article
6270 Date}. 7306 Date}. Note that the order of functions in this hook might affect
7307 things, so you may have to fiddle a bit to get the desired results.
6271 7308
6272 You can, of course, write your own functions. The functions are called 7309 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. 7310 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 7311 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 7312 change everything. However, you shouldn't delete any headers. Instead
6364 7401
6365 @item gnus-article-mode-hook 7402 @item gnus-article-mode-hook
6366 @vindex gnus-article-mode-hook 7403 @vindex gnus-article-mode-hook
6367 Hook called in article mode buffers. 7404 Hook called in article mode buffers.
6368 7405
7406 @item gnus-article-mode-syntax-table
7407 @vindex gnus-article-mode-syntax-table
7408 Syntax table used in article buffers. It is initialized from
7409 @code{text-mode-syntax-table}.
7410
6369 @vindex gnus-article-mode-line-format 7411 @vindex gnus-article-mode-line-format
6370 @item gnus-article-mode-line-format 7412 @item gnus-article-mode-line-format
6371 This variable is a format string along the same lines as 7413 This variable is a format string along the same lines as
6372 @code{gnus-summary-mode-line-format}. It accepts exactly the same 7414 @code{gnus-summary-mode-line-format}. It accepts the same
6373 format specifications as that variable. 7415 format specifications as that variable, with one extension:
7416
7417 @table @samp
7418 @item w
7419 The @dfn{wash status} of the article. This is a short string with one
7420 character for each possible article wash operation that may have been
7421 performed.
7422 @end table
7423
6374 @vindex gnus-break-pages 7424 @vindex gnus-break-pages
6375 7425
6376 @item gnus-break-pages 7426 @item gnus-break-pages
6377 Controls whether @dfn{page breaking} is to take place. If this variable 7427 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 7428 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 7527 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 7528 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 7529 can use a non-zero prefix to the @kbd{C-c C-c} command to force using
6480 the ``current'' server for posting. 7530 the ``current'' server for posting.
6481 7531
6482 If you give a zero prefix (i. e., @kbd{C-u 0 C-c C-c}) to that command, 7532 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. 7533 Gnus will prompt you for what method to use for posting.
6484 7534
6485 You can also set @code{gnus-post-method} to a list of select methods. 7535 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 7536 If that's the case, Gnus will always prompt you for what method to use
6487 for posting. 7537 for posting.
6531 the mail. If you want to disable this completely, you should set 7581 the mail. If you want to disable this completely, you should set
6532 @code{gnus-message-archive-group} to @code{nil}. 7582 @code{gnus-message-archive-group} to @code{nil}.
6533 7583
6534 @vindex gnus-message-archive-method 7584 @vindex gnus-message-archive-method
6535 @code{gnus-message-archive-method} says what virtual server Gnus is to 7585 @code{gnus-message-archive-method} says what virtual server Gnus is to
6536 use to store sent messages. It is @code{(nnfolder "archive" 7586 use to store sent messages. The default is:
6537 (nnfolder-directory "~/Mail/archive/"))} by default, but you can use any 7587
6538 mail select method (@code{nnml}, @code{nnmbox}, etc.). However, 7588 @lisp
6539 @code{nnfolder} is a quite likeable select method for doing this sort of 7589 (nnfolder "archive"
6540 thing. If you don't like the default directory chosen, you could say 7590 (nnfolder-directory "~/Mail/archive/"))
6541 something like: 7591 @end lisp
7592
7593 You can, however, use any mail select method (@code{nnml},
7594 @code{nnmbox}, etc.). @code{nnfolder} is a quite likeable select method
7595 for doing this sort of thing, though. If you don't like the default
7596 directory chosen, you could say something like:
6542 7597
6543 @lisp 7598 @lisp
6544 (setq gnus-message-archive-method 7599 (setq gnus-message-archive-method
6545 '(nnfolder "archive" 7600 '(nnfolder "archive"
6546 (nnfolder-inhibit-expiry t) 7601 (nnfolder-inhibit-expiry t)
6615 group. If the group gets really big and annoying, you can simply rename 7670 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 7671 if (using @kbd{G r} in the group buffer) to something
6617 nice---@samp{misc-mail-september-1995}, or whatever. New messages will 7672 nice---@samp{misc-mail-september-1995}, or whatever. New messages will
6618 continue to be stored in the old (now empty) group. 7673 continue to be stored in the old (now empty) group.
6619 7674
6620 That's the default method of archiving sent mail. Gnus also offers two 7675 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 7676 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 7677 should set @code{gnus-message-archive-group} to @code{nil}; this will
6623 @code{nil}; this will disable archiving. 7678 disable archiving.
6624 7679
6625 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to 7680 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. 7681 use a different value for @code{gnus-message-archive-group} there.
6627
6628 7682
6629 @table @code 7683 @table @code
6630 @item gnus-outgoing-message-group 7684 @item gnus-outgoing-message-group
6631 @vindex gnus-outgoing-message-group 7685 @vindex gnus-outgoing-message-group
6632 All outgoing messages will be put in this group. If you want to store 7686 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 7868 @sc{nntp} server, it could be a virtual group, or it could be your own
6815 personal mail group. 7869 personal mail group.
6816 7870
6817 A foreign group (or any group, really) is specified by a @dfn{name} and 7871 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 7872 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}, 7873 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 7874 @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 7875 name}. There may be additional elements in the select method, where the
6822 value may have special meaning for the backend in question. 7876 value may have special meaning for the backend in question.
6823 7877
6824 One could say that a select method defines a @dfn{virtual server}---so 7878 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 7881 The @dfn{name} of the group is the name the backend will recognize the
6828 group as. 7882 group as.
6829 7883
6830 For instance, the group @samp{soc.motss} on the @sc{nntp} server 7884 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 7885 @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 7886 method @code{(nntp "some.where.edu")}. Gnus will call this group
6833 all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the 7887 @samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp}
6834 @code{nntp} backend just knows this group as @samp{soc.motss}. 7888 backend just knows this group as @samp{soc.motss}.
6835 7889
6836 The different methods all have their peculiarities, of course. 7890 The different methods all have their peculiarities, of course.
6837 7891
6838 @menu 7892 @menu
6839 * The Server Buffer:: Making and editing virtual servers. 7893 * The Server Buffer:: Making and editing virtual servers.
6859 on the same actual @sc{nntp} server. You tell Gnus which backend to 7913 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}. 7914 use, and what parameters to set by specifying a @dfn{select method}.
6861 7915
6862 These select methods specifications can sometimes become quite 7916 These select methods specifications can sometimes become quite
6863 complicated---say, for instance, that you want to read from the 7917 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 7918 @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. 7919 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 7920 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 7921 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. 7922 select methods, which is what you do in the server buffer.
6869 7923
6967 @item l 8021 @item l
6968 @kindex l (Server) 8022 @kindex l (Server)
6969 @findex gnus-server-list-servers 8023 @findex gnus-server-list-servers
6970 List all servers (@code{gnus-server-list-servers}). 8024 List all servers (@code{gnus-server-list-servers}).
6971 8025
8026 @item s
8027 @kindex s (Server)
8028 @findex gnus-server-scan-server
8029 Request that the server scan its sources for new articles
8030 (@code{gnus-server-scan-server}). This is mainly sensible with mail
8031 servers.
8032
8033 @item g
8034 @kindex g (Server)
8035 @findex gnus-server-regenerate-server
8036 Request that the server regenerate all its data structures
8037 (@code{gnus-server-regenerate-server}). This can be useful if you have
8038 a mail backend that has gotten out of synch.
8039
6972 @end table 8040 @end table
6973 8041
6974 8042
6975 @node Example Methods 8043 @node Example Methods
6976 @subsection Example Methods 8044 @subsection Example Methods
6993 8061
6994 After these two elements, there may be a arbitrary number of 8062 After these two elements, there may be a arbitrary number of
6995 @var{(variable form)} pairs. 8063 @var{(variable form)} pairs.
6996 8064
6997 To go back to the first example---imagine that you want to read from 8065 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 8066 port 15 from that machine. This is what the select method should
6999 look like then: 8067 look like then:
7000 8068
7001 @lisp 8069 @lisp
7002 (nntp "news.funet.fi" (nntp-port-number 15)) 8070 (nntp "news.funet.fi" (nntp-port-number 15))
7003 @end lisp 8071 @end lisp
7023 (nnmh "public" 8091 (nnmh "public"
7024 (nnmh-directory "/usr/information/spool/") 8092 (nnmh-directory "/usr/information/spool/")
7025 (nnmh-get-new-mail nil)) 8093 (nnmh-get-new-mail nil))
7026 @end lisp 8094 @end lisp
7027 8095
8096 If you are behind a firewall and only have access to the @sc{nntp}
8097 server from the firewall machine, you can instruct Gnus to @code{rlogin}
8098 on the firewall machine and telnet from there to the @sc{nntp} server.
8099 Doing this can be rather fiddly, but your virtual server definition
8100 should probably look something like this:
8101
8102 @lisp
8103 (nntp "firewall"
8104 (nntp-address "the.firewall.machine")
8105 (nntp-open-connection-function nntp-open-rlogin)
8106 (nntp-end-of-line "\n")
8107 (nntp-rlogin-parameters
8108 ("telnet" "the.real.nntp.host" "nntp")))
8109 @end lisp
8110
8111
7028 8112
7029 @node Creating a Virtual Server 8113 @node Creating a Virtual Server
7030 @subsection Creating a Virtual Server 8114 @subsection Creating a Virtual Server
7031 8115
7032 If you're saving lots of articles in the cache by using persistent 8116 If you're saving lots of articles in the cache by using persistent
7049 8133
7050 Change that to: 8134 Change that to:
7051 8135
7052 @lisp 8136 @lisp
7053 (nnspool "cache" 8137 (nnspool "cache"
7054 (nnspool-spool-directory "~/News/cache/") 8138 (nnspool-spool-directory "~/News/cache/")
7055 (nnspool-nov-directory "~/News/cache/") 8139 (nnspool-nov-directory "~/News/cache/")
7056 (nnspool-active-file "~/News/cache/active")) 8140 (nnspool-active-file "~/News/cache/active"))
7057 @end lisp 8141 @end lisp
7058 8142
7059 Type @kbd{C-c C-c} to return to the server buffer. If you now press 8143 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 8144 @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. 8145 buffer, and you should be able to enter any of the groups displayed.
7063 8147
7064 @node Servers and Methods 8148 @node Servers and Methods
7065 @subsection Servers and Methods 8149 @subsection Servers and Methods
7066 8150
7067 Wherever you would normally use a select method 8151 Wherever you would normally use a select method
7068 (eg. @code{gnus-secondary-select-method}, in the group select method, 8152 (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 8153 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 8154 instead. This could potentially save lots of typing. And it's nice all
7071 over. 8155 over.
7072 8156
7073 8157
7112 @item D 8196 @item D
7113 @kindex D (Server) 8197 @kindex D (Server)
7114 @findex gnus-server-deny-server 8198 @findex gnus-server-deny-server
7115 Mark the current server as unreachable 8199 Mark the current server as unreachable
7116 (@code{gnus-server-deny-server}). 8200 (@code{gnus-server-deny-server}).
8201
8202 @item M-o
8203 @kindex M-o (Server)
8204 @findex gnus-server-open-all-servers
8205 Open the connections to all servers in the buffer
8206 (@code{gnus-server-open-all-servers}).
8207
8208 @item M-c
8209 @kindex M-c (Server)
8210 @findex gnus-server-close-all-servers
8211 Close the connections to all servers in the buffer
8212 (@code{gnus-server-close-all-servers}).
7117 8213
7118 @item R 8214 @item R
7119 @kindex R (Server) 8215 @kindex R (Server)
7120 @findex gnus-server-remove-denials 8216 @findex gnus-server-remove-denials
7121 Remove all marks to whether Gnus was denied connection from all servers 8217 Remove all marks to whether Gnus was denied connection from all servers
7170 @findex nntp-send-authinfo 8266 @findex nntp-send-authinfo
7171 @findex nntp-send-mode-reader 8267 @findex nntp-send-mode-reader
7172 @code{nntp-server-opened-hook} is run after a connection has been made. 8268 @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 8269 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 8270 been contacted. By default is sends the command @code{MODE READER} to
7175 the server with the @code{nntp-send-mode-reader} function. Another 8271 the server with the @code{nntp-send-mode-reader} function.
7176 popular function is @code{nntp-send-authinfo}, which will prompt you for 8272
7177 an @sc{nntp} password and stuff. 8273 @item nntp-authinfo-function
8274 @vindex nntp-authinfo-function
8275 This function will be used to send @samp{AUTHINFO} to the @sc{nntp}
8276 server. Available functions include:
8277
8278 @table @code
8279 @item nntp-send-authinfo
8280 @findex nntp-send-authinfo
8281 This function will used you current login name as the user name and will
8282 prompt you for the password. This is the default.
8283
8284 @item nntp-send-nosy-authinfo
8285 @findex nntp-send-nosy-authinfo
8286 This function will prompt you for both user name and password.
8287
8288 @item nntp-send-authinfo-from-file
8289 @findex nntp-send-authinfo-from-file
8290 This function will use your current login name as the user name and will
8291 read the @sc{nntp} password from @file{~/.nntp-authinfo}.
8292 @end table
7178 8293
7179 @item nntp-server-action-alist 8294 @item nntp-server-action-alist
7180 @vindex nntp-server-action-alist 8295 @vindex nntp-server-action-alist
7181 This is an list of regexps to match on server types and actions to be 8296 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 8297 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} 8359 This hook is run as the last step when connecting to an @sc{nntp}
7245 server. 8360 server.
7246 8361
7247 @findex nntp-open-rlogin 8362 @findex nntp-open-rlogin
7248 @findex nntp-open-network-stream 8363 @findex nntp-open-network-stream
7249 @item nntp-open-server-function 8364 @item nntp-open-connection-function
7250 @vindex nntp-open-server-function 8365 @vindex nntp-open-connection-function
7251 This function is used to connect to the remote system. Two pre-made 8366 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 8367 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 8368 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, 8369 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. 8370 and then does a telnet to the @sc{nntp} server available there.
7256 8371
7257 @item nntp-rlogin-parameters 8372 @item nntp-rlogin-parameters
7258 @vindex nntp-rlogin-parameters 8373 @vindex nntp-rlogin-parameters
7259 If you use @code{nntp-open-rlogin} as the 8374 If you use @code{nntp-open-rlogin} as the
7260 @code{nntp-open-server-function}, this list will be used as the 8375 @code{nntp-open-connection-function}, this list will be used as the
7261 parameter list given to @code{rsh}. 8376 parameter list given to @code{rsh}.
7262 8377
7263 @item nntp-end-of-line 8378 @item nntp-end-of-line
7264 @vindex nntp-end-of-line 8379 @vindex nntp-end-of-line
7265 String to use as end-of-line markers when talking to the @sc{nntp} 8380 String to use as end-of-line markers when talking to the @sc{nntp}
7313 8428
7314 @item nntp-prepare-server-hook 8429 @item nntp-prepare-server-hook
7315 @vindex nntp-prepare-server-hook 8430 @vindex nntp-prepare-server-hook
7316 A hook run before attempting to connect to an @sc{nntp} server. 8431 A hook run before attempting to connect to an @sc{nntp} server.
7317 8432
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 8433 @item nntp-warn-about-losing-connection
7326 @vindex nntp-warn-about-losing-connection 8434 @vindex nntp-warn-about-losing-connection
7327 If this variable is non-@code{nil}, some noise will be made when a 8435 If this variable is non-@code{nil}, some noise will be made when a
7328 server closes connection. 8436 server closes connection.
7329 8437
7334 @subsection News Spool 8442 @subsection News Spool
7335 @cindex nnspool 8443 @cindex nnspool
7336 @cindex news spool 8444 @cindex news spool
7337 8445
7338 Subscribing to a foreign group from the local spool is extremely easy, 8446 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 8447 and might be useful, for instance, to speed up reading groups that
7340 @samp{alt.binaries.pictures.furniture}. 8448 contain very big articles---@samp{alt.binaries.pictures.furniture}, for
8449 instance.
7341 8450
7342 Anyways, you just specify @code{nnspool} as the method and @samp{} (or 8451 Anyways, you just specify @code{nnspool} as the method and @samp{} (or
7343 anything else) as the address. 8452 anything else) as the address.
7344 8453
7345 If you have access to a local spool, you should probably use that as the 8454 If you have access to a local spool, you should probably use that as the
7416 * Mail Backend Variables:: Variables for customizing mail handling. 8525 * Mail Backend Variables:: Variables for customizing mail handling.
7417 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. 8526 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
7418 * Mail and Procmail:: Reading mail groups that procmail create. 8527 * Mail and Procmail:: Reading mail groups that procmail create.
7419 * Incorporating Old Mail:: What about the old mail you have? 8528 * Incorporating Old Mail:: What about the old mail you have?
7420 * Expiring Mail:: Getting rid of unwanted mail. 8529 * Expiring Mail:: Getting rid of unwanted mail.
8530 * Washing Mail:: Removing gruft from the mail you get.
7421 * Duplicates:: Dealing with duplicated mail. 8531 * Duplicates:: Dealing with duplicated mail.
7422 * Not Reading Mail:: Using mail backends for reading other files. 8532 * Not Reading Mail:: Using mail backends for reading other files.
7423 * Choosing a Mail Backend:: Gnus can read a variety of mail formats. 8533 * Choosing a Mail Backend:: Gnus can read a variety of mail formats.
7424 @end menu 8534 @end menu
7425 8535
7447 8557
7448 You will probably want to split the mail into several groups, though: 8558 You will probably want to split the mail into several groups, though:
7449 8559
7450 @lisp 8560 @lisp
7451 (setq nnmail-split-methods 8561 (setq nnmail-split-methods
7452 '(("junk" "^From:.*Lars Ingebrigtsen") 8562 '(("junk" "^From:.*Lars Ingebrigtsen")
7453 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") 8563 ("crazy" "^Subject:.*die\\|^Organization:.*flabby")
7454 ("other" ""))) 8564 ("other" "")))
7455 @end lisp 8565 @end lisp
7456 8566
7457 This will result in three new mail groups being created: 8567 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 8568 @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 8569 mail that doesn't fit into the first two groups will be placed in the
7460 latter group. 8570 latter group.
7461 8571
7462 This should be sufficient for reading mail with Gnus. You might want to 8572 This should be sufficient for reading mail with Gnus. You might want to
7483 This variable is a list of lists, where the first element of each of 8593 This variable is a list of lists, where the first element of each of
7484 these lists is the name of the mail group (they do not have to be called 8594 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 8595 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 8596 element is a regular expression used on the header of each mail to
7487 determine if it belongs in this mail group. 8597 determine if it belongs in this mail group.
8598
8599 If the first element is the special symbol @code{junk}, then messages
8600 that match the regexp will disappear into the aether. Use with
8601 extreme caution.
7488 8602
7489 The second element can also be a function. In that case, it will be 8603 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 8604 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 8605 argument. It should return a non-@code{nil} value if it thinks that the
7492 mail belongs in that group. 8606 mail belongs in that group.
7518 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to 8632 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to
7519 the crossposted articles. However, not all files systems support hard 8633 the crossposted articles. However, not all files systems support hard
7520 links. If that's the case for you, set 8634 links. If that's the case for you, set
7521 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This 8635 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This
7522 variable is @code{add-name-to-file} by default.) 8636 variable is @code{add-name-to-file} by default.)
8637
8638 @kindex M-x nnmail-split-history
8639 @kindex nnmail-split-history
8640 If you wish to see where the previous mail split put the messages, you
8641 can use the @kbd{M-x nnmail-split-history} command.
7523 8642
7524 Gnus gives you all the opportunity you could possibly want for shooting 8643 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 8644 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 8645 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 8646 unsubscribe from the group. Gnus will still put all the mail from your
7563 @code{MAILHOST} environment variable. If the POP server needs a 8682 @code{MAILHOST} environment variable. If the POP server needs a
7564 password, you can either set @code{nnmail-pop-password-required} to 8683 password, you can either set @code{nnmail-pop-password-required} to
7565 @code{t} and be prompted for the password, or set 8684 @code{t} and be prompted for the password, or set
7566 @code{nnmail-pop-password} to the password itself. 8685 @code{nnmail-pop-password} to the password itself.
7567 8686
8687 Your Emacs has to have been configured with @samp{--with-pop} before
8688 compilation. This is the default, but some installations have it
8689 switched off.
8690
7568 When you use a mail backend, Gnus will slurp all your mail from your 8691 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 8692 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 8693 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 8694 invocations first. At the time when you have finished drawing the
7572 pentagram, lightened the candles, and sacrificed the goat, you really 8695 pentagram, lightened the candles, and sacrificed the goat, you really
7590 8713
7591 @vindex nnmail-prepare-incoming-hook 8714 @vindex nnmail-prepare-incoming-hook
7592 @item nnmail-prepare-incoming-hook 8715 @item nnmail-prepare-incoming-hook
7593 This is run in a buffer that holds all the new incoming mail, and can be 8716 This is run in a buffer that holds all the new incoming mail, and can be
7594 used for, well, anything, really. 8717 used for, well, anything, really.
8718
8719 @vindex nnmail-split-hook
8720 @item nnmail-split-hook
8721 @findex article-decode-rfc1522
8722 @findex RFC1522 decoding
8723 Hook run in the buffer where the mail headers of each message is kept
8724 just before the splitting based on these headers is done. The hook is
8725 free to modify the buffer contents in any way it sees fit---the buffer
8726 is discarded after the splitting has been done, and no changes performed
8727 in the buffer will show up in any files. @code{gnus-article-decode-rfc1522}
8728 is one likely function to add to this hook.
7595 8729
7596 @vindex nnmail-pre-get-new-mail-hook 8730 @vindex nnmail-pre-get-new-mail-hook
7597 @vindex nnmail-post-get-new-mail-hook 8731 @vindex nnmail-post-get-new-mail-hook
7598 @item nnmail-pre-get-new-mail-hook 8732 @item nnmail-pre-get-new-mail-hook
7599 @itemx nnmail-post-get-new-mail-hook 8733 @itemx nnmail-post-get-new-mail-hook
7622 @item nnmail-movemail-program 8756 @item nnmail-movemail-program
7623 @vindex nnmail-movemail-program 8757 @vindex nnmail-movemail-program
7624 This program is executed to move mail from the user's inbox to her home 8758 This program is executed to move mail from the user's inbox to her home
7625 directory. The default is @samp{movemail}. 8759 directory. The default is @samp{movemail}.
7626 8760
8761 This can also be a function. In that case, the function will be called
8762 with two parameters -- the name of the inbox, and the file to be moved
8763 to.
8764
7627 @item nnmail-delete-incoming 8765 @item nnmail-delete-incoming
7628 @vindex nnmail-delete-incoming 8766 @vindex nnmail-delete-incoming
7629 @cindex incoming mail files 8767 @cindex incoming mail files
7630 @cindex deleting incoming files 8768 @cindex deleting incoming files
7631 If non-@code{nil}, the mail backends will delete the temporary incoming 8769 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 8770 file after splitting mail into the proper groups. This is @code{nil} by
7633 default for reasons of security. 8771 default for reasons of security.
7634 8772
8773 @c Since Red Gnus is an alpha release, it is to be expected to lose mail.
8774 (No Gnus release since (ding) Gnus 0.10 (or something like that) have
8775 lost mail, I think, but that's not the point. (Except certain versions
8776 of Red Gnus.)) By not deleting the Incoming* files, one can be sure to
8777 not lose mail -- if Gnus totally whacks out, one can always recover what
8778 was lost.
8779
8780 Delete the @file{Incoming*} files at will.
8781
7635 @item nnmail-use-long-file-names 8782 @item nnmail-use-long-file-names
7636 @vindex nnmail-use-long-file-names 8783 @vindex nnmail-use-long-file-names
7637 If non-@code{nil}, the mail backends will use long file and directory 8784 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 8785 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 8786 @file{mail.misc/}. If it is @code{nil}, the same group will end up in
7655 @vindex nnmail-split-fancy 8802 @vindex nnmail-split-fancy
7656 @findex nnmail-split-fancy 8803 @findex nnmail-split-fancy
7657 If the rather simple, standard method for specifying how to split mail 8804 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 8805 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 8806 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can
7660 play with the @code{nnmail-split-fancy} variable. 8807 play with the @code{nnmail-split-fancy} variable.
7661 8808
7662 Let's look at an example value of this variable first: 8809 Let's look at an example value of this variable first:
7663 8810
7664 @lisp 8811 @lisp
7665 ;; Messages from the mailer daemon are not crossposted to any of 8812 ;; Messages from the mailer daemon are not crossposted to any of
7676 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") 8823 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
7677 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") 8824 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
7678 ;; People... 8825 ;; People...
7679 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen")) 8826 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen"))
7680 ;; Unmatched mail goes to the catch all group. 8827 ;; Unmatched mail goes to the catch all group.
7681 "misc.misc"))") 8828 "misc.misc")
7682 @end lisp 8829 @end lisp
7683 8830
7684 This variable has the format of a @dfn{split}. A split is a (possibly) 8831 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 8832 recursive structure where each split may contain other splits. Here are
7686 the four possible split syntaxes: 8833 the five possible split syntaxes:
7687 8834
7688 @table @dfn 8835 @enumerate
7689 8836
7690 @item GROUP 8837 @item
7691 If the split is a string, that will be taken as a group name. 8838 @samp{group}: If the split is a string, that will be taken as a group name.
7692 8839
7693 @item (FIELD VALUE SPLIT) 8840 @item
7694 If the split is a list, and the first element is a string, then that 8841 @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), 8842 element is a string, then that means that if header FIELD (a regexp)
7696 then store the message as specified by SPLIT. 8843 contains VALUE (also a regexp), then store the message as specified by
7697 8844 SPLIT.
7698 @item (| SPLIT...) 8845
7699 If the split is a list, and the first element is @code{|} (vertical 8846 @item
7700 bar), then process each SPLIT until one of them matches. A SPLIT is 8847 @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 8848 @code{|} (vertical bar), then process each SPLIT until one of them
7702 more groups. 8849 matches. A SPLIT is said to match if it will cause the mail message to
7703 8850 be stored in one or more groups.
7704 @item (& SPLIT...) 8851
7705 If the split is a list, and the first element is @code{&}, then process 8852 @item
7706 all SPLITs in the list. 8853 @var{(& SPLIT...)}: If the split is a list, and the first element is
7707 @end table 8854 @code{&}, then process all SPLITs in the list.
7708 8855
7709 In these splits, FIELD must match a complete field name. VALUE must 8856 @item
7710 match a complete word according to the fundamental mode syntax table. 8857 @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 8858 this message anywhere.
7712 words. 8859
8860 @item
8861 @var{(: function arg1 arg2 ...)}: If the split is a list, and the first
8862 element is @code{:}, then the second element will be called as a
8863 function with @var{args} given as arguments. The function should return
8864 a SPLIT.
8865
8866 @end enumerate
8867
8868 In these splits, @var{FIELD} must match a complete field name.
8869 @var{VALUE} must match a complete word according to the fundamental mode
8870 syntax table. You can use @code{.*} in the regexps to match partial
8871 field names or words. In other words, all @var{VALUE}'s are wrapped in
8872 @samp{\<} and @samp{\>} pairs.
7713 8873
7714 @vindex nnmail-split-abbrev-alist 8874 @vindex nnmail-split-abbrev-alist
7715 FIELD and VALUE can also be lisp symbols, in that case they are expanded 8875 @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 8876 are expanded as specified by the variable
7717 an alist of cons cells, where the car of the cells contains the key, and 8877 @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where
7718 the cdr contains a string. 8878 the car of the cells contains the key, and the cdr contains a string.
7719 8879
7720 @vindex nnmail-split-fancy-syntax-table 8880 @vindex nnmail-split-fancy-syntax-table
7721 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect 8881 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect
7722 when all this splitting is performed. 8882 when all this splitting is performed.
8883
8884 If you want to have Gnus create groups dynamically based on some
8885 information in the headers, you can say things like:
8886
8887 @example
8888 (any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1")
8889 @end example
8890
8891 That is, do @code{replace-match}-like substitions in the group names.
7723 8892
7724 8893
7725 @node Mail and Procmail 8894 @node Mail and Procmail
7726 @subsection Mail and Procmail 8895 @subsection Mail and Procmail
7727 @cindex procmail 8896 @cindex procmail
7781 directory (which you shouldn't do), you should set 8950 directory (which you shouldn't do), you should set
7782 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from 8951 @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, 8952 ever expiring the final article in a mail newsgroup. This is quite,
7784 quite important. 8953 quite important.
7785 8954
8955 Here's an example setup: The incoming spools are located in
8956 @file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming
8957 spool files have the same names as the equivalent groups). The
8958 @code{nnfolder} backend is to be used as the mail interface, and the
8959 @code{nnfolder} directory is @file{~/fMail/}.
8960
8961 @lisp
8962 (setq nnfolder-directory "~/fMail/")
8963 (setq nnmail-spool-file 'procmail)
8964 (setq nnmail-procmail-directory "~/incoming/")
8965 (setq gnus-secondary-select-methods '((nnfolder "")))
8966 (setq nnmail-procmail-suffix "")
8967 @end lisp
8968
7786 8969
7787 @node Incorporating Old Mail 8970 @node Incorporating Old Mail
7788 @subsection Incorporating Old Mail 8971 @subsection Incorporating Old Mail
7789 8972
7790 Most people have lots of old mail stored in various file formats. If 8973 Most people have lots of old mail stored in various file formats. If
7863 match the regular expression @code{gnus-auto-expirable-newsgroups} will 9046 match the regular expression @code{gnus-auto-expirable-newsgroups} will
7864 have all articles that you read marked as expirable automatically. All 9047 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 9048 articles that are marked as expirable have an @samp{E} in the first
7866 column in the summary buffer. 9049 column in the summary buffer.
7867 9050
9051 Note that making a group auto-expirable don't mean that all read
9052 articles are expired---only the articles that are marked as expirable
9053 will be expired. Also note the using the @kbd{d} command won't make
9054 groups expirable---only semi-automatic marking of articles as read will
9055 mark the articles as expirable in auto-expirable groups.
9056
7868 Let's say you subscribe to a couple of mailing lists, and you want the 9057 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: 9058 articles you have read to disappear after a while:
7870 9059
7871 @lisp 9060 @lisp
7872 (setq gnus-auto-expirable-newsgroups 9061 (setq gnus-auto-expirable-newsgroups
7873 "mail.nonsense-list\\|mail.nice-list") 9062 "mail.nonsense-list\\|mail.nice-list")
7874 @end lisp 9063 @end lisp
7875 9064
7876 Another way to have auto-expiry happen is to have the element 9065 Another way to have auto-expiry happen is to have the element
7877 @code{auto-expire} in the group parameters of the group. 9066 @code{auto-expire} in the group parameters of the group.
9067
9068 If you use adaptive scoring (@pxref{Adaptive Scoring}) and
9069 auto-expiring, you'll have problems. Auto-expiring and adaptive scoring
9070 doesn't really mix very well.
7878 9071
7879 @vindex nnmail-expiry-wait 9072 @vindex nnmail-expiry-wait
7880 The @code{nnmail-expiry-wait} variable supplies the default time an 9073 The @code{nnmail-expiry-wait} variable supplies the default time an
7881 expirable article has to live. The default is seven days. 9074 expirable article has to live. The default is seven days.
7882 9075
7929 crying to me when you discover that the regexp you used matched the 9122 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 9123 wrong group and all your important mail has disappeared. Be a
7931 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable 9124 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable
7932 with! So there! 9125 with! So there!
7933 9126
9127 Most people make most of their mail groups total-expirable, though.
9128
9129
9130 @node Washing Mail
9131 @subsection Washing Mail
9132 @cindex mail washing
9133 @cindex list server brain damage
9134 @cindex incoming mail treatment
9135
9136 Mailers and list servers are notorious for doing all sorts of really,
9137 really stupid things with mail. ``Hey, RFC822 doesn't explicitly
9138 prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the
9139 end of all lines passing through our server, so let's do that!!!!1!''
9140 Yes, but RFC822 wasn't designed to be read by morons. Things that were
9141 considered to be self-evident were not discussed. So. Here we are.
9142
9143 Case in point: The German version of Microsoft Exchange adds @samp{AW:
9144 } to the subjects of replies instead of @samp{Re: }. I could pretend to
9145 be shocked and dismayed by this, but I haven't got the energy. It is to
9146 laugh.
9147
9148 Gnus provides a plethora of functions for washing articles while
9149 displaying them, but it might be nicer to do the filtering before
9150 storing the mail to disc. For that purpose, we have three hooks and
9151 various functions that can be put in these hooks.
9152
9153 @table @code
9154 @item nnmail-prepare-incoming-hook
9155 @vindex nnmail-prepare-incoming-hook
9156 This hook is called before doing anything with the mail and is meant for
9157 grand, sweeping gestures. Functions to be used include:
9158
9159 @table @code
9160 @item nnheader-ms-strip-cr
9161 @findex nnheader-ms-strip-cr
9162 Remove trailing carriage returns from each line. This is default on
9163 Emacs running on MS machines.
9164
9165 @end table
9166
9167 @item nnmail-prepare-incoming-header-hook
9168 @vindex nnmail-prepare-incoming-header-hook
9169 This hook is called narrowed to each header. It can be used when
9170 cleaning up the headers. Functions that can be used include:
9171
9172 @table @code
9173 @item nnmail-remove-leading-whitespace
9174 @findex nnmail-remove-leading-whitespace
9175 Clear leading white space that ``helpful'' listservs have added to the
9176 headers too make them look nice. Aaah.
9177
9178 @item nnmail-remove-list-identifiers
9179 @findex nnmail-remove-list-identifiers
9180 Some list servers add an identifier---for example, @samp{(idm)}---to the
9181 beginning of all @code{Subject} headers. I'm sure that's nice for
9182 people who use stone age mail readers. This function will remove
9183 strings that match the @code{nnmail-list-identifiers} regexp, which can
9184 also be a list of regexp.
9185
9186 For instance, if you want to remove the @samp{(idm)} and the
9187 @samp{nagnagnag} identifiers:
9188
9189 @lisp
9190 (setq nnmail-list-identifiers
9191 '("(idm)" "nagnagnag"))
9192 @end lisp
9193
9194 @item nnmail-remove-tabs
9195 @findex nnmail-remove-tabs
9196 Translate all @samp{TAB} characters into @samp{SPACE} characters.
9197
9198 @end table
9199
9200 @item nnmail-prepare-incoming-message-hook
9201 @vindex nnmail-prepare-incoming-message-hook
9202 This hook is called narrowed to each message. Functions to be used
9203 include:
9204
9205 @table @code
9206 @item article-de-quoted-unreadable
9207 @findex article-de-quoted-unreadable
9208 Decode Quoted Readable encoding.
9209
9210 @end table
9211 @end table
9212
7934 9213
7935 @node Duplicates 9214 @node Duplicates
7936 @subsection Duplicates 9215 @subsection Duplicates
7937 9216
7938 @vindex nnmail-treat-duplicates 9217 @vindex nnmail-treat-duplicates
7940 @vindex nnmail-message-id-cache-file 9219 @vindex nnmail-message-id-cache-file
7941 @cindex duplicate mails 9220 @cindex duplicate mails
7942 If you are a member of a couple of mailing list, you will sometime 9221 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 9222 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 9223 @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 - 9224 this, it keeps a cache of old @code{Message-ID}s---
7946 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by 9225 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by
7947 default. The approximate maximum number of @code{Message-ID}s stored 9226 default. The approximate maximum number of @code{Message-ID}s stored
7948 there is controlled by the @code{nnmail-message-id-cache-length} 9227 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 9228 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 9229 stored.) If all this sounds scary to you, you can set
8159 @findex nnml-generate-nov-databases 9438 @findex nnml-generate-nov-databases
8160 If your @code{nnml} groups and @sc{nov} files get totally out of whack, 9439 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 9440 you can do a complete update by typing @kbd{M-x
8162 nnml-generate-nov-databases}. This command will trawl through the 9441 nnml-generate-nov-databases}. This command will trawl through the
8163 entire @code{nnml} hierarchy, looking at each and every article, so it 9442 entire @code{nnml} hierarchy, looking at each and every article, so it
8164 might take a while to complete. 9443 might take a while to complete. A better interface to this
9444 functionality can be found in the server buffer (@pxref{Server
9445 Commands}).
8165 9446
8166 9447
8167 @node MH Spool 9448 @node MH Spool
8168 @subsubsection MH Spool 9449 @subsubsection MH Spool
8169 @cindex nnmh 9450 @cindex nnmh
8241 Gnus can do more than just read news or mail. The methods described 9522 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 9523 below allow Gnus to view directories and files as if they were
8243 newsgroups. 9524 newsgroups.
8244 9525
8245 @menu 9526 @menu
8246 * Directory Groups:: You can read a directory as if it was a newsgroup. 9527 * Directory Groups:: You can read a directory as if it was a newsgroup.
8247 * Anything Groups:: Dired? Who needs dired? 9528 * Anything Groups:: Dired? Who needs dired?
8248 * Document Groups:: Single files can be the basis of a group. 9529 * Document Groups:: Single files can be the basis of a group.
8249 * SOUP:: Reading @sc{SOUP} packets ``offline''. 9530 * SOUP:: Reading @sc{SOUP} packets ``offline''.
9531 * Web Searches:: Creating groups from articles that match a string.
9532 * Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
8250 @end menu 9533 @end menu
8251 9534
8252 9535
8253 @node Directory Groups 9536 @node Directory Groups
8254 @subsection Directory Groups 9537 @subsection Directory Groups
8262 This might be an opportune moment to mention @code{ange-ftp}, that most 9545 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 9546 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. 9547 didn't think much about it---a backend to read directories. Big deal.
8265 9548
8266 @code{ange-ftp} changes that picture dramatically. For instance, if you 9549 @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 9550 enter the @code{ange-ftp} file name
8268 directory name, ange-ftp will actually allow you to read this directory 9551 @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! 9552 @code{ange-ftp} will actually allow you to read this directory over at
9553 @samp{sina} as a newsgroup. Distributed news ahoy!
8270 9554
8271 @code{nndir} will use @sc{nov} files if they are present. 9555 @code{nndir} will use @sc{nov} files if they are present.
8272 9556
8273 @code{nndir} is a ``read-only'' backend---you can't delete or expire 9557 @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 9558 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. 9574 a group, @code{nneething} must create ``headers'' that Gnus can use.
8291 After all, Gnus is a newsreader, in case you're 9575 After all, Gnus is a newsreader, in case you're
8292 forgetting. @code{nneething} does this in a two-step process. First, it 9576 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., 9577 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. 9578 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 9579 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 9580 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 9581 will use file ownership, name and date and do whatever it can with these
8298 elements. 9582 elements.
8299 9583
8300 All this should happen automatically for you, and you will be presented 9584 All this should happen automatically for you, and you will be presented
8397 9681
8398 If you have some old archived articles that you want to insert into your 9682 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 9683 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 9684 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 9685 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 9686 @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 9687 (@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 9688 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 9689 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! 9690 file is now also stored in lots of @code{nnml} directories, and you can
9691 delete that pesky @file{RMAIL} file. If you have the guts!
8407 9692
8408 Virtual server variables: 9693 Virtual server variables:
8409 9694
8410 @table @code 9695 @table @code
8411 @item nndoc-article-type 9696 @item nndoc-article-type
8419 This variable says whether Gnus is to consider the group a news group or 9704 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) 9705 a mail group. There are two legal values: @code{mail} (the default)
8421 and @code{news}. 9706 and @code{news}.
8422 @end table 9707 @end table
8423 9708
9709 @menu
9710 * Document Server Internals:: How to add your own document types.
9711 @end menu
9712
9713
9714 @node Document Server Internals
9715 @subsubsection Document Server Internals
9716
9717 Adding new document types to be recognized by @code{nndoc} isn't
9718 difficult. You just have to whip up a definition of what the document
9719 looks like, write a predicate function to recognize that document type,
9720 and then hook into @code{nndoc}.
9721
9722 First, here's an example document type definition:
9723
9724 @example
9725 (mmdf
9726 (article-begin . "^\^A\^A\^A\^A\n")
9727 (body-end . "^\^A\^A\^A\^A\n"))
9728 @end example
9729
9730 The definition is simply a unique @dfn{name} followed by a series of
9731 regexp pseudo-variable settings. Below are the possible
9732 variables---don't be daunted by the number of variables; most document
9733 types can be defined with very few settings:
9734
9735 @table @code
9736 @item first-article
9737 If present, @code{nndoc} will skip past all text until it finds
9738 something that match this regexp. All text before this will be
9739 totally ignored.
9740
9741 @item article-begin
9742 This setting has to be present in all document type definitions. It
9743 says what the beginning of each article looks like.
9744
9745 @item head-begin-function
9746 If present, this should be a function that moves point to the head of
9747 the article.
9748
9749 @item nndoc-head-begin
9750 If present, this should be a regexp that matches the head of the
9751 article.
9752
9753 @item nndoc-head-end
9754 This should match the end of the head of the article. It defaults to
9755 @samp{^$}---the empty line.
9756
9757 @item body-begin-function
9758 If present, this function should move point to the beginning of the body
9759 of the article.
9760
9761 @item body-begin
9762 This should match the beginning of the body of the article. It defaults
9763 to @samp{^\n}.
9764
9765 @item body-end-function
9766 If present, this function should move point to the end of the body of
9767 the article.
9768
9769 @item body-end
9770 If present, this should match the end of the body of the article.
9771
9772 @item nndoc-file-end
9773 If present, this should match the end of the file. All text after this
9774 regexp will be totally ignored.
9775
9776 @end table
9777
9778 So, using these variables @code{nndoc} is able to dissect a document
9779 file into a series of articles, each with a head and a body. However, a
9780 few more variables are needed since not all document types are all that
9781 news-like---variables needed to transform the head or the body into
9782 something that's palatable for Gnus:
9783
9784 @table @code
9785 @item prepare-body-function
9786 If present, this function will be called when requesting an article. It
9787 will be called with point at the start of the body, and is useful if the
9788 document has encoded some parts of its contents.
9789
9790 @item article-transform-function
9791 If present, this function is called when requesting an article. It's
9792 meant to be used how more wide-ranging transformation of both head and
9793 body of the article.
9794
9795 @item generate-head-function
9796 If present, this function is called to generate a head that Gnus can
9797 understand. It is called with the article number as a parameter, and is
9798 expected to generate a nice head for the article in question. It is
9799 called when requesting the headers of all articles.
9800
9801 @end table
9802
9803 Let's look at the most complicated example I can come up with---standard
9804 digests:
9805
9806 @example
9807 (standard-digest
9808 (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+"))
9809 (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+"))
9810 (prepare-body-function . nndoc-unquote-dashes)
9811 (body-end-function . nndoc-digest-body-end)
9812 (head-end . "^ ?$")
9813 (body-begin . "^ ?\n")
9814 (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$")
9815 (subtype digest guess))
9816 @end example
9817
9818 We see that all text before a 70-width line of dashes is ignored; all
9819 text after a line that starts with that @samp{^End of} is also ignored;
9820 each article begins with a 30-width line of dashes; the line separating
9821 the head from the body may contain a single space; and that the body is
9822 run through @code{nndoc-unquote-dashes} before being delivered.
9823
9824 To hook your own document definition into @code{nndoc}, use the
9825 @code{nndoc-add-type} function. It takes two parameters---the first is
9826 the definition itself and the second (optional) parameter says where in
9827 the document type definition alist to put this definition. The alist is
9828 traversed sequentially, and @code{nndoc-TYPE-type-p} is called for each
9829 type. So @code{nndoc-mmdf-type-p} is called to see whether a document
9830 is of @code{mmdf} type, and so on. These type predicates should return
9831 @code{nil} if the document is not of the correct type; @code{t} if it is
9832 of the correct type; and a number if the document might be of the
9833 correct type. A high number means high probability; a low number means
9834 low probability with @samp{0} being the lowest legal number.
9835
8424 9836
8425 @node SOUP 9837 @node SOUP
8426 @subsection SOUP 9838 @subsection SOUP
8427 @cindex SOUP 9839 @cindex SOUP
8428 @cindex offline 9840 @cindex offline
8442 9854
8443 A file format called @sc{soup} has been developed for transporting news 9855 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 9856 and mail from servers to home machines and back again. It can be a bit
8445 fiddly. 9857 fiddly.
8446 9858
9859 First some terminology:
9860
9861 @table @dfn
9862
9863 @item server
9864 This is the machine that is connected to the outside world and where you
9865 get news and/or mail from.
9866
9867 @item home machine
9868 This is the machine that you want to do the actual reading and responding
9869 on. It is typically not connected to the rest of the world in any way.
9870
9871 @item packet
9872 Something that contains messages and/or commands. There are two kinds
9873 of packets:
9874
9875 @table @dfn
9876 @item message packets
9877 These are packets made at the server, and typically contains lots of
9878 messages for you to read. These are called @file{SoupoutX.tgz} by
9879 default, where @var{X} is a number.
9880
9881 @item response packets
9882 These are packets made at the home machine, and typically contains
9883 replies that you've written. These are called @file{SoupinX.tgz} by
9884 default, where @var{X} is a number.
9885
9886 @end table
9887
9888 @end table
9889
9890
8447 @enumerate 9891 @enumerate
8448 9892
8449 @item 9893 @item
8450 You log in on the server and create a @sc{soup} packet. You can either 9894 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 9895 use a dedicated @sc{soup} thingie (like the @code{awk} program), or you
8452 packet with the @kbd{O s} command. 9896 can use Gnus to create the packet with its @sc{soup} commands (@kbd{O
9897 s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}).
8453 9898
8454 @item 9899 @item
8455 You transfer the packet home. Rail, boat, car or modem will do fine. 9900 You transfer the packet home. Rail, boat, car or modem will do fine.
8456 9901
8457 @item 9902 @item
8458 You put the packet in your home directory. 9903 You put the packet in your home directory.
8459 9904
8460 @item 9905 @item
8461 You fire up Gnus using the @code{nnsoup} backend as the native server. 9906 You fire up Gnus on your home machine using the @code{nnsoup} backend as
9907 the native or secondary server.
8462 9908
8463 @item 9909 @item
8464 You read articles and mail and answer and followup to the things you 9910 You read articles and mail and answer and followup to the things you
8465 want. 9911 want (@pxref{SOUP Replies}).
8466 9912
8467 @item 9913 @item
8468 You do the @kbd{G s r} command to pack these replies into a @sc{soup} 9914 You do the @kbd{G s r} command to pack these replies into a @sc{soup}
8469 packet. 9915 packet.
8470 9916
8489 @end menu 9935 @end menu
8490 9936
8491 9937
8492 @node SOUP Commands 9938 @node SOUP Commands
8493 @subsubsection SOUP Commands 9939 @subsubsection SOUP Commands
9940
9941 These are commands for creating and manipulating @sc{soup} packets.
8494 9942
8495 @table @kbd 9943 @table @kbd
8496 @item G s b 9944 @item G s b
8497 @kindex G s b (Group) 9945 @kindex G s b (Group)
8498 @findex gnus-group-brew-soup 9946 @findex gnus-group-brew-soup
8501 process/prefix convention. 9949 process/prefix convention.
8502 9950
8503 @item G s w 9951 @item G s w
8504 @kindex G s w (Group) 9952 @kindex G s w (Group)
8505 @findex gnus-soup-save-areas 9953 @findex gnus-soup-save-areas
8506 Save all data files (@code{gnus-soup-save-areas}). 9954 Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
8507 9955
8508 @item G s s 9956 @item G s s
8509 @kindex G s s (Group) 9957 @kindex G s s (Group)
8510 @findex gnus-soup-send-replies 9958 @findex gnus-soup-send-replies
8511 Send all replies from the replies packet 9959 Send all replies from the replies packet
8524 @item O s 9972 @item O s
8525 @kindex O s (Summary) 9973 @kindex O s (Summary)
8526 @findex gnus-soup-add-article 9974 @findex gnus-soup-add-article
8527 This summary-mode command adds the current article to a @sc{soup} packet 9975 This summary-mode command adds the current article to a @sc{soup} packet
8528 (@code{gnus-soup-add-article}). It understands the process/prefix 9976 (@code{gnus-soup-add-article}). It understands the process/prefix
8529 convention. 9977 convention (@pxref{Process/Prefix}).
8530 9978
8531 @end table 9979 @end table
8532 9980
8533 9981
8534 There are a few variables to customize where Gnus will put all these 9982 There are a few variables to customize where Gnus will put all these
8542 @sc{soup} packets. The default is @file{~/SoupBrew/}. 9990 @sc{soup} packets. The default is @file{~/SoupBrew/}.
8543 9991
8544 @item gnus-soup-replies-directory 9992 @item gnus-soup-replies-directory
8545 @vindex gnus-soup-replies-directory 9993 @vindex gnus-soup-replies-directory
8546 This is what Gnus will use as a temporary directory while sending our 9994 This is what Gnus will use as a temporary directory while sending our
8547 reply packets. The default is @file{~/SoupBrew/SoupReplies/}. 9995 reply packets. @file{~/SoupBrew/SoupReplies/} is the default.
8548 9996
8549 @item gnus-soup-prefix-file 9997 @item gnus-soup-prefix-file
8550 @vindex gnus-soup-prefix-file 9998 @vindex gnus-soup-prefix-file
8551 Name of the file where Gnus stores the last used prefix. The default is 9999 Name of the file where Gnus stores the last used prefix. The default is
8552 @samp{gnus-prefix}. 10000 @samp{gnus-prefix}.
8654 @sc{soup} system. 10102 @sc{soup} system.
8655 10103
8656 In specific, this is what it does: 10104 In specific, this is what it does:
8657 10105
8658 @lisp 10106 @lisp
8659 (setq gnus-inews-article-function 'nnsoup-request-post) 10107 (setq message-send-news-function 'nnsoup-request-post)
8660 (setq send-mail-function 'nnsoup-request-mail) 10108 (setq message-send-mail-function 'nnsoup-request-mail)
8661 @end lisp 10109 @end lisp
8662 10110
8663 And that's it, really. If you only want news to go into the @sc{soup} 10111 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 10112 system you just use the first line. If you only want mail to be
8665 @sc{soup}ed you use the second. 10113 @sc{soup}ed you use the second.
10114
10115
10116 @node Web Searches
10117 @subsection Web Searches
10118 @cindex nnweb
10119 @cindex DejaNews
10120 @cindex Alta Vista
10121 @cindex InReference
10122 @cindex Usenet searches
10123 @cindex searching the Usenet
10124
10125 It's, like, too neat to search the Usenet for articles that match a
10126 string, but it, like, totally @emph{sucks}, like, totally, to use one of
10127 those, like, Web browsers, and you, like, have to, rilly, like, look at
10128 the commercials, so, like, with Gnus you can do @emph{rad}, rilly,
10129 searches without having to use a browser.
10130
10131 The @code{nnweb} backend allows an easy interface to the mighty search
10132 engine. You create an @code{nnweb} group, enter a search pattern, and
10133 then enter the group and read the articles like you would any normal
10134 group. The @kbd{G w} command in the group buffer (@pxref{Foreign
10135 Groups}) will do this in an easy-to-use fashion.
10136
10137 @code{nnweb} groups don't really lend themselves to being solid
10138 groups---they have a very fleeting idea of article numbers. In fact,
10139 each time you enter an @code{nnweb} group (not even changing the search
10140 pattern), you are likely to get the articles ordered in a different
10141 manner. Not even using duplicate suppression (@code{Duplicate
10142 Suppression}) will help, since @code{nnweb} doesn't even know the
10143 @code{Message-ID} of the articles before reading them using some search
10144 engines (DejaNews, for instance). The only possible way to keep track
10145 of which articles you've read is by scoring on the @code{Date}
10146 header---mark all articles that were posted before the last date you
10147 read the group as read.
10148
10149 If the search engine changes its output substantially, @code{nnweb}
10150 won't be able to parse it and will fail. One could hardly fault the Web
10151 providers if they were to do this---their @emph{raison d'être} is to
10152 make money off of advertisements, not to provide services to the
10153 community. Since @code{nnweb} washes the ads off all the articles, one
10154 might think that the providers might be somewhat miffed. We'll see.
10155
10156 You must have the @code{url} and @code{w3} package installed to be able
10157 to use @code{nnweb}.
10158
10159 Virtual server variables:
10160
10161 @table @code
10162 @item nnweb-type
10163 @vindex nnweb-type
10164 What search engine type is being used. The currently supported types
10165 are @code{dejanews}, @code{altavista} and @code{reference}.
10166
10167 @item nnweb-search
10168 @vindex nnweb-search
10169 The search string to feed to the search engine.
10170
10171 @item nnweb-max-hits
10172 @vindex nnweb-max-hits
10173 Advisory maximum number of hits per search to display. The default is
10174 100.
10175
10176 @item nnweb-type-definition
10177 @vindex nnweb-type-definition
10178 Type-to-definition alist. This alist says what @code{nnweb} should do
10179 with the various search engine types. The following elements must be
10180 present:
10181
10182 @table @code
10183 @item article
10184 Function to decode the article and provide something that Gnus
10185 understands.
10186
10187 @item map
10188 Function to create an article number to message header and URL alist.
10189
10190 @item search
10191 Function to send the search string to the search engine.
10192
10193 @item address
10194 The address the aforementioned function should send the search string
10195 to.
10196
10197 @item id
10198 Format string URL to fetch an article by @code{Message-ID}.
10199 @end table
10200
10201 @end table
10202
10203
10204
10205 @node Mail-To-News Gateways
10206 @subsection Mail-To-News Gateways
10207 @cindex mail-to-news gateways
10208 @cindex gateways
10209
10210 If your local @code{nntp} server doesn't allow posting, for some reason
10211 or other, you can post using one of the numerous mail-to-news gateways.
10212 The @code{nngateway} backend provides the interface.
10213
10214 Note that you can't read anything from this backend---it can only be
10215 used to post with.
10216
10217 Server variables:
10218
10219 @table @code
10220 @item nngateway-address
10221 @vindex nngateway-address
10222 This is the address of the mail-to-news gateway.
10223
10224 @item nngateway-header-transformation
10225 @vindex nngateway-header-transformation
10226 News headers have often have to be transformed in some odd way or other
10227 for the mail-to-news gateway to accept it. This variable says what
10228 transformation should be called, and defaults to
10229 @code{nngateway-simple-header-transformation}. The function is called
10230 narrowed to the headers to be transformed and with one parameter---the
10231 gateway address.
10232
10233 This default function just inserts a new @code{To} header based on the
10234 @code{Newsgroups} header and the gateway address---an article with this
10235 @code{Newsgroups} header:
10236
10237 @example
10238 Newsgroups: alt.religion.emacs
10239 @end example
10240
10241 will get this @code{From} header inserted:
10242
10243 @example
10244 To: alt-religion-emacs@@GATEWAY
10245 @end example
10246
10247 @end table
10248
10249 So, to use this, simply say something like:
10250
10251 @lisp
10252 (setq gnus-post-method '(nngateway "GATEWAY.ADDRESS"))
10253 @end lisp
8666 10254
8667 10255
8668 @node Combined Groups 10256 @node Combined Groups
8669 @section Combined Groups 10257 @section Combined Groups
8670 10258
8823 * Summary Score Commands:: Adding score entries for the current group. 10411 * Summary Score Commands:: Adding score entries for the current group.
8824 * Group Score Commands:: General score commands. 10412 * Group Score Commands:: General score commands.
8825 * Score Variables:: Customize your scoring. (My, what terminology). 10413 * Score Variables:: Customize your scoring. (My, what terminology).
8826 * Score File Format:: What a score file may contain. 10414 * Score File Format:: What a score file may contain.
8827 * Score File Editing:: You can edit score files by hand as well. 10415 * Score File Editing:: You can edit score files by hand as well.
8828 * Adaptive Scoring:: Big Sister Gnus @emph{knows} what you read. 10416 * Adaptive Scoring:: Big Sister Gnus knows what you read.
10417 * Home Score File:: How to say where new score entries are to go.
8829 * Followups To Yourself:: Having Gnus notice when people answer you. 10418 * Followups To Yourself:: Having Gnus notice when people answer you.
8830 * Scoring Tips:: How to score effectively. 10419 * Scoring Tips:: How to score effectively.
8831 * Reverse Scoring:: That problem child of old is not problem. 10420 * Reverse Scoring:: That problem child of old is not problem.
8832 * Global Score Files:: Earth-spanning, ear-splitting score files. 10421 * Global Score Files:: Earth-spanning, ear-splitting score files.
8833 * Kill Files:: They are still here, but they can be ignored. 10422 * Kill Files:: They are still here, but they can be ignored.
10423 * Converting Kill Files:: Translating kill files to score files.
8834 * GroupLens:: Getting predictions on what you like to read. 10424 * GroupLens:: Getting predictions on what you like to read.
10425 * Advanced Scoring:: Using logical expressions to build score rules.
10426 * Score Decays:: It can be useful to let scores wither away.
8835 @end menu 10427 @end menu
8836 10428
8837 10429
8838 @node Summary Score Commands 10430 @node Summary Score Commands
8839 @section Summary Score Commands 10431 @section Summary Score Commands
8845 @dfn{current score file alist}. The score commands simply insert 10437 @dfn{current score file alist}. The score commands simply insert
8846 entries into this list, and upon group exit, this list is saved. 10438 entries into this list, and upon group exit, this list is saved.
8847 10439
8848 The current score file is by default the group's local score file, even 10440 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 10441 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 10442 some other score file (e.g. @file{all.SCORE}), you must first make this
8851 score file the current one. 10443 score file the current one.
8852 10444
8853 General score commands that don't actually change the score file: 10445 General score commands that don't actually change the score file:
8854 10446
8855 @table @kbd 10447 @table @kbd
8870 @findex gnus-score-find-trace 10462 @findex gnus-score-find-trace
8871 Display all score rules that have been used on the current article 10463 Display all score rules that have been used on the current article
8872 (@code{gnus-score-find-trace}). 10464 (@code{gnus-score-find-trace}).
8873 10465
8874 @item V R 10466 @item V R
8875 @cindex V R (Summary) 10467 @kindex V R (Summary)
8876 @findex gnus-summary-rescore 10468 @findex gnus-summary-rescore
8877 Run the current summary through the scoring process 10469 Run the current summary through the scoring process
8878 (@code{gnus-summary-rescore}). This might be useful if you're playing 10470 (@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 10471 around with your score files behind Gnus' back and want to see the
8880 effect you're having. 10472 effect you're having.
8905 (@code{gnus-score-edit-file}). 10497 (@code{gnus-score-edit-file}).
8906 10498
8907 @item V F 10499 @item V F
8908 @kindex V F (Summary) 10500 @kindex V F (Summary)
8909 @findex gnus-score-flush-cache 10501 @findex gnus-score-flush-cache
8910 Flush the score cahe (@code{gnus-score-flush-cache}). This is useful 10502 Flush the score cache (@code{gnus-score-flush-cache}). This is useful
8911 after editing score files. 10503 after editing score files.
8912 10504
8913 @item V C 10505 @item V C
8914 @kindex V C (Summary) 10506 @kindex V C (Summary)
8915 @findex gnus-score-customize 10507 @findex gnus-score-customize
9152 10744
9153 @item gnus-summary-default-score 10745 @item gnus-summary-default-score
9154 @vindex gnus-summary-default-score 10746 @vindex gnus-summary-default-score
9155 Default score of an article, which is 0 by default. 10747 Default score of an article, which is 0 by default.
9156 10748
10749 @item gnus-summary-expunge-below
10750 @vindex gnus-summary-expunge-below
10751 Don't display the summary lines of articles that have scores lower than
10752 this variable. This is @code{nil} by default, which means that no
10753 articles will be hidden.
10754
9157 @item gnus-score-over-mark 10755 @item gnus-score-over-mark
9158 @vindex gnus-score-over-mark 10756 @vindex gnus-score-over-mark
9159 Mark (in the third column) used for articles with a score over the 10757 Mark (in the third column) used for articles with a score over the
9160 default. Default is @samp{+}. 10758 default. Default is @samp{+}.
9161 10759
9177 Only apply the group's own score file. 10775 Only apply the group's own score file.
9178 10776
9179 @item gnus-score-find-bnews 10777 @item gnus-score-find-bnews
9180 @findex gnus-score-find-bnews 10778 @findex gnus-score-find-bnews
9181 Apply all score files that match, using bnews syntax. This is the 10779 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}, 10780 default. If the current group is @samp{gnu.emacs.gnus}, for instance,
9183 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and 10781 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and
9184 @file{gnu.all.SCORE} would all apply. In short, the instances of 10782 @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 10783 @samp{all} in the score file names are translated into @samp{.*}, and
9186 then a regexp match is done. 10784 then a regexp match is done.
9187 10785
9188 This means that if you have some score entries that you want to apply to 10786 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. 10787 all groups, then you put those entries in the @file{all.SCORE} file.
9190 10788
10789 The score files are applied in a semi-random order, although Gnus will
10790 try to apply the more general score files before the more specific score
10791 files. It does this by looking at the number of elements in the score
10792 file names---discarding the @samp{all} elements.
10793
9191 @item gnus-score-find-hierarchical 10794 @item gnus-score-find-hierarchical
9192 @findex gnus-score-find-hierarchical 10795 @findex gnus-score-find-hierarchical
9193 Apply all score files from all the parent groups. This means that you 10796 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}, 10797 can't have score files like @file{all.SCORE}, but you can have
9195 but you can have @file{SCORE}, @file{comp.SCORE} and 10798 @file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}.
9196 @file{comp.emacs.SCORE}.
9197 10799
9198 @end table 10800 @end table
9199 This variable can also be a list of functions. In that case, all these 10801 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 10802 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 10803 be applied. These functions can also return lists of score alists
9315 whether this score entry matches the article. What match types that can 10917 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. 10918 be used depends on what header you wish to perform the match on.
9317 @table @dfn 10919 @table @dfn
9318 10920
9319 @item From, Subject, References, Xref, Message-ID 10921 @item From, Subject, References, Xref, Message-ID
9320 For most header types, there are the @code{r} and @code{R} (regexp) as 10922 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 10923 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 10924 @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} 10925 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 10926 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 10927 that the matches will be done in a case-sensitive manner. All these
9326 abbreviations for the @code{regexp}, @code{string} and @code{exact} 10928 one-letter types are really just abbreviations for the @code{regexp},
9327 types, which you can use instead, if you feel like. 10929 @code{string}, @code{exact}, and @code{word} types, which you can use
10930 instead, if you feel like.
9328 10931
9329 @item Lines, Chars 10932 @item Lines, Chars
9330 These two headers use different match types: @code{<}, @code{>}, 10933 These two headers use different match types: @code{<}, @code{>},
9331 @code{=}, @code{>=} and @code{<=}. 10934 @code{=}, @code{>=} and @code{<=}. When matching on @code{Lines}, be
10935 careful because some backends (like @code{nndir}) do not generate
10936 @code{Lines} header, so every article ends up being marked as having 0
10937 lines. This can lead to strange results if you happen to lower score of
10938 the articles with few lines.
9332 10939
9333 @item Date 10940 @item Date
9334 For the Date header we have three match types: @code{before}, @code{at} 10941 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, 10942 @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 10943 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. 10944 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. 10945 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 10946 sex on a first date. (I have been told that at least one person, and I
9340 function indispensable'', however.) 10947 quote, ``found this function indispensable'', however.)
10948
10949 @cindex ISO8601
10950 @cindex date
10951 A more useful match type is @code{regexp}. With it, you can match the
10952 date string using a regular expression. The date is normalized to
10953 ISO8601 compact format first---@samp{YYYYMMDDTHHMMSS}. If you want to
10954 match all articles that have been posted on April 1st in every year, you
10955 could use @samp{....0401.........} as a match string, for instance.
10956 (Note that the date is kept in its original time zone, so this will
10957 match articles that were posted when it was April 1st where the article
10958 was posted from. Time zones are such wholesome fun for the whole
10959 family, eh?)
9341 10960
9342 @item Head, Body, All 10961 @item Head, Body, All
9343 These three match keys use the same match types as the @code{From} (etc) 10962 These three match keys use the same match types as the @code{From} (etc)
9344 header uses. 10963 header uses.
9345 10964
9346 @item Followup 10965 @item Followup
9347 This match key will add a score entry on all articles that followup to 10966 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. 10967 @code{From} header, and affect the score of not only the matching
10968 articles, but also all followups to the matching articles. This allows
10969 you e.g. increase the score of followups to your own articles, or
10970 decrease the score of followups to the articles of some known
10971 trouble-maker. Uses the same match types as the @code{From} header
10972 uses.
9349 10973
9350 @item Thread 10974 @item Thread
9351 This match key will add a score entry on all articles that are part of 10975 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 10976 key. If you say that you want to score on a (sub-)thread that is
9353 uses. 10977 started by an article with a @code{Message-ID} @var{X}, then you add a
10978 @samp{thread} match. This will add a new @samp{thread} match for each
10979 article that has @var{X} in its @code{References} header. (These new
10980 @samp{thread} matches will use the @code{Message-ID}s of these matching
10981 articles.) This will ensure that you can raise/lower the score of an
10982 entire thread, even though some articles in the thread may not have
10983 complete @code{References} headers. Note that using this may lead to
10984 undeterministic scores of the articles in the thread.
9354 @end table 10985 @end table
9355 @end enumerate 10986 @end enumerate
9356 10987
9357 @item mark 10988 @item mark
9358 The value of this entry should be a number. Any articles with a score 10989 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 11008 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 11009 are assumed to be score files as well, and will be loaded the same way
9379 this one was. 11010 this one was.
9380 11011
9381 @item exclude-files 11012 @item exclude-files
9382 The clue of this entry should be any number of files. This files will 11013 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 11014 not be loaded, even though they would normally be so, for some reason or
9384 other. 11015 other.
9385 11016
9386 @item eval 11017 @item eval
9387 The value of this entry will be @code{eval}el. This element will be 11018 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. 11029 will only follow a few of the threads, also want to see any new threads.
9399 11030
9400 You can do this with the following two score file entries: 11031 You can do this with the following two score file entries:
9401 11032
9402 @example 11033 @example
9403 (orphan -500) 11034 (orphan -500)
9404 (mark-and-expunge -100) 11035 (mark-and-expunge -100)
9405 @end example 11036 @end example
9406 11037
9407 When you enter the group the first time, you will only see the new 11038 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 11039 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 11040 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the
9499 @vindex gnus-use-adaptive-scoring 11130 @vindex gnus-use-adaptive-scoring
9500 When you read an article, or mark an article as read, or kill an 11131 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 11132 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. 11133 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 11134 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to
9504 @code{t}. 11135 @code{t} or @code{(line)}. If you want score adaptively on separate
11136 words appearing in the subjects, you should set this variable to
11137 @code{(word)}. If you want to use both adaptive methods, set this
11138 variable to @code{(word line)}.
9505 11139
9506 @vindex gnus-default-adaptive-score-alist 11140 @vindex gnus-default-adaptive-score-alist
9507 To give you complete control over the scoring process, you can customize 11141 To give you complete control over the scoring process, you can customize
9508 the @code{gnus-default-adaptive-score-alist} variable. For instance, it 11142 the @code{gnus-default-adaptive-score-alist} variable. For instance, it
9509 might look something like this: 11143 might look something like this:
9542 If you have marked 10 articles with the same subject with 11176 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. 11177 @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 11178 That means that that subject will get a score of ten times -1, which
9545 should be, unless I'm much mistaken, -10. 11179 should be, unless I'm much mistaken, -10.
9546 11180
11181 If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all
11182 the read articles will be marked with the @samp{E} mark. This'll
11183 probably make adaptive scoring slightly impossible, so auto-expiring and
11184 adaptive scoring doesn't really mix very well.
11185
9547 The headers you can score on are @code{from}, @code{subject}, 11186 The headers you can score on are @code{from}, @code{subject},
9548 @code{message-id}, @code{references}, @code{xref}, @code{lines}, 11187 @code{message-id}, @code{references}, @code{xref}, @code{lines},
9549 @code{chars} and @code{date}. In addition, you can score on 11188 @code{chars} and @code{date}. In addition, you can score on
9550 @code{followup}, which will create an adaptive score entry that matches 11189 @code{followup}, which will create an adaptive score entry that matches
9551 on the @code{References} header using the @code{Message-ID} of the 11190 on the @code{References} header using the @code{Message-ID} of the
9582 the length of the match is less than 11221 the length of the match is less than
9583 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If 11222 @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 11223 this variable is @code{nil}, exact matching will always be used to avoid
9585 this problem. 11224 this problem.
9586 11225
11226 @vindex gnus-default-adaptive-word-score-alist
11227 As mentioned above, you can adapt either on individual words or entire
11228 headers. If you adapt on words, the
11229 @code{gnus-default-adaptive-word-score-alist} variable says what score
11230 each instance of a word should add given a mark.
11231
11232 @lisp
11233 (setq gnus-default-adaptive-word-score-alist
11234 `((,gnus-read-mark . 30)
11235 (,gnus-catchup-mark . -10)
11236 (,gnus-killed-mark . -20)
11237 (,gnus-del-mark . -15)))
11238 @end lisp
11239
11240 This is the default value. If you have adaption on words enabled, every
11241 word that appears in subjects of articles that are marked with
11242 @code{gnus-read-mark} will result in a score rule that increase the
11243 score with 30 points.
11244
11245 @vindex gnus-default-ignored-adaptive-words
11246 @vindex gnus-ignored-adaptive-words
11247 Words that appear in the @code{gnus-default-ignored-adaptive-words} list
11248 will be ignored. If you wish to add more words to be ignored, use the
11249 @code{gnus-ignored-adaptive-words} list instead.
11250
11251 @vindex gnus-adaptive-word-syntax-table
11252 When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
11253 syntax table in effect. It is similar to the standard syntax table, but
11254 it considers numbers to be non-word-constituent characters.
11255
11256 After using this scheme for a while, it might be nice to write a
11257 @code{gnus-psychoanalyze-user} command to go through the rules and see
11258 what words you like and what words you don't like. Or perhaps not.
11259
11260 Note that the adaptive word scoring thing is highly experimental and is
11261 likely to change in the future. Initial impressions seem to indicate
11262 that it's totally useless as it stands. Some more work (involving more
11263 rigorous statistical methods) will have to be done to make this useful.
11264
11265
11266 @node Home Score File
11267 @section Home Score File
11268
11269 The score file where new score file entries will go is called the
11270 @dfn{home score file}. This is normally (and by default) the score file
11271 for the group itself. For instance, the home score file for
11272 @samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}.
11273
11274 However, this may not be what you want. It is often convenient to share
11275 a common home score file among many groups---all @samp{emacs} groups
11276 could perhaps use the same home score file.
11277
11278 @vindex gnus-home-score-file
11279 The variable that controls this is @code{gnus-home-score-file}. It can
11280 be:
11281
11282 @enumerate
11283 @item
11284 A string. Then this file will be used as the home score file for all
11285 groups.
11286
11287 @item
11288 A function. The result of this function will be used as the home score
11289 file. The function will be called with the name of the group as the
11290 parameter.
11291
11292 @item
11293 A list. The elements in this list can be:
11294
11295 @enumerate
11296 @item
11297 @var{(regexp file-name)}. If the @var{regexp} matches the group name,
11298 the @var{file-name} will will be used as the home score file.
11299
11300 @item
11301 A function. If the function returns non-nil, the result will be used as
11302 the home score file.
11303
11304 @item
11305 A string. Use the string as the home score file.
11306 @end enumerate
11307
11308 The list will be traversed from the beginning towards the end looking
11309 for matches.
11310
11311 @end enumerate
11312
11313 So, if you want to use just a single score file, you could say:
11314
11315 @lisp
11316 (setq gnus-home-score-file
11317 "my-total-score-file.SCORE")
11318 @end lisp
11319
11320 If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and
11321 @file{rec.SCORE} for all @samp{rec} groups (and so on), you can say:
11322
11323 @lisp
11324 (setq gnus-home-score-file
11325 'gnus-hierarchial-home-score-file)
11326 @end lisp
11327
11328 This is a ready-made function provided for your convenience.
11329
11330 If you want to have one score file for the @samp{emacs} groups and
11331 another for the @samp{comp} groups, while letting all other groups use
11332 their own home score files:
11333
11334 @lisp
11335 (setq gnus-home-score-file
11336 ;; All groups that match the regexp "\\.emacs"
11337 '("\\.emacs" "emacs.SCORE")
11338 ;; All the comp groups in one score file
11339 ("^comp" "comp.SCORE"))
11340 @end lisp
11341
11342 @vindex gnus-home-adapt-file
11343 @code{gnus-home-adapt-file} works exactly the same way as
11344 @code{gnus-home-score-file}, but says what the home adaptive score file
11345 is instead. All new adaptive file entries will go into the file
11346 specified by this variable, and the same syntax is allowed.
11347
11348 In addition to using @code{gnus-home-score-file} and
11349 @code{gnus-home-adapt-file}, you can also use group parameters
11350 (@pxref{Group Parameters}) and topic parameters (@pxref{Topic
11351 Parameters}) to achieve much the same. Group and topic parameters take
11352 precedence over this variable.
11353
9587 11354
9588 @node Followups To Yourself 11355 @node Followups To Yourself
9589 @section Followups To Yourself 11356 @section Followups To Yourself
9590 11357
9591 Gnus offers two commands for picking out the @code{Message-ID} header in 11358 Gnus offers two commands for picking out the @code{Message-ID} header in
9606 @findex gnus-score-followup-thread 11373 @findex gnus-score-followup-thread
9607 This will add a score to all articles that appear in a thread ``below'' 11374 This will add a score to all articles that appear in a thread ``below''
9608 your own article. 11375 your own article.
9609 @end table 11376 @end table
9610 11377
9611 @vindex gnus-inews-article-hook 11378 @vindex message-sent-hook
9612 These two functions are both primarily meant to be used in hooks like 11379 These two functions are both primarily meant to be used in hooks like
9613 @code{message-send-hook}. 11380 @code{message-sent-hook}.
11381
11382 If you look closely at your own @code{Message-ID}, you'll notice that
11383 the first two or three characters are always the same. Here's two of
11384 mine:
11385
11386 @example
11387 <x6u3u47icf.fsf@@eyesore.no>
11388 <x6sp9o7ibw.fsf@@eyesore.no>
11389 @end example
11390
11391 So ``my'' ident on this machine is @samp{x6}. This can be
11392 exploited---the following rule will raise the score on all followups to
11393 myself:
11394
11395 @lisp
11396 ("references"
11397 ("<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r))
11398 @end lisp
11399
11400 Whether it's the first two or first three characters that are ``yours''
11401 is system-dependent.
11402
9614 11403
9615 @node Scoring Tips 11404 @node Scoring Tips
9616 @section Scoring Tips 11405 @section Scoring Tips
9617 @cindex scoring tips 11406 @cindex scoring tips
9618 11407
9695 All you have to do to use other people's score files is to set the 11484 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, 11485 @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 11486 or each score file directory. Gnus will decide by itself what score
9698 files are applicable to which group. 11487 files are applicable to which group.
9699 11488
9700 Say you want to use all score files in the 11489 Say you want to use the score file
9701 @file{/ftp@@ftp.some-where:/pub/score} directory and the single score 11490 @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}: 11491 all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory:
9703 11492
9704 @lisp 11493 @lisp
9705 (setq gnus-global-score-files 11494 (setq gnus-global-score-files
9706 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" 11495 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE"
9707 "/ftp@@ftp.some-where:/pub/score/")) 11496 "/ftp@@ftp.some-where:/pub/score/"))
9768 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any 11557 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 11558 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 11559 sort of primitive hook function to be run on group entry, even though
9771 that isn't a very good idea. 11560 that isn't a very good idea.
9772 11561
9773 XCNormal kill files look like this: 11562 Normal kill files look like this:
9774 11563
9775 @lisp 11564 @lisp
9776 (gnus-kill "From" "Lars Ingebrigtsen") 11565 (gnus-kill "From" "Lars Ingebrigtsen")
9777 (gnus-kill "Subject" "ding") 11566 (gnus-kill "Subject" "ding")
9778 (gnus-expunge "X") 11567 (gnus-expunge "X")
9847 A hook called in kill-file mode buffers. 11636 A hook called in kill-file mode buffers.
9848 11637
9849 @end table 11638 @end table
9850 11639
9851 11640
11641 @node Converting Kill Files
11642 @section Converting Kill Files
11643 @cindex kill files
11644 @cindex converting kill files
11645
11646 If you have loads of old kill files, you may want to convert them into
11647 score files. If they are ``regular'', you can use
11648 the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
11649 by hand.
11650
11651 The kill to score conversion package isn't included in Gnus by default.
11652 You can fetch it from
11653 @file{http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}.
11654
11655 If your old kill files are very complex---if they contain more
11656 non-@code{gnus-kill} forms than not, you'll have to convert them by
11657 hand. Or just let them be as they are. Gnus will still use them as
11658 before.
11659
11660
9852 @node GroupLens 11661 @node GroupLens
9853 @section GroupLens 11662 @section GroupLens
9854 @cindex GroupLens 11663 @cindex GroupLens
9855 11664
9856 GroupLens is a collaborative filtering system that helps you work 11665 GroupLens is a collaborative filtering system that helps you work
9877 11686
9878 @node Using GroupLens 11687 @node Using GroupLens
9879 @subsection Using GroupLens 11688 @subsection Using GroupLens
9880 11689
9881 To use GroupLens you must register a pseudonym with your local Better 11690 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 11691 Bit Bureau (BBB).
9883 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html}. 11692 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
11693 better bit in town is at the moment.
9884 11694
9885 Once you have registered you'll need to set a couple of variables. 11695 Once you have registered you'll need to set a couple of variables.
9886 11696
9887 @table @code 11697 @table @code
9888 11698
9891 Setting this variable to a non-@code{nil} value will make Gnus hook into 11701 Setting this variable to a non-@code{nil} value will make Gnus hook into
9892 all the relevant GroupLens functions. 11702 all the relevant GroupLens functions.
9893 11703
9894 @item grouplens-pseudonym 11704 @item grouplens-pseudonym
9895 @vindex grouplens-pseudonym 11705 @vindex grouplens-pseudonym
9896 This variable should be set to the pseudonum you got when registering 11706 This variable should be set to the pseudonym you got when registering
9897 with the Better Bit Bureau. 11707 with the Better Bit Bureau.
9898 11708
9899 @item grouplens-newsgroups 11709 @item grouplens-newsgroups
9900 @vindex grouplens-newsgroups 11710 @vindex grouplens-newsgroups
9901 A list of groups that you want to get GroupLens predictions for. 11711 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 11834 enhanced. It accepts the same specs as the normal summary line format
10025 (@pxref{Summary Buffer Lines}). The default is 11835 (@pxref{Summary Buffer Lines}). The default is
10026 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. 11836 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}.
10027 11837
10028 @item grouplens-bbb-host 11838 @item grouplens-bbb-host
10029 Host running the bbbd server. The default is 11839 Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the
10030 @samp{grouplens.cs.umn.edu}. 11840 default.
10031 11841
10032 @item grouplens-bbb-port 11842 @item grouplens-bbb-port
10033 Port of the host running the bbbd server. The default is 9000. 11843 Port of the host running the bbbd server. The default is 9000.
10034 11844
10035 @item grouplens-score-offset 11845 @item grouplens-score-offset
10041 This variable allows the user to magnify the effect of GroupLens scores. 11851 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. 11852 The scale factor is applied after the offset. The default is 1.
10043 11853
10044 @end table 11854 @end table
10045 11855
11856
11857 @node Advanced Scoring
11858 @section Advanced Scoring
11859
11860 Scoring on Subjects and From headers is nice enough, but what if you're
11861 really interested in what a person has to say only when she's talking
11862 about a particular subject? Or what about if you really don't want to
11863 read what person A has to say when she's following up to person B, but
11864 want to read what she says when she's following up to person C?
11865
11866 By using advanced scoring rules you may create arbitrarily complex
11867 scoring patterns.
11868
11869 @menu
11870 * Advanced Scoring Syntax:: A definition.
11871 * Advanced Scoring Examples:: What they look like.
11872 * Advanced Scoring Tips:: Getting the most out of it.
11873 @end menu
11874
11875
11876 @node Advanced Scoring Syntax
11877 @subsection Advanced Scoring Syntax
11878
11879 Ordinary scoring rules have a string as the first element in the rule.
11880 Advanced scoring rules have a list as the first element. The second
11881 element is the score to be applied if the first element evaluated to a
11882 non-@code{nil} value.
11883
11884 These lists may consist of three logical operators, one redirection
11885 operator, and various match operators.
11886
11887 Logical operators:
11888
11889 @table @code
11890 @item &
11891 @itemx and
11892 This logical operator will evaluate each of its arguments until it finds
11893 one that evaluates to @code{false}, and then it'll stop. If all arguments
11894 evaluate to @code{true} values, then this operator will return
11895 @code{true}.
11896
11897 @item |
11898 @itemx or
11899 This logical operator will evaluate each of its arguments until it finds
11900 one that evaluates to @code{true}. If no arguments are @code{true},
11901 then this operator will return @code{false}.
11902
11903 @item !
11904 @itemx not
11905 @itemx ¬
11906 This logical operator only takes a single argument. It returns the
11907 inverse of the value of its argument.
11908
11909 @end table
11910
11911 There is an @dfn{indirection operator} that will make its arguments
11912 apply to the ancestors of the current article being scored. For
11913 instance, @code{1-} will make score rules apply to the parent of the
11914 current article. @code{2-} will make score fules apply to the
11915 grandparent of the current article. Alternatively, you can write
11916 @code{^^}, where the number of @code{^}s (carets) say how far back into
11917 the ancestry you want to go.
11918
11919 Finally, we have the match operators. These are the ones that do the
11920 real work. Match operators are header name strings followed by a match
11921 and a match type. A typical match operator looks like @samp{("from"
11922 "Lars Ingebrigtsen" s)}. The header names are the same as when using
11923 simple scoring, and the match types are also the same.
11924
11925
11926 @node Advanced Scoring Examples
11927 @subsection Advanced Scoring Examples
11928
11929 Let's say you want to increase the score of articles written by Lars
11930 when he's talking about Gnus:
11931
11932 @example
11933 ((&
11934 ("from" "Lars Ingebrigtsen")
11935 ("subject" "Gnus"))
11936 1000)
11937 @end example
11938
11939 Quite simple, huh?
11940
11941 When he writes long articles, he sometimes has something nice to say:
11942
11943 @example
11944 ((&
11945 ("from" "Lars Ingebrigtsen")
11946 (|
11947 ("subject" "Gnus")
11948 ("lines" 100 >)))
11949 1000)
11950 @end example
11951
11952 However, when he responds to things written by Reig Eigil Logge, you
11953 really don't want to read what he's written:
11954
11955 @example
11956 ((&
11957 ("from" "Lars Ingebrigtsen")
11958 (1- ("from" "Reig Eigir Logge")))
11959 -100000)
11960 @end example
11961
11962 Everybody that follows up Redmondo when he writes about disappearing
11963 socks should have their scores raised, but only when they talk about
11964 white socks. However, when Lars talks about socks, it's usually not
11965 very interesting:
11966
11967 @example
11968 ((&
11969 (1-
11970 (&
11971 ("from" "redmondo@@.*no" r)
11972 ("body" "disappearing.*socks" t)))
11973 (! ("from" "Lars Ingebrigtsen"))
11974 ("body" "white.*socks"))
11975 1000)
11976 @end example
11977
11978 The possibilities are endless.
11979
11980
11981 @node Advanced Scoring Tips
11982 @subsection Advanced Scoring Tips
11983
11984 The @code{&} and @code{|} logical operators do short-circuit logic.
11985 That is, they stop processing their arguments when it's clear what the
11986 result of the operation will be. For instance, if one of the arguments
11987 of an @code{&} evaluates to @code{false}, there's no point in evaluating
11988 the rest of the arguments. This means that you should put slow matches
11989 (@samp{body}, @code{header}) last and quick matches (@samp{from},
11990 @samp{subject}) first.
11991
11992 The indirection arguments (@code{1-} and so on) will make their
11993 arguments work on previous generations of the thread. If you say
11994 something like:
11995
11996 @example
11997 ...
11998 (1-
11999 (1-
12000 ("from" "lars")))
12001 ...
12002 @end example
12003
12004 Then that means "score on the from header of the grandparent of the
12005 current article". An indirection is quite fast, but it's better to say:
12006
12007 @example
12008 (1-
12009 (&
12010 ("from" "Lars")
12011 ("subject" "Gnus")))
12012 @end example
12013
12014 than it is to say:
12015
12016 @example
12017 (&
12018 (1- ("from" "Lars"))
12019 (1- ("subject" "Gnus")))
12020 @end example
12021
12022
12023 @node Score Decays
12024 @section Score Decays
12025 @cindex score decays
12026 @cindex decays
12027
12028 You may find that your scores have a tendency to grow without
12029 bounds, especially if you're using adaptive scoring. If scores get too
12030 big, they lose all meaning---they simply max out and it's difficult to
12031 use them in any sensible way.
12032
12033 @vindex gnus-decay-scores
12034 @findex gnus-decay-score
12035 @vindex gnus-score-decay-function
12036 Gnus provides a mechanism for decaying scores to help with this problem.
12037 When score files are loaded and @code{gnus-decay-scores} is
12038 non-@code{nil}, Gnus will run the score files through the decaying
12039 mechanism thereby lowering the scores of all non-permanent score rules.
12040 The decay itself if performed by the @code{gnus-score-decay-function}
12041 function, which is @code{gnus-decay-score} by default. Here's the
12042 definition of that function:
12043
12044 @lisp
12045 (defun gnus-decay-score (score)
12046 (floor
12047 (- score
12048 (* (if (< score 0) 1 -1)
12049 (min score
12050 (max gnus-score-decay-constant
12051 (* (abs score)
12052 gnus-score-decay-scale)))))))
12053 @end lisp
12054
12055 @vindex gnus-score-decay-scale
12056 @vindex gnus-score-decay-constant
12057 @code{gnus-score-decay-constant} is 3 by default and
12058 @code{gnus-score-decay-scale} is 0.05. This should cause the following:
12059
12060 @enumerate
12061 @item
12062 Scores between -3 and 3 will be set to 0 when this function is called.
12063
12064 @item
12065 Scores with magnitudes between 3 and 60 will be shrunk by 3.
12066
12067 @item
12068 Scores with magnitudes greater than 60 will be shrunk by 5% of the
12069 score.
12070 @end enumerate
12071
12072 If you don't like this decay function, write your own. It is called
12073 with the score to be decayed as its only parameter, and it should return
12074 the new score, which should be an integer.
12075
12076 Gnus will try to decay scores once a day. If you haven't run Gnus for
12077 four days, Gnus will decay the scores four times, for instance.
10046 12078
10047 12079
10048 @node Various 12080 @node Various
10049 @chapter Various 12081 @chapter Various
10050 12082
10058 * Highlighting and Menus:: Making buffers look all nice and cozy. 12090 * Highlighting and Menus:: Making buffers look all nice and cozy.
10059 * Buttons:: Get tendonitis in ten easy steps! 12091 * Buttons:: Get tendonitis in ten easy steps!
10060 * Daemons:: Gnus can do things behind your back. 12092 * Daemons:: Gnus can do things behind your back.
10061 * NoCeM:: How to avoid spam and other fatty foods. 12093 * NoCeM:: How to avoid spam and other fatty foods.
10062 * Picons:: How to display pictures of what your reading. 12094 * Picons:: How to display pictures of what your reading.
12095 * Undo:: Some actions can be undone.
12096 * Moderation:: What to do if you're a moderator.
12097 * XEmacs Enhancements:: There are more pictures and stuff under XEmacs.
10063 * Various Various:: Things that are really various. 12098 * Various Various:: Things that are really various.
10064 @end menu 12099 @end menu
10065 12100
10066 12101
10067 @node Process/Prefix 12102 @node Process/Prefix
10092 If there is neither a numeric prefix nor any articles marked with the 12127 If there is neither a numeric prefix nor any articles marked with the
10093 process mark, just perform the operation on the current article. 12128 process mark, just perform the operation on the current article.
10094 12129
10095 Quite simple, really, but it needs to be made clear so that surprises 12130 Quite simple, really, but it needs to be made clear so that surprises
10096 are avoided. 12131 are avoided.
12132
12133 Commands that react to the process mark will push the current list of
12134 process marked articles onto a stack and will then clear all process
12135 marked articles. You can restore the previous configuration with the
12136 @kbd{M P y} command (@pxref{Setting Process Marks}).
10097 12137
10098 @vindex gnus-summary-goto-unread 12138 @vindex gnus-summary-goto-unread
10099 One thing that seems to shock & horrify lots of people is that, for 12139 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}. 12140 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 12141 Since each @kbd{d} (which marks the current article as read) by default
10150 12190
10151 Here's an example format spec (from the group buffer): @samp{%M%S%5y: 12191 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 12192 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are
10153 lots of percentages everywhere. 12193 lots of percentages everywhere.
10154 12194
12195 @menu
12196 * Formatting Basics:: A formatting variable is basically a format string.
12197 * Advanced Formatting:: Modifying output in various ways.
12198 * User-Defined Specs:: Having Gnus call your own functions.
12199 * Formatting Fonts:: Making the formatting look colorful and nice.
12200 @end menu
12201
12202 Currently Gnus uses the following formatting variables:
12203 @code{gnus-group-line-format}, @code{gnus-summary-line-format},
12204 @code{gnus-server-line-format}, @code{gnus-topic-line-format},
12205 @code{gnus-group-mode-line-format},
12206 @code{gnus-summary-mode-line-format},
12207 @code{gnus-article-mode-line-format},
12208 @code{gnus-server-mode-line-format}, and
12209 @code{gnus-summary-pick-line-format}.
12210
12211 All these format variables can also be arbitrary elisp forms. In that
12212 case, they will be @code{eval}ed to insert the required lines.
12213
12214 @kindex M-x gnus-update-format
12215 @findex gnus-update-format
12216 Gnus includes a command to help you while creating your own format
12217 specs. @kbd{M-x gnus-update-format} will @code{eval} the current form,
12218 update the spec in question and pop you to a buffer where you can
12219 examine the resulting lisp code to be run to generate the line.
12220
12221
12222
12223 @node Formatting Basics
12224 @subsection Formatting Basics
12225
10155 Each @samp{%} element will be replaced by some string or other when the 12226 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} 12227 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 12228 spec, and pad with spaces to get a 5-character field''.
10158 normal format spec, almost. 12229
10159 12230 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 12231 modifier between the @samp{%} and the formatting type character will
10161 more than 4 characters wide and never less than 6 characters wide. 12232 @dfn{pad} the output so that it is always at least that long.
10162 12233 @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 12234 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 12235 the right instead.
10165 will get the special @code{mouse-face} property set, which means that it 12236
10166 will be highlighted (with @code{gnus-mouse-face}) when you put the mouse 12237 You may also wish to limit the length of the field to protect against
10167 pointer over it. 12238 particularly wide values. For that you can say @samp{%4,6y}, which
12239 means that the field will never be more than 6 characters wide and never
12240 less than 4 characters wide.
12241
12242
12243 @node Advanced Formatting
12244 @subsection Advanced Formatting
12245
12246 It is frequently useful to post-process the fields in some way.
12247 Padding, limiting, cutting off parts and suppressing certain values can
12248 be achieved by using @dfn{tilde modifiers}. A typical tilde spec might
12249 look like @samp{%~(cut 3)~(ignore "0")y}.
12250
12251 These are the legal modifiers:
12252
12253 @table @code
12254 @item pad
12255 @itemx pad-left
12256 Pad the field to the left with spaces until it reaches the required
12257 length.
12258
12259 @item pad-right
12260 Pad the field to the right with spaces until it reaches the required
12261 length.
12262
12263 @item max
12264 @itemx max-left
12265 Cut off characters from the left until it reaches the specified length.
12266
12267 @item max-right
12268 Cut off characters from the right until it reaches the specified
12269 length.
12270
12271 @item cut
12272 @itemx cut-left
12273 Cut off the specified number of characters from the left.
12274
12275 @item cut-right
12276 Cut off the specified number of characters from the right.
12277
12278 @item ignore
12279 Return an empty string if the field is equal to the specified value.
12280
12281 @item form
12282 Use the specified form as the field value when the @samp{@@} spec is
12283 used.
12284 @end table
12285
12286 Let's take an example. The @samp{%o} spec in the summary mode lines
12287 will return a date in compact ISO8601 format---@samp{19960809T230410}.
12288 This is quite a mouthful, so we want to shave off the century number and
12289 the time, leaving us with a six-character date. That would be
12290 @samp{%~(cut-left 2)~(max-right 6)~(pad 6)o}. (Cutting is done before
12291 maxing, and we need the padding to ensure that the date is never less
12292 than 6 characters to make it look nice in columns.)
12293
12294 Ignoring is done first; then cutting; then maxing; and then as the very
12295 last operation, padding.
12296
12297 If you use lots of these advanced thingies, you'll find that Gnus gets
12298 quite slow. This can be helped enormously by running @kbd{M-x
12299 gnus-compile} when you are satisfied with the look of your lines.
12300 @xref{Compilation}.
12301
12302
12303 @node User-Defined Specs
12304 @subsection User-Defined Specs
12305
12306 All the specs allow for inserting user defined specifiers---@samp{u}.
12307 The next character in the format string should be a letter. Gnus
12308 will call the function @code{gnus-user-format-function-}@samp{X}, where
12309 @samp{X} is the letter following @samp{%u}. The function will be passed
12310 a single parameter---what the parameter means depends on what buffer
12311 it's being called from. The function should return a string, which will
12312 be inserted into the buffer just like information from any other
12313 specifier. This function may also be called with dummy values, so it
12314 should protect against that.
12315
12316 You can also use tilde modifiers (@pxref{Advanced Formatting} to achieve
12317 much the same without defining new functions. Here's an example:
12318 @samp{%~(form (count-lines (point-min) (point)))@@}. The form
12319 given here will be evaluated to yield the current line number, and then
12320 inserted.
12321
12322
12323 @node Formatting Fonts
12324 @subsection Formatting Fonts
12325
12326 There are specs for highlighting, and these are shared by all the format
12327 variables. Text inside the @samp{%(} and @samp{%)} specifiers will get
12328 the special @code{mouse-face} property set, which means that it will be
12329 highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer
12330 over it.
10168 12331
10169 Text inside the @samp{%[} and @samp{%]} specifiers will have their 12332 Text inside the @samp{%[} and @samp{%]} specifiers will have their
10170 normal faces set using @code{gnus-face-0}, which is @code{bold} by 12333 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} 12334 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 12335 instead, and so on. Create as many faces as you wish. The same goes
10194 @end lisp 12357 @end lisp
10195 12358
10196 I'm sure you'll be able to use this scheme to create totally unreadable 12359 I'm sure you'll be able to use this scheme to create totally unreadable
10197 and extremely vulgar displays. Have fun! 12360 and extremely vulgar displays. Have fun!
10198 12361
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 12362 Note that the @samp{%(} specs (and friends) do not make any sense on the
10208 mode-line variables. 12363 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 12364
10220 12365
10221 @node Windows Configuration 12366 @node Windows Configuration
10222 @section Windows Configuration 12367 @section Windows Configuration
10223 @cindex windows configuration 12368 @cindex windows configuration
10243 This is an alist. The @dfn{key} is a symbol that names some action or 12388 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 12389 other. For instance, when displaying the group buffer, the window
10245 configuration function will use @code{group} as the key. A full list of 12390 configuration function will use @code{group} as the key. A full list of
10246 possible names is listed below. 12391 possible names is listed below.
10247 12392
10248 The @dfn{value} (i. e., the @dfn{split}) says how much space each buffer 12393 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 - 12394 should occupy. To take the @code{article} split as an example -
10250 12395
10251 @lisp 12396 @lisp
10252 (article (vertical 1.0 (summary 0.25 point) 12397 (article (vertical 1.0 (summary 0.25 point)
10253 (article 1.0))) 12398 (article 1.0)))
10404 @code{reply-yank}, @code{mail-bounce}, @code{draft}, 12549 @code{reply-yank}, @code{mail-bounce}, @code{draft},
10405 @code{pipe}, @code{bug}, @code{compose-bounce}. 12550 @code{pipe}, @code{bug}, @code{compose-bounce}.
10406 12551
10407 Note that the @code{message} key is used for both 12552 Note that the @code{message} key is used for both
10408 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If 12553 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If
10409 it is desireable to distinguish between the two, something like this 12554 it is desirable to distinguish between the two, something like this
10410 might be used: 12555 might be used:
10411 12556
10412 @lisp 12557 @lisp
10413 (message (horizontal 1.0 12558 (message (horizontal 1.0
10414 (vertical 1.0 (message 1.0 point)) 12559 (vertical 1.0 (message 1.0 point))
10415 (vertical 0.24 12560 (vertical 0.24
10416 (if (buffer-live-p gnus-summary-buffer) 12561 (if (buffer-live-p gnus-summary-buffer)
10417 '(summary 0.5)) 12562 '(summary 0.5))
10418 (group 1.0))))) 12563 (group 1.0)))))
10419 @end lisp 12564 @end lisp
10420 12565
10421 @findex gnus-add-configuration 12566 @findex gnus-add-configuration
10422 Since the @code{gnus-buffer-configuration} variable is so long and 12567 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 12568 complicated, there's a function you can use to ease changing the config
10431 (summary .25 point) 12576 (summary .25 point)
10432 (article 1.0)))) 12577 (article 1.0))))
10433 @end lisp 12578 @end lisp
10434 12579
10435 You'd typically stick these @code{gnus-add-configuration} calls in your 12580 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 12581 @file{.gnus.el} file or in some startup hook---they should be run after
10437 Gnus has been loaded. 12582 Gnus has been loaded.
10438 12583
10439 12584 @vindex gnus-always-force-window-configuration
10440 @node Compilation 12585 If all windows mentioned in the configuration are already visible, Gnus
10441 @section Compilation 12586 won't change the window configuration. If you always want to force the
12587 ``right'' window configuration, you can set
12588 @code{gnus-always-force-window-configuration} to non-@code{nil}.
12589
12590
12591 @node Compilation
12592 @section Compilation
10442 @cindex compilation 12593 @cindex compilation
10443 @cindex byte-compilation 12594 @cindex byte-compilation
10444 12595
10445 @findex gnus-compile 12596 @findex gnus-compile
10446 12597
10453 course.) 12604 course.)
10454 12605
10455 To help with this, you can run @kbd{M-x gnus-compile} after you've 12606 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) 12607 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 12608 satisfied. This will result in the new specs being byte-compiled, and
10458 you'll get top speed again. 12609 you'll get top speed again. Gnus will save these compiled specs in the
12610 @file{.newsrc.eld} file. (User-defined functions aren't compiled by
12611 this function, though---you should compile them yourself by sticking
12612 them into the @code{.gnus.el} file and byte-compiling that file.)
10459 12613
10460 12614
10461 @node Mode Lines 12615 @node Mode Lines
10462 @section Mode Lines 12616 @section Mode Lines
10463 @cindex mode lines 12617 @cindex mode lines
10474 @cindex display-time 12628 @cindex display-time
10475 12629
10476 @vindex gnus-mode-non-string-length 12630 @vindex gnus-mode-non-string-length
10477 By default, Gnus displays information on the current article in the mode 12631 By default, Gnus displays information on the current article in the mode
10478 lines of the summary and article buffers. The information Gnus wishes 12632 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 12633 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 12634 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 12635 @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 12636 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 12637 additional elements on the mode line (e.g. a clock), you should modify
10484 this variable: 12638 this variable:
10485 12639
10486 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it> 12640 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it>
10487 @lisp 12641 @lisp
10488 (add-hook 'display-time-hook 12642 (add-hook 'display-time-hook
10559 @item gnus-mouse-face 12713 @item gnus-mouse-face
10560 @vindex gnus-mouse-face 12714 @vindex gnus-mouse-face
10561 This is the face (i.e., font) used for mouse highlighting in Gnus. No 12715 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}. 12716 mouse highlights will be done if @code{gnus-visual} is @code{nil}.
10563 12717
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 12718 @end table
10580 12719
10581 There are hooks associated with the creation of all the different menus: 12720 There are hooks associated with the creation of all the different menus:
10582 12721
10583 @table @code 12722 @table @code
10715 the function will then be called once every day somewhere near that 12854 the function will then be called once every day somewhere near that
10716 time. Modified by the @var{idle} parameter, of course. 12855 time. Modified by the @var{idle} parameter, of course.
10717 12856
10718 @vindex gnus-demon-timestep 12857 @vindex gnus-demon-timestep
10719 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep} 12858 (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, 12859 seconds. This is 60 by default. If you change that variable,
10721 all the timings in the handlers will be affected.) 12860 all the timings in the handlers will be affected.)
10722 12861
10723 @vindex gnus-use-demon 12862 @vindex gnus-use-demon
10724 To set the whole thing in motion, though, you have to set 12863 To set the whole thing in motion, though, you have to set
10725 @code{gnus-use-demon} to @code{t}. 12864 @code{gnus-use-demon} to @code{t}.
10732 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) 12871 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30)
10733 @end lisp 12872 @end lisp
10734 12873
10735 @findex gnus-demon-add-nocem 12874 @findex gnus-demon-add-nocem
10736 @findex gnus-demon-add-scanmail 12875 @findex gnus-demon-add-scanmail
12876 @findex gnus-demon-add-rescan
10737 @findex gnus-demon-add-disconnection 12877 @findex gnus-demon-add-disconnection
10738 Some ready-made functions to do this has been created: 12878 Some ready-made functions to do this has been created:
10739 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, and 12879 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
10740 @code{gnus-demon-add-scanmail}. Just put those functions in your 12880 @code{gnus-demon-add-rescan}, and @code{gnus-demon-add-scanmail}. Just
10741 @file{.gnus} if you want those abilities. 12881 put those functions in your @file{.gnus} if you want those abilities.
10742 12882
10743 @findex gnus-demon-init 12883 @findex gnus-demon-init
10744 @findex gnus-demon-cancel 12884 @findex gnus-demon-cancel
10745 @vindex gnus-demon-handlers 12885 @vindex gnus-demon-handlers
10746 If you add handlers to @code{gnus-demon-handlers} directly, you should 12886 If you add handlers to @code{gnus-demon-handlers} directly, you should
10784 by default. 12924 by default.
10785 12925
10786 @item gnus-nocem-groups 12926 @item gnus-nocem-groups
10787 @vindex gnus-nocem-groups 12927 @vindex gnus-nocem-groups
10788 Gnus will look for NoCeM messages in the groups in this list. The 12928 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")}. 12929 default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins"
12930 "alt.nocem.misc" "news.admin.net-abuse.announce")}.
10790 12931
10791 @item gnus-nocem-issuers 12932 @item gnus-nocem-issuers
10792 @vindex gnus-nocem-issuers 12933 @vindex gnus-nocem-issuers
10793 There are many people issuing NoCeM messages. This list says what 12934 There are many people issuing NoCeM messages. This list says what
10794 people you want to listen to. The default is @code{("Automoose-1" 12935 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 12949 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be
10809 Norwegian, and was the person(s) who invented NoCeM. 12950 Norwegian, and was the person(s) who invented NoCeM.
10810 12951
10811 @item jem@@xpat.com; 12952 @item jem@@xpat.com;
10812 @cindex Jem 12953 @cindex Jem
10813 Jem---Korean despammer who is getting very busy these days. 12954 John Milburn---despammer located in Korea who is getting very busy these
12955 days.
10814 12956
10815 @item red@@redpoll.mrfs.oh.us (Richard E. Depew) 12957 @item red@@redpoll.mrfs.oh.us (Richard E. Depew)
10816 Richard E. Depew---lone American despammer. He mostly cancels binary 12958 Richard E. Depew---lone American despammer. He mostly cancels binary
10817 postings to non-binary groups and removes spews (regurgitated articles). 12959 postings to non-binary groups and removes spews (regurgitated articles).
10818 @end table 12960 @end table
10819 12961
10820 You do not have to heed NoCeM messages from all these people---just the 12962 You do not have to heed NoCeM messages from all these people---just the
10821 ones you want to listen to. 12963 ones you want to listen to.
12964
12965 @item gnus-nocem-verifyer
12966 @vindex gnus-nocem-verifyer
12967 @findex mc-verify
12968 This should be a function for verifying that the NoCeM issuer is who she
12969 says she is. The default is @code{mc-verify}, which is a Mailcrypt
12970 function. If this is too slow and you don't care for verification
12971 (which may be dangerous), you can set this variable to @code{nil}.
10822 12972
10823 @item gnus-nocem-directory 12973 @item gnus-nocem-directory
10824 @vindex gnus-nocem-directory 12974 @vindex gnus-nocem-directory
10825 This is where Gnus will store its NoCeM cache files. The default is 12975 This is where Gnus will store its NoCeM cache files. The default is
10826 @file{~/News/NoCeM/}. 12976 @file{~/News/NoCeM/}.
10851 13001
10852 13002
10853 @node Picon Basics 13003 @node Picon Basics
10854 @subsection Picon Basics 13004 @subsection Picon Basics
10855 13005
10856 What are Picons? To quote directly from the Picons Web site 13006 What are Picons? To quote directly from the Picons Web site:
10857 (@samp{http://www.cs.indiana.edu/picons/ftp/index.html}):
10858 13007
10859 @quotation 13008 @quotation
10860 @dfn{Picons} is short for ``personal icons''. They're small, 13009 @dfn{Picons} is short for ``personal icons''. They're small,
10861 constrained images used to represent users and domains on the net, 13010 constrained images used to represent users and domains on the net,
10862 organized into databases so that the appropriate image for a given 13011 organized into databases so that the appropriate image for a given
10864 databases for Usenet newsgroups and weather forecasts. The picons are 13013 databases for Usenet newsgroups and weather forecasts. The picons are
10865 in either monochrome @code{XBM} format or color @code{XPM} and 13014 in either monochrome @code{XBM} format or color @code{XPM} and
10866 @code{GIF} formats. 13015 @code{GIF} formats.
10867 @end quotation 13016 @end quotation
10868 13017
10869 Please see the above mentioned web site for instructions on obtaining 13018 For instructions on obtaining and installing the picons databases, point
10870 and installing the picons databases, or the following ftp site: 13019 your Web browser at
10871 @samp{http://www.cs.indiana.edu/picons/ftp/index.html}. 13020 @file{http://www.cs.indiana.edu/picons/ftp/index.html}.
10872 13021
10873 @vindex gnus-picons-database 13022 @vindex gnus-picons-database
10874 Gnus expects picons to be installed into a location pointed to by 13023 Gnus expects picons to be installed into a location pointed to by
10875 @code{gnus-picons-database}. 13024 @code{gnus-picons-database}.
10876 13025
10918 @item gnus-picons-display-where 13067 @item gnus-picons-display-where
10919 @vindex gnus-picons-display-where 13068 @vindex gnus-picons-display-where
10920 Where the picon images should be displayed. It is @code{picons} by 13069 Where the picon images should be displayed. It is @code{picons} by
10921 default (which by default maps to the buffer @samp{*Picons*}). Other 13070 default (which by default maps to the buffer @samp{*Picons*}). Other
10922 valid places could be @code{article}, @code{summary}, or 13071 valid places could be @code{article}, @code{summary}, or
10923 @samp{"*scratch*"} for all I care. Just make sure that you've made the 13072 @samp{*scratch*} for all I care. Just make sure that you've made the
10924 buffer visible using the standard Gnus window configuration 13073 buffer visible using the standard Gnus window configuration
10925 routines---@xref{Windows Configuration}. 13074 routines---@pxref{Windows Configuration}.
10926 13075
10927 @end table 13076 @end table
10928 13077
10929 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your 13078 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. 13079 window configuration for you to include the @code{picons} buffer.
10984 newsgroups. 13133 newsgroups.
10985 13134
10986 @item gnus-picons-user-directories 13135 @item gnus-picons-user-directories
10987 @vindex gnus-picons-user-directories 13136 @vindex gnus-picons-user-directories
10988 List of subdirectories to search in @code{gnus-picons-database} for user 13137 List of subdirectories to search in @code{gnus-picons-database} for user
10989 faces. Defaults to @code{("local" "users" "usenix" "misc/MISC")}. 13138 faces. @code{("local" "users" "usenix" "misc/MISC")} is the default.
10990 13139
10991 @item gnus-picons-domain-directories 13140 @item gnus-picons-domain-directories
10992 @vindex gnus-picons-domain-directories 13141 @vindex gnus-picons-domain-directories
10993 List of subdirectories to search in @code{gnus-picons-database} for 13142 List of subdirectories to search in @code{gnus-picons-database} for
10994 domain name faces. Defaults to @code{("domains")}. Some people may 13143 domain name faces. Defaults to @code{("domains")}. Some people may
11012 @samp{*Icon Buffer*}. 13161 @samp{*Icon Buffer*}.
11013 13162
11014 @end table 13163 @end table
11015 13164
11016 13165
13166 @node Undo
13167 @section Undo
13168 @cindex undo
13169
13170 It is very useful to be able to undo actions one has done. In normal
13171 Emacs buffers, it's easy enough---you just push the @code{undo} button.
13172 In Gnus buffers, however, it isn't that simple.
13173
13174 The things Gnus displays in its buffer is of no value whatsoever to
13175 Gnus---it's all just data that is designed to look nice to the user.
13176 Killing a group in the group buffer with @kbd{C-k} makes the line
13177 disappear, but that's just a side-effect of the real action---the
13178 removal of the group in question from the internal Gnus structures.
13179 Undoing something like that can't be done by the normal Emacs
13180 @code{undo} function.
13181
13182 Gnus tries to remedy this somewhat by keeping track of what the user
13183 does and coming up with actions that would reverse the actions the user
13184 takes. When the user then presses the @code{undo} key, Gnus will run
13185 the code to reverse the previous action, or the previous actions.
13186 However, not all actions are easily reversible, so Gnus currently offers
13187 a few key functions to be undoable. These include killing groups,
13188 yanking groups, and changing the list of read articles of groups.
13189 That's it, really. More functions may be added in the future, but each
13190 added function means an increase in data to be stored, so Gnus will
13191 never be totally undoable.
13192
13193 @findex gnus-undo-mode
13194 @vindex gnus-use-undo
13195 @findex gnus-undo
13196 The undoability is provided by the @code{gnus-undo-mode} minor mode. It
13197 is used if @code{gnus-use-undo} is non-@code{nil}, which is the
13198 default. The @kbd{M-C-_} key performs the @code{gnus-undo} command
13199 command, which should feel kinda like the normal Emacs @code{undo}
13200 command.
13201
13202
13203 @node Moderation
13204 @section Moderation
13205 @cindex moderation
13206
13207 If you are a moderator, you can use the @file{gnus-mdrtn.el} package.
13208 It is not included in the standard Gnus package. Write a mail to
13209 @samp{larsi@@ifi.uio.no} and state what group you moderate, and you'll
13210 get a copy.
13211
13212 The moderation package is implemented as a minor mode for summary
13213 buffers. Put
13214
13215 @lisp
13216 (add-hook 'gnus-summary-mode-hook 'gnus-moderate)
13217 @end lisp
13218
13219 in your @file{.gnus.el} file.
13220
13221 If you are the moderation of @samp{rec.zoofle}, this is how it's
13222 supposed to work:
13223
13224 @enumerate
13225 @item
13226 You split your incoming mail by matching on
13227 @samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted
13228 articles in some mail group---for instance, @samp{nnml:rec.zoofle}.
13229
13230 @item
13231 You enter that group once in a while and post articles using the @kbd{e}
13232 (edit-and-post) or @kbd{s} (just send unedited) commands.
13233
13234 @item
13235 If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some
13236 articles that weren't approved by you, you can cancel them with the
13237 @kbd{c} command.
13238 @end enumerate
13239
13240 To use moderation mode in these two groups, say:
13241
13242 @lisp
13243 (setq gnus-moderated-list
13244 "^nnml:rec.zoofle$\\|^rec.zoofle$")
13245 @end lisp
13246
13247
13248 @node XEmacs Enhancements
13249 @section XEmacs Enhancements
13250 @cindex XEmacs
13251
13252 XEmacs is able to display pictures and stuff, so Gnus has taken
13253 advantage of that. Relevant variables include:
13254
13255 @table @code
13256 @item gnus-xmas-glyph-directory
13257 @vindex gnus-xmas-glyph-directory
13258 This is where Gnus will look for pictures. Gnus will normally
13259 auto-detect this directory, but you may set it manually if you have an
13260 unusual directory structure.
13261
13262 @item gnus-xmas-logo-color-alist
13263 @vindex gnus-xmas-logo-color-alist
13264 This is an alist where the key is a type symbol and the values are the
13265 foreground and background color of the splash page glyph.
13266
13267 @item gnus-xmas-logo-color-style
13268 @vindex gnus-xmas-logo-color-style
13269 This is the key used to look up the color in the alist described above.
13270 Legal values include @code{flame}, @code{pine}, @code{moss},
13271 @code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
13272 @code{labia}, @code{berry}, @code{neutral}, and @code{september}.
13273
13274 @item gnus-use-toolbar
13275 @vindex gnus-use-toolbar
13276 If @code{nil}, don't display toolbars. If non-@code{nil}, it should be
13277 one of @code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar},
13278 @code{right-toolbar}, or @code{left-toolbar}.
13279
13280 @item gnus-group-toolbar
13281 @vindex gnus-group-toolbar
13282 The toolbar in the group buffer.
13283
13284 @item gnus-summary-toolbar
13285 @vindex gnus-summary-toolbar
13286 The toolbar in the summary buffer.
13287
13288 @item gnus-summary-mail-toolbar
13289 @vindex gnus-summary-mail-toolbar
13290 The toolbar in the summary buffer of mail groups.
13291
13292 @item gnus-xmas-modeline-glyph
13293 @vindex gnus-xmas-modeline-glyph
13294 A glyph displayed in all Gnus mode lines. It is a tiny gnu head by
13295 default.
13296
13297 @end table
13298
13299
11017 @node Various Various 13300 @node Various Various
11018 @section Various Various 13301 @section Various Various
11019 @cindex mode lines 13302 @cindex mode lines
11020 @cindex highlights 13303 @cindex highlights
11021 13304
11022 @table @code 13305 @table @code
13306
13307 @item gnus-directory
13308 @vindex gnus-directory
13309 All Gnus directories will be initialized from this variable, which
13310 defaults to the @samp{SAVEDIR} environment variable, or @file{~/News/}
13311 if that variable isn't set.
13312
13313 @item gnus-default-directory
13314 @vindex gnus-default-directory
13315 Not related to the above variable at all---this variable says what the
13316 default directory of all Gnus buffers should be. If you issue commands
13317 like @kbd{C-x C-f}, the prompt you'll get starts in the current buffer's
13318 default directory. If this variable is @code{nil} (which is the
13319 default), the default directory will be the default directory of the
13320 buffer you were in when you started Gnus.
11023 13321
11024 @item gnus-verbose 13322 @item gnus-verbose
11025 @vindex gnus-verbose 13323 @vindex gnus-verbose
11026 This variable is an integer between zero and ten. The higher the value, 13324 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 13325 the more messages will be displayed. If this variable is zero, Gnus
11035 to the Gnus backends instead of Gnus proper. 13333 to the Gnus backends instead of Gnus proper.
11036 13334
11037 @item nnheader-max-head-length 13335 @item nnheader-max-head-length
11038 @vindex nnheader-max-head-length 13336 @vindex nnheader-max-head-length
11039 When the backends read straight heads of articles, they all try to read 13337 When the backends read straight heads of articles, they all try to read
11040 as little as possible. This variable (default @code{4096}) specifies 13338 as little as possible. This variable (default 4096) specifies
11041 the absolute max length the backends will try to read before giving up 13339 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 13340 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 13341 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, 13342 @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 13343 but read the entire articles. This makes sense with some versions of
11046 @code{ange-ftp}. 13344 @code{ange-ftp}.
13345
13346 @item nnheader-head-chop-length
13347 @vindex nnheader-head-chop-length
13348 This variable says how big a piece of each article to read when doing
13349 the operation described above.
11047 13350
11048 @item nnheader-file-name-translation-alist 13351 @item nnheader-file-name-translation-alist
11049 @vindex nnheader-file-name-translation-alist 13352 @vindex nnheader-file-name-translation-alist
11050 @cindex file names 13353 @cindex file names
11051 @cindex illegal characters in file names 13354 @cindex illegal characters in file names
11092 13395
11093 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: 13396 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him:
11094 13397
11095 @quotation 13398 @quotation
11096 @strong{Te Deum} 13399 @strong{Te Deum}
13400
11097 @sp 1 13401 @sp 1
11098 Not because of victories @* 13402 Not because of victories @*
11099 I sing,@* 13403 I sing,@*
11100 having none,@* 13404 having none,@*
11101 but for the common sunshine,@* 13405 but for the common sunshine,@*
11102 the breeze,@* 13406 the breeze,@*
11103 the largess of the spring. 13407 the largess of the spring.
13408
11104 @sp 1 13409 @sp 1
11105 Not for victory@* 13410 Not for victory@*
11106 but for the day's work done@* 13411 but for the day's work done@*
11107 as well as I was able;@* 13412 as well as I was able;@*
11108 not for a seat upon the dais@* 13413 not for a seat upon the dais@*
11136 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary 13441 @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 13442 distribution point for the new and spiffy versions of Gnus, and is known
11138 as The Site That Destroys Newsrcs And Drives People Mad. 13443 as The Site That Destroys Newsrcs And Drives People Mad.
11139 13444
11140 During the first extended alpha period of development, the new Gnus was 13445 During the first extended alpha period of development, the new Gnus was
11141 called ``(ding) Gnus''. @dfn{(ding)}, is, of course, short for 13446 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? 13447 @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 13448 (Besides, the ``Gnus'' in this abbreviation should probably be
11144 pronounced ``news'' as @sc{Umeda} intended, which makes it a more 13449 pronounced ``news'' as @sc{Umeda} intended, which makes it a more
11145 appropriate name, don't you think?) 13450 appropriate name, don't you think?)
11146 13451
11148 spunky name, we decided that the name was @emph{too} spunky, so we 13453 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. 13454 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs.
11150 ``@sc{gnus}''. New vs. old. 13455 ``@sc{gnus}''. New vs. old.
11151 13456
11152 The first ``proper'' release of Gnus 5 was done in November 1995 when it 13457 The first ``proper'' release of Gnus 5 was done in November 1995 when it
11153 was included in the Emacs 19.30 distribution. 13458 was included in the Emacs 19.30 distribution (132 (ding) Gnus releases
11154 13459 plus 15 Gnus 5.0 releases).
11155 In May 1996 the next Gnus generation (aka. ``September Gnus'') was 13460
11156 released under the name ``Gnus 5.2''. 13461 In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99
13462 releases)) was released under the name ``Gnus 5.2'' (40 releases).
13463
13464 On July 28th 1996 work on Red Gnus was begun, and it was released on
13465 January 25th 1997 (after 84 releases) as ``Gnus 5.4''.
13466
13467 If you happen upon a version of Gnus that has a name that is prefixed --
13468 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
13469 don't panic. Don't let it know that you're frightened. Back away.
13470 Slowly. Whatever you do, don't run. Walk away, calmly, until you're
13471 out of its reach. Find a proper released version of Gnus and snuggle up
13472 to that instead.
11157 13473
11158 @menu 13474 @menu
11159 * Why?:: What's the point of Gnus? 13475 * Why?:: What's the point of Gnus?
11160 * Compatibility:: Just how compatible is Gnus with @sc{gnus}? 13476 * Compatibility:: Just how compatible is Gnus with @sc{gnus}?
11161 * Conformity:: Gnus tries to conform to all standards. 13477 * Conformity:: Gnus tries to conform to all standards.
11295 This is considered to be a ``vanity header'', while I consider it to be 13611 This is considered to be a ``vanity header'', while I consider it to be
11296 consumer information. After seeing so many badly formatted articles 13612 consumer information. After seeing so many badly formatted articles
11297 coming from @code{tin} and @code{Netscape} I know not to use either of 13613 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 13614 those for posting articles. I would not have known that if it wasn't
11299 for the @code{X-Newsreader} header. 13615 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 13616 @end table
11309 13617
11310 @end table 13618 @end table
11311 13619
11312 If you ever notice Gnus acting non-compliantly with regards to the texts 13620 If you ever notice Gnus acting non-compliantly with regards to the texts
11324 Gnus should work on : 13632 Gnus should work on :
11325 13633
11326 @itemize @bullet 13634 @itemize @bullet
11327 13635
11328 @item 13636 @item
11329 Emacs 19.30 and up. 13637 Emacs 19.32 and up.
11330 13638
11331 @item 13639 @item
11332 XEmacs 19.13 and up. 13640 XEmacs 19.14 and up.
11333 13641
11334 @item 13642 @item
11335 Mule versions based on Emacs 19.30 and up. 13643 Mule versions based on Emacs 19.32 and up.
11336 13644
11337 @end itemize 13645 @end itemize
11338 13646
11339 Gnus will absolutely not work on any Emacsen older than that. Not 13647 Gnus will absolutely not work on any Emacsen older than that. Not
11340 reliably, at least. 13648 reliably, at least.
11341 13649
11342 There are some vague differences between Gnus on the various platforms: 13650 There are some vague differences between Gnus on the various
11343 13651 platforms---XEmacs features more graphics (a logo and a toolbar)---but
11344 @itemize @bullet 13652 other than that, things should look pretty much the same under all
11345 13653 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 13654
11367 13655
11368 @node Contributors 13656 @node Contributors
11369 @subsection Contributors 13657 @subsection Contributors
11370 @cindex contributors 13658 @cindex contributors
11383 I would like to take this opportunity to thank the Academy for... oops, 13671 I would like to take this opportunity to thank the Academy for... oops,
11384 wrong show. 13672 wrong show.
11385 13673
11386 @itemize @bullet 13674 @itemize @bullet
11387 13675
11388 @item Masanobu @sc{Umeda} 13676 @item
11389 The writer of the original @sc{gnus}. 13677 Masanobu @sc{Umeda}---the writer of the original @sc{gnus}.
11390 13678
11391 @item Per Abrahamsen 13679 @item
11392 Custom, scoring, highlighting and @sc{soup} code (as well as numerous 13680 Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as
11393 other things). 13681 well as numerous other things).
11394 13682
11395 @item Luis Fernandes 13683 @item
11396 Design and graphics. 13684 Luis Fernandes---design and graphics.
11397 13685
11398 @item Wes Hardaker 13686 @item
11399 @file{gnus-picon.el} and the manual section on @dfn{picons} 13687 Erik Naggum---help, ideas, support, code and stuff.
11400 (@pxref{Picons}). 13688
11401 13689 @item
11402 @item Brad Miller 13690 Wes Hardaker---@file{gnus-picon.el} and the manual section on
11403 @file{gnus-gl.el} and the GroupLens manual section (@pxref{GroupLens}). 13691 @dfn{picons} (@pxref{Picons}).
11404 13692
11405 @item Sudish Joseph 13693 @item
11406 Innumerable bug fixes. 13694 Brad Miller---@file{gnus-gl.el} and the GroupLens manual section
11407 13695 (@pxref{GroupLens}).
11408 @item Ilja Weis 13696
11409 @file{gnus-topic.el}. 13697 @item
11410 13698 Sudish Joseph---innumerable bug fixes.
11411 @item Steven L. Baur 13699
11412 Lots and lots of bugs detections and fixes. 13700 @item
11413 13701 Ilja Weis---@file{gnus-topic.el}.
11414 @item Vladimir Alexiev 13702
11415 The refcard and reference booklets. 13703 @item
11416 13704 Steven L. Baur---lots and lots and lots of bugs detections and fixes.
11417 @item Felix Lee & JWZ 13705
11418 I stole some pieces from the XGnus distribution by Felix Lee and JWZ. 13706 @item
11419 13707 Vladimir Alexiev---the refcard and reference booklets.
11420 @item Scott Byer 13708
11421 @file{nnfolder.el} enhancements & rewrite. 13709 @item
11422 13710 Felix Lee & Jamie Zawinsky---I stole some pieces from the XGnus
11423 @item Peter Mutsaers 13711 distribution by Felix Lee and JWZ.
11424 Orphan article scoring code. 13712
11425 13713 @item
11426 @item Ken Raeburn 13714 Scott Byer---@file{nnfolder.el} enhancements & rewrite.
11427 POP mail support. 13715
11428 13716 @item
11429 @item Hallvard B Furuseth 13717 Peter Mutsaers---orphan article scoring code.
11430 Various bits and pieces, especially dealing with .newsrc files. 13718
11431 13719 @item
11432 @item Brian Edmonds 13720 Ken Raeburn---POP mail support.
11433 @file{gnus-bbdb.el}. 13721
11434 13722 @item
11435 @item Ricardo Nassif and Mark Borges 13723 Hallvard B Furuseth---various bits and pieces, especially dealing with
11436 Proof-reading. 13724 .newsrc files.
11437 13725
11438 @item Kevin Davidson 13726 @item
11439 Came up with the name @dfn{ding}, so blame him. 13727 Brian Edmonds---@file{gnus-bbdb.el}.
13728
13729 @item
13730 David Moore---rewrite of @file{nnvirtual.el} and many other things.
13731
13732 @item
13733 Ricardo Nassif, Mark Borges, and Jost Krieger---proof-reading.
13734
13735 @item
13736 Kevin Davidson---came up with the name @dfn{ding}, so blame him.
13737
13738 @item
13739 François Pinard---many, many interesting and thorough bug reports.
11440 13740
11441 @end itemize 13741 @end itemize
11442 13742
11443 Peter Arius, Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel 13743 The following people have contributed many patches and suggestions:
11444 Quinlan, Frank D. Cringle, Geoffrey T. Dairiki, Fabrice Popineau and 13744
11445 Andrew Eskilsson have all contributed code and suggestions. 13745 Christopher Davis,
13746 Andrew Eskilsson,
13747 Kai Grossjohann,
13748 David Kågedal,
13749 Richard Pieri,
13750 Fabrice Popineau,
13751 Daniel Quinlan,
13752 Jason L. Tibbitts, III,
13753 and
13754 Jack Vinson.
13755
13756 Also thanks to the following for patches and stuff:
13757
13758 Peter Arius,
13759 Marc Auslander,
13760 Chris Bone,
13761 Mark Borges,
13762 Lance A. Brown,
13763 Kees de Bruin,
13764 Martin Buchholz,
13765 Kevin Buhr,
13766 Alastair Burt,
13767 Joao Cachopo,
13768 Massimo Campostrini,
13769 Michael R. Cook,
13770 Glenn Coombs,
13771 Frank D. Cringle,
13772 Geoffrey T. Dairiki,
13773 Andre Deparade,
13774 Ulrik Dickow,
13775 Dave Disser,
13776 Joev Dubach,
13777 Paul Eggert,
13778 Michael Ernst,
13779 Luc Van Eycken,
13780 Sam Falkner,
13781 Paul Franklin,
13782 David S. Goldberg,
13783 D. Hall,
13784 Magnus Hammerin,
13785 Raja R. Harinath,
13786 Marc Horowitz,
13787 Ishikawa Ichiro, @c Ishikawa
13788 Francois Felix Ingrand,
13789 Lee Iverson,
13790 Rajappa Iyer,
13791 Randell Jesup,
13792 Fred Johansen,
13793 Greg Klanderman,
13794 Peter Skov Knudsen,
13795 Shuhei Kobayashi, @c Kobayashi
13796 Thor Kristoffersen,
13797 Jens Lautenbacher,
13798 Carsten Leonhardt,
13799 Christian Limpach,
13800 Markus Linnala,
13801 Dave Love,
13802 Tonny Madsen,
13803 Shlomo Mahlab,
13804 Nat Makarevitch,
13805 Timo Metzemakers,
13806 Richard Mlynarik,
13807 Lantz Moore,
13808 Morioka Tomohiko, @c Morioka
13809 Erik Toubro Nielsen,
13810 Hrvoje Niksic,
13811 Andy Norman,
13812 C. R. Oldham,
13813 Alexandre Oliva,
13814 Ken Olstad,
13815 Masaharu Onishi, @c Onishi
13816 Hideki Ono, @c Ono
13817 William Perry,
13818 Stephen Peters,
13819 Ulrich Pfeifer,
13820 John McClary Prevost,
13821 Colin Rafferty,
13822 Bart Robinson,
13823 Jason Rumney,
13824 Loren Schall,
13825 Dan Schmidt,
13826 Ralph Schleicher,
13827 Randal L. Schwartz,
13828 Danny Siu,
13829 Paul D. Smith,
13830 Jeff Sparkes,
13831 Michael Sperber,
13832 Richard Stallman,
13833 Greg Stark,
13834 Paul Stodghill,
13835 Kurt Swanson,
13836 Samuel Tardieu,
13837 Teddy,
13838 Chuck Thompson,
13839 Philippe Troin,
13840 Jan Vroonhof,
13841 Barry A. Warsaw,
13842 Christoph Wedler,
13843 Joe Wells,
13844 and
13845 Katsumi Yamaoka. @c Yamaoka
13846
13847 For a full overview of what each person has done, the ChangeLogs
13848 included in the Gnus alpha distributions should give ample reading
13849 (550kB and counting).
13850
13851 Apologies to everybody that I've forgotten, of which there are many, I'm
13852 sure.
13853
13854 Gee, that's quite a list of people. I guess that must mean that there
13855 actually are people who are using Gnus. Who'd'a thunk it!
11446 13856
11447 13857
11448 @node New Features 13858 @node New Features
11449 @subsection New Features 13859 @subsection New Features
11450 @cindex new features 13860 @cindex new features
13861
13862 @menu
13863 * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus.
13864 * September Gnus:: The Thing Formally Known As Gnus 5.3/5.3.
13865 * Red Gnus:: Third time best---Gnus 5.4/5.5.
13866 @end menu
13867
13868 These lists are, of course, just @emph{short} overviews of the
13869 @emph{most} important new features. No, really. There are tons more.
13870 Yes, we have feeping creaturism in full effect.
13871
13872
13873 @node ding Gnus
13874 @subsubsection (ding) Gnus
13875
13876 New features in Gnus 5.0/5.1:
11451 13877
11452 @itemize @bullet 13878 @itemize @bullet
11453 13879
11454 @item 13880 @item
11455 The look of all buffers can be changed by setting format-like variables 13881 The look of all buffers can be changed by setting format-like variables
11556 13982
11557 @item 13983 @item
11558 You can click on buttons instead of using the keyboard 13984 You can click on buttons instead of using the keyboard
11559 (@pxref{Buttons}). 13985 (@pxref{Buttons}).
11560 13986
11561 @item
11562 Gnus can use NoCeM files to weed out spam (@pxref{NoCeM}).
11563
11564 @end itemize 13987 @end itemize
11565 13988
11566 This is, of course, just a @emph{short} overview of the @emph{most} 13989
11567 important new features. No, really. There are tons more. Yes, we have 13990 @node September Gnus
11568 feeping creaturism in full effect, but nothing too gratuitous, I would 13991 @subsubsection September Gnus
11569 hope. 13992
13993 New features in Gnus 5.2/5.3:
13994
13995 @itemize @bullet
13996
13997 @item
13998 A new message composition mode is used. All old customization variables
13999 for @code{mail-mode}, @code{rnews-reply-mode} and @code{gnus-msg} are
14000 now obsolete.
14001
14002 @item
14003 Gnus is now able to generate @dfn{sparse} threads---threads where
14004 missing articles are represented by empty nodes (@pxref{Customizing
14005 Threading}).
14006
14007 @lisp
14008 (setq gnus-build-sparse-threads 'some)
14009 @end lisp
14010
14011 @item
14012 Outgoing articles are stored on a special archive server
14013 (@pxref{Archived Messages}).
14014
14015 @item
14016 Partial thread regeneration now happens when articles are
14017 referred.
14018
14019 @item
14020 Gnus can make use of GroupLens predictions (@pxref{GroupLens}).
14021
14022 @item
14023 Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}).
14024
14025 @item
14026 A @code{trn}-line tree buffer can be displayed (@pxref{Tree Display}).
14027
14028 @lisp
14029 (setq gnus-use-trees t)
14030 @end lisp
14031
14032 @item
14033 An @code{nn}-like pick-and-read minor mode is available for the summary
14034 buffers (@pxref{Pick and Read}).
14035
14036 @lisp
14037 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
14038 @end lisp
14039
14040 @item
14041 In binary groups you can use a special binary minor mode (@pxref{Binary
14042 Groups}).
14043
14044 @item
14045 Groups can be grouped in a folding topic hierarchy (@pxref{Group
14046 Topics}).
14047
14048 @lisp
14049 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
14050 @end lisp
14051
14052 @item
14053 Gnus can re-send and bounce mail (@pxref{Summary Mail Commands}).
14054
14055 @item
14056 Groups can now have a score, and bubbling based on entry frequency
14057 is possible (@pxref{Group Score}).
14058
14059 @lisp
14060 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
14061 @end lisp
14062
14063 @item
14064 Groups can be process-marked, and commands can be performed on
14065 groups of groups (@pxref{Marking Groups}).
14066
14067 @item
14068 Caching is possible in virtual groups.
14069
14070 @item
14071 @code{nndoc} now understands all kinds of digests, mail boxes, rnews
14072 news batches, ClariNet briefs collections, and just about everything
14073 else (@pxref{Document Groups}).
14074
14075 @item
14076 Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets
14077 (@pxref{SOUP}).
14078
14079 @item
14080 The Gnus cache is much faster.
14081
14082 @item
14083 Groups can be sorted according to many criteria (@pxref{Sorting
14084 Groups}).
14085
14086 @item
14087 New group parameters have been introduced to set list-address and
14088 expiry times (@pxref{Group Parameters}).
14089
14090 @item
14091 All formatting specs allow specifying faces to be used
14092 (@pxref{Formatting Fonts}).
14093
14094 @item
14095 There are several more commands for setting/removing/acting on process
14096 marked articles on the @kbd{M P} submap (@pxref{Setting Process Marks}).
14097
14098 @item
14099 The summary buffer can be limited to show parts of the available
14100 articles based on a wide range of criteria. These commands have been
14101 bound to keys on the @kbd{/} submap (@pxref{Limiting}).
14102
14103 @item
14104 Articles can be made persistent with the @kbd{*} command
14105 (@pxref{Persistent Articles}).
14106
14107 @item
14108 All functions for hiding article elements are now toggles.
14109
14110 @item
14111 Article headers can be buttonized (@pxref{Article Washing}).
14112
14113 @lisp
14114 (add-hook 'gnus-article-display-hook
14115 'gnus-article-add-buttons-to-head)
14116 @end lisp
14117
14118 @item
14119 All mail backends support fetching articles by @code{Message-ID}.
14120
14121 @item
14122 Duplicate mail can now be treated properly (@pxref{Duplicates}).
14123
14124 @item
14125 All summary mode commands are available directly from the article
14126 buffer (@pxref{Article Keymap}).
14127
14128 @item
14129 Frames can be part of @code{gnus-buffer-configuration} (@pxref{Windows
14130 Configuration}).
14131
14132 @item
14133 Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
14134
14135 @item
14136 Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}).
14137
14138 @lisp
14139 (setq gnus-use-nocem t)
14140 @end lisp
14141
14142 @item
14143 Groups can be made permanently visible (@pxref{Listing Groups}).
14144
14145 @lisp
14146 (setq gnus-permanently-visible-groups "^nnml:")
14147 @end lisp
14148
14149 @item
14150 Many new hooks have been introduced to make customizing easier.
14151
14152 @item
14153 Gnus respects the @code{Mail-Copies-To} header.
14154
14155 @item
14156 Threads can be gathered by looking at the @code{References} header
14157 (@pxref{Customizing Threading}).
14158
14159 @lisp
14160 (setq gnus-summary-thread-gathering-function
14161 'gnus-gather-threads-by-references)
14162 @end lisp
14163
14164 @item
14165 Read articles can be stored in a special backlog buffer to avoid
14166 refetching (@pxref{Article Backlog}).
14167
14168 @lisp
14169 (setq gnus-keep-backlog 50)
14170 @end lisp
14171
14172 @item
14173 A clean copy of the current article is always stored in a separate
14174 buffer to allow easier treatment.
14175
14176 @item
14177 Gnus can suggest where to save articles (@pxref{Saving Articles}).
14178
14179 @item
14180 Gnus doesn't have to do as much prompting when saving (@pxref{Saving
14181 Articles}).
14182
14183 @lisp
14184 (setq gnus-prompt-before-saving t)
14185 @end lisp
14186
14187 @item
14188 @code{gnus-uu} can view decoded files asynchronously while fetching
14189 articles (@pxref{Other Decode Variables}).
14190
14191 @lisp
14192 (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
14193 @end lisp
14194
14195 @item
14196 Filling in the article buffer now works properly on cited text
14197 (@pxref{Article Washing}).
14198
14199 @item
14200 Hiding cited text adds buttons to toggle hiding, and how much
14201 cited text to hide is now customizable (@pxref{Article Hiding}).
14202
14203 @lisp
14204 (setq gnus-cited-lines-visible 2)
14205 @end lisp
14206
14207 @item
14208 Boring headers can be hidden (@pxref{Article Hiding}).
14209
14210 @lisp
14211 (add-hook 'gnus-article-display-hook
14212 'gnus-article-hide-boring-headers t)
14213 @end lisp
14214
14215 @item
14216 Default scoring values can now be set from the menu bar.
14217
14218 @item
14219 Further syntax checking of outgoing articles have been added.
14220
14221 @end itemize
14222
14223
14224 @node Red Gnus
14225 @subsubsection Red Gnus
14226
14227 New features in Gnus 5.4/5.5:
14228
14229 @itemize @bullet
14230
14231 @item
14232 @file{nntp.el} has been totally rewritten in an asynchronous fashion.
14233
14234 @item
14235 Article prefetching functionality has been moved up into
14236 Gnus (@pxref{Asynchronous Fetching}).
14237
14238 @item
14239 Scoring can now be performed with logical operators like @code{and},
14240 @code{or}, @code{not}, and parent redirection (@pxref{Advanced
14241 Scoring}).
14242
14243 @item
14244 Article washing status can be displayed in the
14245 article mode line (@pxref{Misc Article}).
14246
14247 @item
14248 @file{gnus.el} has been split into many smaller files.
14249
14250 @item
14251 Suppression of duplicate articles based on Message-ID can be done
14252 (@pxref{Duplicate Suppression}).
14253
14254 @lisp
14255 (setq gnus-suppress-duplicates t)
14256 @end lisp
14257
14258 @item
14259 New variables for specifying what score and adapt files are to be
14260 considered home score and adapt files (@pxref{Home Score File}).
14261
14262 @item
14263 @code{nndoc} was rewritten to be easily extendable (@pxref{Document
14264 Server Internals}).
14265
14266 @item
14267 Groups can inherit group parameters from parent topics (@pxref{Topic
14268 Parameters}).
14269
14270 @item
14271 Article editing has been revamped and is now actually usable.
14272
14273 @item
14274 Signatures can be recognized in more intelligent fashions
14275 (@pxref{Article Signature}).
14276
14277 @item
14278 Summary pick mode has been made to look more @code{nn}-like. Line
14279 numbers are displayed and the @kbd{.} command can be used to pick
14280 articles (@code{Pick and Read}).
14281
14282 @item
14283 Commands for moving the @file{.newsrc.eld} from one server to
14284 another have been added (@pxref{Changing Servers}).
14285
14286 @item
14287 A way to specify that ``uninteresting'' fields be suppressed when
14288 generating lines in buffers (@pxref{Advanced Formatting}).
14289
14290 @item
14291 Several commands in the group buffer can be undone with @kbd{M-C-_}
14292 (@pxref{Undo}).
14293
14294 @item
14295 Scoring can be done on words using the new score type @code{w}
14296 (@pxref{Score File Format}).
14297
14298 @item
14299 Adaptive scoring can be done on a Subject word-by-word basis
14300 (@pxref{Adaptive Scoring}).
14301
14302 @lisp
14303 (setq gnus-use-adaptive-scoring '(word))
14304 @end lisp
14305
14306 @item
14307 Scores can be decayed (@pxref{Score Decays}).
14308
14309 @lisp
14310 (setq gnus-decay-scores t)
14311 @end lisp
14312
14313 @item
14314 Scoring can be performed using a regexp on the Date header. The Date is
14315 normalized to compact ISO 8601 format first (@pxref{Score File Format}).
14316
14317 @item
14318 A new command has been added to remove all data on articles from
14319 the native server (@pxref{Changing Servers}).
14320
14321 @item
14322 A new command for reading collections of documents
14323 (@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{M-C-d}
14324 (@pxref{Really Various Summary Commands}).
14325
14326 @item
14327 Process mark sets can be pushed and popped (@pxref{Setting Process
14328 Marks}).
14329
14330 @item
14331 A new mail-to-news backend makes it possible to post even when the NNTP
14332 server doesn't allow posting (@pxref{Mail-To-News Gateways}).
14333
14334 @item
14335 A new backend for reading searches from Web search engines
14336 (@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added
14337 (@pxref{Web Searches}).
14338
14339 @item
14340 Groups inside topics can now be sorted using the standard sorting
14341 functions, and each topic can be sorted independently (@pxref{Topic
14342 Sorting}).
14343
14344 @item
14345 Subsets of the groups can be sorted independently (@code{Sorting
14346 Groups}).
14347
14348 @item
14349 Cached articles can be pulled into the groups (@pxref{Summary Generation
14350 Commands}).
14351
14352 @item
14353 Score files are now applied in a more reliable order (@pxref{Score
14354 Variables}).
14355
14356 @item
14357 Reports on where mail messages end up can be generated (@pxref{Splitting
14358 Mail}).
14359
14360 @item
14361 More hooks and functions have been added to remove junk from incoming
14362 mail before saving the mail (@pxref{Washing Mail}).
14363
14364 @item
14365 Emphasized text can be properly fontisized:
14366
14367 @lisp
14368 (add-hook 'gnus-article-display-hook 'gnus-article-emphasize)
14369 @end lisp
14370
14371 @end itemize
11570 14372
11571 14373
11572 @node Newest Features 14374 @node Newest Features
11573 @subsection Newest Features 14375 @subsection Newest Features
11574 @cindex todo 14376 @cindex todo
11580 14382
11581 @itemize @bullet 14383 @itemize @bullet
11582 @item 14384 @item
11583 Native @sc{mime} support is something that should be done. 14385 Native @sc{mime} support is something that should be done.
11584 @item 14386 @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. 14387 Really do unbinhexing.
11590 @end itemize 14388 @end itemize
11591 14389
11592 And much, much, much more. There is more to come than has already been 14390 And much, much, much more. There is more to come than has already been
11593 implemented. (But that's always true, isn't it?) 14391 implemented. (But that's always true, isn't it?)
11594 14392
11595 @code{<URL:http://www.ifi.uio.no/~larsi/sgnus/todo>} is where the actual 14393 @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 14394 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. 14395 could point your Web browser over that-a-way.
14396
14397 @iftex
14398
14399 @node The Manual
14400 @section The Manual
14401 @cindex colophon
14402 @cindex manual
14403
14404 This manual was generated from a TeXinfo file and then run through
14405 either @code{texi2dvi}
14406 @iflatex
14407 or my own home-brewed TeXinfo to \LaTeX\ transformer,
14408 and then run through @code{latex} and @code{dvips}
14409 @end iflatex
14410 to get what you hold in your hands now.
14411
14412 The following conventions have been used:
14413
14414 @enumerate
14415
14416 @item
14417 This is a @samp{string}
14418
14419 @item
14420 This is a @kbd{keystroke}
14421
14422 @item
14423 This is a @file{file}
14424
14425 @item
14426 This is a @code{symbol}
14427
14428 @end enumerate
14429
14430 So if I were to say ``set @code{flargnoze} to @samp{yes}'', that would
14431 mean:
14432
14433 @lisp
14434 (setq flargnoze "yes")
14435 @end lisp
14436
14437 If I say ``set @code{flumphel} to @code{yes}'', that would mean:
14438
14439 @lisp
14440 (setq flumphel 'yes)
14441 @end lisp
14442
14443 @samp{yes} and @code{yes} are two @emph{very} different things---don't
14444 ever get them confused.
14445
14446 @iflatex
14447 @c @head
14448 Of course, everything in this manual is of vital interest, so you should
14449 read it all. Several times. However, if you feel like skimming the
14450 manual, look for that gnu head you should see in the margin over
14451 there---it means that what's being discussed is of more importance than
14452 the rest of the stuff. (On the other hand, if everything is infinitely
14453 important, how can anything be more important than that? Just one more
14454 of the mysteries of this world, I guess.)
14455 @end iflatex
14456
14457 @end iftex
11598 14458
11599 14459
11600 @node Terminology 14460 @node Terminology
11601 @section Terminology 14461 @section Terminology
11602 14462
11648 Secondary backends are somewhere half-way between being native and being 14508 Secondary backends are somewhere half-way between being native and being
11649 foreign, but they mostly act like they are native. 14509 foreign, but they mostly act like they are native.
11650 14510
11651 @item article 14511 @item article
11652 @cindex article 14512 @cindex article
11653 A nessage that has been posted as news. 14513 A message that has been posted as news.
11654 14514
11655 @item mail message 14515 @item mail message
11656 @cindex mail message 14516 @cindex mail message
11657 A message that has been mailed. 14517 A message that has been mailed.
11658 14518
11711 is rather large, as you might surmise. 14571 is rather large, as you might surmise.
11712 14572
11713 @item bogus groups 14573 @item bogus groups
11714 @cindex bogus groups 14574 @cindex bogus groups
11715 A group that exists in the @file{.newsrc} file, but isn't known to the 14575 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}. 14576 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). 14577 This means that the group probably doesn't exist (any more).
11718 14578
11719 @item server 14579 @item server
11720 @cindex server 14580 @cindex server
11721 A machine than one can connect to and get news (or mail) from. 14581 A machine than one can connect to and get news (or mail) from.
11726 server parameters. 14586 server parameters.
11727 14587
11728 @item virtual server 14588 @item virtual server
11729 @cindex virtual server 14589 @cindex virtual server
11730 A named select method. Since a select methods defines all there is to 14590 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 14591 know about connecting to a (physical) server, taking the things as a
11732 whole is a virtual server. 14592 whole is a virtual server.
14593
14594 @item washing
14595 @cindex washing
14596 Taking a buffer and running it through a filter of some sort. The
14597 result will (more often than not) be cleaner and more pleasing than the
14598 original.
14599
14600 @item ephemeral groups
14601 @cindex ephemeral groups
14602 Most groups store data on what articles you have read. @dfn{Ephemeral}
14603 groups are groups that will have no data stored---when you exit the
14604 group, it'll disappear into the aether.
14605
14606 @item solid groups
14607 @cindex solid groups
14608 This is the opposite of ephemeral groups. All groups listed in the
14609 group buffer are solid groups.
14610
14611 @item sparse articles
14612 @cindex sparse articles
14613 These are article placeholders shown in the summary buffer when
14614 @code{gnus-build-sparse-threads} has been switched on.
11733 14615
11734 @end table 14616 @end table
11735 14617
11736 14618
11737 @node Customization 14619 @node Customization
11760 @table @code 14642 @table @code
11761 14643
11762 @item gnus-read-active-file 14644 @item gnus-read-active-file
11763 Set this to @code{nil}, which will inhibit Gnus from requesting the 14645 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 14646 entire active file from the server. This file is often v. large. You
11765 also have to set @code{gnus-check-new-news} and 14647 also have to set @code{gnus-check-new-newsgroups} and
11766 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus 14648 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus
11767 doesn't suddenly decide to fetch the active file anyway. 14649 doesn't suddenly decide to fetch the active file anyway.
11768 14650
11769 @item gnus-nov-is-evil 14651 @item gnus-nov-is-evil
11770 This one has to be @code{nil}. If not, grabbing article headers from 14652 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. 14768 flee}, you have some old @file{.el} files lying around. Delete these.
11887 14769
11888 @item 14770 @item
11889 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a 14771 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a
11890 how-to. 14772 how-to.
14773
14774 @item
14775 @vindex max-lisp-eval-depth
14776 Gnus works on many recursive structures, and in some extreme (and very
14777 rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at
14778 you. If this happens to you, set @code{max-lisp-eval-depth} to 500 or
14779 something like that.
11891 @end enumerate 14780 @end enumerate
11892 14781
11893 If all else fails, report the problem as a bug. 14782 If all else fails, report the problem as a bug.
11894 14783
11895 @cindex bugs 14784 @cindex bugs
11916 mail you and ask for more info, and everything takes more time. 14805 mail you and ask for more info, and everything takes more time.
11917 14806
11918 If the problem you're seeing is very visual, and you can't quite explain 14807 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 14808 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 14809 it somewhere it can be reached, and include the URL of the picture in
11921 the bug report.a 14810 the bug report.
11922 14811
11923 If you just need help, you are better off asking on 14812 If you just need help, you are better off asking on
11924 @samp{gnu.emacs.gnus}. I'm not very helpful. 14813 @samp{gnu.emacs.gnus}. I'm not very helpful.
11925 14814
11926 @cindex gnu.emacs.gnus 14815 @cindex gnu.emacs.gnus
11928 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. 14817 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. 14818 Write to @samp{ding-request@@ifi.uio.no} to subscribe.
11930 14819
11931 14820
11932 @node A Programmers Guide to Gnus 14821 @node A Programmers Guide to Gnus
11933 @section A Programmer's Guide to Gnus 14822 @section A Programmer@'s Guide to Gnus
11934 14823
11935 It is my hope that other people will figure out smart stuff that Gnus 14824 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 14825 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 14826 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 14827 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. 14882 always check whether are present before attempting to call.
11994 14883
11995 All these functions are expected to return data in the buffer 14884 All these functions are expected to return data in the buffer
11996 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat 14885 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat
11997 unfortunately named, but we'll have to live with it. When I talk about 14886 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 14887 @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 14888 talk about @dfn{return value}, I talk about the function value returned by
12000 the function call. 14889 the function call. Functions that fail should return @code{nil} as the
14890 return value.
12001 14891
12002 Some backends could be said to be @dfn{server-forming} backends, and 14892 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 14893 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'' 14894 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 14895 -- they have a group, and they deliver info on that group and nothing
12011 @cindex @code{nnchoke} 14901 @cindex @code{nnchoke}
12012 14902
12013 @menu 14903 @menu
12014 * Required Backend Functions:: Functions that must be implemented. 14904 * Required Backend Functions:: Functions that must be implemented.
12015 * Optional Backend Functions:: Functions that need not be implemented. 14905 * Optional Backend Functions:: Functions that need not be implemented.
14906 * Error Messaging:: How to get messages and report errors.
12016 * Writing New Backends:: Extending old backends. 14907 * Writing New Backends:: Extending old backends.
14908 * Hooking New Backends Into Gnus:: What has to be done on the Gnus end.
14909 * Mail-like Backends:: Some tips on mail backends.
12017 @end menu 14910 @end menu
12018 14911
12019 14912
12020 @node Required Backend Functions 14913 @node Required Backend Functions
12021 @subsubsection Required Backend Functions 14914 @subsubsection Required Backend Functions
12155 group and article numbers are when fetching articles by 15048 group and article numbers are when fetching articles by
12156 @code{Message-ID}. If this isn't possible, @code{t} should be returned 15049 @code{Message-ID}. If this isn't possible, @code{t} should be returned
12157 on successful article retrievement. 15050 on successful article retrievement.
12158 15051
12159 15052
12160 @item (nnchoke-open-group GROUP &optional SERVER) 15053 @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 15054
12169 Get data on @var{group}. This function also has the side effect of 15055 Get data on @var{group}. This function also has the side effect of
12170 making @var{group} the current group. 15056 making @var{group} the current group.
15057
15058 If @var{FAST}, don't bother to return useful data, just make @var{group}
15059 the current group.
12171 15060
12172 Here's an example of some result data and a definition of the same: 15061 Here's an example of some result data and a definition of the same:
12173 15062
12174 @example 15063 @example
12175 211 56 1000 1059 ifi.discussion 15064 211 56 1000 1059 ifi.discussion
12176 @end example 15065 @end example
12177 15066
12178 The first number is the status, which should be @code{211}. Next is the 15067 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 15068 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 15069 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 15070 number of articles may be less than one might think while just
12182 considering the highest and lowest article numbers, but some articles 15071 considering the highest and lowest article numbers, but some articles
12183 may have been canceled. Gnus just discards the total-number, so 15072 may have been canceled. Gnus just discards the total-number, so
12265 @item (nnchoke-request-update-info GROUP INFO &optional SERVER) 15154 @item (nnchoke-request-update-info GROUP INFO &optional SERVER)
12266 15155
12267 A Gnus group info (@pxref{Group Info}) is handed to the backend for 15156 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 15157 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 15158 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 15159 should destructively alter the info to suit its needs, and should return
12271 (altered) group info. This function may alter the group info 15160 the (altered) group info.
12272 destructively, so no copying is needed before boogeying.
12273 15161
12274 There should be no result data from this function. 15162 There should be no result data from this function.
12275 15163
12276 15164
12277 @item (nnchoke-request-type GROUP &optional ARTICLE) 15165 @item (nnchoke-request-type GROUP &optional ARTICLE)
12280 summary buffer, for instance), Gnus has to know whether the article the 15168 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 15169 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 15170 @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 15171 is mail and @code{unknown} if the type can't be decided. (The
12284 @var{article} parameter is necessary in @code{nnvirtual} groups which 15172 @var{article} parameter is necessary in @code{nnvirtual} groups which
12285 might very well combine mail groups and news groups.) 15173 might very well combine mail groups and news groups.) Both @var{group}
15174 and @var{article} may be @code{nil}.
12286 15175
12287 There should be no result data from this function. 15176 There should be no result data from this function.
12288 15177
12289 15178
12290 @item (nnchoke-request-update-mark GROUP ARTICLE MARK) 15179 @item (nnchoke-request-update-mark GROUP ARTICLE MARK)
12314 would be nice, however, to keep things local if that's practical. 15203 would be nice, however, to keep things local if that's practical.
12315 15204
12316 There should be no result data from this function. 15205 There should be no result data from this function.
12317 15206
12318 15207
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) 15208 @item (nnchoke-request-group-description GROUP &optional SERVER)
12333 15209
12334 The result data from this function should be a description of 15210 The result data from this function should be a description of
12335 @var{group}. 15211 @var{group}.
12336 15212
12439 There should be no data returned. 15315 There should be no data returned.
12440 15316
12441 @end table 15317 @end table
12442 15318
12443 15319
15320 @node Error Messaging
15321 @subsubsection Error Messaging
15322
15323 @findex nnheader-report
15324 @findex nnheader-get-report
15325 The backends should use the function @code{nnheader-report} to report
15326 error conditions---they should not raise errors when they aren't able to
15327 perform a request. The first argument to this function is the backend
15328 symbol, and the rest are interpreted as arguments to @code{format} if
15329 there are many of them, or just a string if there is one of them.
15330 This function always returns @code{nil}.
15331
15332 @lisp
15333 (nnheader-report 'nnchoke "You did something totally bogus")
15334
15335 (nnheader-report 'nnchoke "Could not request group %s" group)
15336 @end lisp
15337
15338 Gnus, in turn, will call @code{nnheader-get-report} when it gets a
15339 @code{nil} back from a server, and this function returns the most
15340 recently reported message for the backend in question. This function
15341 takes one argument---the server symbol.
15342
15343 Internally, these function access @var{backend}@code{-status-string}, so
15344 the @code{nnchoke} backend will have its error message stored in
15345 @code{nnchoke-status-string}.
15346
15347
12444 @node Writing New Backends 15348 @node Writing New Backends
12445 @subsubsection Writing New Backends 15349 @subsubsection Writing New Backends
12446 15350
12447 The various backends share many similarities. @code{nnml} is just like 15351 Many backends are quite similar. @code{nnml} is just like
12448 @code{nnspool}, but it allows you to edit the articles on the server. 15352 @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, 15353 @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 15354 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 15355 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow
12452 editing articles. 15356 editing articles.
12580 15484
12581 (nnoo-define-basics nndir) 15485 (nnoo-define-basics nndir)
12582 15486
12583 (deffoo nndir-open-server (server &optional defs) 15487 (deffoo nndir-open-server (server &optional defs)
12584 (setq nndir-directory 15488 (setq nndir-directory
12585 (or (cadr (assq 'nndir-directory defs)) 15489 (or (cadr (assq 'nndir-directory defs))
12586 server)) 15490 server))
12587 (unless (assq 'nndir-directory defs) 15491 (unless (assq 'nndir-directory defs)
12588 (push `(nndir-directory ,server) defs)) 15492 (push `(nndir-directory ,server) defs))
12589 (push `(nndir-current-group 15493 (push `(nndir-current-group
12590 ,(file-name-nondirectory (directory-file-name nndir-directory))) 15494 ,(file-name-nondirectory (directory-file-name nndir-directory)))
12591 defs) 15495 defs)
12592 (push `(nndir-top-directory 15496 (push `(nndir-top-directory
12593 ,(file-name-directory (directory-file-name nndir-directory))) 15497 ,(file-name-directory (directory-file-name nndir-directory)))
12594 defs) 15498 defs)
12595 (nnoo-change-server 'nndir server defs)) 15499 (nnoo-change-server 'nndir server defs))
12596 15500
12597 (nnoo-map-functions nndir 15501 (nnoo-map-functions nndir
12598 (nnml-retrieve-headers 0 nndir-current-group 0 0) 15502 (nnml-retrieve-headers 0 nndir-current-group 0 0)
12599 (nnmh-request-article 0 nndir-current-group 0 0) 15503 (nnmh-request-article 0 nndir-current-group 0 0)
12607 nnmh-request-newgroups)) 15511 nnmh-request-newgroups))
12608 15512
12609 (provide 'nndir) 15513 (provide 'nndir)
12610 @end lisp 15514 @end lisp
12611 15515
15516
15517 @node Hooking New Backends Into Gnus
15518 @subsubsection Hooking New Backends Into Gnus
15519
15520 @vindex gnus-valid-select-methods
15521 Having Gnus start using your new backend is rather easy---you just
15522 declare it with the @code{gnus-declare-backend} functions. This will
15523 enter the backend into the @code{gnus-valid-select-methods} variable.
15524
15525 @code{gnus-declare-backend} takes two parameters---the backend name and
15526 an arbitrary number of @dfn{abilities}.
15527
15528 Here's an example:
15529
15530 @lisp
15531 (gnus-declare-backend "nnchoke" 'mail 'respool 'address)
15532 @end lisp
15533
15534 The abilities can be:
15535
15536 @table @code
15537 @item mail
15538 This is a mailish backend---followups should (probably) go via mail.
15539 @item post
15540 This is a newsish backend---followups should (probably) go via news.
15541 @item post-mail
15542 This backend supports both mail and news.
15543 @item none
15544 This is neither a post or mail backend---it's something completely
15545 different.
15546 @item respool
15547 It supports respooling---or rather, it is able to modify its source
15548 articles and groups.
15549 @item address
15550 The name of the server should be in the virtual server name. This is
15551 true for almost all backends.
15552 @item prompt-address
15553 The user should be prompted for an address when doing commands like
15554 @kbd{B} in the group buffer. This is true for backends like
15555 @code{nntp}, but not @code{nnmbox}, for instance.
15556 @end table
15557
15558
15559 @node Mail-like Backends
15560 @subsubsection Mail-like Backends
15561
15562 One of the things that separate the mail backends from the rest of the
15563 backends is the heavy dependence by the mail backends on common
15564 functions in @file{nnmail.el}. For instance, here's the definition of
15565 @code{nnml-request-scan}:
15566
15567 @lisp
15568 (deffoo nnml-request-scan (&optional group server)
15569 (setq nnml-article-file-alist nil)
15570 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group))
15571 @end lisp
15572
15573 It simply just calls @code{nnmail-get-new-mail} will a few parameters,
15574 and @code{nnmail} takes care of all the moving and splitting of the
15575 mail.
15576
15577 This function takes four parameters.
15578
15579 @table @var
15580 @item method
15581 This should be a symbol to designate which backend is responsible for
15582 the call.
15583
15584 @item exit-function
15585 This function should be called after the splitting has been performed.
15586
15587 @item temp-directory
15588 Where the temporary files should be stored.
15589
15590 @item group
15591 This optional argument should be a group name if the splitting is to be
15592 performed for one group only.
15593 @end table
15594
15595 @code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to
15596 save each article. @var{backend}@code{-active-number} will be called to
15597 find the article number assigned to this article.
15598
15599 The function also uses the following variables:
15600 @var{backend}@code{-get-new-mail} (to see whether to get new mail for
15601 this backend); and @var{backend}@code{-group-alist} and
15602 @var{backend}@code{-active-file} to generate the new active file.
15603 @var{backend}@code{-group-alist} should be a group-active alist, like
15604 this:
15605
15606 @example
15607 (("a-group" (1 . 10))
15608 ("some-group" (34 . 39)))
15609 @end example
12612 15610
12613 15611
12614 @node Score File Syntax 15612 @node Score File Syntax
12615 @subsection Score File Syntax 15613 @subsection Score File Syntax
12616 15614
12694 corresponds to the @sc{nov} format in a mysterious fashion. One could 15692 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 15693 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. 15694 just shamelessly @emph{stole} the entire thing, and one would be right.
12697 15695
12698 @dfn{Header} is a severely overloaded term. ``Header'' is used in 15696 @dfn{Header} is a severely overloaded term. ``Header'' is used in
12699 RFC1036 to talk about lines in the head of an article (eg., 15697 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 15698 @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 15699 ``head''---``the header and the body''. (That should be avoided, in my
12702 opinion.) And Gnus uses a format internally that it calls ``header'', 15700 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, 15701 which is what I'm talking about here. This is a 9-element vector,
12704 basically, with each header (ouch) having one slot. 15702 basically, with each header (ouch) having one slot.
12719 @sc{gnus} introduced a concept that I found so useful that I've started 15717 @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. 15718 using it a lot and have elaborated on it greatly.
12721 15719
12722 The question is simple: If you have a large amount of objects that are 15720 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) 15721 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 15722 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.) 15723 very useful. (A 200,000 length sequence is a bit long-winded.)
12726 15724
12727 The solution is as simple as the question: You just collapse the 15725 The solution is as simple as the question: You just collapse the
12728 sequence. 15726 sequence.
12729 15727
12810 ((tick (15 . 19)) (replied 3 6 (19 . 3))) 15808 ((tick (15 . 19)) (replied 3 6 (19 . 3)))
12811 (nnml "") 15809 (nnml "")
12812 (auto-expire (to-address "ding@@ifi.uio.no"))) 15810 (auto-expire (to-address "ding@@ifi.uio.no")))
12813 @end example 15811 @end example
12814 15812
12815 The first element is the group name as Gnus knows the group; the second 15813 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 15814 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; 15815 normally is a small integer. The third element is a list of ranges of
12818 and the sixth contains the group parameters. 15816 read articles. The fourth element is a list of lists of article marks
15817 of various kinds. The fifth element is the select method (or virtual
15818 server, if you like). The sixth element is a list of @dfn{group
15819 parameters}, which is what this section is about.
15820
15821 Any of the last three elements may be missing if they are not required.
15822 In fact, the vast majority of groups will normally only have the first
15823 three elements, which saves quite a lot of cons cells.
12819 15824
12820 Here's a BNF definition of the group info format: 15825 Here's a BNF definition of the group info format:
12821 15826
12822 @example 15827 @example
12823 info = "(" group space level space read 15828 info = "(" group space level space read