Mercurial > hg > xemacs-beta
comparison man/gnus.texi @ 98:0d2f883870bc r20-1b1
Import from CVS: tag r20-1b1
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:13:56 +0200 |
parents | 131b0175ea99 |
children | 4be1180a9e89 |
comparison
equal
deleted
inserted
replaced
97:498bf5da1c90 | 98:0d2f883870bc |
---|---|
1 \input texinfo @c -*-texinfo-*- | 1 \input texinfo @c -*-texinfo-*- |
2 | 2 |
3 @setfilename ../info/gnus.info | 3 @setfilename gnus |
4 @settitle Gnus 5.2 Manual | 4 @settitle Gnus 5.4 Manual |
5 @synindex fn cp | 5 @synindex fn cp |
6 @synindex vr cp | 6 @synindex vr cp |
7 @synindex pg cp | 7 @synindex pg cp |
8 @iftex | 8 @iftex |
9 @finalout | 9 @finalout |
12 | 12 |
13 @iftex | 13 @iftex |
14 @iflatex | 14 @iflatex |
15 \documentclass[twoside,a4paper,openright]{book} | 15 \documentclass[twoside,a4paper,openright]{book} |
16 \usepackage[latin1]{inputenc} | 16 \usepackage[latin1]{inputenc} |
17 % \usepackage{fontenc} | |
18 % \usepackage{babel} | |
19 \usepackage{pagestyle} | 17 \usepackage{pagestyle} |
20 \usepackage{epsfig} | 18 \usepackage{epsfig} |
21 % \usepackage{ifitricks} | |
22 \fontfamily{bembo}\selectfont | 19 \fontfamily{bembo}\selectfont |
23 | 20 |
24 \makeindex | 21 \makeindex |
25 \begin{document} | 22 \begin{document} |
26 | 23 |
55 \newcommand{\gnusampersand}{\&} | 52 \newcommand{\gnusampersand}{\&} |
56 \newcommand{\gnuspercent}{\%} | 53 \newcommand{\gnuspercent}{\%} |
57 \newcommand{\gnushash}{\#} | 54 \newcommand{\gnushash}{\#} |
58 \newcommand{\gnushat}{\symbol{"5E}} | 55 \newcommand{\gnushat}{\symbol{"5E}} |
59 \newcommand{\gnusunderline}{\symbol{"5F}} | 56 \newcommand{\gnusunderline}{\symbol{"5F}} |
57 \newcommand{\gnusnot}{$\neg$} | |
60 \newcommand{\gnustilde}{\symbol{"7E}} | 58 \newcommand{\gnustilde}{\symbol{"7E}} |
61 \newcommand{\gnusless}{{$<$}} | 59 \newcommand{\gnusless}{{$<$}} |
62 \newcommand{\gnusgreater}{{$>$}} | 60 \newcommand{\gnusgreater}{{$>$}} |
63 | 61 |
64 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} | 62 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} |
65 \newcommand{\gnusinteresting}{ | 63 \newcommand{\gnusinteresting}{ |
66 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} | 64 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} |
67 } | 65 } |
68 | 66 |
69 \newcommand{\gnuschapter}[1]{ | 67 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi} |
68 | |
69 \newcommand{\gnuspagechapter}[1]{ | |
70 {\mbox{}} | |
71 } | |
72 | |
73 \newdimen{\gnusdimen} | |
74 \gnusdimen 0pt | |
75 | |
76 \newcommand{\gnuschapter}[2]{ | |
77 \gnuscleardoublepage | |
78 \ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi | |
79 \chapter{#2} | |
70 \renewcommand{\gnussectionname}{} | 80 \renewcommand{\gnussectionname}{} |
71 \chapter{#1} | 81 \renewcommand{\gnuschaptername}{#2} |
72 \renewcommand{\gnuschaptername}{#1} | |
73 \thispagestyle{empty} | 82 \thispagestyle{empty} |
74 % \epsfig{figure=gnus-herd-\arabic{chapter}.eps,height=15cm} | 83 \hspace*{-2cm} |
84 \begin{picture}(500,500)(0,0) | |
85 \put(0,0){\makebox(480,350)[tr]{#1}} | |
86 \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}} | |
87 \end{picture} | |
75 \clearpage | 88 \clearpage |
76 } | 89 } |
77 | 90 |
78 \newcommand{\gnusitemx}[1]{\vspace{-\itemsep}\item#1} | 91 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1} |
79 | 92 |
80 \newcommand{\gnussection}[1]{ | 93 \newcommand{\gnussection}[1]{ |
81 \renewcommand{\gnussectionname}{#1} | 94 \renewcommand{\gnussectionname}{#1} |
82 \section{#1} | 95 \section{#1} |
83 } | 96 } |
116 \newenvironment{emphlist}% | 129 \newenvironment{emphlist}% |
117 {\begin{list}{}{ | 130 {\begin{list}{}{ |
118 } | 131 } |
119 }{\end{list}} | 132 }{\end{list}} |
120 | 133 |
121 \newpagestyle{gnus}% | 134 \newlength\gnusheadtextwidth |
135 \setlength{\gnusheadtextwidth}{\headtextwidth} | |
136 \addtolength{\gnusheadtextwidth}{1cm} | |
137 | |
138 \newpagestyle{gnuspreamble}% | |
122 { | 139 { |
123 { | 140 { |
124 \ifodd\count0 | 141 \ifodd\count0 |
125 { | 142 { |
126 \hspace*{-2ex} | 143 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}} |
127 \underline{ | |
128 \makebox[\headtextwidth]{ | |
129 \hspace*{-2.3ex} | |
130 \textbf{\arabic{chapter}.\arabic{section}} | |
131 \textbf{\gnussectionname\hfill\arabic{page}} | |
132 }} | |
133 } | 144 } |
134 \else | 145 \else |
135 { | 146 { |
136 \hspace*{-2.25cm} | 147 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}} |
137 \underline{ | 148 } |
138 \hspace*{-2.3ex} | |
139 \makebox[\headtextwidth]{ | |
140 \textbf{\arabic{page}\hfill\gnuschaptername} | |
141 }} | |
142 } | 149 } |
143 \fi | 150 \fi |
144 } | 151 } |
145 } | 152 } |
146 { | 153 { |
150 \else | 157 \else |
151 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} | 158 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} |
152 \hfill \mbox{} | 159 \hfill \mbox{} |
153 \fi | 160 \fi |
154 } | 161 } |
155 \pagestyle{gnus} | 162 |
163 \newpagestyle{gnusindex}% | |
164 { | |
165 { | |
166 \ifodd\count0 | |
167 { | |
168 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}} | |
169 } | |
170 \else | |
171 { | |
172 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}} | |
173 } | |
174 \fi | |
175 } | |
176 } | |
177 { | |
178 \ifodd\count0 | |
179 \mbox{} \hfill | |
180 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} | |
181 \else | |
182 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} | |
183 \hfill \mbox{} | |
184 \fi | |
185 } | |
186 | |
187 \newpagestyle{gnus}% | |
188 { | |
189 { | |
190 \ifodd\count0 | |
191 { | |
192 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}} | |
193 } | |
194 \else | |
195 { | |
196 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}} | |
197 } | |
198 \fi | |
199 } | |
200 } | |
201 { | |
202 \ifodd\count0 | |
203 \mbox{} \hfill | |
204 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} | |
205 \else | |
206 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} | |
207 \hfill \mbox{} | |
208 \fi | |
209 } | |
210 | |
211 \pagenumbering{roman} | |
212 \pagestyle{gnuspreamble} | |
156 | 213 |
157 @end iflatex | 214 @end iflatex |
158 @end iftex | 215 @end iftex |
159 | 216 |
160 @iftex | 217 @iftex |
228 @end ifinfo | 285 @end ifinfo |
229 | 286 |
230 @tex | 287 @tex |
231 | 288 |
232 @titlepage | 289 @titlepage |
233 @title Gnus Manual | 290 @title Gnus 5.4 Manual |
234 | 291 |
235 @author by Lars Magne Ingebrigtsen | 292 @author by Lars Magne Ingebrigtsen |
236 @page | 293 @page |
237 | 294 |
238 @vskip 0pt plus 1filll | 295 @vskip 0pt plus 1filll |
264 You can read news (and mail) from within Emacs by using Gnus. The news | 321 You can read news (and mail) from within Emacs by using Gnus. The news |
265 can be gotten by any nefarious means you can think of---@sc{nntp}, local | 322 can be gotten by any nefarious means you can think of---@sc{nntp}, local |
266 spool or your mbox file. All at the same time, if you want to push your | 323 spool or your mbox file. All at the same time, if you want to push your |
267 luck. | 324 luck. |
268 | 325 |
326 This manual corresponds to Gnus 5.4. | |
327 | |
269 @end ifinfo | 328 @end ifinfo |
270 | 329 |
271 @iftex | 330 @iftex |
272 | 331 |
273 @iflatex | 332 @iflatex |
274 \thispagestyle{empty} | 333 \tableofcontents |
334 \gnuscleardoublepage | |
275 @end iflatex | 335 @end iflatex |
276 | 336 |
277 Gnus is the advanced, self-documenting, customizable, extensible | 337 Gnus is the advanced, self-documenting, customizable, extensible |
278 unreal-time newsreader for GNU Emacs. | 338 unreal-time newsreader for GNU Emacs. |
279 | 339 |
308 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals. | 368 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals. |
309 * Index:: Variable, function and concept index. | 369 * Index:: Variable, function and concept index. |
310 * Key Index:: Key Index. | 370 * Key Index:: Key Index. |
311 @end menu | 371 @end menu |
312 | 372 |
313 | |
314 @node Starting Up | 373 @node Starting Up |
315 @chapter Starting Gnus | 374 @chapter Starting Gnus |
316 @cindex starting up | 375 @cindex starting up |
317 | 376 |
318 @kindex M-x gnus | 377 @kindex M-x gnus |
331 | 390 |
332 @menu | 391 @menu |
333 * Finding the News:: Choosing a method for getting news. | 392 * Finding the News:: Choosing a method for getting news. |
334 * The First Time:: What does Gnus do the first time you start it? | 393 * The First Time:: What does Gnus do the first time you start it? |
335 * The Server is Down:: How can I read my mail then? | 394 * The Server is Down:: How can I read my mail then? |
336 * Slave Gnusii:: You can have more than one Gnus active at a time. | 395 * Slave Gnusae:: You can have more than one Gnus active at a time. |
337 * Fetching a Group:: Starting Gnus just to read a group. | 396 * Fetching a Group:: Starting Gnus just to read a group. |
338 * New Groups:: What is Gnus supposed to do with new groups? | 397 * New Groups:: What is Gnus supposed to do with new groups? |
339 * Startup Files:: Those pesky startup files---@file{.newsrc}. | 398 * Startup Files:: Those pesky startup files---@file{.newsrc}. |
340 * Auto Save:: Recovering from a crash. | 399 * Auto Save:: Recovering from a crash. |
341 * The Active File:: Reading the active file over a slow line Takes Time. | 400 * The Active File:: Reading the active file over a slow line Takes Time. |
401 * Changing Servers:: You may want to move from one server to another. | |
342 * Startup Variables:: Other variables you might change. | 402 * Startup Variables:: Other variables you might change. |
343 @end menu | 403 @end menu |
344 | 404 |
345 | 405 |
346 @node Finding the News | 406 @node Finding the News |
347 @section Finding the News | 407 @section Finding the News |
408 @cindex finding news | |
348 | 409 |
349 @vindex gnus-select-method | 410 @vindex gnus-select-method |
350 @c @head | 411 @c @head |
351 The @code{gnus-select-method} variable says where Gnus should look for | 412 The @code{gnus-select-method} variable says where Gnus should look for |
352 news. This variable should be a list where the first element says | 413 news. This variable should be a list where the first element says |
376 If this variable is not set, Gnus will take a look at the | 437 If this variable is not set, Gnus will take a look at the |
377 @code{NNTPSERVER} environment variable. If that variable isn't set, | 438 @code{NNTPSERVER} environment variable. If that variable isn't set, |
378 Gnus will see whether @code{gnus-nntpserver-file} | 439 Gnus will see whether @code{gnus-nntpserver-file} |
379 (@file{/etc/nntpserver} by default) has any opinions on the matter. If | 440 (@file{/etc/nntpserver} by default) has any opinions on the matter. If |
380 that fails as well, Gnus will will try to use the machine that is | 441 that fails as well, Gnus will will try to use the machine that is |
381 running Emacs as an @sc{nntp} server. That's a long-shot, though. | 442 running Emacs as an @sc{nntp} server. That's a long shot, though. |
382 | 443 |
383 @vindex gnus-nntp-server | 444 @vindex gnus-nntp-server |
384 If @code{gnus-nntp-server} is set, this variable will override | 445 If @code{gnus-nntp-server} is set, this variable will override |
385 @code{gnus-select-method}. You should therefore set | 446 @code{gnus-select-method}. You should therefore set |
386 @code{gnus-nntp-server} to @code{nil}, which is what it is by default. | 447 @code{gnus-nntp-server} to @code{nil}, which is what it is by default. |
459 for some reason or other. If you decide to continue and have no foreign | 520 for some reason or other. If you decide to continue and have no foreign |
460 groups, you'll find it difficult to actually do anything in the group | 521 groups, you'll find it difficult to actually do anything in the group |
461 buffer. But, hey, that's your problem. Blllrph! | 522 buffer. But, hey, that's your problem. Blllrph! |
462 | 523 |
463 @findex gnus-no-server | 524 @findex gnus-no-server |
525 @kindex M-x gnus-no-server | |
464 @c @head | 526 @c @head |
465 If you know that the server is definitely down, or you just want to read | 527 If you know that the server is definitely down, or you just want to read |
466 your mail without bothering with the server at all, you can use the | 528 your mail without bothering with the server at all, you can use the |
467 @code{gnus-no-server} command to start Gnus. That might come in handy | 529 @code{gnus-no-server} command to start Gnus. That might come in handy |
468 if you're in a hurry as well. | 530 if you're in a hurry as well. This command will not attempt to contact |
469 | 531 your primary server---instead, it will just activate all groups on level |
470 | 532 1 and 2. (You should preferably keep no native groups on those two |
471 @node Slave Gnusii | 533 levels.) |
472 @section Slave Gnusiï | 534 |
535 | |
536 @node Slave Gnusae | |
537 @section Slave Gnusae | |
473 @cindex slave | 538 @cindex slave |
474 | 539 |
475 You might want to run more than one Emacs with more than one Gnus at the | 540 You might want to run more than one Emacs with more than one Gnus at the |
476 same time. If you are using different @file{.newsrc} files (eg., if you | 541 same time. If you are using different @file{.newsrc} files (e.g., if you |
477 are using the two different Gnusiï to read from two different servers), | 542 are using the two different Gnusae to read from two different servers), |
478 that is no problem whatsoever. You just do it. | 543 that is no problem whatsoever. You just do it. |
479 | 544 |
480 The problem appears when you want to run two Gnusiï that use the same | 545 The problem appears when you want to run two Gnusae that use the same |
481 @code{.newsrc} file. | 546 @code{.newsrc} file. |
482 | 547 |
483 To work around that problem some, we here at the Think-Tank at the Gnus | 548 To work around that problem some, we here at the Think-Tank at the Gnus |
484 Towers have come up with a new concept: @dfn{Masters} and | 549 Towers have come up with a new concept: @dfn{Masters} and |
485 @dfn{servants}. (We have applied for a patent on this concept, and have | 550 @dfn{slaves}. (We have applied for a patent on this concept, and have |
486 taken out a copyright on those words. If you wish to use those words in | 551 taken out a copyright on those words. If you wish to use those words in |
487 conjunction with each other, you have to send $1 per usage instance to | 552 conjunction with each other, you have to send $1 per usage instance to |
488 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer | 553 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer |
489 Applications}) will be much more expensive, of course.) | 554 Applications}) will be much more expensive, of course.) |
490 | 555 |
491 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or | 556 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or |
492 however you do it). Each subsequent slave Gnusiï should be started with | 557 however you do it). Each subsequent slave Gnusae should be started with |
493 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} | 558 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} |
494 files, but instead save @dfn{slave files} that contains information only | 559 files, but instead save @dfn{slave files} that contain information only |
495 on what groups have been read in the slave session. When a master Gnus | 560 on what groups have been read in the slave session. When a master Gnus |
496 starts, it will read (and delete) these slave files, incorporating all | 561 starts, it will read (and delete) these slave files, incorporating all |
497 information from them. (The slave files will be read in the sequence | 562 information from them. (The slave files will be read in the sequence |
498 they were created, so the latest changes will have precedence.) | 563 they were created, so the latest changes will have precedence.) |
499 | 564 |
500 Information from the slave files has, of course, precedence over the | 565 Information from the slave files has, of course, precedence over the |
501 information in the normal (i. e., master) @code{.newsrc} file. | 566 information in the normal (i.e., master) @code{.newsrc} file. |
502 | 567 |
503 | 568 |
504 @node Fetching a Group | 569 @node Fetching a Group |
505 @section Fetching a Group | 570 @section Fetching a Group |
571 @cindex fetching a group | |
506 | 572 |
507 @findex gnus-fetch-group | 573 @findex gnus-fetch-group |
508 It it sometime convenient to be able to just say ``I want to read this | 574 It it sometimes convenient to be able to just say ``I want to read this |
509 group and I don't care whether Gnus has been started or not''. This is | 575 group and I don't care whether Gnus has been started or not''. This is |
510 perhaps more useful for people who write code than for users, but the | 576 perhaps more useful for people who write code than for users, but the |
511 command @code{gnus-fetch-group} provides this functionality in any case. | 577 command @code{gnus-fetch-group} provides this functionality in any case. |
512 It takes the group name as a parameter. | 578 It takes the group name as a parameter. |
513 | 579 |
514 | 580 |
515 @node New Groups | 581 @node New Groups |
516 @section New Groups | 582 @section New Groups |
517 @cindex new groups | 583 @cindex new groups |
584 @cindex subscription | |
585 | |
586 @vindex gnus-check-new-newsgroups | |
587 If you are satisfied that you really never want to see any new groups, | |
588 you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will | |
589 also save you some time at startup. Even if this variable is | |
590 @code{nil}, you can always subscribe to the new groups just by pressing | |
591 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable | |
592 is @code{t} by default. If you set this variable to @code{always}, then | |
593 Gnus will query the backends for new groups even when you do the @kbd{g} | |
594 command (@pxref{Scanning New Messages}). | |
595 | |
596 @menu | |
597 * Checking New Groups:: Determining what groups are new. | |
598 * Subscription Methods:: What Gnus should do with new groups. | |
599 * Filtering New Groups:: Making Gnus ignore certain new groups. | |
600 @end menu | |
601 | |
602 | |
603 @node Checking New Groups | |
604 @subsection Checking New Groups | |
605 | |
606 Gnus normally determines whether a group is new or not by comparing the | |
607 list of groups from the active file(s) with the lists of subscribed and | |
608 dead groups. This isn't a particularly fast method. If | |
609 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the | |
610 server for new groups since the last time. This is both faster and | |
611 cheaper. This also means that you can get rid of the list of killed | |
612 groups altogether, so you may set @code{gnus-save-killed-list} to | |
613 @code{nil}, which will save time both at startup, at exit, and all over. | |
614 Saves disk space, too. Why isn't this the default, then? | |
615 Unfortunately, not all servers support this command. | |
616 | |
617 I bet I know what you're thinking now: How do I find out whether my | |
618 server supports @code{ask-server}? No? Good, because I don't have a | |
619 fail-safe answer. I would suggest just setting this variable to | |
620 @code{ask-server} and see whether any new groups appear within the next | |
621 few days. If any do, then it works. If none do, then it doesn't | |
622 work. I could write a function to make Gnus guess whether the server | |
623 supports @code{ask-server}, but it would just be a guess. So I won't. | |
624 You could @code{telnet} to the server and say @code{HELP} and see | |
625 whether it lists @samp{NEWGROUPS} among the commands it understands. If | |
626 it does, then it might work. (But there are servers that lists | |
627 @samp{NEWGROUPS} without supporting the function properly.) | |
628 | |
629 This variable can also be a list of select methods. If so, Gnus will | |
630 issue an @code{ask-server} command to each of the select methods, and | |
631 subscribe them (or not) using the normal methods. This might be handy | |
632 if you are monitoring a few servers for new groups. A side effect is | |
633 that startup will take much longer, so you can meditate while waiting. | |
634 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss. | |
635 | |
636 | |
637 @node Subscription Methods | |
638 @subsection Subscription Methods | |
518 | 639 |
519 @vindex gnus-subscribe-newsgroup-method | 640 @vindex gnus-subscribe-newsgroup-method |
520 What Gnus does when it encounters a new group is determined by the | 641 What Gnus does when it encounters a new group is determined by the |
521 @code{gnus-subscribe-newsgroup-method} variable. | 642 @code{gnus-subscribe-newsgroup-method} variable. |
522 | 643 |
525 | 646 |
526 @table @code | 647 @table @code |
527 | 648 |
528 @item gnus-subscribe-zombies | 649 @item gnus-subscribe-zombies |
529 @vindex gnus-subscribe-zombies | 650 @vindex gnus-subscribe-zombies |
530 Make all new groups zombies. You can browse the zombies later (with | 651 Make all new groups zombies. This is the default. You can browse the |
531 @kbd{A z}) and either kill them all off properly, or subscribe to them. | 652 zombies later (with @kbd{A z}) and either kill them all off properly |
532 This is the default. | 653 (with @kbd{S z}), or subscribe to them (with @kbd{u}). |
533 | 654 |
534 @item gnus-subscribe-randomly | 655 @item gnus-subscribe-randomly |
535 @vindex gnus-subscribe-randomly | 656 @vindex gnus-subscribe-randomly |
536 Subscribe all new groups randomly. | 657 Subscribe all new groups randomly. |
537 | 658 |
538 @item gnus-subscribe-alphabetically | 659 @item gnus-subscribe-alphabetically |
539 @vindex gnus-subscribe-alphabetically | 660 @vindex gnus-subscribe-alphabetically |
540 Subscribe all new groups alphabetically. | 661 Subscribe all new groups alphabetically. |
541 | 662 |
542 @item gnus-subscribe-hierarchically | 663 @item gnus-subscribe-hierarchically |
543 @vindex gnus-subscribe-hierarchically | 664 @vindex gnus-subscribe-hierarchically |
544 Subscribe all new groups hierarchically. The difference between this | 665 Subscribe all new groups hierarchically. The difference between this |
545 function and @code{gnus-subscribe-alphabetically} is slight. | 666 function and @code{gnus-subscribe-alphabetically} is slight. |
546 @code{gnus-subscribe-alphabetically} will subscribe new groups in a | 667 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly |
547 strictly alphabetical fashion, while this function will enter groups | 668 alphabetical fashion, while this function will enter groups into it's |
548 into it's hierarchy. So if you want to have the @samp{rec} hierarchy | 669 hierarchy. So if you want to have the @samp{rec} hierarchy before the |
549 before the @samp{comp} hierarchy, this function will not mess that | 670 @samp{comp} hierarchy, this function will not mess that configuration |
550 configuration up. Or something like that. | 671 up. Or something like that. |
551 | 672 |
552 @item gnus-subscribe-interactively | 673 @item gnus-subscribe-interactively |
553 @vindex gnus-subscribe-interactively | 674 @vindex gnus-subscribe-interactively |
554 Subscribe new groups interactively. This means that Gnus will ask | 675 Subscribe new groups interactively. This means that Gnus will ask |
555 you about @strong{all} new groups. | 676 you about @strong{all} new groups. |
569 hierarchy or not. | 690 hierarchy or not. |
570 | 691 |
571 One common mistake is to set the variable a few paragraphs above to | 692 One common mistake is to set the variable a few paragraphs above to |
572 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This | 693 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This |
573 will not work. This is ga-ga. So don't do it. | 694 will not work. This is ga-ga. So don't do it. |
695 | |
696 | |
697 @node Filtering New Groups | |
698 @subsection Filtering New Groups | |
574 | 699 |
575 A nice and portable way to control which new newsgroups should be | 700 A nice and portable way to control which new newsgroups should be |
576 subscribed (or ignored) is to put an @dfn{options} line at the start of | 701 subscribed (or ignored) is to put an @dfn{options} line at the start of |
577 the @file{.newsrc} file. Here's an example: | 702 the @file{.newsrc} file. Here's an example: |
578 | 703 |
608 more for user fiddling. By default this variable makes all new groups | 733 more for user fiddling. By default this variable makes all new groups |
609 that come from mail backends (@code{nnml}, @code{nnbabyl}, | 734 that come from mail backends (@code{nnml}, @code{nnbabyl}, |
610 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you | 735 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you |
611 don't like that, just set this variable to @code{nil}. | 736 don't like that, just set this variable to @code{nil}. |
612 | 737 |
613 @vindex gnus-check-new-newsgroups | 738 New groups that match this regexp are subscribed using |
614 If you are satisfied that you really never want to see any new groups, | 739 @code{gnus-subscribe-options-newsgroup-method}. |
615 you could set @code{gnus-check-new-newsgroups} to @code{nil}. This will | 740 |
616 also save you some time at startup. Even if this variable is | 741 |
617 @code{nil}, you can always subscribe to the new groups just by pressing | 742 @node Changing Servers |
618 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable | 743 @section Changing Servers |
619 is @code{t} by default. | 744 @cindex changing servers |
620 | 745 |
621 Gnus normally determines whether a group is new or not by comparing the | 746 Sometimes it is necessary to move from one @sc{nntp} server to another. |
622 list of groups from the active file(s) with the lists of subscribed and | 747 This happens very rarely, but perhaps you change jobs, or one server is |
623 dead groups. This isn't a particularly fast method. If | 748 very flaky and you want to use another. |
624 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the | 749 |
625 server for new groups since the last time. This is both faster & | 750 Changing the server is pretty easy, right? You just change |
626 cheaper. This also means that you can get rid of the list of killed | 751 @code{gnus-select-method} to point to the new server? |
627 groups altogether, so you may set @code{gnus-save-killed-list} to | 752 |
628 @code{nil}, which will save time both at startup, at exit, and all over. | 753 @emph{Wrong!} |
629 Saves disk space, too. Why isn't this the default, then? | 754 |
630 Unfortunately, not all servers support this command. | 755 Article numbers are not (in any way) kept synchronized between different |
631 | 756 @sc{nntp} servers, and the only way Gnus keeps track of what articles |
632 I bet I know what you're thinking now: How do I find out whether my | 757 you have read is by keeping track of article numbers. So when you |
633 server supports @code{ask-server}? No? Good, because I don't have a | 758 change @code{gnus-select-method}, your @file{.newsrc} file becomes |
634 fail-safe answer. I would suggest just setting this variable to | 759 worthless. |
635 @code{ask-server} and see whether any new groups appear within the next | 760 |
636 few days. If any do, then it works. If any don't, then it doesn't | 761 Gnus provides a few functions to attempt to translate a @file{.newsrc} |
637 work. I could write a function to make Gnus guess whether the server | 762 file from one server to another. They all have one thing in |
638 supports @code{ask-server}, but it would just be a guess. So I won't. | 763 common---they take a looong time to run. You don't want to use these |
639 You could @code{telnet} to the server and say @code{HELP} and see | 764 functions more than absolutely necessary. |
640 whether it lists @samp{NEWGROUPS} among the commands it understands. If | 765 |
641 it does, then it might work. (But there are servers that lists | 766 @kindex M-x gnus-change-server |
642 @samp{NEWGROUPS} without supporting the function properly.) | 767 @findex gnus-change-server |
643 | 768 If you have access to both servers, Gnus can request the headers for all |
644 This variable can also be a list of select methods. If so, Gnus will | 769 the articles you have read and compare @code{Message-ID}s and map the |
645 issue an @code{ask-server} command to each of the select methods, and | 770 article numbers of the read articles and article marks. The @kbd{M-x |
646 subscribe them (or not) using the normal methods. This might be handy | 771 gnus-change-server} command will do this for all your native groups. It |
647 if you are monitoring a few servers for new groups. A side effect is | 772 will prompt for the method you want to move to. |
648 that startup will take much longer, so you can meditate while waiting. | 773 |
649 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss. | 774 @kindex M-x gnus-group-move-group-to-server |
775 @findex gnus-group-move-group-to-server | |
776 You can also move individual groups with the @kbd{M-x | |
777 gnus-group-move-group-to-server} command. This is useful if you want to | |
778 move a (foreign) group from one server to another. | |
779 | |
780 @kindex M-x gnus-group-clear-data-on-native-groups | |
781 @findex gnus-group-clear-data-on-native-groups | |
782 If you don't have access to both the old and new server, all your marks | |
783 and read ranges have become worthless. You can use the @kbd{M-x | |
784 gnus-group-clear-data-on-native-groups} command to clear out all data | |
785 that you have on your native groups. Use with caution. | |
650 | 786 |
651 | 787 |
652 @node Startup Files | 788 @node Startup Files |
653 @section Startup Files | 789 @section Startup Files |
654 @cindex startup files | 790 @cindex startup files |
655 @cindex .newsrc | 791 @cindex .newsrc |
792 @cindex .newsrc.el | |
793 @cindex .newsrc.eld | |
656 | 794 |
657 Now, you all know about the @file{.newsrc} file. All subscription | 795 Now, you all know about the @file{.newsrc} file. All subscription |
658 information is traditionally stored in this file. | 796 information is traditionally stored in this file. |
659 | 797 |
660 Things got a bit more complicated with @sc{gnus}. In addition to | 798 Things got a bit more complicated with @sc{gnus}. In addition to |
679 | 817 |
680 @vindex gnus-save-killed-list | 818 @vindex gnus-save-killed-list |
681 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus | 819 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus |
682 will not save the list of killed groups to the startup file. This will | 820 will not save the list of killed groups to the startup file. This will |
683 save both time (when starting and quitting) and space (on disk). It | 821 save both time (when starting and quitting) and space (on disk). It |
684 will also means that Gnus has no record of what groups are new or old, | 822 will also mean that Gnus has no record of what groups are new or old, |
685 so the automatic new groups subscription methods become meaningless. | 823 so the automatic new groups subscription methods become meaningless. |
686 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or | 824 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or |
687 @code{ask-server} if you set this variable to @code{nil} (@pxref{New | 825 @code{ask-server} if you set this variable to @code{nil} (@pxref{New |
688 Groups}). | 826 Groups}). This variable can also be a regular expression. If that's |
827 the case, remove all groups that do not match this regexp before | |
828 saving. This can be useful in certain obscure situations that involve | |
829 several servers where not all servers support @code{ask-server}. | |
689 | 830 |
690 @vindex gnus-startup-file | 831 @vindex gnus-startup-file |
691 The @code{gnus-startup-file} variable says where the startup files are. | 832 The @code{gnus-startup-file} variable says where the startup files are. |
692 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup | 833 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup |
693 file being whatever that one is with a @samp{.eld} appended. | 834 file being whatever that one is with a @samp{.eld} appended. |
698 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc | 839 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc |
699 files, while @code{gnus-save-quick-newsrc-hook} is called just before | 840 files, while @code{gnus-save-quick-newsrc-hook} is called just before |
700 saving the @file{.newsrc.eld} file, and | 841 saving the @file{.newsrc.eld} file, and |
701 @code{gnus-save-standard-newsrc-hook} is called just before saving the | 842 @code{gnus-save-standard-newsrc-hook} is called just before saving the |
702 @file{.newsrc} file. The latter two are commonly used to turn version | 843 @file{.newsrc} file. The latter two are commonly used to turn version |
703 control on or off. Version control is off by default when saving the | 844 control on or off. Version control is on by default when saving the |
704 startup files. | 845 startup files. If you want to turn backup creation off, say something like: |
846 | |
847 @lisp | |
848 (defun turn-off-backup () | |
849 (set (make-local-variable 'backup-inhibited) t)) | |
850 | |
851 (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup) | |
852 (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup) | |
853 @end lisp | |
705 | 854 |
706 @vindex gnus-init-file | 855 @vindex gnus-init-file |
707 When Gnus starts, it will read the @code{gnus-init-file} file, which is | 856 When Gnus starts, it will read the @code{gnus-site-init-file} |
708 @file{~/.gnus.el} by default. This is a normal Emacs Lisp file and can | 857 (@file{.../site-lisp/gnus.el} by default) and @code{gnus-init-file} |
709 be used to avoid cluttering your @file{.emacs} file with Gnus stuff. | 858 (@file{~/.gnus.el} by default) files. These are normal Emacs Lisp files |
859 and can be used to avoid cluttering your @file{.emacs} and | |
860 @file{site-init} files with Gnus stuff. | |
710 | 861 |
711 | 862 |
712 @node Auto Save | 863 @node Auto Save |
713 @section Auto Save | 864 @section Auto Save |
714 @cindex dribble file | 865 @cindex dribble file |
786 performance, but if the server does not support the aforementioned | 937 performance, but if the server does not support the aforementioned |
787 @code{LIST ACTIVE group} command, this isn't very nice to the server. | 938 @code{LIST ACTIVE group} command, this isn't very nice to the server. |
788 | 939 |
789 In any case, if you use @code{some} or @code{nil}, you should definitely | 940 In any case, if you use @code{some} or @code{nil}, you should definitely |
790 kill all groups that you aren't interested in to speed things up. | 941 kill all groups that you aren't interested in to speed things up. |
942 | |
943 Note that this variable also affects active file retrieval from | |
944 secondary select methods. | |
791 | 945 |
792 | 946 |
793 @node Startup Variables | 947 @node Startup Variables |
794 @section Startup Variables | 948 @section Startup Variables |
795 | 949 |
815 in a while from the group buffer instead (@pxref{Group Maintenance}). | 969 in a while from the group buffer instead (@pxref{Group Maintenance}). |
816 | 970 |
817 @item gnus-inhibit-startup-message | 971 @item gnus-inhibit-startup-message |
818 @vindex gnus-inhibit-startup-message | 972 @vindex gnus-inhibit-startup-message |
819 If non-@code{nil}, the startup message won't be displayed. That way, | 973 If non-@code{nil}, the startup message won't be displayed. That way, |
820 your boss might not notice that you are reading news instead of doing | 974 your boss might not notice as easily that you are reading news instead |
821 your job as easily. | 975 of doing your job. Note that this variable is used before |
976 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead. | |
822 | 977 |
823 @item gnus-no-groups-message | 978 @item gnus-no-groups-message |
824 @vindex gnus-no-groups-message | 979 @vindex gnus-no-groups-message |
825 Message displayed by Gnus when no groups are available. | 980 Message displayed by Gnus when no groups are available. |
981 | |
982 @item gnus-play-startup-jingle | |
983 @vindex gnus-play-startup-jingle | |
984 If non-@code{nil}, play the Gnus jingle at startup. | |
985 | |
986 @item gnus-startup-jingle | |
987 @vindex gnus-startup-jingle | |
988 Jingle to be played if the above variable is non-@code{nil}. The | |
989 default is @samp{Tuxedomoon.Jingle4.au}. | |
990 | |
826 @end table | 991 @end table |
827 | 992 |
828 | 993 |
829 @node The Group Buffer | 994 @node The Group Buffer |
830 @chapter The Group Buffer | 995 @chapter The Group Buffer |
836 | 1001 |
837 @menu | 1002 @menu |
838 * Group Buffer Format:: Information listed and how you can change it. | 1003 * Group Buffer Format:: Information listed and how you can change it. |
839 * Group Maneuvering:: Commands for moving in the group buffer. | 1004 * Group Maneuvering:: Commands for moving in the group buffer. |
840 * Selecting a Group:: Actually reading news. | 1005 * Selecting a Group:: Actually reading news. |
1006 * Group Data:: Changing the info for a group. | |
841 * Subscription Commands:: Unsubscribing, killing, subscribing. | 1007 * Subscription Commands:: Unsubscribing, killing, subscribing. |
842 * Group Levels:: Levels? What are those, then? | 1008 * Group Levels:: Levels? What are those, then? |
843 * Group Score:: A mechanism for finding out what groups you like. | 1009 * Group Score:: A mechanism for finding out what groups you like. |
844 * Marking Groups:: You can mark groups for later processing. | 1010 * Marking Groups:: You can mark groups for later processing. |
845 * Foreign Groups:: Creating and editing groups. | 1011 * Foreign Groups:: Creating and editing groups. |
854 @end menu | 1020 @end menu |
855 | 1021 |
856 | 1022 |
857 @node Group Buffer Format | 1023 @node Group Buffer Format |
858 @section Group Buffer Format | 1024 @section Group Buffer Format |
859 @cindex group buffer format | |
860 | 1025 |
861 @menu | 1026 @menu |
862 * Group Line Specification:: Deciding how the group buffer is to look. | 1027 * Group Line Specification:: Deciding how the group buffer is to look. |
863 * Group Modeline Specification:: The group buffer modeline. | 1028 * Group Modeline Specification:: The group buffer modeline. |
864 * Group Highlighting:: Having nice colors in the group buffer. | 1029 * Group Highlighting:: Having nice colors in the group buffer. |
865 @end menu | 1030 @end menu |
866 | 1031 |
867 | 1032 |
868 @node Group Line Specification | 1033 @node Group Line Specification |
869 @subsection Group Line Specification | 1034 @subsection Group Line Specification |
1035 @cindex group buffer format | |
870 | 1036 |
871 The default format of the group buffer is nice and dull, but you can | 1037 The default format of the group buffer is nice and dull, but you can |
872 make it as exciting and ugly as you feel like. | 1038 make it as exciting and ugly as you feel like. |
873 | 1039 |
874 Here's a couple of example group lines: | 1040 Here's a couple of example group lines: |
890 @code{gnus-group-line-format} variable. This variable works along the | 1056 @code{gnus-group-line-format} variable. This variable works along the |
891 lines of a @code{format} specification, which is pretty much the same as | 1057 lines of a @code{format} specification, which is pretty much the same as |
892 a @code{printf} specifications, for those of you who use (feh!) C. | 1058 a @code{printf} specifications, for those of you who use (feh!) C. |
893 @xref{Formatting Variables}. | 1059 @xref{Formatting Variables}. |
894 | 1060 |
895 The default value that produced those lines above is | 1061 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above. |
896 @samp{%M%S%5y: %(%g%)\n}. | |
897 | 1062 |
898 There should always be a colon on the line; the cursor always moves to | 1063 There should always be a colon on the line; the cursor always moves to |
899 the colon after performing an operation. Nothing else is required---not | 1064 the colon after performing an operation. Nothing else is required---not |
900 even the group name. All displayed text is just window dressing, and is | 1065 even the group name. All displayed text is just window dressing, and is |
901 never examined by Gnus. Gnus stores all real information it needs using | 1066 never examined by Gnus. Gnus stores all real information it needs using |
908 Here's a list of all available format characters: | 1073 Here's a list of all available format characters: |
909 | 1074 |
910 @table @samp | 1075 @table @samp |
911 | 1076 |
912 @item M | 1077 @item M |
913 Only marked articles. | 1078 An asterisk if the group only has marked articles. |
914 | 1079 |
915 @item S | 1080 @item S |
916 Whether the group is subscribed. | 1081 Whether the group is subscribed. |
917 | 1082 |
918 @item L | 1083 @item L |
929 | 1094 |
930 @item R | 1095 @item R |
931 Number of read articles. | 1096 Number of read articles. |
932 | 1097 |
933 @item t | 1098 @item t |
934 Total number of articles. | 1099 Estimated total number of articles. (This is really @var{max-number} |
1100 minus @var{min-number} plus 1.) | |
935 | 1101 |
936 @item y | 1102 @item y |
937 Number of unread, unticked, non-dormant articles. | 1103 Number of unread, unticked, non-dormant articles. |
938 | 1104 |
939 @item i | 1105 @item i |
969 | 1135 |
970 @item c | 1136 @item c |
971 @vindex gnus-group-uncollapsed-levels | 1137 @vindex gnus-group-uncollapsed-levels |
972 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} | 1138 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} |
973 variable says how many levels to leave at the end of the group name. | 1139 variable says how many levels to leave at the end of the group name. |
974 The default is @code{1}. | 1140 The default is 1---this will mean that group names like |
1141 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}. | |
1142 | |
1143 @item m | |
1144 @vindex gnus-new-mail-mark | |
1145 @cindex % | |
1146 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to | |
1147 the group lately. | |
1148 | |
1149 @item d | |
1150 A string that says when you last read the group (@pxref{Group | |
1151 Timestamp}). | |
975 | 1152 |
976 @item u | 1153 @item u |
977 User defined specifier. The next character in the format string should | 1154 User defined specifier. The next character in the format string should |
978 be a letter. @sc{gnus} will call the function | 1155 be a letter. @sc{gnus} will call the function |
979 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter | 1156 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter |
980 following @samp{%u}. The function will be passed the current headers as | 1157 following @samp{%u}. The function will be passed a single dummy |
981 argument. The function should return a string, which will be inserted | 1158 paratere as argument. The function should return a string, which will |
982 into the buffer just like information from any other specifier. | 1159 be inserted into the buffer just like information from any other |
1160 specifier. | |
983 @end table | 1161 @end table |
984 | 1162 |
985 @cindex * | 1163 @cindex * |
986 All the ``number-of'' specs will be filled with an asterisk (@samp{*}) | 1164 All the ``number-of'' specs will be filled with an asterisk (@samp{*}) |
987 if no info is available---for instance, if it is a non-activated foreign | 1165 if no info is available---for instance, if it is a non-activated foreign |
988 group, or a bogus (or semi-bogus) native group. | 1166 group, or a bogus native group. |
989 | 1167 |
990 | 1168 |
991 @node Group Modeline Specification | 1169 @node Group Modeline Specification |
992 @subsection Group Modeline Specification | 1170 @subsection Group Modeline Specification |
1171 @cindex group modeline | |
993 | 1172 |
994 @vindex gnus-group-mode-line-format | 1173 @vindex gnus-group-mode-line-format |
995 The mode line can be changed by setting | 1174 The mode line can be changed by setting |
996 (@code{gnus-group-mode-line-format}). It doesn't understand that many | 1175 @code{gnus-group-mode-line-format} (@pxref{Formatting Variables}). It |
997 format specifiers: | 1176 doesn't understand that many format specifiers: |
998 | 1177 |
999 @table @samp | 1178 @table @samp |
1000 @item S | 1179 @item S |
1001 The native news server. | 1180 The native news server. |
1002 @item M | 1181 @item M |
1004 @end table | 1183 @end table |
1005 | 1184 |
1006 | 1185 |
1007 @node Group Highlighting | 1186 @node Group Highlighting |
1008 @subsection Group Highlighting | 1187 @subsection Group Highlighting |
1188 @cindex highlighting | |
1189 @cindex group highlighting | |
1009 | 1190 |
1010 @vindex gnus-group-highlight | 1191 @vindex gnus-group-highlight |
1011 Highlighting in the group buffer is controlled by the | 1192 Highlighting in the group buffer is controlled by the |
1012 @code{gnus-group-highlight} variable. This is an alist with elements | 1193 @code{gnus-group-highlight} variable. This is an alist with elements |
1013 that look like @var{(form . face)}. If @var{form} evaluates to | 1194 that look like @var{(form . face)}. If @var{form} evaluates to |
1016 Here's an example value for this variable that might look nice if the | 1197 Here's an example value for this variable that might look nice if the |
1017 background is dark: | 1198 background is dark: |
1018 | 1199 |
1019 @lisp | 1200 @lisp |
1020 (setq gnus-group-highlight | 1201 (setq gnus-group-highlight |
1021 `(((> unread 200) . | 1202 `(((> unread 200) . |
1022 ,(custom-face-lookup "Red" nil nil t nil nil)) | 1203 ,(custom-face-lookup "Red" nil nil t nil nil)) |
1023 ((and (< level 3) (zerop unread)) . | 1204 ((and (< level 3) (zerop unread)) . |
1024 ,(custom-face-lookup "SeaGreen" nil nil t nil nil)) | 1205 ,(custom-face-lookup "SeaGreen" nil nil t nil nil)) |
1025 ((< level 3) . | 1206 ((< level 3) . |
1026 ,(custom-face-lookup "SpringGreen" nil nil t nil nil)) | 1207 ,(custom-face-lookup "SpringGreen" nil nil t nil nil)) |
1027 ((zerop unread) . | 1208 ((zerop unread) . |
1028 ,(custom-face-lookup "SteelBlue" nil nil t nil nil)) | 1209 ,(custom-face-lookup "SteelBlue" nil nil t nil nil)) |
1029 (t . | 1210 (t . |
1030 ,(custom-face-lookup "SkyBlue" nil nil t nil nil)) | 1211 ,(custom-face-lookup "SkyBlue" nil nil t nil nil)))) |
1031 )) | |
1032 @end lisp | 1212 @end lisp |
1033 | 1213 |
1034 Variables that are dynamically bound when the forms are evaluated | 1214 Variables that are dynamically bound when the forms are evaluated |
1035 include: | 1215 include: |
1036 | 1216 |
1047 The level of the group. | 1227 The level of the group. |
1048 @item score | 1228 @item score |
1049 The score of the group. | 1229 The score of the group. |
1050 @item ticked | 1230 @item ticked |
1051 The number of ticked articles in the group. | 1231 The number of ticked articles in the group. |
1232 @item total | |
1233 The total number of articles in the group. Or rather, MAX-NUMBER minus | |
1234 MIN-NUMBER. | |
1052 @item topic | 1235 @item topic |
1053 When using the topic minor mode, this variable is bound to the current | 1236 When using the topic minor mode, this variable is bound to the current |
1054 topic being inserted. | 1237 topic being inserted. |
1055 @end table | 1238 @end table |
1056 | 1239 |
1079 @findex gnus-group-next-unread-group | 1262 @findex gnus-group-next-unread-group |
1080 Go to the next group that has unread articles | 1263 Go to the next group that has unread articles |
1081 (@code{gnus-group-next-unread-group}). | 1264 (@code{gnus-group-next-unread-group}). |
1082 | 1265 |
1083 @item p | 1266 @item p |
1084 | |
1085 @itemx DEL | 1267 @itemx DEL |
1086 @kindex DEL (Group) | 1268 @kindex DEL (Group) |
1087 @kindex p (Group) | 1269 @kindex p (Group) |
1088 @findex gnus-group-prev-unread-group | 1270 @findex gnus-group-prev-unread-group |
1089 Go to the previous group group that has unread articles | 1271 Go to the previous group that has unread articles |
1090 (@code{gnus-group-prev-unread-group}). | 1272 (@code{gnus-group-prev-unread-group}). |
1091 | 1273 |
1092 @item N | 1274 @item N |
1093 @kindex N (Group) | 1275 @kindex N (Group) |
1094 @findex gnus-group-next-group | 1276 @findex gnus-group-next-group |
1100 Go to the previous group (@code{gnus-group-prev-group}). | 1282 Go to the previous group (@code{gnus-group-prev-group}). |
1101 | 1283 |
1102 @item M-p | 1284 @item M-p |
1103 @kindex M-p (Group) | 1285 @kindex M-p (Group) |
1104 @findex gnus-group-next-unread-group-same-level | 1286 @findex gnus-group-next-unread-group-same-level |
1105 Go to the next unread group on the same level (or lower) | 1287 Go to the next unread group on the same (or lower) level |
1106 (@code{gnus-group-next-unread-group-same-level}). | 1288 (@code{gnus-group-next-unread-group-same-level}). |
1107 | 1289 |
1108 @item M-n | 1290 @item M-n |
1109 @kindex M-n (Group) | 1291 @kindex M-n (Group) |
1110 @findex gnus-group-prev-unread-group-same-level | 1292 @findex gnus-group-prev-unread-group-same-level |
1111 Go to the previous unread group on the same level (or lower) | 1293 Go to the previous unread group on the same (or lower) level |
1112 (@code{gnus-group-prev-unread-group-same-level}). | 1294 (@code{gnus-group-prev-unread-group-same-level}). |
1113 @end table | 1295 @end table |
1114 | 1296 |
1115 Three commands for jumping to groups: | 1297 Three commands for jumping to groups: |
1116 | 1298 |
1154 @findex gnus-group-read-group | 1336 @findex gnus-group-read-group |
1155 Select the current group, switch to the summary buffer and display the | 1337 Select the current group, switch to the summary buffer and display the |
1156 first unread article (@code{gnus-group-read-group}). If there are no | 1338 first unread article (@code{gnus-group-read-group}). If there are no |
1157 unread articles in the group, or if you give a non-numerical prefix to | 1339 unread articles in the group, or if you give a non-numerical prefix to |
1158 this command, Gnus will offer to fetch all the old articles in this | 1340 this command, Gnus will offer to fetch all the old articles in this |
1159 group from the server. If you give a numerical prefix @var{N}, Gnus | 1341 group from the server. If you give a numerical prefix @var{N}, @var{N} |
1160 will fetch @var{N} number of articles. If @var{N} is positive, fetch | 1342 determines the number of articles Gnus will fetch. If @var{N} is |
1161 the @var{N} newest articles, if @var{N} is negative, fetch the | 1343 positive, Gnus fetches the @var{N} newest articles, if @var{N} is |
1162 @var{abs(N)} oldest articles. | 1344 negative, Gnus fetches the @var{abs(N)} oldest articles. |
1163 | 1345 |
1164 @item RET | 1346 @item RET |
1165 @kindex RET (Group) | 1347 @kindex RET (Group) |
1166 @findex gnus-group-select-group | 1348 @findex gnus-group-select-group |
1167 Select the current group and switch to the summary buffer | 1349 Select the current group and switch to the summary buffer |
1172 | 1354 |
1173 @item M-RET | 1355 @item M-RET |
1174 @kindex M-RET (Group) | 1356 @kindex M-RET (Group) |
1175 @findex gnus-group-quick-select-group | 1357 @findex gnus-group-quick-select-group |
1176 This does the same as the command above, but tries to do it with the | 1358 This does the same as the command above, but tries to do it with the |
1177 minimum amount off fuzz (@code{gnus-group-quick-select-group}). No | 1359 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No |
1178 scoring/killing will be performed, there will be no highlights and no | 1360 scoring/killing will be performed, there will be no highlights and no |
1179 expunging. This might be useful if you're in a real hurry and have to | 1361 expunging. This might be useful if you're in a real hurry and have to |
1180 enter some humongous group. | 1362 enter some humongous group. If you give a 0 prefix to this command |
1363 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer. | |
1364 This might be useful if you want to toggle threading before entering the | |
1365 group. | |
1181 | 1366 |
1182 @item M-SPACE | 1367 @item M-SPACE |
1183 @kindex M-RET (Group) | 1368 @kindex M-SPACE (Group) |
1184 @findex gnus-group-visible-select-group | 1369 @findex gnus-group-visible-select-group |
1185 This is yet one more command that does the same as the one above, but | 1370 This is yet one more command that does the same as the @kbd{RET} |
1186 this one does it without expunging and hiding dormants | 1371 command, but this one does it without expunging and hiding dormants |
1187 (@code{gnus-group-visible-select-group}). | 1372 (@code{gnus-group-visible-select-group}). |
1188 | 1373 |
1189 @item c | 1374 @item M-C-RET |
1190 @kindex c (Group) | 1375 @kindex M-C-RET (Group) |
1191 @findex gnus-group-catchup-current | 1376 @findex gnus-group-select-group-ephemerally |
1192 @vindex gnus-group-catchup-group-hook | 1377 Finally, this command selects the current group ephemerally without |
1193 Mark all unticked articles in this group as read | 1378 doing any processing of its contents |
1194 (@code{gnus-group-catchup-current}). | 1379 (@code{gnus-group-select-group-ephemerally}). Even threading has been |
1195 @code{gnus-group-catchup-group-hook} is when catching up a group from | 1380 turned off. Everything you do in the group after selecting it in this |
1196 the group buffer. | 1381 manner will have no permanent effects. |
1197 | 1382 |
1198 @item C | |
1199 @kindex C (Group) | |
1200 @findex gnus-group-catchup-current-all | |
1201 Mark all articles in this group, even the ticked ones, as read | |
1202 (@code{gnus-group-catchup-current-all}). | |
1203 @end table | 1383 @end table |
1204 | 1384 |
1205 @vindex gnus-large-newsgroup | 1385 @vindex gnus-large-newsgroup |
1206 The @code{gnus-large-newsgroup} variable says what Gnus should consider | 1386 The @code{gnus-large-newsgroup} variable says what Gnus should consider |
1207 to be a big group. This is 200 by default. If the group has more | 1387 to be a big group. This is 200 by default. If the group has more |
1208 unread articles than this, Gnus will query the user before entering the | 1388 (unread and/or ticked) articles than this, Gnus will query the user |
1209 group. The user can then specify how many articles should be fetched | 1389 before entering the group. The user can then specify how many articles |
1210 from the server. If the user specifies a negative number (@code{-n}), | 1390 should be fetched from the server. If the user specifies a negative |
1211 the @code{n} oldest articles will be fetched. If it is positive, the | 1391 number (@code{-n}), the @code{n} oldest articles will be fetched. If it |
1212 @code{n} articles that have arrived most recently will be fetched. | 1392 is positive, the @code{n} articles that have arrived most recently will |
1393 be fetched. | |
1213 | 1394 |
1214 @vindex gnus-select-group-hook | 1395 @vindex gnus-select-group-hook |
1215 @vindex gnus-auto-select-first | 1396 @vindex gnus-auto-select-first |
1216 @code{gnus-auto-select-first} control whether any articles are selected | 1397 @code{gnus-auto-select-first} control whether any articles are selected |
1217 automatically when entering a group. | 1398 automatically when entering a group with the @kbd{SPACE} command. |
1218 | 1399 |
1219 @table @code | 1400 @table @code |
1220 | 1401 |
1221 @item nil | 1402 @item nil |
1222 Don't select any articles when entering the group. Just display the | 1403 Don't select any articles when entering the group. Just display the |
1236 selected. | 1417 selected. |
1237 | 1418 |
1238 | 1419 |
1239 @node Subscription Commands | 1420 @node Subscription Commands |
1240 @section Subscription Commands | 1421 @section Subscription Commands |
1241 @cindex subscribing | 1422 @cindex subscription |
1242 | 1423 |
1243 @table @kbd | 1424 @table @kbd |
1244 | 1425 |
1245 @item S t | 1426 @item S t |
1246 @itemx u | 1427 @itemx u |
1295 @item S C-k | 1476 @item S C-k |
1296 @kindex S C-k (Group) | 1477 @kindex S C-k (Group) |
1297 @findex gnus-group-kill-level | 1478 @findex gnus-group-kill-level |
1298 Kill all groups on a certain level (@code{gnus-group-kill-level}). | 1479 Kill all groups on a certain level (@code{gnus-group-kill-level}). |
1299 These groups can't be yanked back after killing, so this command should | 1480 These groups can't be yanked back after killing, so this command should |
1300 be used with some caution. The only thing where this command comes in | 1481 be used with some caution. The only time where this command comes in |
1301 really handy is when you have a @file{.newsrc} with lots of unsubscribed | 1482 really handy is when you have a @file{.newsrc} with lots of unsubscribed |
1302 groups that you want to get rid off. @kbd{S C-k} on level @code{7} will | 1483 groups that you want to get rid off. @kbd{S C-k} on level 7 will |
1303 kill off all unsubscribed groups that do not have message numbers in the | 1484 kill off all unsubscribed groups that do not have message numbers in the |
1304 @file{.newsrc} file. | 1485 @file{.newsrc} file. |
1305 | 1486 |
1306 @end table | 1487 @end table |
1307 | 1488 |
1308 Also @pxref{Group Levels}. | 1489 Also @pxref{Group Levels}. |
1490 | |
1491 | |
1492 @node Group Data | |
1493 @section Group Data | |
1494 | |
1495 @table @kbd | |
1496 | |
1497 @item c | |
1498 @kindex c (Group) | |
1499 @findex gnus-group-catchup-current | |
1500 @vindex gnus-group-catchup-group-hook | |
1501 Mark all unticked articles in this group as read | |
1502 (@code{gnus-group-catchup-current}). | |
1503 @code{gnus-group-catchup-group-hook} is called when catching up a group from | |
1504 the group buffer. | |
1505 | |
1506 @item C | |
1507 @kindex C (Group) | |
1508 @findex gnus-group-catchup-current-all | |
1509 Mark all articles in this group, even the ticked ones, as read | |
1510 (@code{gnus-group-catchup-current-all}). | |
1511 | |
1512 @item M-c | |
1513 @kindex M-c (Group) | |
1514 @findex gnus-group-clear-data | |
1515 Clear the data from the current group---nix out marks and the list of | |
1516 read articles (@code{gnus-group-clear-data}). | |
1517 | |
1518 @item M-x gnus-group-clear-data-on-native-groups | |
1519 @kindex M-x gnus-group-clear-data-on-native-groups | |
1520 @findex gnus-group-clear-data-on-native-groups | |
1521 If you have switched from one @sc{nntp} server to another, all your marks | |
1522 and read ranges have become worthless. You can use this command to | |
1523 clear out all data that you have on your native groups. Use with | |
1524 caution. | |
1525 | |
1526 @end table | |
1309 | 1527 |
1310 | 1528 |
1311 @node Group Levels | 1529 @node Group Levels |
1312 @section Group Levels | 1530 @section Group Levels |
1313 @cindex group level | 1531 @cindex group level |
1532 @cindex level | |
1314 | 1533 |
1315 All groups have a level of @dfn{subscribedness}. For instance, if a | 1534 All groups have a level of @dfn{subscribedness}. For instance, if a |
1316 group is on level 2, it is more subscribed than a group on level 5. You | 1535 group is on level 2, it is more subscribed than a group on level 5. You |
1317 can ask Gnus to just list groups on a given level or lower | 1536 can ask Gnus to just list groups on a given level or lower |
1318 (@pxref{Listing Groups}), or to just check for new articles in groups on | 1537 (@pxref{Listing Groups}), or to just check for new articles in groups on |
1345 articles you have read, etc, stored. This distinction between dead and | 1564 articles you have read, etc, stored. This distinction between dead and |
1346 living groups isn't done because it is nice or clever, it is done purely | 1565 living groups isn't done because it is nice or clever, it is done purely |
1347 for reasons of efficiency. | 1566 for reasons of efficiency. |
1348 | 1567 |
1349 It is recommended that you keep all your mail groups (if any) on quite | 1568 It is recommended that you keep all your mail groups (if any) on quite |
1350 low levels (eg. 1 or 2). | 1569 low levels (e.g. 1 or 2). |
1351 | 1570 |
1352 If you want to play with the level variables, you should show some care. | 1571 If you want to play with the level variables, you should show some care. |
1353 Set them once, and don't touch them ever again. Better yet, don't touch | 1572 Set them once, and don't touch them ever again. Better yet, don't touch |
1354 them at all unless you know exactly what you're doing. | 1573 them at all unless you know exactly what you're doing. |
1355 | 1574 |
1387 | 1606 |
1388 @vindex gnus-activate-level | 1607 @vindex gnus-activate-level |
1389 Gnus will normally just activate groups that are on level | 1608 Gnus will normally just activate groups that are on level |
1390 @code{gnus-activate-level} or less. If you don't want to activate | 1609 @code{gnus-activate-level} or less. If you don't want to activate |
1391 unsubscribed groups, for instance, you might set this variable to | 1610 unsubscribed groups, for instance, you might set this variable to |
1392 @code{5}. | 1611 5. The default is 6. |
1393 | 1612 |
1394 | 1613 |
1395 @node Group Score | 1614 @node Group Score |
1396 @section Group Score | 1615 @section Group Score |
1397 @cindex group score | 1616 @cindex group score |
1405 group. You can then sort the group buffer based on this score. | 1624 group. You can then sort the group buffer based on this score. |
1406 Alternatively, you can sort on score and then level. (Taken together, | 1625 Alternatively, you can sort on score and then level. (Taken together, |
1407 the level and the score is called the @dfn{rank} of the group. A group | 1626 the level and the score is called the @dfn{rank} of the group. A group |
1408 that is on level 4 and has a score of 1 has a higher rank than a group | 1627 that is on level 4 and has a score of 1 has a higher rank than a group |
1409 on level 5 that has a score of 300. (The level is the most significant | 1628 on level 5 that has a score of 300. (The level is the most significant |
1410 part and the score is the least significant part.) | 1629 part and the score is the least significant part.)) |
1411 | 1630 |
1412 @findex gnus-summary-bubble-group | 1631 @findex gnus-summary-bubble-group |
1413 If you want groups you read often to get higher scores than groups you | 1632 If you want groups you read often to get higher scores than groups you |
1414 read seldom you can add the @code{gnus-summary-bubble-group} function to | 1633 read seldom you can add the @code{gnus-summary-bubble-group} function to |
1415 the @code{gnus-summary-exit-hook} hook. This will result (after | 1634 the @code{gnus-summary-exit-hook} hook. This will result (after |
1481 the command to be executed. | 1700 the command to be executed. |
1482 | 1701 |
1483 | 1702 |
1484 @node Foreign Groups | 1703 @node Foreign Groups |
1485 @section Foreign Groups | 1704 @section Foreign Groups |
1486 | 1705 @cindex foreign groups |
1487 Here are some group mode commands for making and editing general foreign | 1706 |
1707 Below are some group mode commands for making and editing general foreign | |
1488 groups, as well as commands to ease the creation of a few | 1708 groups, as well as commands to ease the creation of a few |
1489 special-purpose groups: | 1709 special-purpose groups. All these commands insert the newly created |
1710 groups under point---@code{gnus-subscribe-newsgroup-method} is not | |
1711 consulted. | |
1490 | 1712 |
1491 @table @kbd | 1713 @table @kbd |
1492 | 1714 |
1493 @item G m | 1715 @item G m |
1494 @kindex G m (Group) | 1716 @kindex G m (Group) |
1495 @findex gnus-group-make-group | 1717 @findex gnus-group-make-group |
1718 @cindex making groups | |
1496 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you | 1719 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you |
1497 for a name, a method and possibly an @dfn{address}. For an easier way | 1720 for a name, a method and possibly an @dfn{address}. For an easier way |
1498 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}. | 1721 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}. |
1499 | 1722 |
1500 @item G r | 1723 @item G r |
1501 @kindex G r (Group) | 1724 @kindex G r (Group) |
1502 @findex gnus-group-rename-group | 1725 @findex gnus-group-rename-group |
1726 @cindex renaming groups | |
1503 Rename the current group to something else | 1727 Rename the current group to something else |
1504 (@code{gnus-group-rename-group}). This is legal only on some | 1728 (@code{gnus-group-rename-group}). This is legal only on some |
1505 groups---mail groups mostly. This command might very well be quite slow | 1729 groups---mail groups mostly. This command might very well be quite slow |
1506 on some backends. | 1730 on some backends. |
1507 | 1731 |
1732 @item G c | |
1733 @kindex G c (Group) | |
1734 @cindex customizing | |
1735 @findex gnus-group-customize | |
1736 Customize the group parameters (@code{gnus-group-customize}). | |
1737 | |
1508 @item G e | 1738 @item G e |
1509 @kindex G e (Group) | 1739 @kindex G e (Group) |
1510 @findex gnus-group-edit-group-method | 1740 @findex gnus-group-edit-group-method |
1741 @cindex renaming groups | |
1511 Enter a buffer where you can edit the select method of the current | 1742 Enter a buffer where you can edit the select method of the current |
1512 group (@code{gnus-group-edit-group-method}). | 1743 group (@code{gnus-group-edit-group-method}). |
1513 | 1744 |
1514 @item G p | 1745 @item G p |
1515 @kindex G p (Group) | 1746 @kindex G p (Group) |
1524 (@code{gnus-group-edit-group}). | 1755 (@code{gnus-group-edit-group}). |
1525 | 1756 |
1526 @item G d | 1757 @item G d |
1527 @kindex G d (Group) | 1758 @kindex G d (Group) |
1528 @findex gnus-group-make-directory-group | 1759 @findex gnus-group-make-directory-group |
1529 Make a directory group. You will be prompted for a directory name | 1760 @cindex nndir |
1530 (@code{gnus-group-make-directory-group}). | 1761 Make a directory group (@pxref{Directory Groups}). You will be prompted |
1762 for a directory name (@code{gnus-group-make-directory-group}). | |
1531 | 1763 |
1532 @item G h | 1764 @item G h |
1533 @kindex G h (Group) | 1765 @kindex G h (Group) |
1766 @cindex help group | |
1534 @findex gnus-group-make-help-group | 1767 @findex gnus-group-make-help-group |
1535 Make the Gnus help group (@code{gnus-group-make-help-group}). | 1768 Make the Gnus help group (@code{gnus-group-make-help-group}). |
1536 | 1769 |
1537 @item G a | 1770 @item G a |
1538 @kindex G a (Group) | 1771 @kindex G a (Group) |
1772 @cindex (ding) archive | |
1773 @cindex archive group | |
1539 @findex gnus-group-make-archive-group | 1774 @findex gnus-group-make-archive-group |
1540 @vindex gnus-group-archive-directory | 1775 @vindex gnus-group-archive-directory |
1541 @vindex gnus-group-recent-archive-directory | 1776 @vindex gnus-group-recent-archive-directory |
1542 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By | 1777 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By |
1543 default a group pointing to the most recent articles will be created | 1778 default a group pointing to the most recent articles will be created |
1545 group will be created from @code{gnus-group-archive-directory}. | 1780 group will be created from @code{gnus-group-archive-directory}. |
1546 | 1781 |
1547 @item G k | 1782 @item G k |
1548 @kindex G k (Group) | 1783 @kindex G k (Group) |
1549 @findex gnus-group-make-kiboze-group | 1784 @findex gnus-group-make-kiboze-group |
1785 @cindex nnkiboze | |
1550 Make a kiboze group. You will be prompted for a name, for a regexp to | 1786 Make a kiboze group. You will be prompted for a name, for a regexp to |
1551 match groups to be ``included'' in the kiboze group, and a series of | 1787 match groups to be ``included'' in the kiboze group, and a series of |
1552 strings to match on headers (@code{gnus-group-make-kiboze-group}). | 1788 strings to match on headers (@code{gnus-group-make-kiboze-group}). |
1553 @xref{Kibozed Groups} | 1789 @xref{Kibozed Groups}. |
1554 | 1790 |
1555 @item G D | 1791 @item G D |
1556 @kindex G D (Group) | 1792 @kindex G D (Group) |
1557 @findex gnus-group-enter-directory | 1793 @findex gnus-group-enter-directory |
1794 @cindex nneething | |
1558 Read an arbitrary directory as if with were a newsgroup with the | 1795 Read an arbitrary directory as if with were a newsgroup with the |
1559 @code{nneething} backend (@code{gnus-group-enter-directory}). | 1796 @code{nneething} backend (@code{gnus-group-enter-directory}). |
1797 @xref{Anything Groups}. | |
1560 | 1798 |
1561 @item G f | 1799 @item G f |
1562 @kindex G f (Group) | 1800 @kindex G f (Group) |
1563 @findex gnus-group-make-doc-group | 1801 @findex gnus-group-make-doc-group |
1564 @cindex ClariNet Briefs | 1802 @cindex ClariNet Briefs |
1803 @cindex nndoc | |
1565 Make a group based on some file or other | 1804 Make a group based on some file or other |
1566 (@code{gnus-group-make-doc-group}). If you give a prefix to this | 1805 (@code{gnus-group-make-doc-group}). If you give a prefix to this |
1567 command, you will be prompted for a file name and a file type. | 1806 command, you will be prompted for a file name and a file type. |
1568 Currently supported types are @code{babyl}, @code{mbox}, @code{digest}, | 1807 Currently supported types are @code{babyl}, @code{mbox}, @code{digest}, |
1569 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and | 1808 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and |
1570 @code{forward}. If you run this command without a prefix, Gnus will | 1809 @code{forward}. If you run this command without a prefix, Gnus will |
1571 guess at the file type. | 1810 guess at the file type. @xref{Document Groups}. |
1811 | |
1812 @item G w | |
1813 @kindex G w (Group) | |
1814 @findex gnus-group-make-web-group | |
1815 @cindex DejaNews | |
1816 @cindex Alta Vista | |
1817 @cindex InReference | |
1818 @cindex nnweb | |
1819 Make an ephemeral group based on a web search | |
1820 (@code{gnus-group-make-web-group}). If you give a prefix to this | |
1821 command, make a solid group instead. You will be prompted for the | |
1822 search engine type and the search string. Legal search engine types | |
1823 include @code{dejanews}, @code{altavista} and @code{reference}. | |
1824 @xref{Web Searches}. | |
1572 | 1825 |
1573 @item G DEL | 1826 @item G DEL |
1574 @kindex G DEL (Group) | 1827 @kindex G DEL (Group) |
1575 @findex gnus-group-delete-group | 1828 @findex gnus-group-delete-group |
1576 This function will delete the current group | 1829 This function will delete the current group |
1581 | 1834 |
1582 @item G V | 1835 @item G V |
1583 @kindex G V (Group) | 1836 @kindex G V (Group) |
1584 @findex gnus-group-make-empty-virtual | 1837 @findex gnus-group-make-empty-virtual |
1585 Make a new, fresh, empty @code{nnvirtual} group | 1838 Make a new, fresh, empty @code{nnvirtual} group |
1586 (@code{gnus-group-make-empty-virtual}). | 1839 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}. |
1587 | 1840 |
1588 @item G v | 1841 @item G v |
1589 @kindex G v (Group) | 1842 @kindex G v (Group) |
1590 @findex gnus-group-add-to-virtual | 1843 @findex gnus-group-add-to-virtual |
1591 Add the current group to an @code{nnvirtual} group | 1844 Add the current group to an @code{nnvirtual} group |
1594 | 1847 |
1595 @xref{Select Methods} for more information on the various select | 1848 @xref{Select Methods} for more information on the various select |
1596 methods. | 1849 methods. |
1597 | 1850 |
1598 @vindex gnus-activate-foreign-newsgroups | 1851 @vindex gnus-activate-foreign-newsgroups |
1599 If the @code{gnus-activate-foreign-newsgroups} is a positive number, | 1852 If @code{gnus-activate-foreign-newsgroups} is a positive number, |
1600 Gnus will check all foreign groups with this level or lower at startup. | 1853 Gnus will check all foreign groups with this level or lower at startup. |
1601 This might take quite a while, especially if you subscribe to lots of | 1854 This might take quite a while, especially if you subscribe to lots of |
1602 groups from different @sc{nntp} servers. | 1855 groups from different @sc{nntp} servers. |
1603 | 1856 |
1604 | 1857 |
1605 @node Group Parameters | 1858 @node Group Parameters |
1606 @section Group Parameters | 1859 @section Group Parameters |
1607 @cindex group parameters | 1860 @cindex group parameters |
1608 | |
1609 Gnus stores all information on a group in a list that is usually known | |
1610 as the @dfn{group info}. This list has from three to six elements. | |
1611 Here's an example info. | |
1612 | |
1613 @lisp | |
1614 ("nnml:mail.ding" 3 ((1 . 232) 244 (256 . 270)) ((tick 246 249)) | |
1615 (nnml "private") ((to-address . "ding@@ifi.uio.no"))) | |
1616 @end lisp | |
1617 | |
1618 The first element is the @dfn{group name}, as Gnus knows the group, | |
1619 anyway. The second element is the @dfn{subscription level}, which | |
1620 normally is a small integer. The third element is a list of ranges of | |
1621 read articles. The fourth element is a list of lists of article marks | |
1622 of various kinds. The fifth element is the select method (or virtual | |
1623 server, if you like). The sixth element is a list of @dfn{group | |
1624 parameters}, which is what this section is about. | |
1625 | |
1626 Any of the last three elements may be missing if they are not required. | |
1627 In fact, the vast majority of groups will normally only have the first | |
1628 three elements, which saves quite a lot of cons cells. | |
1629 | 1861 |
1630 The group parameters store information local to a particular group: | 1862 The group parameters store information local to a particular group: |
1631 | 1863 |
1632 @table @code | 1864 @table @code |
1633 @item to-address | 1865 @item to-address |
1664 @code{Reply-To} headers that point back to the listserv itself. This is | 1896 @code{Reply-To} headers that point back to the listserv itself. This is |
1665 broken behavior. So there! | 1897 broken behavior. So there! |
1666 | 1898 |
1667 @item to-group | 1899 @item to-group |
1668 @cindex to-group | 1900 @cindex to-group |
1669 If the group parameter list contains an element like @code{(to-group | 1901 Elements like @code{(to-group . "some.group.name")} means that all |
1670 . "some.group.name")}, all posts will be sent to that group. | 1902 posts in that group will be sent to @code{some.group.name}. |
1903 | |
1904 @item newsgroup | |
1905 @cindex newsgroup | |
1906 If this symbol is present in the group parameter list, Gnus will treat | |
1907 all responses as if they were responses to news articles. This can be | |
1908 useful if you have a mail group that's really a mirror of a news group. | |
1909 | |
1910 @item gcc-self | |
1911 @cindex gcc-self | |
1912 If this symbol is present in the group parameter list and set to | |
1913 @code{t}, new composed messages will be @code{Gcc}'d to the current | |
1914 group. If it is present and set to @code{none}, no @code{Gcc:} header | |
1915 will be generated, if it is present and a string, this string will be | |
1916 inserted literally as a @code{gcc} header (this symbol takes precedence over | |
1917 any default @code{Gcc} rules as described later). | |
1671 | 1918 |
1672 @item auto-expire | 1919 @item auto-expire |
1673 @cindex auto-expire | 1920 @cindex auto-expire |
1674 If this symbol is present in the group parameter list, all articles that | 1921 If the group parameter has an element that looks like @code{(auto-expire |
1675 are read will be marked as expirable. For an alternative approach, | 1922 . t)}, , all articles that are read will be marked as expirable. For an |
1676 @pxref{Expiring Mail}. | 1923 alternative approach, @pxref{Expiring Mail}. |
1677 | 1924 |
1678 @item total-expire | 1925 @item total-expire |
1679 @cindex total-expire | 1926 @cindex total-expire |
1680 If this symbol is present, all read articles will be put through the | 1927 If the group parameter has an element that looks like |
1928 @code{(total-expire . t)}, all read articles will be put through the | |
1681 expiry process, even if they are not marked as expirable. Use with | 1929 expiry process, even if they are not marked as expirable. Use with |
1682 caution. | 1930 caution. |
1683 | 1931 |
1684 @item expiry-wait | 1932 @item expiry-wait |
1685 @cindex expiry-wait | 1933 @cindex expiry-wait |
1686 @vindex nnmail-expiry-wait-function | 1934 @vindex nnmail-expiry-wait-function |
1687 If the group parameter has an element that looks like @code{(expiry-wait | 1935 If the group parameter has an element that looks like @code{(expiry-wait |
1689 @code{nnmail-expiry-wait-function} when expiring expirable messages. | 1937 @code{nnmail-expiry-wait-function} when expiring expirable messages. |
1690 The value can either be a number of days (not necessarily an integer) or | 1938 The value can either be a number of days (not necessarily an integer) or |
1691 the symbols @code{never} or @code{immediate}. | 1939 the symbols @code{never} or @code{immediate}. |
1692 | 1940 |
1693 @item score-file | 1941 @item score-file |
1942 @cindex score file group parameter | |
1694 Elements that look like @code{(score-file . "file")} will make | 1943 Elements that look like @code{(score-file . "file")} will make |
1695 @samp{file} into the current score file for the group in question. This | 1944 @file{file} into the current score file for the group in question. This |
1696 means that all score commands you issue will end up in that file. | 1945 means that all score commands you issue will end up in that file. |
1946 | |
1947 @item adapt-file | |
1948 @cindex adapt file group parameter | |
1949 Elements that look like @code{(adapt-file . "file")} will make | |
1950 @file{file} into the current adaptive file for the group in question. | |
1951 All adaptive score entries will be put into this file. | |
1697 | 1952 |
1698 @item admin-address | 1953 @item admin-address |
1699 When unsubscribing to a mailing list you should never send the | 1954 When unsubscribing to a mailing list you should never send the |
1700 unsubscription notice to the mailing list itself. Instead, you'd send | 1955 unsubscription notice to the mailing list itself. Instead, you'd send |
1701 messages to the administrative address. This parameter allows you to | 1956 messages to the administrative address. This parameter allows you to |
1702 put the admin address somewhere convenient. | 1957 put the admin address somewhere convenient. |
1703 | 1958 |
1959 @item display | |
1960 Elements that look like @code{(display . MODE)} says which articles to | |
1961 display on entering the group. Legal values are: | |
1962 | |
1963 @table @code | |
1964 @item all | |
1965 Display all articles, both read and unread. | |
1966 | |
1967 @item default | |
1968 Display the default visible articles, which normally includes unread and | |
1969 ticked articles. | |
1970 @end table | |
1971 | |
1704 @item comment | 1972 @item comment |
1705 This parameter allows you to enter a arbitrary comment on the group. | 1973 Elements that look like @code{(comment . "This is a comment")} |
1974 are arbitrary comments on the group. They are currently ignored by | |
1975 Gnus, but provide a place for you to store information on particular | |
1976 groups. | |
1706 | 1977 |
1707 @item @var{(variable form)} | 1978 @item @var{(variable form)} |
1708 You can use the group parameters to set variables local to the group you | 1979 You can use the group parameters to set variables local to the group you |
1709 are entering. Say you want to turn threading off in | 1980 are entering. If you want to turn threading off in @samp{news.answers}, |
1710 @samp{news.answers}. You'd then put @code{(gnus-show-threads nil)} in | 1981 you could put @code{(gnus-show-threads nil)} in the group parameters of |
1711 the group parameters of that group. @code{gnus-show-threads} will be | 1982 that group. @code{gnus-show-threads} will be made into a local variable |
1712 made into a local variable in the summary buffer you enter, and the form | 1983 in the summary buffer you enter, and the form @code{nil} will be |
1713 @code{nil} will be @code{eval}ed there. | 1984 @code{eval}ed there. |
1714 | 1985 |
1715 This can also be used as a group-specific hook function, if you'd like. | 1986 This can also be used as a group-specific hook function, if you'd like. |
1716 If you want to hear a beep when you enter the group | 1987 If you want to hear a beep when you enter a group, you could put |
1717 @samp{alt.binaries.pictures.furniture}, you could put something like | 1988 something like @code{(dummy-variable (ding))} in the parameters of that |
1718 @code{(dummy-variable (ding))} in the parameters of that group. | 1989 group. @code{dummy-variable} will be set to the result of the |
1719 @code{dummy-variable} will be set to the result of the @code{(ding)} | 1990 @code{(ding)} form, but who cares? |
1720 form, but who cares? | 1991 |
1721 | 1992 @end table |
1722 @end table | 1993 |
1723 | 1994 Use the @kbd{G p} command to edit group parameters of a group. |
1724 If you want to change the group info you can use the @kbd{G E} command | 1995 |
1725 to enter a buffer where you can edit it. | 1996 Also @pxref{Topic Parameters}. |
1726 | |
1727 You usually don't want to edit the entire group info, so you'd be better | |
1728 off using the @kbd{G p} command to just edit the group parameters. | |
1729 | 1997 |
1730 | 1998 |
1731 @node Listing Groups | 1999 @node Listing Groups |
1732 @section Listing Groups | 2000 @section Listing Groups |
1733 @cindex group listing | 2001 @cindex group listing |
1742 @kindex l (Group) | 2010 @kindex l (Group) |
1743 @findex gnus-group-list-groups | 2011 @findex gnus-group-list-groups |
1744 List all groups that have unread articles | 2012 List all groups that have unread articles |
1745 (@code{gnus-group-list-groups}). If the numeric prefix is used, this | 2013 (@code{gnus-group-list-groups}). If the numeric prefix is used, this |
1746 command will list only groups of level ARG and lower. By default, it | 2014 command will list only groups of level ARG and lower. By default, it |
1747 only lists groups of level five or lower (i.e., just subscribed groups). | 2015 only lists groups of level five (i. e., |
2016 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed | |
2017 groups). | |
1748 | 2018 |
1749 @item L | 2019 @item L |
1750 @itemx A u | 2020 @itemx A u |
1751 @kindex A u (Group) | 2021 @kindex A u (Group) |
1752 @kindex L (Group) | 2022 @kindex L (Group) |
1792 @kindex A A (Group) | 2062 @kindex A A (Group) |
1793 @findex gnus-group-list-active | 2063 @findex gnus-group-list-active |
1794 List absolutely all groups that are in the active file(s) of the | 2064 List absolutely all groups that are in the active file(s) of the |
1795 server(s) you are connected to (@code{gnus-group-list-active}). This | 2065 server(s) you are connected to (@code{gnus-group-list-active}). This |
1796 might very well take quite a while. It might actually be a better idea | 2066 might very well take quite a while. It might actually be a better idea |
1797 to do a @kbd{A m} to list all matching, and just give @samp{.} as the | 2067 to do a @kbd{A M} to list all matching, and just give @samp{.} as the |
1798 thing to match on. | 2068 thing to match on. Also note that this command may list group that |
2069 don't exist (yet)---these will be listed as if they are killed groups. | |
2070 Take the output with some grains of salt. | |
1799 | 2071 |
1800 @item A a | 2072 @item A a |
1801 @kindex A a (Group) | 2073 @kindex A a (Group) |
1802 @findex gnus-group-apropos | 2074 @findex gnus-group-apropos |
1803 List all groups that have names that match a regexp | 2075 List all groups that have names that match a regexp |
1841 | 2113 |
1842 @item gnus-group-sort-by-alphabet | 2114 @item gnus-group-sort-by-alphabet |
1843 @findex gnus-group-sort-by-alphabet | 2115 @findex gnus-group-sort-by-alphabet |
1844 Sort the group names alphabetically. This is the default. | 2116 Sort the group names alphabetically. This is the default. |
1845 | 2117 |
2118 @item gnus-group-sort-by-real-name | |
2119 @findex gnus-group-sort-by-real-name | |
2120 Sort the group alphabetically on the real (unprefixed) group names. | |
2121 | |
1846 @item gnus-group-sort-by-level | 2122 @item gnus-group-sort-by-level |
1847 @findex gnus-group-sort-by-level | 2123 @findex gnus-group-sort-by-level |
1848 Sort by group level. | 2124 Sort by group level. |
1849 | 2125 |
1850 @item gnus-group-sort-by-score | 2126 @item gnus-group-sort-by-score |
1860 @findex gnus-group-sort-by-unread | 2136 @findex gnus-group-sort-by-unread |
1861 Sort by number of unread articles. | 2137 Sort by number of unread articles. |
1862 | 2138 |
1863 @item gnus-group-sort-by-method | 2139 @item gnus-group-sort-by-method |
1864 @findex gnus-group-sort-by-method | 2140 @findex gnus-group-sort-by-method |
1865 Sort by alphabetically on the select method. | 2141 Sort alphabetically on the select method. |
1866 | 2142 |
1867 | 2143 |
1868 @end table | 2144 @end table |
1869 | 2145 |
1870 @code{gnus-group-sort-function} can also be a list of sorting | 2146 @code{gnus-group-sort-function} can also be a list of sorting |
1901 (@code{gnus-group-sort-groups-by-score}). | 2177 (@code{gnus-group-sort-groups-by-score}). |
1902 | 2178 |
1903 @item G S r | 2179 @item G S r |
1904 @kindex G S r (Group) | 2180 @kindex G S r (Group) |
1905 @findex gnus-group-sort-groups-by-rank | 2181 @findex gnus-group-sort-groups-by-rank |
1906 Sort the group buffer by group level | 2182 Sort the group buffer by group rank |
1907 (@code{gnus-group-sort-groups-by-rank}). | 2183 (@code{gnus-group-sort-groups-by-rank}). |
1908 | 2184 |
1909 @item G S m | 2185 @item G S m |
1910 @kindex G S m (Group) | 2186 @kindex G S m (Group) |
1911 @findex gnus-group-sort-groups-by-method | 2187 @findex gnus-group-sort-groups-by-method |
1913 (@code{gnus-group-sort-groups-by-method}). | 2189 (@code{gnus-group-sort-groups-by-method}). |
1914 | 2190 |
1915 @end table | 2191 @end table |
1916 | 2192 |
1917 When given a prefix, all these commands will sort in reverse order. | 2193 When given a prefix, all these commands will sort in reverse order. |
2194 | |
2195 You can also sort a subset of the groups: | |
2196 | |
2197 @table @kbd | |
2198 @item G P a | |
2199 @kindex G P a (Group) | |
2200 @findex gnus-group-sort-selected-groups-by-alphabet | |
2201 Sort the process/prefixed groups in the group buffer alphabetically by | |
2202 group name (@code{gnus-group-sort-selected-groups-by-alphabet}). | |
2203 | |
2204 @item G P u | |
2205 @kindex G P u (Group) | |
2206 @findex gnus-group-sort-selected-groups-by-unread | |
2207 Sort the process/prefixed groups in the group buffer by the number of | |
2208 unread articles (@code{gnus-group-sort-selected-groups-by-unread}). | |
2209 | |
2210 @item G P l | |
2211 @kindex G P l (Group) | |
2212 @findex gnus-group-sort-selected-groups-by-level | |
2213 Sort the process/prefixed groups in the group buffer by group level | |
2214 (@code{gnus-group-sort-selected-groups-by-level}). | |
2215 | |
2216 @item G P v | |
2217 @kindex G P v (Group) | |
2218 @findex gnus-group-sort-selected-groups-by-score | |
2219 Sort the process/prefixed groups in the group buffer by group score | |
2220 (@code{gnus-group-sort-selected-groups-by-score}). | |
2221 | |
2222 @item G P r | |
2223 @kindex G P r (Group) | |
2224 @findex gnus-group-sort-selected-groups-by-rank | |
2225 Sort the process/prefixed groups in the group buffer by group rank | |
2226 (@code{gnus-group-sort-selected-groups-by-rank}). | |
2227 | |
2228 @item G P m | |
2229 @kindex G P m (Group) | |
2230 @findex gnus-group-sort-selected-groups-by-method | |
2231 Sort the process/prefixed groups in the group buffer alphabetically by | |
2232 backend name (@code{gnus-group-sort-selected-groups-by-method}). | |
2233 | |
2234 @end table | |
2235 | |
1918 | 2236 |
1919 | 2237 |
1920 @node Group Maintenance | 2238 @node Group Maintenance |
1921 @section Group Maintenance | 2239 @section Group Maintenance |
1922 @cindex bogus groups | 2240 @cindex bogus groups |
1964 (@code{gnus-group-browse-foreign-server}). | 2282 (@code{gnus-group-browse-foreign-server}). |
1965 @end table | 2283 @end table |
1966 | 2284 |
1967 @findex gnus-browse-mode | 2285 @findex gnus-browse-mode |
1968 A new buffer with a list of available groups will appear. This buffer | 2286 A new buffer with a list of available groups will appear. This buffer |
1969 will be use the @code{gnus-browse-mode}. This buffer looks a bit | 2287 will be use the @code{gnus-browse-mode}. This buffer looks a bit (well, |
1970 (well, a lot) like a normal group buffer, but with one major difference | 2288 a lot) like a normal group buffer. |
1971 - you can't enter any of the groups. If you want to read any of the | |
1972 news available on that server, you have to subscribe to the groups you | |
1973 think may be interesting, and then you have to exit this buffer. The | |
1974 new groups will be added to the group buffer, and then you can read them | |
1975 as you would any other group. | |
1976 | |
1977 Future versions of Gnus may possibly permit reading groups straight from | |
1978 the browse buffer. | |
1979 | 2289 |
1980 Here's a list of keystrokes available in the browse mode: | 2290 Here's a list of keystrokes available in the browse mode: |
1981 | 2291 |
1982 @table @kbd | 2292 @table @kbd |
1983 @item n | 2293 @item n |
2042 Quit Gnus (@code{gnus-group-exit}). | 2352 Quit Gnus (@code{gnus-group-exit}). |
2043 | 2353 |
2044 @item Q | 2354 @item Q |
2045 @kindex Q (Group) | 2355 @kindex Q (Group) |
2046 @findex gnus-group-quit | 2356 @findex gnus-group-quit |
2047 Quit Gnus without saving any startup files (@code{gnus-group-quit}). | 2357 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}). |
2358 The dribble file will be saved, though (@pxref{Auto Save}). | |
2048 @end table | 2359 @end table |
2049 | 2360 |
2050 @vindex gnus-exit-gnus-hook | 2361 @vindex gnus-exit-gnus-hook |
2051 @vindex gnus-suspend-gnus-hook | 2362 @vindex gnus-suspend-gnus-hook |
2052 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and | 2363 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and |
2061 trying to customize meta-variables. | 2372 trying to customize meta-variables. |
2062 | 2373 |
2063 Note: | 2374 Note: |
2064 | 2375 |
2065 @quotation | 2376 @quotation |
2066 Miss Lisa Cannifax, while sitting in English class, feels her feet go | 2377 Miss Lisa Cannifax, while sitting in English class, felt her feet go |
2067 numbly heavy and herself fall into a hazy trance as the boy sitting | 2378 numbly heavy and herself fall into a hazy trance as the boy sitting |
2068 behind her drew repeated lines with his pencil across the back of her | 2379 behind her drew repeated lines with his pencil across the back of her |
2069 plastic chair. | 2380 plastic chair. |
2070 @end quotation | 2381 @end quotation |
2071 | 2382 |
2079 here, your sex groups over there, and the rest (what, two groups or so?) | 2390 here, your sex groups over there, and the rest (what, two groups or so?) |
2080 you put in some misc section that you never bother with anyway. You can | 2391 you put in some misc section that you never bother with anyway. You can |
2081 even group the Emacs sex groups as a sub-topic to either the Emacs | 2392 even group the Emacs sex groups as a sub-topic to either the Emacs |
2082 groups or the sex groups---or both! Go wild! | 2393 groups or the sex groups---or both! Go wild! |
2083 | 2394 |
2395 Here's an example: | |
2396 | |
2397 @example | |
2398 Gnus | |
2399 Emacs -- I wuw it! | |
2400 3: comp.emacs | |
2401 2: alt.religion.emacs | |
2402 Naughty Emacs | |
2403 452: alt.sex.emacs | |
2404 0: comp.talk.emacs.recovery | |
2405 Misc | |
2406 8: comp.binaries.fractals | |
2407 13: comp.sources.unix | |
2408 @end example | |
2409 | |
2084 @findex gnus-topic-mode | 2410 @findex gnus-topic-mode |
2085 @kindex t (Group) | 2411 @kindex t (Group) |
2086 To get this @emph{fab} functionality you simply turn on (ooh!) the | 2412 To get this @emph{fab} functionality you simply turn on (ooh!) the |
2087 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This | 2413 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This |
2088 is a toggling command.) | 2414 is a toggling command.) |
2101 @end lisp | 2427 @end lisp |
2102 | 2428 |
2103 @menu | 2429 @menu |
2104 * Topic Variables:: How to customize the topics the Lisp Way. | 2430 * Topic Variables:: How to customize the topics the Lisp Way. |
2105 * Topic Commands:: Interactive E-Z commands. | 2431 * Topic Commands:: Interactive E-Z commands. |
2432 * Topic Sorting:: Sorting each topic individually. | |
2106 * Topic Topology:: A map of the world. | 2433 * Topic Topology:: A map of the world. |
2434 * Topic Parameters:: Parameters that apply to all groups in a topic. | |
2107 @end menu | 2435 @end menu |
2108 | 2436 |
2109 | 2437 |
2110 @node Topic Variables | 2438 @node Topic Variables |
2111 @subsection Topic Variables | 2439 @subsection Topic Variables |
2114 Now, if you select a topic, if will fold/unfold that topic, which is | 2442 Now, if you select a topic, if will fold/unfold that topic, which is |
2115 really neat, I think. | 2443 really neat, I think. |
2116 | 2444 |
2117 @vindex gnus-topic-line-format | 2445 @vindex gnus-topic-line-format |
2118 The topic lines themselves are created according to the | 2446 The topic lines themselves are created according to the |
2119 @code{gnus-topic-line-format} variable. @xref{Formatting Variables}. | 2447 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}). |
2120 Elements allowed are: | 2448 Legal elements are: |
2121 | 2449 |
2122 @table @samp | 2450 @table @samp |
2123 @item i | 2451 @item i |
2124 Indentation. | 2452 Indentation. |
2125 @item n | 2453 @item n |
2137 @end table | 2465 @end table |
2138 | 2466 |
2139 @vindex gnus-topic-indent-level | 2467 @vindex gnus-topic-indent-level |
2140 Each sub-topic (and the groups in the sub-topics) will be indented with | 2468 Each sub-topic (and the groups in the sub-topics) will be indented with |
2141 @code{gnus-topic-indent-level} times the topic level number of spaces. | 2469 @code{gnus-topic-indent-level} times the topic level number of spaces. |
2142 The default is @code{2}. | 2470 The default is 2. |
2143 | 2471 |
2144 @vindex gnus-topic-mode-hook | 2472 @vindex gnus-topic-mode-hook |
2145 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. | 2473 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. |
2474 | |
2475 @vindex gnus-topic-display-empty-topics | |
2476 The @code{gnus-topic-display-empty-topics} says whether to display even | |
2477 topics that have no unread articles in them. The default is @code{t}. | |
2146 | 2478 |
2147 | 2479 |
2148 @node Topic Commands | 2480 @node Topic Commands |
2149 @subsection Topic Commands | 2481 @subsection Topic Commands |
2150 @cindex topic commands | 2482 @cindex topic commands |
2154 definitions slightly. | 2486 definitions slightly. |
2155 | 2487 |
2156 @table @kbd | 2488 @table @kbd |
2157 | 2489 |
2158 @item T n | 2490 @item T n |
2159 @kindex T n (Group) | 2491 @kindex T n (Topic) |
2160 @findex gnus-topic-create-topic | 2492 @findex gnus-topic-create-topic |
2161 Prompt for a new topic name and create it | 2493 Prompt for a new topic name and create it |
2162 (@code{gnus-topic-create-topic}). | 2494 (@code{gnus-topic-create-topic}). |
2163 | 2495 |
2164 @item T m | 2496 @item T m |
2165 @kindex T m (Group) | 2497 @kindex T m (Topic) |
2166 @findex gnus-topic-move-group | 2498 @findex gnus-topic-move-group |
2167 Move the current group to some other topic | 2499 Move the current group to some other topic |
2168 (@code{gnus-topic-move-group}). This command understands the | 2500 (@code{gnus-topic-move-group}). This command uses the process/prefix |
2169 process/prefix convention (@pxref{Process/Prefix}). | 2501 convention (@pxref{Process/Prefix}). |
2170 | 2502 |
2171 @item T c | 2503 @item T c |
2172 @kindex T c (Group) | 2504 @kindex T c (Topic) |
2173 @findex gnus-topic-copy-group | 2505 @findex gnus-topic-copy-group |
2174 Copy the current group to some other topic | 2506 Copy the current group to some other topic |
2175 (@code{gnus-topic-copy-group}). This command understands the | 2507 (@code{gnus-topic-copy-group}). This command uses the process/prefix |
2176 process/prefix convention (@pxref{Process/Prefix}). | 2508 convention (@pxref{Process/Prefix}). |
2177 | 2509 |
2178 @item T D | 2510 @item T D |
2179 @kindex T D (Group) | 2511 @kindex T D (Topic) |
2180 @findex gnus-topic-remove-group | 2512 @findex gnus-topic-remove-group |
2181 Remove a group from the current topic (@code{gnus-topic-remove-group}). | 2513 Remove a group from the current topic (@code{gnus-topic-remove-group}). |
2182 This command understands the process/prefix convention | 2514 This command uses the process/prefix convention |
2183 (@pxref{Process/Prefix}). | 2515 (@pxref{Process/Prefix}). |
2184 | 2516 |
2185 @item T M | 2517 @item T M |
2186 @kindex T M (Group) | 2518 @kindex T M (Topic) |
2187 @findex gnus-topic-move-matching | 2519 @findex gnus-topic-move-matching |
2188 Move all groups that match some regular expression to a topic | 2520 Move all groups that match some regular expression to a topic |
2189 (@code{gnus-topic-move-matching}). | 2521 (@code{gnus-topic-move-matching}). |
2190 | 2522 |
2191 @item T C | 2523 @item T C |
2192 @kindex T C (Group) | 2524 @kindex T C (Topic) |
2193 @findex gnus-topic-copy-matching | 2525 @findex gnus-topic-copy-matching |
2194 Copy all groups that match some regular expression to a topic | 2526 Copy all groups that match some regular expression to a topic |
2195 (@code{gnus-topic-copy-matching}). | 2527 (@code{gnus-topic-copy-matching}). |
2196 | 2528 |
2197 @item T # | 2529 @item T # |
2198 @kindex T # (Group) | 2530 @kindex T # (Topic) |
2199 @findex gnus-topic-mark-topic | 2531 @findex gnus-topic-mark-topic |
2200 Mark all groups in the current topic with the process mark | 2532 Mark all groups in the current topic with the process mark |
2201 (@code{gnus-topic-mark-topic}). | 2533 (@code{gnus-topic-mark-topic}). |
2202 | 2534 |
2203 @item T M-# | 2535 @item T M-# |
2204 @kindex T M-# (Group) | 2536 @kindex T M-# (Topic) |
2205 @findex gnus-topic-unmark-topic | 2537 @findex gnus-topic-unmark-topic |
2206 Remove the process mark from all groups in the current topic | 2538 Remove the process mark from all groups in the current topic |
2207 (@code{gnus-topic-unmark-topic}). | 2539 (@code{gnus-topic-unmark-topic}). |
2208 | 2540 |
2209 @item RET | 2541 @item RET |
2210 @kindex RET (Group) | 2542 @kindex RET (Topic) |
2211 @findex gnus-topic-select-group | 2543 @findex gnus-topic-select-group |
2212 @itemx SPACE | 2544 @itemx SPACE |
2213 Either select a group or fold a topic (@code{gnus-topic-select-group}). | 2545 Either select a group or fold a topic (@code{gnus-topic-select-group}). |
2214 When you perform this command on a group, you'll enter the group, as | 2546 When you perform this command on a group, you'll enter the group, as |
2215 usual. When done on a topic line, the topic will be folded (if it was | 2547 usual. When done on a topic line, the topic will be folded (if it was |
2216 visible) or unfolded (if it was folded already). So it's basically a | 2548 visible) or unfolded (if it was folded already). So it's basically a |
2217 toggling command on topics. In addition, if you give a numerical | 2549 toggling command on topics. In addition, if you give a numerical |
2218 prefix, group on that level (and lower) will be displayed. | 2550 prefix, group on that level (and lower) will be displayed. |
2219 | 2551 |
2220 @item T TAB | 2552 @item T TAB |
2221 @kindex T TAB (Group) | 2553 @kindex T TAB (Topic) |
2222 @findex gnus-topic-indent | 2554 @findex gnus-topic-indent |
2223 ``Indent'' the current topic so that it becomes a sub-topic of the | 2555 ``Indent'' the current topic so that it becomes a sub-topic of the |
2224 previous topic (@code{gnus-topic-indent}). If given a prefix, | 2556 previous topic (@code{gnus-topic-indent}). If given a prefix, |
2225 ``un-indent'' the topic instead. | 2557 ``un-indent'' the topic instead. |
2226 | 2558 |
2227 @item C-k | 2559 @item C-k |
2228 @kindex C-k (Group) | 2560 @kindex C-k (Topic) |
2229 @findex gnus-topic-kill-group | 2561 @findex gnus-topic-kill-group |
2230 Kill a group or topic (@code{gnus-topic-kill-group}). | 2562 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the |
2563 topic will be removed along with the topic. | |
2231 | 2564 |
2232 @item C-y | 2565 @item C-y |
2233 @kindex C-y (Group) | 2566 @kindex C-y (Topic) |
2234 @findex gnus-topic-yank-group | 2567 @findex gnus-topic-yank-group |
2235 Yank the previously killed group or topic (@code{gnus-topic-yank-group}). | 2568 Yank the previously killed group or topic |
2236 Note that all topics will be yanked before all groups. | 2569 (@code{gnus-topic-yank-group}). Note that all topics will be yanked |
2570 before all groups. | |
2237 | 2571 |
2238 @item T r | 2572 @item T r |
2239 @kindex T r (Group) | 2573 @kindex T r (Topic) |
2240 @findex gnus-topic-rename | 2574 @findex gnus-topic-rename |
2241 Rename a topic (@code{gnus-topic-rename}). | 2575 Rename a topic (@code{gnus-topic-rename}). |
2242 | 2576 |
2243 @item T DEL | 2577 @item T DEL |
2244 @kindex T DEL (Group) | 2578 @kindex T DEL (Topic) |
2245 @findex gnus-topic-delete | 2579 @findex gnus-topic-delete |
2246 Delete an empty topic (@code{gnus-topic-delete}). | 2580 Delete an empty topic (@code{gnus-topic-delete}). |
2247 | 2581 |
2248 @item A T | 2582 @item A T |
2249 @kindex A T (Group) | 2583 @kindex A T (Topic) |
2250 @findex gnus-topic-list-active | 2584 @findex gnus-topic-list-active |
2251 List all groups that Gnus knows about in a topics-ified way | 2585 List all groups that Gnus knows about in a topics-ified way |
2252 (@code{gnus-topic-list-active}). | 2586 (@code{gnus-topic-list-active}). |
2253 | 2587 |
2254 @end table | 2588 @item G p |
2589 @kindex G p (Topic) | |
2590 @findex gnus-topic-edit-parameters | |
2591 @cindex group parameters | |
2592 @cindex topic parameters | |
2593 @cindex parameters | |
2594 Edit the topic parameters (@code{gnus-topic-edit-parameters}). | |
2595 @xref{Topic Parameters}. | |
2596 | |
2597 @end table | |
2598 | |
2599 | |
2600 @node Topic Sorting | |
2601 @subsection Topic Sorting | |
2602 @cindex topic sorting | |
2603 | |
2604 You can sort the groups in each topic individually with the following | |
2605 commands: | |
2606 | |
2607 | |
2608 @table @kbd | |
2609 @item T S a | |
2610 @kindex T S a (Topic) | |
2611 @findex gnus-topic-sort-groups-by-alphabet | |
2612 Sort the current topic alphabetically by group name | |
2613 (@code{gnus-topic-sort-groups-by-alphabet}). | |
2614 | |
2615 @item T S u | |
2616 @kindex T S u (Topic) | |
2617 @findex gnus-topic-sort-groups-by-unread | |
2618 Sort the current topic by the number of unread articles | |
2619 (@code{gnus-topic-sort-groups-by-unread}). | |
2620 | |
2621 @item T S l | |
2622 @kindex T S l (Topic) | |
2623 @findex gnus-topic-sort-groups-by-level | |
2624 Sort the current topic by group level | |
2625 (@code{gnus-topic-sort-groups-by-level}). | |
2626 | |
2627 @item T S v | |
2628 @kindex T S v (Topic) | |
2629 @findex gnus-topic-sort-groups-by-score | |
2630 Sort the current topic by group score | |
2631 (@code{gnus-topic-sort-groups-by-score}). | |
2632 | |
2633 @item T S r | |
2634 @kindex T S r (Topic) | |
2635 @findex gnus-topic-sort-groups-by-rank | |
2636 Sort the current topic by group rank | |
2637 (@code{gnus-topic-sort-groups-by-rank}). | |
2638 | |
2639 @item T S m | |
2640 @kindex T S m (Topic) | |
2641 @findex gnus-topic-sort-groups-by-method | |
2642 Sort the current topic alphabetically by backend name | |
2643 (@code{gnus-topic-sort-groups-by-method}). | |
2644 | |
2645 @end table | |
2646 | |
2647 @xref{Sorting Groups} for more information about group sorting. | |
2255 | 2648 |
2256 | 2649 |
2257 @node Topic Topology | 2650 @node Topic Topology |
2258 @subsection Topic Topology | 2651 @subsection Topic Topology |
2259 @cindex topic topology | 2652 @cindex topic topology |
2262 So, let's have a look at an example group buffer: | 2655 So, let's have a look at an example group buffer: |
2263 | 2656 |
2264 @example | 2657 @example |
2265 Gnus | 2658 Gnus |
2266 Emacs -- I wuw it! | 2659 Emacs -- I wuw it! |
2267 3: comp.emacs | 2660 3: comp.emacs |
2268 2: alt.religion.emacs | 2661 2: alt.religion.emacs |
2269 Naughty Emacs | 2662 Naughty Emacs |
2270 452: alt.sex.emacs | 2663 452: alt.sex.emacs |
2271 0: comp.talk.emacs.recovery | 2664 0: comp.talk.emacs.recovery |
2272 Misc | 2665 Misc |
2273 8: comp.binaries.fractals | 2666 8: comp.binaries.fractals |
2274 13: comp.sources.unix | 2667 13: comp.sources.unix |
2275 @end example | 2668 @end example |
2276 | 2669 |
2277 So, here we have one top-level topic, two topics under that, and one | 2670 So, here we have one top-level topic (@samp{Gnus}), two topics under |
2278 sub-topic under one of the sub-topics. (There is always just one (1) | 2671 that, and one sub-topic under one of the sub-topics. (There is always |
2279 top-level topic). This topology can be expressed as follows: | 2672 just one (1) top-level topic). This topology can be expressed as |
2673 follows: | |
2280 | 2674 |
2281 @lisp | 2675 @lisp |
2282 (("Gnus" visible) | 2676 (("Gnus" visible) |
2283 (("Emacs -- I wuw it!" visible) | 2677 (("Emacs -- I wuw it!" visible) |
2284 (("Naughty Emacs" visible))) | 2678 (("Naughty Emacs" visible))) |
2295 This topology shows what topics are sub-topics of what topics (right), | 2689 This topology shows what topics are sub-topics of what topics (right), |
2296 and which topics are visible. Two settings are currently | 2690 and which topics are visible. Two settings are currently |
2297 allowed---@code{visible} and @code{invisible}. | 2691 allowed---@code{visible} and @code{invisible}. |
2298 | 2692 |
2299 | 2693 |
2694 @node Topic Parameters | |
2695 @subsection Topic Parameters | |
2696 @cindex topic parameters | |
2697 | |
2698 All groups in a topic will inherit group parameters from the parent (and | |
2699 ancestor) topic parameters. All legal group parameters are legal topic | |
2700 parameters (@pxref{Group Parameters}). | |
2701 | |
2702 Group parameters (of course) override topic parameters, and topic | |
2703 parameters in sub-topics override topic parameters in super-topics. You | |
2704 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a | |
2705 verb, although you may feel free to disagree with me here.) | |
2706 | |
2707 @example | |
2708 Gnus | |
2709 Emacs | |
2710 3: comp.emacs | |
2711 2: alt.religion.emacs | |
2712 452: alt.sex.emacs | |
2713 Relief | |
2714 452: alt.sex.emacs | |
2715 0: comp.talk.emacs.recovery | |
2716 Misc | |
2717 8: comp.binaries.fractals | |
2718 13: comp.sources.unix | |
2719 452: alt.sex.emacs | |
2720 @end example | |
2721 | |
2722 The @samp{Emacs} topic has the topic parameter @code{(score-file | |
2723 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter | |
2724 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the | |
2725 topic parameter @code{(score-file . "emacs.SCORE")}. In addition, | |
2726 @samp{alt.religion.emacs} has the group parameter @code{(score-file | |
2727 . "religion.SCORE")}. | |
2728 | |
2729 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you | |
2730 will get the @file{relief.SCORE} home score file. If you enter the same | |
2731 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home | |
2732 score file. If you enter the group @samp{alt.religion.emacs}, you'll | |
2733 get the @file{religion.SCORE} home score file. | |
2734 | |
2735 This seems rather simple and self-evident, doesn't it? Well, yes. But | |
2736 there are some problems, especially with the @code{total-expiry} | |
2737 parameter. Say you have a mail group in two topics; one with | |
2738 @code{total-expiry} and one without. What happens when you do @kbd{M-x | |
2739 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one | |
2740 of these topics you mean to expire articles from, so anything may | |
2741 happen. In fact, I hereby declare that it is @dfn{undefined} what | |
2742 happens. You just have to be careful if you do stuff like that. | |
2743 | |
2744 | |
2300 @node Misc Group Stuff | 2745 @node Misc Group Stuff |
2301 @section Misc Group Stuff | 2746 @section Misc Group Stuff |
2302 | 2747 |
2303 @menu | 2748 @menu |
2304 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived. | 2749 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived. |
2305 * Group Information:: Information and help on groups and Gnus. | 2750 * Group Information:: Information and help on groups and Gnus. |
2751 * Group Timestamp:: Making Gnus keep track of when you last read a group. | |
2306 * File Commands:: Reading and writing the Gnus files. | 2752 * File Commands:: Reading and writing the Gnus files. |
2307 @end menu | 2753 @end menu |
2308 | 2754 |
2309 @table @kbd | 2755 @table @kbd |
2310 | 2756 |
2311 @item ^ | 2757 @item ^ |
2312 @kindex ^ (Group) | 2758 @kindex ^ (Group) |
2313 @findex gnus-group-enter-server-mode | 2759 @findex gnus-group-enter-server-mode |
2314 Enter the server buffer (@code{gnus-group-enter-server-mode}). @xref{The | 2760 Enter the server buffer (@code{gnus-group-enter-server-mode}). |
2315 Server Buffer}. | 2761 @xref{The Server Buffer}. |
2316 | 2762 |
2317 @item a | 2763 @item a |
2318 @kindex a (Group) | 2764 @kindex a (Group) |
2319 @findex gnus-group-post-news | 2765 @findex gnus-group-post-news |
2320 Post an article to a group (@code{gnus-group-post-news}). The current | 2766 Post an article to a group (@code{gnus-group-post-news}). The current |
2369 @item M-g | 2815 @item M-g |
2370 @kindex M-g (Group) | 2816 @kindex M-g (Group) |
2371 @findex gnus-group-get-new-news-this-group | 2817 @findex gnus-group-get-new-news-this-group |
2372 @vindex gnus-goto-next-group-when-activating | 2818 @vindex gnus-goto-next-group-when-activating |
2373 Check whether new articles have arrived in the current group | 2819 Check whether new articles have arrived in the current group |
2374 (@code{gnus-group-get-new-news-this-group}). The | 2820 (@code{gnus-group-get-new-news-this-group}). |
2375 @code{gnus-goto-next-group-when-activating} variable controls whether | 2821 @code{gnus-goto-next-group-when-activating} says whether this command is |
2376 this command is to move point to the next group or not. It is @code{t} | 2822 to move point to the next group or not. It is @code{t} by default. |
2377 by default. | |
2378 | 2823 |
2379 @findex gnus-activate-all-groups | 2824 @findex gnus-activate-all-groups |
2380 @cindex activating groups | 2825 @cindex activating groups |
2381 @item C-c M-g | 2826 @item C-c M-g |
2382 @kindex C-c M-g (Group) | 2827 @kindex C-c M-g (Group) |
2384 | 2829 |
2385 @item R | 2830 @item R |
2386 @kindex R (Group) | 2831 @kindex R (Group) |
2387 @cindex restarting | 2832 @cindex restarting |
2388 @findex gnus-group-restart | 2833 @findex gnus-group-restart |
2389 Restart Gnus (@code{gnus-group-restart}). | 2834 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc} |
2835 file(s), closes the connection to all servers, clears up all run-time | |
2836 Gnus variables, and then starts Gnus all over again. | |
2390 | 2837 |
2391 @end table | 2838 @end table |
2392 | 2839 |
2393 @vindex gnus-get-new-news-hook | 2840 @vindex gnus-get-new-news-hook |
2394 @code{gnus-get-new-news-hook} is run just before checking for new news. | 2841 @code{gnus-get-new-news-hook} is run just before checking for new news. |
2403 @cindex group information | 2850 @cindex group information |
2404 @cindex information on groups | 2851 @cindex information on groups |
2405 | 2852 |
2406 @table @kbd | 2853 @table @kbd |
2407 | 2854 |
2408 @item M-f | 2855 |
2409 @kindex M-f (Group) | 2856 @item H f |
2857 @kindex H f (Group) | |
2410 @findex gnus-group-fetch-faq | 2858 @findex gnus-group-fetch-faq |
2859 @vindex gnus-group-faq-directory | |
2411 @cindex FAQ | 2860 @cindex FAQ |
2412 @cindex ange-ftp | 2861 @cindex ange-ftp |
2413 Try to fetch the FAQ for the current group | 2862 Try to fetch the FAQ for the current group |
2414 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from | 2863 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from |
2415 @code{gnus-group-faq-directory}, which is usually a directory on a | 2864 @code{gnus-group-faq-directory}, which is usually a directory on a |
2416 remote machine. @code{ange-ftp} will be used for fetching the file. | 2865 remote machine. This variable can also be a list of directories. In |
2417 | 2866 that case, giving a prefix to this command will allow you to choose |
2418 @item D | 2867 between the various sites. @code{ange-ftp} (or @code{efs}) will be used |
2419 @kindex D (Group) | 2868 for fetching the file. |
2869 | |
2870 If fetching from the first site is unsuccessful, Gnus will attempt to go | |
2871 through @code{gnus-group-faq-directory} and try to open them one by one. | |
2872 | |
2873 @item H d | |
2874 @itemx C-c C-d | |
2875 @kindex H d (Group) | |
2876 @kindex C-c C-d (Group) | |
2420 @cindex describing groups | 2877 @cindex describing groups |
2421 @cindex group description | 2878 @cindex group description |
2422 @findex gnus-group-describe-group | 2879 @findex gnus-group-describe-group |
2423 Describe the current group (@code{gnus-group-describe-group}). If given | 2880 Describe the current group (@code{gnus-group-describe-group}). If given |
2424 a prefix, force Gnus to re-read the description from the server. | 2881 a prefix, force Gnus to re-read the description from the server. |
2447 @findex gnus-info-find-node | 2904 @findex gnus-info-find-node |
2448 Go to the Gnus info node (@code{gnus-info-find-node}). | 2905 Go to the Gnus info node (@code{gnus-info-find-node}). |
2449 @end table | 2906 @end table |
2450 | 2907 |
2451 | 2908 |
2909 @node Group Timestamp | |
2910 @subsection Group Timestamp | |
2911 @cindex timestamps | |
2912 @cindex group timestamps | |
2913 | |
2914 It can be convenient to let Gnus keep track of when you last read a | |
2915 group. To set the ball rolling, you should add | |
2916 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}: | |
2917 | |
2918 @lisp | |
2919 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp) | |
2920 @end lisp | |
2921 | |
2922 After doing this, each time you enter a group, it'll be recorded. | |
2923 | |
2924 This information can be displayed in various ways---the easiest is to | |
2925 use the @samp{%d} spec in the group line format: | |
2926 | |
2927 @lisp | |
2928 (setq gnus-group-line-format | |
2929 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n") | |
2930 @end lisp | |
2931 | |
2932 This will result in lines looking like: | |
2933 | |
2934 @example | |
2935 * 0: mail.ding 19961002T012943 | |
2936 0: custom 19961002T012713 | |
2937 @end example | |
2938 | |
2939 As you can see, the date is displayed in compact ISO 8601 format. This | |
2940 may be a bit too much, so to just display the date, you could say | |
2941 something like: | |
2942 | |
2943 @lisp | |
2944 (setq gnus-group-line-format | |
2945 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n") | |
2946 @end lisp | |
2947 | |
2948 | |
2452 @node File Commands | 2949 @node File Commands |
2453 @subsection File Commands | 2950 @subsection File Commands |
2454 @cindex file commands | 2951 @cindex file commands |
2455 | 2952 |
2456 @table @kbd | 2953 @table @kbd |
2458 @item r | 2955 @item r |
2459 @kindex r (Group) | 2956 @kindex r (Group) |
2460 @findex gnus-group-read-init-file | 2957 @findex gnus-group-read-init-file |
2461 @vindex gnus-init-file | 2958 @vindex gnus-init-file |
2462 @cindex reading init file | 2959 @cindex reading init file |
2463 Read the init file (@code{gnus-init-file}, which defaults to | 2960 Re-read the init file (@code{gnus-init-file}, which defaults to |
2464 @file{~/.gnus}) (@code{gnus-group-read-init-file}). | 2961 @file{~/.gnus}) (@code{gnus-group-read-init-file}). |
2465 | 2962 |
2466 @item s | 2963 @item s |
2467 @kindex s (Group) | 2964 @kindex s (Group) |
2468 @findex gnus-group-save-newsrc | 2965 @findex gnus-group-save-newsrc |
2483 @chapter The Summary Buffer | 2980 @chapter The Summary Buffer |
2484 @cindex summary buffer | 2981 @cindex summary buffer |
2485 | 2982 |
2486 A line for each article is displayed in the summary buffer. You can | 2983 A line for each article is displayed in the summary buffer. You can |
2487 move around, read articles, post articles and reply to articles. | 2984 move around, read articles, post articles and reply to articles. |
2985 | |
2986 The most common way to a summary buffer is to select a group from the | |
2987 group buffer (@pxref{Selecting a Group}). | |
2988 | |
2989 You can have as many summary buffers open as you wish. | |
2488 | 2990 |
2489 @menu | 2991 @menu |
2490 * Summary Buffer Format:: Deciding how the summary buffer is to look. | 2992 * Summary Buffer Format:: Deciding how the summary buffer is to look. |
2491 * Summary Maneuvering:: Moving around the summary buffer. | 2993 * Summary Maneuvering:: Moving around the summary buffer. |
2492 * Choosing Articles:: Reading articles. | 2994 * Choosing Articles:: Reading articles. |
2502 * Persistent Articles:: Making articles expiry-resistant. | 3004 * Persistent Articles:: Making articles expiry-resistant. |
2503 * Article Backlog:: Having already read articles hang around. | 3005 * Article Backlog:: Having already read articles hang around. |
2504 * Saving Articles:: Ways of customizing article saving. | 3006 * Saving Articles:: Ways of customizing article saving. |
2505 * Decoding Articles:: Gnus can treat series of (uu)encoded articles. | 3007 * Decoding Articles:: Gnus can treat series of (uu)encoded articles. |
2506 * Article Treatment:: The article buffer can be mangled at will. | 3008 * Article Treatment:: The article buffer can be mangled at will. |
3009 * Article Commands:: Doing various things with the article buffer. | |
2507 * Summary Sorting:: Sorting the summary buffer in various ways. | 3010 * Summary Sorting:: Sorting the summary buffer in various ways. |
2508 * Finding the Parent:: No child support? Get the parent. | 3011 * Finding the Parent:: No child support? Get the parent. |
2509 * Alternative Approaches:: Reading using non-default summaries. | 3012 * Alternative Approaches:: Reading using non-default summaries. |
2510 * Tree Display:: A more visual display of threads. | 3013 * Tree Display:: A more visual display of threads. |
2511 * Mail Group Commands:: Some commands can only be used in mail groups. | 3014 * Mail Group Commands:: Some commands can only be used in mail groups. |
2512 * Various Summary Stuff:: What didn't fit anywhere else. | 3015 * Various Summary Stuff:: What didn't fit anywhere else. |
2513 * Exiting the Summary Buffer:: Returning to the Group buffer. | 3016 * Exiting the Summary Buffer:: Returning to the Group buffer. |
3017 * Crosspost Handling:: How crossposted articles are dealt with. | |
3018 * Duplicate Suppression:: An alternative when crosspost handling fails. | |
2514 @end menu | 3019 @end menu |
2515 | 3020 |
2516 | 3021 |
2517 @node Summary Buffer Format | 3022 @node Summary Buffer Format |
2518 @section Summary Buffer Format | 3023 @section Summary Buffer Format |
2546 @subsection Summary Buffer Lines | 3051 @subsection Summary Buffer Lines |
2547 | 3052 |
2548 @vindex gnus-summary-line-format | 3053 @vindex gnus-summary-line-format |
2549 You can change the format of the lines in the summary buffer by changing | 3054 You can change the format of the lines in the summary buffer by changing |
2550 the @code{gnus-summary-line-format} variable. It works along the same | 3055 the @code{gnus-summary-line-format} variable. It works along the same |
2551 lines a a normal @code{format} string, with some extensions. | 3056 lines a a normal @code{format} string, with some extensions |
3057 (@pxref{Formatting Variables}). | |
2552 | 3058 |
2553 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. | 3059 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. |
2554 | 3060 |
2555 The following format specification characters are understood: | 3061 The following format specification characters are understood: |
2556 | 3062 |
2558 @item N | 3064 @item N |
2559 Article number. | 3065 Article number. |
2560 @item S | 3066 @item S |
2561 Subject string. | 3067 Subject string. |
2562 @item s | 3068 @item s |
2563 Subject if the article is the root, @code{gnus-summary-same-subject} | 3069 Subject if the article is the root or the previous article had a |
2564 otherwise. | 3070 different subject, @code{gnus-summary-same-subject} otherwise. |
3071 (@code{gnus-summary-same-subject} defaults to @samp{}.) | |
2565 @item F | 3072 @item F |
2566 Full @code{From} line. | 3073 Full @code{From} header. |
2567 @item n | 3074 @item n |
2568 The name (from the @code{From} header). | 3075 The name (from the @code{From} header). |
2569 @item a | 3076 @item a |
2570 The name (from the @code{From} header). This differs from the @code{n} | 3077 The name (from the @code{From} header). This differs from the @code{n} |
2571 spec in that it uses @code{gnus-extract-address-components}, which is | 3078 spec in that it uses the function designated by the |
2572 slower, but may be more thorough. | 3079 @code{gnus-extract-address-components} variable, which is slower, but |
3080 may be more thorough. | |
2573 @item A | 3081 @item A |
2574 The address (from the @code{From} header). This works the same way as | 3082 The address (from the @code{From} header). This works the same way as |
2575 the @code{a} spec. | 3083 the @code{a} spec. |
2576 @item L | 3084 @item L |
2577 Number of lines in the article. | 3085 Number of lines in the article. |
2580 @item I | 3088 @item I |
2581 Indentation based on thread level (@pxref{Customizing Threading}). | 3089 Indentation based on thread level (@pxref{Customizing Threading}). |
2582 @item T | 3090 @item T |
2583 Nothing if the article is a root and lots of spaces if it isn't (it | 3091 Nothing if the article is a root and lots of spaces if it isn't (it |
2584 pushes everything after it off the screen). | 3092 pushes everything after it off the screen). |
2585 @item \[ | 3093 @item [ |
2586 Opening bracket, which is normally @samp{\[}, but can also be @samp{<} | 3094 Opening bracket, which is normally @samp{[}, but can also be @samp{<} |
2587 for adopted articles. | 3095 for adopted articles (@pxref{Customizing Threading}). |
2588 @item \] | 3096 @item ] |
2589 Closing bracket, which is normally @samp{\]}, but can also be @samp{>} | 3097 Closing bracket, which is normally @samp{]}, but can also be @samp{>} |
2590 for adopted articles. | 3098 for adopted articles. |
2591 @item > | 3099 @item > |
2592 One space for each thread level. | 3100 One space for each thread level. |
2593 @item < | 3101 @item < |
2594 Twenty minus thread level spaces. | 3102 Twenty minus thread level spaces. |
2608 Total thread score. | 3116 Total thread score. |
2609 @item x | 3117 @item x |
2610 @code{Xref}. | 3118 @code{Xref}. |
2611 @item D | 3119 @item D |
2612 @code{Date}. | 3120 @code{Date}. |
3121 @item d | |
3122 The @code{Date} in @code{DD-MMM} format. | |
3123 @item o | |
3124 The @code{Date} in @code{YYYYMMDDTHHMMSS} format. | |
2613 @item M | 3125 @item M |
2614 @code{Message-ID}. | 3126 @code{Message-ID}. |
2615 @item r | 3127 @item r |
2616 @code{References}. | 3128 @code{References}. |
2617 @item t | 3129 @item t |
2618 Number of articles in the current sub-thread. Using this spec will slow | 3130 Number of articles in the current sub-thread. Using this spec will slow |
2619 down summary buffer generation somewhat. | 3131 down summary buffer generation somewhat. |
2620 @item e | 3132 @item e |
2621 A single character will be displayed if the article has any children. | 3133 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the |
3134 article has any children. | |
3135 @item P | |
3136 The line number. | |
2622 @item u | 3137 @item u |
2623 User defined specifier. The next character in the format string should | 3138 User defined specifier. The next character in the format string should |
2624 be a letter. @sc{gnus} will call the function | 3139 be a letter. @sc{gnus} will call the function |
2625 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter | 3140 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter |
2626 following @samp{%u}. The function will be passed the current header as | 3141 following @samp{%u}. The function will be passed the current header as |
2644 @node Summary Buffer Mode Line | 3159 @node Summary Buffer Mode Line |
2645 @subsection Summary Buffer Mode Line | 3160 @subsection Summary Buffer Mode Line |
2646 | 3161 |
2647 @vindex gnus-summary-mode-line-format | 3162 @vindex gnus-summary-mode-line-format |
2648 You can also change the format of the summary mode bar. Set | 3163 You can also change the format of the summary mode bar. Set |
2649 @code{gnus-summary-mode-line-format} to whatever you like. Here are the | 3164 @code{gnus-summary-mode-line-format} to whatever you like. The default |
2650 elements you can play with: | 3165 is @samp{Gnus: %%b [%A] %Z}. |
3166 | |
3167 Here are the elements you can play with: | |
2651 | 3168 |
2652 @table @samp | 3169 @table @samp |
2653 @item G | 3170 @item G |
2654 Group name. | 3171 Group name. |
2655 @item p | 3172 @item p |
2662 Number of unread articles in this group. | 3179 Number of unread articles in this group. |
2663 @item e | 3180 @item e |
2664 Number of unselected articles in this group. | 3181 Number of unselected articles in this group. |
2665 @item Z | 3182 @item Z |
2666 A string with the number of unread and unselected articles represented | 3183 A string with the number of unread and unselected articles represented |
2667 either as @samp{<%U(+%u) more>} if there are both unread and unselected | 3184 either as @samp{<%U(+%e) more>} if there are both unread and unselected |
2668 articles, and just as @samp{<%U more>} if there are just unread articles | 3185 articles, and just as @samp{<%U more>} if there are just unread articles |
2669 and no unselected ones. | 3186 and no unselected ones. |
2670 @item g | 3187 @item g |
2671 Shortish group name. For instance, @samp{rec.arts.anime} will be | 3188 Shortish group name. For instance, @samp{rec.arts.anime} will be |
2672 shortened to @samp{r.a.anime}. | 3189 shortened to @samp{r.a.anime}. |
2673 @item S | 3190 @item S |
2674 Subject of the current article. | 3191 Subject of the current article. |
2675 @item u | 3192 @item u |
2676 Used-defined spec. | 3193 User-defined spec. |
2677 @item s | 3194 @item s |
2678 Name of the current score file. | 3195 Name of the current score file. |
2679 @item d | 3196 @item d |
2680 Number of dormant articles. | 3197 Number of dormant articles. |
2681 @item t | 3198 @item t |
2709 highlight the current article in the summary buffer. | 3226 highlight the current article in the summary buffer. |
2710 | 3227 |
2711 @item gnus-summary-highlight | 3228 @item gnus-summary-highlight |
2712 @vindex gnus-summary-highlight | 3229 @vindex gnus-summary-highlight |
2713 Summary lines are highlighted according to this variable, which is a | 3230 Summary lines are highlighted according to this variable, which is a |
2714 list where the elements are on the format @code{(FORM . FACE)}. If you | 3231 list where the elements are on the format @var{(FORM . FACE)}. If you |
2715 would, for instance, like ticked articles to be italic and high-scored | 3232 would, for instance, like ticked articles to be italic and high-scored |
2716 articles to be bold, you could set this variable to something like | 3233 articles to be bold, you could set this variable to something like |
2717 @lisp | 3234 @lisp |
2718 (((eq mark gnus-ticked-mark) . italic) | 3235 (((eq mark gnus-ticked-mark) . italic) |
2719 ((> score default) . bold)) | 3236 ((> score default) . bold)) |
2752 @item G j | 3269 @item G j |
2753 @itemx j | 3270 @itemx j |
2754 @kindex j (Summary) | 3271 @kindex j (Summary) |
2755 @kindex G j (Summary) | 3272 @kindex G j (Summary) |
2756 @findex gnus-summary-goto-article | 3273 @findex gnus-summary-goto-article |
2757 Ask for an article number and then go that article | 3274 Ask for an article number and then go to that article |
2758 (@code{gnus-summary-goto-article}). | 3275 (@code{gnus-summary-goto-article}). |
2759 | 3276 |
2760 @item G g | 3277 @item G g |
2761 @kindex G g (Summary) | 3278 @kindex G g (Summary) |
2762 @findex gnus-summary-goto-subject | 3279 @findex gnus-summary-goto-subject |
2763 Ask for an article number and then go the summary line of that article | 3280 Ask for an article number and then go the summary line of that article |
2764 (@code{gnus-summary-goto-subject}). | 3281 without displaying the article (@code{gnus-summary-goto-subject}). |
2765 @end table | 3282 @end table |
2766 | 3283 |
2767 If Gnus asks you to press a key to confirm going to the next group, you | 3284 If Gnus asks you to press a key to confirm going to the next group, you |
2768 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group | 3285 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group |
2769 buffer, searching for the next group to read without actually returning | 3286 buffer, searching for the next group to read without actually returning |
2773 | 3290 |
2774 @table @code | 3291 @table @code |
2775 | 3292 |
2776 @vindex gnus-auto-select-next | 3293 @vindex gnus-auto-select-next |
2777 @item gnus-auto-select-next | 3294 @item gnus-auto-select-next |
2778 If you are at the end of the group and issue one of the movement | 3295 If you issue one of the movement commands (like @kbd{n}) and there are |
2779 commands, Gnus will offer to go to the next group. If this variable is | 3296 no more unread articles after the current one, Gnus will offer to go to |
2780 @code{t} and the next group is empty, Gnus will exit summary mode and | 3297 the next group. If this variable is @code{t} and the next group is |
2781 return to the group buffer. If this variable is neither @code{t} nor | 3298 empty, Gnus will exit summary mode and return to the group buffer. If |
2782 @code{nil}, Gnus will select the next group, no matter whether it has | 3299 this variable is neither @code{t} nor @code{nil}, Gnus will select the |
2783 any unread articles or not. As a special case, if this variable is | 3300 next group, no matter whether it has any unread articles or not. As a |
2784 @code{quietly}, Gnus will select the next group without asking for | 3301 special case, if this variable is @code{quietly}, Gnus will select the |
2785 confirmation. If this variable is @code{almost-quietly}, the same will | 3302 next group without asking for confirmation. If this variable is |
2786 happen only if you are located on the last article in the group. | 3303 @code{almost-quietly}, the same will happen only if you are located on |
2787 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n} | 3304 the last article in the group. Finally, if this variable is |
2788 command will go to the next group without confirmation. Also | 3305 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group |
2789 @pxref{Group Levels}. | 3306 without confirmation. Also @pxref{Group Levels}. |
2790 | 3307 |
2791 @item gnus-auto-select-same | 3308 @item gnus-auto-select-same |
2792 @vindex gnus-auto-select-same | 3309 @vindex gnus-auto-select-same |
2793 If non-@code{nil}, all the movement commands will try to go to the next | 3310 If non-@code{nil}, all the movement commands will try to go to the next |
2794 article with the same subject as the current. (@dfn{Same} here might | 3311 article with the same subject as the current. (@dfn{Same} here might |
2817 | 3334 |
2818 @node Choosing Articles | 3335 @node Choosing Articles |
2819 @section Choosing Articles | 3336 @section Choosing Articles |
2820 @cindex selecting articles | 3337 @cindex selecting articles |
2821 | 3338 |
3339 @menu | |
3340 * Choosing Commands:: Commands for choosing articles. | |
3341 * Choosing Variables:: Variables that influence these commands. | |
3342 @end menu | |
3343 | |
3344 | |
3345 @node Choosing Commands | |
3346 @subsection Choosing Commands | |
3347 | |
2822 None of the following movement commands understand the numeric prefix, | 3348 None of the following movement commands understand the numeric prefix, |
2823 and they all select and display an article. | 3349 and they all select and display an article. |
2824 | 3350 |
2825 @table @kbd | 3351 @table @kbd |
2826 @item SPACE | 3352 @item SPACE |
2897 Pop an article off the summary history and go to this article | 3423 Pop an article off the summary history and go to this article |
2898 (@code{gnus-summary-pop-article}). This command differs from the | 3424 (@code{gnus-summary-pop-article}). This command differs from the |
2899 command above in that you can pop as many previous articles off the | 3425 command above in that you can pop as many previous articles off the |
2900 history as you like. | 3426 history as you like. |
2901 @end table | 3427 @end table |
3428 | |
3429 | |
3430 @node Choosing Variables | |
3431 @subsection Choosing Variables | |
2902 | 3432 |
2903 Some variables that are relevant for moving and selecting articles: | 3433 Some variables that are relevant for moving and selecting articles: |
2904 | 3434 |
2905 @table @code | 3435 @table @code |
2906 @item gnus-auto-extend-newsgroup | 3436 @item gnus-auto-extend-newsgroup |
2981 @kindex A > (Summary) | 3511 @kindex A > (Summary) |
2982 @findex gnus-summary-end-of-article | 3512 @findex gnus-summary-end-of-article |
2983 Scroll to the end of the article (@code{gnus-summary-end-of-article}). | 3513 Scroll to the end of the article (@code{gnus-summary-end-of-article}). |
2984 | 3514 |
2985 @item A s | 3515 @item A s |
3516 @itemx s | |
2986 @kindex A s (Summary) | 3517 @kindex A s (Summary) |
3518 @kindex s (Summary) | |
2987 @findex gnus-summary-isearch-article | 3519 @findex gnus-summary-isearch-article |
2988 Perform an isearch in the article buffer | 3520 Perform an isearch in the article buffer |
2989 (@code{gnus-summary-isearch-article}). | 3521 (@code{gnus-summary-isearch-article}). |
2990 | 3522 |
2991 @end table | 3523 @end table |
3024 @findex gnus-summary-reply-with-original | 3556 @findex gnus-summary-reply-with-original |
3025 Mail a reply to the author of the current article and include the | 3557 Mail a reply to the author of the current article and include the |
3026 original message (@code{gnus-summary-reply-with-original}). This | 3558 original message (@code{gnus-summary-reply-with-original}). This |
3027 command uses the process/prefix convention. | 3559 command uses the process/prefix convention. |
3028 | 3560 |
3561 @item S w | |
3562 @kindex S w (Summary) | |
3563 @findex gnus-summary-wide-reply | |
3564 Mail a wide reply to the author of the current article | |
3565 (@code{gnus-summary-wide-reply}). | |
3566 | |
3567 @item S W | |
3568 @kindex S W (Summary) | |
3569 @findex gnus-summary-wide-reply-with-original | |
3570 Mail a wide reply to the current article and include the original | |
3571 message (@code{gnus-summary-reply-with-original}). This command uses | |
3572 the process/prefix convention. | |
3573 | |
3029 @item S o m | 3574 @item S o m |
3030 @kindex S o m (Summary) | 3575 @kindex S o m (Summary) |
3031 @findex gnus-summary-mail-forward | 3576 @findex gnus-summary-mail-forward |
3032 Forward the current article to some other person | 3577 Forward the current article to some other person |
3033 (@code{gnus-summary-mail-forward}). | 3578 (@code{gnus-summary-mail-forward}). If given a prefix, include the full |
3034 | 3579 headers of the forwarded article. |
3035 @item S o p | |
3036 @kindex S o p (Summary) | |
3037 @findex gnus-summary-post-forward | |
3038 Forward the current article to a newsgroup | |
3039 (@code{gnus-summary-post-forward}). | |
3040 | 3580 |
3041 @item S m | 3581 @item S m |
3042 @itemx m | 3582 @itemx m |
3043 @kindex m (Summary) | 3583 @kindex m (Summary) |
3044 @kindex S m (Summary) | 3584 @kindex S m (Summary) |
3073 | 3613 |
3074 This command is mainly used if you have several accounts and want to | 3614 This command is mainly used if you have several accounts and want to |
3075 ship a mail to a different account of yours. (If you're both | 3615 ship a mail to a different account of yours. (If you're both |
3076 @code{root} and @code{postmaster} and get a mail for @code{postmaster} | 3616 @code{root} and @code{postmaster} and get a mail for @code{postmaster} |
3077 to the @code{root} account, you may want to resend it to | 3617 to the @code{root} account, you may want to resend it to |
3078 @code{postmaster}. Ordnung muss sein! | 3618 @code{postmaster}. Ordnung muß sein! |
3619 | |
3620 This command understands the process/prefix convention | |
3621 (@pxref{Process/Prefix}). | |
3079 | 3622 |
3080 @item S O m | 3623 @item S O m |
3081 @kindex S O m (Summary) | 3624 @kindex S O m (Summary) |
3082 @findex gnus-uu-digest-mail-forward | 3625 @findex gnus-uu-digest-mail-forward |
3083 Digest the current series and forward the result using mail | 3626 Digest the current series and forward the result using mail |
3084 (@code{gnus-uu-digest-mail-forward}). This command uses the | 3627 (@code{gnus-uu-digest-mail-forward}). This command uses the |
3085 process/prefix convention (@pxref{Process/Prefix}). | 3628 process/prefix convention (@pxref{Process/Prefix}). |
3086 | 3629 |
3087 @item S O p | 3630 @item S M-c |
3088 @kindex S O p (Summary) | 3631 @kindex S M-c (Summary) |
3089 @findex gnus-uu-digest-post-forward | 3632 @findex gnus-summary-mail-crosspost-complaint |
3090 Digest the current series and forward the result to a newsgroup | 3633 @cindex crossposting |
3091 (@code{gnus-uu-digest-mail-forward}). | 3634 @cindex excessive crossposting |
3635 Send a complaint about excessive crossposting to the author of the | |
3636 current article (@code{gnus-summary-mail-crosspost-complaint}). | |
3637 | |
3638 @findex gnus-crosspost-complaint | |
3639 This command is provided as a way to fight back agains the current | |
3640 crossposting pandemic that's sweeping Usenet. It will compose a reply | |
3641 using the @code{gnus-crosspost-complaint} variable as a preamble. This | |
3642 command understands the process/prefix convention | |
3643 (@pxref{Process/Prefix}) and will prompt you before sending each mail. | |
3644 | |
3092 @end table | 3645 @end table |
3093 | 3646 |
3094 | 3647 |
3095 @node Summary Post Commands | 3648 @node Summary Post Commands |
3096 @subsection Summary Post Commands | 3649 @subsection Summary Post Commands |
3097 @cindex post | 3650 @cindex post |
3098 @cindex composing news | 3651 @cindex composing news |
3099 | 3652 |
3100 Commands for posting an article: | 3653 Commands for posting a news article: |
3101 | 3654 |
3102 @table @kbd | 3655 @table @kbd |
3103 @item S p | 3656 @item S p |
3104 @itemx a | 3657 @itemx a |
3105 @kindex a (Summary) | 3658 @kindex a (Summary) |
3122 @findex gnus-summary-followup-with-original | 3675 @findex gnus-summary-followup-with-original |
3123 Post a followup to the current article and include the original message | 3676 Post a followup to the current article and include the original message |
3124 (@code{gnus-summary-followup-with-original}). This command uses the | 3677 (@code{gnus-summary-followup-with-original}). This command uses the |
3125 process/prefix convention. | 3678 process/prefix convention. |
3126 | 3679 |
3680 @item S n | |
3681 @kindex S n (Summary) | |
3682 @findex gnus-summary-followup-to-mail | |
3683 Post a followup to the current article via news, even if you got the | |
3684 message through mail (@code{gnus-summary-followup-to-mail}). | |
3685 | |
3686 @item S n | |
3687 @kindex S n (Summary) | |
3688 @findex gnus-summary-followup-to-mail | |
3689 Post a followup to the current article via news, even if you got the | |
3690 message through mail and include the original message | |
3691 (@code{gnus-summary-followup-to-mail-with-original}). This command uses | |
3692 the process/prefix convention. | |
3693 | |
3694 @item S o p | |
3695 @kindex S o p (Summary) | |
3696 @findex gnus-summary-post-forward | |
3697 Forward the current article to a newsgroup | |
3698 (@code{gnus-summary-post-forward}). If given a prefix, include the full | |
3699 headers of the forwarded article. | |
3700 | |
3701 @item S O p | |
3702 @kindex S O p (Summary) | |
3703 @findex gnus-uu-digest-post-forward | |
3704 Digest the current series and forward the result to a newsgroup | |
3705 (@code{gnus-uu-digest-mail-forward}). | |
3706 | |
3127 @item S u | 3707 @item S u |
3128 @kindex S u (Summary) | 3708 @kindex S u (Summary) |
3129 @findex gnus-uu-post-news | 3709 @findex gnus-uu-post-news |
3130 Uuencode a file, split it into parts, and post it as a series | 3710 Uuencode a file, split it into parts, and post it as a series |
3131 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). | 3711 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). |
3169 have posted almost the same article twice. | 3749 have posted almost the same article twice. |
3170 | 3750 |
3171 If you have just posted the article, and change your mind right away, | 3751 If you have just posted the article, and change your mind right away, |
3172 there is a trick you can use to cancel/supersede the article without | 3752 there is a trick you can use to cancel/supersede the article without |
3173 waiting for the article to appear on your site first. You simply return | 3753 waiting for the article to appear on your site first. You simply return |
3174 to the post buffer (which is called @code{*post-buf*}). There you will | 3754 to the post buffer (which is called @code{*sent ...*}). There you will |
3175 find the article you just posted, with all the headers intact. Change | 3755 find the article you just posted, with all the headers intact. Change |
3176 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes} | 3756 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes} |
3177 header by substituting one of those words for @code{Message-ID}. Then | 3757 header by substituting one of those words for the word |
3178 just press @kbd{C-c C-c} to send the article as you would do normally. | 3758 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as |
3179 The previous article will be canceled/superseded. | 3759 you would do normally. The previous article will be |
3760 canceled/superseded. | |
3180 | 3761 |
3181 Just remember, kids: There is no 'c' in 'supersede'. | 3762 Just remember, kids: There is no 'c' in 'supersede'. |
3182 | 3763 |
3183 | 3764 |
3184 @node Marking Articles | 3765 @node Marking Articles |
3212 | 3793 |
3213 | 3794 |
3214 @node Unread Articles | 3795 @node Unread Articles |
3215 @subsection Unread Articles | 3796 @subsection Unread Articles |
3216 | 3797 |
3217 The following marks mark articles as unread, in one form or other. | 3798 The following marks mark articles as (kinda) unread, in one form or |
3218 | 3799 other. |
3219 @vindex gnus-dormant-mark | 3800 |
3220 @vindex gnus-ticked-mark | |
3221 @table @samp | 3801 @table @samp |
3222 @item ! | 3802 @item ! |
3803 @vindex gnus-ticked-mark | |
3804 Marked as ticked (@code{gnus-ticked-mark}). | |
3805 | |
3223 @dfn{Ticked articles} are articles that will remain visible always. If | 3806 @dfn{Ticked articles} are articles that will remain visible always. If |
3224 you see an article that you find interesting, or you want to put off | 3807 you see an article that you find interesting, or you want to put off |
3225 reading it, or replying to it, until sometime later, you'd typically | 3808 reading it, or replying to it, until sometime later, you'd typically |
3226 tick it. However, articles can be expired, so if you want to keep an | 3809 tick it. However, articles can be expired, so if you want to keep an |
3227 article forever, you'll have to save it. Ticked articles have a | 3810 article forever, you'll have to make it persistent (@pxref{Persistent |
3228 @samp{!} (@code{gnus-ticked-mark}) in the first column. | 3811 Articles}). |
3229 | 3812 |
3230 @item ? | 3813 @item ? |
3231 @vindex gnus-dormant-mark | 3814 @vindex gnus-dormant-mark |
3232 A @dfn{dormant} article is marked with a @samp{?} | 3815 Marked as dormant (@code{gnus-dormant-mark}). |
3233 (@code{gnus-dormant-mark}), and will only appear in the summary buffer | 3816 |
3234 if there are followups to it. | 3817 @dfn{Dormant articles} will only appear in the summary buffer if there |
3818 are followups to it. | |
3235 | 3819 |
3236 @item SPACE | 3820 @item SPACE |
3237 @vindex gnus-unread-mark | 3821 @vindex gnus-unread-mark |
3238 An @dfn{unread} article is marked with a @samp{SPACE} | 3822 Markes as unread (@code{gnus-unread-mark}). |
3239 (@code{gnus-unread-mark}). These are articles that haven't been read at | 3823 |
3240 all yet. | 3824 @dfn{Unread articles} are articles that haven't been read at all yet. |
3241 @end table | 3825 @end table |
3242 | 3826 |
3243 | 3827 |
3244 @node Read Articles | 3828 @node Read Articles |
3245 @subsection Read Articles | 3829 @subsection Read Articles |
3249 | 3833 |
3250 @table @samp | 3834 @table @samp |
3251 | 3835 |
3252 @item r | 3836 @item r |
3253 @vindex gnus-del-mark | 3837 @vindex gnus-del-mark |
3254 Articles that are marked as read. They have a @samp{r} | 3838 These are articles that the user has marked as read with the @kbd{d} |
3255 (@code{gnus-del-mark}) in the first column. These are articles that the | 3839 command manually, more or less (@code{gnus-del-mark}). |
3256 user has marked as read more or less manually. | |
3257 | 3840 |
3258 @item R | 3841 @item R |
3259 @vindex gnus-read-mark | 3842 @vindex gnus-read-mark |
3260 Articles that are actually read are marked with @samp{R} | 3843 Articles that have actually been read (@code{gnus-read-mark}). |
3261 (@code{gnus-read-mark}). | |
3262 | 3844 |
3263 @item O | 3845 @item O |
3264 @vindex gnus-ancient-mark | 3846 @vindex gnus-ancient-mark |
3265 Articles that were marked as read in previous sessions are now | 3847 Articles that were marked as read in previous sessions and are now |
3266 @dfn{old} and marked with @samp{O} (@code{gnus-ancient-mark}). | 3848 @dfn{old} (@code{gnus-ancient-mark}). |
3267 | 3849 |
3268 @item K | 3850 @item K |
3269 @vindex gnus-killed-mark | 3851 @vindex gnus-killed-mark |
3270 Marked as killed (@code{gnus-killed-mark}). | 3852 Marked as killed (@code{gnus-killed-mark}). |
3271 | 3853 |
3285 @vindex gnus-canceled-mark | 3867 @vindex gnus-canceled-mark |
3286 Canceled article (@code{gnus-canceled-mark}) | 3868 Canceled article (@code{gnus-canceled-mark}) |
3287 | 3869 |
3288 @item F | 3870 @item F |
3289 @vindex gnus-souped-mark | 3871 @vindex gnus-souped-mark |
3290 @sc{SOUP}ed article (@code{gnus-souped-mark}). | 3872 @sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}. |
3291 | 3873 |
3292 @item Q | 3874 @item Q |
3293 @vindex gnus-sparse-mark | 3875 @vindex gnus-sparse-mark |
3294 Sparsely reffed article (@code{gnus-sparse-mark}). | 3876 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing |
3877 Threading}. | |
3878 | |
3879 @item M | |
3880 @vindex gnus-duplicate-mark | |
3881 Article marked as read by duplicate suppression | |
3882 (@code{gnus-duplicated-mark}). @xref{Duplicate Suppression}. | |
3883 | |
3295 @end table | 3884 @end table |
3296 | 3885 |
3297 All these marks just mean that the article is marked as read, really. | 3886 All these marks just mean that the article is marked as read, really. |
3298 They are interpreted differently by the adaptive scoring scheme, | 3887 They are interpreted differently when doing adaptive scoring, though. |
3299 however. | |
3300 | 3888 |
3301 One more special mark, though: | 3889 One more special mark, though: |
3302 | 3890 |
3303 @table @samp | 3891 @table @samp |
3304 @item E | 3892 @item E |
3305 @vindex gnus-expirable-mark | 3893 @vindex gnus-expirable-mark |
3306 You can also mark articles as @dfn{expirable} (or have them marked as | 3894 Marked as expirable (@code{gnus-expirable-mark}). |
3307 such automatically). That doesn't make much sense in normal groups, | 3895 |
3308 because a user does not control the expiring of news articles, but in | 3896 Marking articles as @dfn{expirable} (or have them marked as such |
3309 mail groups, for instance, articles that are marked as @dfn{expirable} | 3897 automatically) doesn't make much sense in normal groups---a user doesn't |
3310 can be deleted by Gnus at any time. Expirable articles are marked with | 3898 control the expiring of news articles, but in mail groups, for instance, |
3311 @samp{E} (@code{gnus-expirable-mark}). | 3899 articles that are marked as @dfn{expirable} can be deleted by Gnus at |
3900 any time. | |
3312 @end table | 3901 @end table |
3313 | 3902 |
3314 | 3903 |
3315 @node Other Marks | 3904 @node Other Marks |
3316 @subsection Other Marks | 3905 @subsection Other Marks |
3325 @item | 3914 @item |
3326 You can set a bookmark in the current article. Say you are reading a | 3915 You can set a bookmark in the current article. Say you are reading a |
3327 long thesis on cats' urinary tracts, and have to go home for dinner | 3916 long thesis on cats' urinary tracts, and have to go home for dinner |
3328 before you've finished reading the thesis. You can then set a bookmark | 3917 before you've finished reading the thesis. You can then set a bookmark |
3329 in the article, and Gnus will jump to this bookmark the next time it | 3918 in the article, and Gnus will jump to this bookmark the next time it |
3330 encounters the article. | 3919 encounters the article. @xref{Setting Marks} |
3331 | 3920 |
3332 @item | 3921 @item |
3333 @vindex gnus-replied-mark | 3922 @vindex gnus-replied-mark |
3334 All articles that you have replied to or made a followup to (i.e., have | 3923 All articles that you have replied to or made a followup to (i.e., have |
3335 answered) will be marked with an @samp{A} in the second column | 3924 answered) will be marked with an @samp{A} in the second column |
3399 @kindex M d (Summary) | 3988 @kindex M d (Summary) |
3400 @kindex d (Summary) | 3989 @kindex d (Summary) |
3401 @findex gnus-summary-mark-as-read-forward | 3990 @findex gnus-summary-mark-as-read-forward |
3402 Mark the current article as read | 3991 Mark the current article as read |
3403 (@code{gnus-summary-mark-as-read-forward}). | 3992 (@code{gnus-summary-mark-as-read-forward}). |
3993 | |
3994 @item D | |
3995 @kindex D (Summary) | |
3996 @findex gnus-summary-mark-as-read-backward | |
3997 Mark the current article as read and move point to the previous line | |
3998 (@code{gnus-summary-mark-as-read-backward}). | |
3404 | 3999 |
3405 @item M k | 4000 @item M k |
3406 @itemx k | 4001 @itemx k |
3407 @kindex k (Summary) | 4002 @kindex k (Summary) |
3408 @kindex M k (Summary) | 4003 @kindex M k (Summary) |
3420 (@code{gnus-summary-kill-same-subject}). | 4015 (@code{gnus-summary-kill-same-subject}). |
3421 | 4016 |
3422 @item M C | 4017 @item M C |
3423 @kindex M C (Summary) | 4018 @kindex M C (Summary) |
3424 @findex gnus-summary-catchup | 4019 @findex gnus-summary-catchup |
3425 Mark all unread articles in the group as read | 4020 Mark all unread articles as read (@code{gnus-summary-catchup}). |
3426 (@code{gnus-summary-catchup}). | |
3427 | 4021 |
3428 @item M C-c | 4022 @item M C-c |
3429 @kindex M C-c (Summary) | 4023 @kindex M C-c (Summary) |
3430 @findex gnus-summary-catchup-all | 4024 @findex gnus-summary-catchup-all |
3431 Mark all articles in the group as read---even the ticked and dormant | 4025 Mark all articles in the group as read---even the ticked and dormant |
3533 @kindex M P U (Summary) | 4127 @kindex M P U (Summary) |
3534 @findex gnus-summary-unmark-all-processable | 4128 @findex gnus-summary-unmark-all-processable |
3535 Remove the process mark from all articles | 4129 Remove the process mark from all articles |
3536 (@code{gnus-summary-unmark-all-processable}). | 4130 (@code{gnus-summary-unmark-all-processable}). |
3537 | 4131 |
4132 @item M P i | |
4133 @kindex M P i (Summary) | |
4134 @findex gnus-uu-invert-processable | |
4135 Invert the list of process marked articles | |
4136 (@code{gnus-uu-invert-processable}). | |
4137 | |
3538 @item M P R | 4138 @item M P R |
3539 @kindex M P R (Summary) | 4139 @kindex M P R (Summary) |
3540 @findex gnus-uu-mark-by-regexp | 4140 @findex gnus-uu-mark-by-regexp |
3541 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). | 4141 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). |
3542 | 4142 |
3582 @item M P b | 4182 @item M P b |
3583 @kindex M P b (Summary) | 4183 @kindex M P b (Summary) |
3584 @findex gnus-uu-mark-buffer | 4184 @findex gnus-uu-mark-buffer |
3585 Mark all articles in the buffer in the order they appear | 4185 Mark all articles in the buffer in the order they appear |
3586 (@code{gnus-uu-mark-buffer}). | 4186 (@code{gnus-uu-mark-buffer}). |
4187 | |
4188 @item M P k | |
4189 @kindex M P k (Summary) | |
4190 @findex gnus-summary-kill-process-mark | |
4191 Push the current process mark set onto the stack and unmark all articles | |
4192 (@code{gnus-summary-kill-process-mark}). | |
4193 | |
4194 @item M P y | |
4195 @kindex M P y (Summary) | |
4196 @findex gnus-summary-yank-process-mark | |
4197 Pop the previous process mark set from the stack and restore it | |
4198 (@code{gnus-summary-yank-process-mark}). | |
4199 | |
4200 @item M P w | |
4201 @kindex M P w (Summary) | |
4202 @findex gnus-summary-save-process-mark | |
4203 Push the current process mark set onto the stack | |
4204 (@code{gnus-summary-save-process-mark}). | |
4205 | |
3587 @end table | 4206 @end table |
3588 | 4207 |
3589 | 4208 |
3590 @node Limiting | 4209 @node Limiting |
3591 @section Limiting | 4210 @section Limiting |
3624 @item / m | 4243 @item / m |
3625 @kindex / m (Summary) | 4244 @kindex / m (Summary) |
3626 @findex gnus-summary-limit-to-marks | 4245 @findex gnus-summary-limit-to-marks |
3627 Ask for a mark and then limit to all articles that have not been marked | 4246 Ask for a mark and then limit to all articles that have not been marked |
3628 with that mark (@code{gnus-summary-limit-to-marks}). | 4247 with that mark (@code{gnus-summary-limit-to-marks}). |
4248 | |
4249 @item / t | |
4250 @kindex / t (Summary) | |
4251 @findex gnus-summary-limit-to-age | |
4252 Ask for a number and then limit the summary buffer to articles that are | |
4253 older than (or equal to) that number of days | |
4254 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to | |
4255 articles that are younger than that number of days. | |
3629 | 4256 |
3630 @item / n | 4257 @item / n |
3631 @kindex / n (Summary) | 4258 @kindex / n (Summary) |
3632 @findex gnus-summary-limit-to-articles | 4259 @findex gnus-summary-limit-to-articles |
3633 Limit the summary buffer to the current article | 4260 Limit the summary buffer to the current article |
3769 @c Written by Michael Ernst <mernst@cs.rice.edu> | 4396 @c Written by Michael Ernst <mernst@cs.rice.edu> |
3770 @lisp | 4397 @lisp |
3771 (setq gnus-simplify-ignored-prefixes | 4398 (setq gnus-simplify-ignored-prefixes |
3772 (concat | 4399 (concat |
3773 "\\`\\[?\\(" | 4400 "\\`\\[?\\(" |
4401 (mapconcat | |
4402 'identity | |
4403 '("looking" | |
4404 "wanted" "followup" "summary\\( of\\)?" | |
4405 "help" "query" "problem" "question" | |
4406 "answer" "reference" "announce" | |
4407 "How can I" "How to" "Comparison of" | |
4408 ;; ... | |
4409 ) | |
4410 "\\|") | |
4411 "\\)\\s *\\(" | |
3774 (mapconcat 'identity | 4412 (mapconcat 'identity |
3775 '("looking" | 4413 '("for" "for reference" "with" "about") |
3776 "wanted" "followup" "summary\\( of\\)?" | |
3777 "help" "query" "problem" "question" | |
3778 "answer" "reference" "announce" | |
3779 "How can I" "How to" "Comparison of" | |
3780 ;; ... | |
3781 ) | |
3782 "\\|") | 4414 "\\|") |
3783 "\\)\\s *\\(" | 4415 "\\)?\\]?:?[ \t]*")) |
3784 (mapconcat 'identity | |
3785 '("for" "for reference" "with" "about") | |
3786 "\\|") | |
3787 "\\)?\\]?:?[ \t]*")) | |
3788 @end lisp | 4416 @end lisp |
3789 | 4417 |
3790 All words that match this regexp will be removed before comparing two | 4418 All words that match this regexp will be removed before comparing two |
3791 subjects. | 4419 subjects. |
3792 | 4420 |
3876 @item gnus-thread-hide-subtree | 4504 @item gnus-thread-hide-subtree |
3877 @vindex gnus-thread-hide-subtree | 4505 @vindex gnus-thread-hide-subtree |
3878 If non-@code{nil}, all threads will be hidden when the summary buffer is | 4506 If non-@code{nil}, all threads will be hidden when the summary buffer is |
3879 generated. | 4507 generated. |
3880 | 4508 |
4509 @item gnus-thread-expunge-below | |
4510 @vindex gnus-thread-expunge-below | |
4511 All threads that have a total score (as defined by | |
4512 @code{gnus-thread-score-function}) less than this number will be | |
4513 expunged. This variable is @code{nil} by default, which means that no | |
4514 threads are expunged. | |
4515 | |
3881 @item gnus-thread-hide-killed | 4516 @item gnus-thread-hide-killed |
3882 @vindex gnus-thread-hide-killed | 4517 @vindex gnus-thread-hide-killed |
3883 if you kill a thread and this variable is non-@code{nil}, the subtree | 4518 if you kill a thread and this variable is non-@code{nil}, the subtree |
3884 will be hidden. | 4519 will be hidden. |
3885 | 4520 |
3891 in a new thread. | 4526 in a new thread. |
3892 | 4527 |
3893 @item gnus-thread-indent-level | 4528 @item gnus-thread-indent-level |
3894 @vindex gnus-thread-indent-level | 4529 @vindex gnus-thread-indent-level |
3895 This is a number that says how much each sub-thread should be indented. | 4530 This is a number that says how much each sub-thread should be indented. |
3896 The default is @code{4}. | 4531 The default is 4. |
4532 | |
4533 @item gnus-parse-headers-hook | |
4534 @vindex gnus-parse-headers-hook | |
4535 Hook run before parsing any headers. The default value is | |
4536 @code{(gnus-decode-rfc1522)}, which means that QPized headers will be | |
4537 slightly decoded in a hackish way. This is likely to change in the | |
4538 future when Gnus becomes @sc{MIME}ified. | |
4539 | |
3897 @end table | 4540 @end table |
3898 | 4541 |
3899 | 4542 |
3900 @node Thread Commands | 4543 @node Thread Commands |
3901 @subsection Thread Commands | 4544 @subsection Thread Commands |
3906 @item T k | 4549 @item T k |
3907 @itemx M-C-k | 4550 @itemx M-C-k |
3908 @kindex T k (Summary) | 4551 @kindex T k (Summary) |
3909 @kindex M-C-k (Summary) | 4552 @kindex M-C-k (Summary) |
3910 @findex gnus-summary-kill-thread | 4553 @findex gnus-summary-kill-thread |
3911 Mark all articles in the current sub-thread as read | 4554 Mark all articles in the current (sub-)thread as read |
3912 (@code{gnus-summary-kill-thread}). If the prefix argument is positive, | 4555 (@code{gnus-summary-kill-thread}). If the prefix argument is positive, |
3913 remove all marks instead. If the prefix argument is negative, tick | 4556 remove all marks instead. If the prefix argument is negative, tick |
3914 articles instead. | 4557 articles instead. |
3915 | 4558 |
3916 @item T l | 4559 @item T l |
3917 @itemx M-C-l | 4560 @itemx M-C-l |
3918 @kindex T l (Summary) | 4561 @kindex T l (Summary) |
3919 @kindex M-C-l (Summary) | 4562 @kindex M-C-l (Summary) |
3920 @findex gnus-summary-lower-thread | 4563 @findex gnus-summary-lower-thread |
3921 Lower the score of the current thread | 4564 Lower the score of the current (sub-)thread |
3922 (@code{gnus-summary-lower-thread}). | 4565 (@code{gnus-summary-lower-thread}). |
3923 | 4566 |
3924 @item T i | 4567 @item T i |
3925 @kindex T i (Summary) | 4568 @kindex T i (Summary) |
3926 @findex gnus-summary-raise-thread | 4569 @findex gnus-summary-raise-thread |
3927 Increase the score of the current thread | 4570 Increase the score of the current (sub-)thread |
3928 (@code{gnus-summary-raise-thread}). | 4571 (@code{gnus-summary-raise-thread}). |
3929 | 4572 |
3930 @item T # | 4573 @item T # |
3931 @kindex T # (Summary) | 4574 @kindex T # (Summary) |
3932 @findex gnus-uu-mark-thread | 4575 @findex gnus-uu-mark-thread |
3933 Set the process mark on the current thread | 4576 Set the process mark on the current (sub-)thread |
3934 (@code{gnus-uu-mark-thread}). | 4577 (@code{gnus-uu-mark-thread}). |
3935 | 4578 |
3936 @item T M-# | 4579 @item T M-# |
3937 @kindex T M-# (Summary) | 4580 @kindex T M-# (Summary) |
3938 @findex gnus-uu-unmark-thread | 4581 @findex gnus-uu-unmark-thread |
3939 Remove the process mark from the current thread | 4582 Remove the process mark from the current (sub-)thread |
3940 (@code{gnus-uu-unmark-thread}). | 4583 (@code{gnus-uu-unmark-thread}). |
3941 | 4584 |
3942 @item T T | 4585 @item T T |
3943 @kindex T T (Summary) | 4586 @kindex T T (Summary) |
3944 @findex gnus-summary-toggle-threads | 4587 @findex gnus-summary-toggle-threads |
3945 Toggle threading (@code{gnus-summary-toggle-threads}). | 4588 Toggle threading (@code{gnus-summary-toggle-threads}). |
3946 | 4589 |
3947 @item T s | 4590 @item T s |
3948 @kindex T s (Summary) | 4591 @kindex T s (Summary) |
3949 @findex gnus-summary-show-thread | 4592 @findex gnus-summary-show-thread |
3950 Expose the thread hidden under the current article, if any | 4593 Expose the (sub-)thread hidden under the current article, if any |
3951 (@code{gnus-summary-show-thread}). | 4594 (@code{gnus-summary-show-thread}). |
3952 | 4595 |
3953 @item T h | 4596 @item T h |
3954 @kindex T h (Summary) | 4597 @kindex T h (Summary) |
3955 @findex gnus-summary-hide-thread | 4598 @findex gnus-summary-hide-thread |
3956 Hide the current (sub)thread (@code{gnus-summary-hide-thread}). | 4599 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}). |
3957 | 4600 |
3958 @item T S | 4601 @item T S |
3959 @kindex T S (Summary) | 4602 @kindex T S (Summary) |
3960 @findex gnus-summary-show-all-threads | 4603 @findex gnus-summary-show-all-threads |
3961 Expose all hidden threads (@code{gnus-summary-show-all-threads}). | 4604 Expose all hidden threads (@code{gnus-summary-show-all-threads}). |
4111 | 4754 |
4112 | 4755 |
4113 @node Asynchronous Fetching | 4756 @node Asynchronous Fetching |
4114 @section Asynchronous Article Fetching | 4757 @section Asynchronous Article Fetching |
4115 @cindex asynchronous article fetching | 4758 @cindex asynchronous article fetching |
4759 @cindex article pre-fetch | |
4760 @cindex pre-fetch | |
4116 | 4761 |
4117 If you read your news from an @sc{nntp} server that's far away, the | 4762 If you read your news from an @sc{nntp} server that's far away, the |
4118 network latencies may make reading articles a chore. You have to wait | 4763 network latencies may make reading articles a chore. You have to wait |
4119 for a while after pressing @kbd{n} to go to the next article before the | 4764 for a while after pressing @kbd{n} to go to the next article before the |
4120 article appears. Why can't Gnus just go ahead and fetch the article | 4765 article appears. Why can't Gnus just go ahead and fetch the article |
4121 while you are reading the previous one? Why not, indeed. | 4766 while you are reading the previous one? Why not, indeed. |
4122 | 4767 |
4123 First, some caveats. There are some pitfalls to using asynchronous | 4768 First, some caveats. There are some pitfalls to using asynchronous |
4124 article fetching, especially the way Gnus does it. | 4769 article fetching, especially the way Gnus does it. |
4125 | 4770 |
4126 Let's say you are reading article 1, which is short, and article 2 is | 4771 Let's say you are reading article 1, which is short, and article 2 is |
4145 | 4790 |
4146 @vindex gnus-asynchronous | 4791 @vindex gnus-asynchronous |
4147 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should | 4792 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should |
4148 happen automatically. | 4793 happen automatically. |
4149 | 4794 |
4150 @vindex nntp-async-number | 4795 @vindex gnus-use-article-prefetch |
4151 You can control how many articles that are to be pre-fetched by setting | 4796 You can control how many articles that are to be pre-fetched by setting |
4152 @code{nntp-async-number}. This is five by default, which means that when | 4797 @code{gnus-use-article-prefetch}. This is 30 by default, which means |
4153 you read an article in the group, @code{nntp} will pre-fetch the next | 4798 that when you read an article in the group, the backend will pre-fetch |
4154 five articles. If this variable is @code{t}, @code{nntp} will pre-fetch | 4799 the next 30 articles. If this variable is @code{t}, the backend will |
4155 all the articles that it can without bound. If it is @code{nil}, no | 4800 pre-fetch all the articles that it can without bound. If it is |
4156 pre-fetching will be made. | 4801 @code{nil}, no pre-fetching will be made. |
4157 | 4802 |
4158 @vindex gnus-asynchronous-article-function | 4803 @vindex gnus-async-prefetch-article-p |
4159 You may wish to create some sort of scheme for choosing which articles | 4804 @findex gnus-async-read-p |
4160 that @code{nntp} should consider as candidates for pre-fetching. For | 4805 There are probably some articles that you don't want to pre-fetch---read |
4161 instance, you may wish to pre-fetch all articles with high scores, and | 4806 articles, for instance. Which articles to pre-fetch is controlled by |
4162 not pre-fetch low-scored articles. You can do that by setting the | 4807 the @code{gnus-async-prefetch-article-p} variable. This function should |
4163 @code{gnus-asynchronous-article-function}, which will be called with an | 4808 return non-@code{nil} when the article in question is to be |
4164 alist where the keys are the article numbers. Your function should | 4809 pre-fetched. The default is @code{gnus-async-read-p}, which returns |
4165 return an alist where the articles you are not interested in have been | 4810 @code{nil} on read articles. The function is called with an article |
4166 removed. You could also do sorting on article score and the like. | 4811 data structure as the only parameter. |
4812 | |
4813 If, for instance, you wish to pre-fetch only unread articles that are | |
4814 shorter than 100 lines, you could say something like: | |
4815 | |
4816 @lisp | |
4817 (defun my-async-short-unread-p (data) | |
4818 "Return non-nil for short, unread articles." | |
4819 (and (gnus-data-unread-p data) | |
4820 (< (mail-header-lines (gnus-data-header data)) | |
4821 100))) | |
4822 | |
4823 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p) | |
4824 @end lisp | |
4825 | |
4826 These functions will be called many, many times, so they should | |
4827 preferrably be short and sweet to avoid slowing down Gnus too much. | |
4828 It's also probably a good idea to byte-compile things like this. | |
4829 | |
4830 @vindex gnus-prefetched-article-deletion-strategy | |
4831 Articles have to be removed from the asynch buffer sooner or later. The | |
4832 @code{gnus-prefetched-article-deletion-strategy} says when to remove | |
4833 articles. This is a list that may contain the following elements: | |
4834 | |
4835 @table @code | |
4836 @item read | |
4837 Remove articles when they are read. | |
4838 | |
4839 @item exit | |
4840 Remove articles when exiting the group. | |
4841 @end table | |
4842 | |
4843 The default value is @code{(read exit)}. | |
4844 | |
4845 @vindex gnus-use-header-prefetch | |
4846 If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles | |
4847 from the next group. | |
4167 | 4848 |
4168 | 4849 |
4169 @node Article Caching | 4850 @node Article Caching |
4170 @section Article Caching | 4851 @section Article Caching |
4171 @cindex article caching | 4852 @cindex article caching |
4350 @item O f | 5031 @item O f |
4351 @kindex O f (Summary) | 5032 @kindex O f (Summary) |
4352 @findex gnus-summary-save-article-file | 5033 @findex gnus-summary-save-article-file |
4353 Save the current article in plain file format | 5034 Save the current article in plain file format |
4354 (@code{gnus-summary-save-article-file}). | 5035 (@code{gnus-summary-save-article-file}). |
5036 | |
5037 @item O F | |
5038 @kindex O F (Summary) | |
5039 @findex gnus-summary-write-article-file | |
5040 Write the current article in plain file format, overwriting any previous | |
5041 file contents (@code{gnus-summary-write-article-file}). | |
4355 | 5042 |
4356 @item O b | 5043 @item O b |
4357 @kindex O b (Summary) | 5044 @kindex O b (Summary) |
4358 @findex gnus-summary-save-article-body-file | 5045 @findex gnus-summary-save-article-body-file |
4359 Save the current article body in plain file format | 5046 Save the current article body in plain file format |
4461 | 5148 |
4462 @table @code | 5149 @table @code |
4463 | 5150 |
4464 @item gnus-Numeric-save-name | 5151 @item gnus-Numeric-save-name |
4465 @findex gnus-Numeric-save-name | 5152 @findex gnus-Numeric-save-name |
4466 Generates file names that look like @file{~/News/Alt.andrea-dworkin/45}. | 5153 File names like @file{~/News/Alt.andrea-dworkin/45}. |
4467 | 5154 |
4468 @item gnus-numeric-save-name | 5155 @item gnus-numeric-save-name |
4469 @findex gnus-numeric-save-name | 5156 @findex gnus-numeric-save-name |
4470 Generates file names that look like @file{~/News/alt.andrea-dworkin/45}. | 5157 File names like @file{~/News/alt.andrea-dworkin/45}. |
4471 | 5158 |
4472 @item gnus-Plain-save-name | 5159 @item gnus-Plain-save-name |
4473 @findex gnus-Plain-save-name | 5160 @findex gnus-Plain-save-name |
4474 Generates file names that look like @file{~/News/Alt.andrea-dworkin}. | 5161 File names like @file{~/News/Alt.andrea-dworkin}. |
4475 | 5162 |
4476 @item gnus-plain-save-name | 5163 @item gnus-plain-save-name |
4477 @findex gnus-plain-save-name | 5164 @findex gnus-plain-save-name |
4478 Generates file names that look like @file{~/News/alt.andrea-dworkin}. | 5165 File names like @file{~/News/alt.andrea-dworkin}. |
4479 @end table | 5166 @end table |
4480 | 5167 |
4481 @vindex gnus-split-methods | 5168 @vindex gnus-split-methods |
4482 You can have Gnus suggest where to save articles by plonking a regexp into | 5169 You can have Gnus suggest where to save articles by plonking a regexp into |
4483 the @code{gnus-split-methods} alist. For instance, if you would like to | 5170 the @code{gnus-split-methods} alist. For instance, if you would like to |
4722 @cindex sox | 5409 @cindex sox |
4723 This variable is consulted first when viewing files. If you wish to use, | 5410 This variable is consulted first when viewing files. If you wish to use, |
4724 for instance, @code{sox} to convert an @samp{.au} sound file, you could | 5411 for instance, @code{sox} to convert an @samp{.au} sound file, you could |
4725 say something like: | 5412 say something like: |
4726 @lisp | 5413 @lisp |
4727 (setq gnus-uu-user-view-rules | 5414 (setq gnus-uu-user-view-rules |
4728 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\"))) | 5415 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\"))) |
4729 @end lisp | 5416 @end lisp |
4730 | 5417 |
4731 @item gnus-uu-user-view-rules-end | 5418 @item gnus-uu-user-view-rules-end |
4732 @vindex gnus-uu-user-view-rules-end | 5419 @vindex gnus-uu-user-view-rules-end |
4733 This variable is consulted if Gnus couldn't make any matches from the | 5420 This variable is consulted if Gnus couldn't make any matches from the |
4760 | 5447 |
4761 @item gnus-uu-grab-move | 5448 @item gnus-uu-grab-move |
4762 @findex gnus-uu-grab-move | 5449 @findex gnus-uu-grab-move |
4763 Move the file (if you're using a saving function.) | 5450 Move the file (if you're using a saving function.) |
4764 @end table | 5451 @end table |
5452 | |
5453 @item gnus-uu-be-dangerous | |
5454 @vindex gnus-uu-be-dangerous | |
5455 Specifies what to do if unusual situations arise during decoding. If | |
5456 @code{nil}, be as conservative as possible. If @code{t}, ignore things | |
5457 that didn't work, and overwrite existing files. Otherwise, ask each | |
5458 time. | |
4765 | 5459 |
4766 @item gnus-uu-ignore-files-by-name | 5460 @item gnus-uu-ignore-files-by-name |
4767 @vindex gnus-uu-ignore-files-by-name | 5461 @vindex gnus-uu-ignore-files-by-name |
4768 Files with name matching this regular expression won't be viewed. | 5462 Files with name matching this regular expression won't be viewed. |
4769 | 5463 |
4921 writing, so there are tons of functions and variables to make reading | 5615 writing, so there are tons of functions and variables to make reading |
4922 these articles easier. | 5616 these articles easier. |
4923 | 5617 |
4924 @menu | 5618 @menu |
4925 * Article Highlighting:: You want to make the article look like fruit salad. | 5619 * Article Highlighting:: You want to make the article look like fruit salad. |
5620 * Article Fontisizing:: Making emphasized text look niced. | |
4926 * Article Hiding:: You also want to make certain info go away. | 5621 * Article Hiding:: You also want to make certain info go away. |
4927 * Article Washing:: Lots of way-neat functions to make life better. | 5622 * Article Washing:: Lots of way-neat functions to make life better. |
4928 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. | 5623 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. |
4929 * Article Date:: Grumble, UT! | 5624 * Article Date:: Grumble, UT! |
5625 * Article Signature:: What is a signature? | |
4930 @end menu | 5626 @end menu |
4931 | 5627 |
4932 | 5628 |
4933 @node Article Highlighting | 5629 @node Article Highlighting |
4934 @subsection Article Highlighting | 5630 @subsection Article Highlighting |
5019 @kindex W H s (Summary) | 5715 @kindex W H s (Summary) |
5020 @vindex gnus-signature-separator | 5716 @vindex gnus-signature-separator |
5021 @vindex gnus-signature-face | 5717 @vindex gnus-signature-face |
5022 @findex gnus-article-highlight-signature | 5718 @findex gnus-article-highlight-signature |
5023 Highlight the signature (@code{gnus-article-highlight-signature}). | 5719 Highlight the signature (@code{gnus-article-highlight-signature}). |
5024 Everything after @code{gnus-signature-separator} in an article will be | 5720 Everything after @code{gnus-signature-separator} (@pxref{Article |
5025 considered a signature and will be highlighted with | 5721 Signature}) in an article will be considered a signature and will be |
5026 @code{gnus-signature-face}, which is @code{italic} by default. | 5722 highlighted with @code{gnus-signature-face}, which is @code{italic} by |
5027 | 5723 default. |
5028 @end table | 5724 |
5725 @end table | |
5726 | |
5727 | |
5728 @node Article Fontisizing | |
5729 @subsection Article Fontisizing | |
5730 @cindex emphasis | |
5731 @cindex article emphasis | |
5732 | |
5733 @findex gnus-article-emphasize | |
5734 @kindex W e (Summary) | |
5735 People commonly add emphasis to words in news articles by writing things | |
5736 like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by | |
5737 running the article through the @kbd{W e} | |
5738 (@code{gnus-article-emphasize}) command. | |
5739 | |
5740 @vindex gnus-article-emphasis | |
5741 How the emphasis is computed is controlled by the | |
5742 @code{gnus-article-emphasis} variable. This is an alist where the first | |
5743 element is a regular expression to be matched. The second is a number | |
5744 that says what regular expression grouping used to find the entire | |
5745 emphasized word. The third is a number that says what regexp grouping | |
5746 should be displayed and highlighted. (The text between these two | |
5747 groupings will be hidden.) The fourth is the face used for | |
5748 highlighting. | |
5749 | |
5750 @lisp | |
5751 (setq gnus-article-emphasis | |
5752 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline) | |
5753 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold))) | |
5754 @end lisp | |
5755 | |
5756 @vindex gnus-emphasis-underline | |
5757 @vindex gnus-emphasis-bold | |
5758 @vindex gnus-emphasis-italic | |
5759 @vindex gnus-emphasis-underline-bold | |
5760 @vindex gnus-emphasis-underline-italic | |
5761 @vindex gnus-emphasis-bold-italic | |
5762 @vindex gnus-emphasis-underline-bold-italic | |
5763 By default, there are seven rules, and they use the following faces: | |
5764 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, | |
5765 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, | |
5766 @code{gnus-emphasis-underline-italic}, | |
5767 @code{gnus-emphasis-undeline-bold}, and | |
5768 @code{gnus-emphasis-underline-bold-italic}. | |
5769 | |
5770 If you want to change these faces, you can either use @kbd{M-x | |
5771 customize}, or you can use @code{copy-face}. For instance, if you want | |
5772 to make @code{gnus-emphasis-italic} use a red face instead, you could | |
5773 say something like: | |
5774 | |
5775 @lisp | |
5776 (copy-face 'red 'gnus-emphasis-italic) | |
5777 @end lisp | |
5029 | 5778 |
5030 | 5779 |
5031 @node Article Hiding | 5780 @node Article Hiding |
5032 @subsection Article Hiding | 5781 @subsection Article Hiding |
5033 @cindex article hiding | 5782 @cindex article hiding |
5055 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. | 5804 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. |
5056 | 5805 |
5057 @item W W s | 5806 @item W W s |
5058 @kindex W W s (Summary) | 5807 @kindex W W s (Summary) |
5059 @findex gnus-article-hide-signature | 5808 @findex gnus-article-hide-signature |
5060 Hide signature (@code{gnus-article-hide-signature}). | 5809 Hide signature (@code{gnus-article-hide-signature}). @xref{Article |
5810 Signature}. | |
5061 | 5811 |
5062 @item W W p | 5812 @item W W p |
5063 @kindex W W p (Summary) | 5813 @kindex W W p (Summary) |
5064 @findex gnus-article-hide-pgp | 5814 @findex gnus-article-hide-pgp |
5065 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). | 5815 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). |
5066 | 5816 |
5067 @item W W P | 5817 @item W W P |
5068 @kindex W W P (Summary) | 5818 @kindex W W P (Summary) |
5069 @findex gnus-article-hide-pem | 5819 @findex gnus-article-hide-pem |
5070 Hide @sc{pem} (privacy enhavnced hessages) gruft | 5820 Hide @sc{pem} (privacy enhanced messages) gruft |
5071 (@code{gnus-article-hide-pem}). | 5821 (@code{gnus-article-hide-pem}). |
5072 | 5822 |
5073 @item W W c | 5823 @item W W c |
5074 @kindex W W c (Summary) | 5824 @kindex W W c (Summary) |
5075 @findex gnus-article-hide-citation | 5825 @findex gnus-article-hide-citation |
5090 | 5840 |
5091 @item gnus-cited-text-button-line-format | 5841 @item gnus-cited-text-button-line-format |
5092 @vindex gnus-cited-text-button-line-format | 5842 @vindex gnus-cited-text-button-line-format |
5093 Gnus adds buttons show where the cited text has been hidden, and to | 5843 Gnus adds buttons show where the cited text has been hidden, and to |
5094 allow toggle hiding the text. The format of the variable is specified | 5844 allow toggle hiding the text. The format of the variable is specified |
5095 by this format-like variable. These specs are legal: | 5845 by this format-like variable (@pxref{Formatting Variables}). These |
5846 specs are legal: | |
5096 | 5847 |
5097 @table @samp | 5848 @table @samp |
5098 @item b | 5849 @item b |
5099 Start point of the hidden text. | 5850 Start point of the hidden text. |
5100 @item e | 5851 @item e |
5124 hidden. If you give a positive prefix, they will always hide. | 5875 hidden. If you give a positive prefix, they will always hide. |
5125 | 5876 |
5126 Also @pxref{Article Highlighting} for further variables for | 5877 Also @pxref{Article Highlighting} for further variables for |
5127 citation customization. | 5878 citation customization. |
5128 | 5879 |
5129 @vindex gnus-signature-limit | |
5130 @code{gnus-signature-limit} provides a limit to what is considered a | |
5131 signature. If it is a number, no signature may not be longer (in | |
5132 characters) than that number. If it is a function, the function will be | |
5133 called without any parameters, and if it returns @code{nil}, there is no | |
5134 signature in the buffer. If it is a string, it will be used as a | |
5135 regexp. If it matches, the text in question is not a signature. | |
5136 | |
5137 | 5880 |
5138 @node Article Washing | 5881 @node Article Washing |
5139 @subsection Article Washing | 5882 @subsection Article Washing |
5140 @cindex washing | 5883 @cindex washing |
5141 @cindex article washing | 5884 @cindex article washing |
5189 @findex gnus-article-fill-cited-article | 5932 @findex gnus-article-fill-cited-article |
5190 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this | 5933 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this |
5191 function in @code{gnus-article-display-hook}, it should be run fairly | 5934 function in @code{gnus-article-display-hook}, it should be run fairly |
5192 late and certainly after any highlighting. | 5935 late and certainly after any highlighting. |
5193 | 5936 |
5937 You can give the command a numerical prefix to specify the width to use | |
5938 when filling. | |
5939 | |
5194 @item W c | 5940 @item W c |
5195 @kindex W c (Summary) | 5941 @kindex W c (Summary) |
5196 @findex gnus-article-remove-cr | 5942 @findex gnus-article-remove-cr |
5197 Remove CR (@code{gnus-article-remove-cr}). | 5943 Remove CR (@code{gnus-article-remove-cr}). |
5198 | |
5199 @item W L | |
5200 @kindex W L (Summary) | |
5201 @findex gnus-article-remove-trailing-blank-lines | |
5202 Remove all blank lines at the end of the article | |
5203 (@code{gnus-article-remove-trailing-blank-lines}). | |
5204 | 5944 |
5205 @item W q | 5945 @item W q |
5206 @kindex W q (Summary) | 5946 @kindex W q (Summary) |
5207 @findex gnus-article-de-quoted-unreadable | 5947 @findex gnus-article-de-quoted-unreadable |
5208 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). | 5948 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). |
5239 @kindex W B (Summary) | 5979 @kindex W B (Summary) |
5240 @findex gnus-article-add-buttons-to-head | 5980 @findex gnus-article-add-buttons-to-head |
5241 Add clickable buttons to the article headers | 5981 Add clickable buttons to the article headers |
5242 (@code{gnus-article-add-buttons-to-head}). | 5982 (@code{gnus-article-add-buttons-to-head}). |
5243 | 5983 |
5984 @item W E l | |
5985 @kindex W E l (Summary) | |
5986 @findex gnus-article-strip-leading-blank-lines | |
5987 Remove all blank lines from the beginning of the article | |
5988 (@code{gnus-article-strip-leading-blank-lines}). | |
5989 | |
5990 @item W E m | |
5991 @kindex W E m (Summary) | |
5992 @findex gnus-article-strip-multiple-blank-lines | |
5993 Replace all blank lines with empty lines and then all multiple empty | |
5994 lines with a single empty line. | |
5995 (@code{gnus-article-strip-multiple-blank-lines}). | |
5996 | |
5997 @item W E t | |
5998 @kindex W E t (Summary) | |
5999 @findex gnus-article-remove-trailing-blank-lines | |
6000 Remove all blank lines at the end of the article | |
6001 (@code{gnus-article-remove-trailing-blank-lines}). | |
6002 | |
6003 @item W E a | |
6004 @kindex W E a (Summary) | |
6005 @findex gnus-article-strip-blank-lines | |
6006 Do all the three commands above | |
6007 (@code{gnus-article-strip-blank-lines}). | |
6008 | |
5244 @end table | 6009 @end table |
5245 | 6010 |
5246 | 6011 |
5247 @node Article Buttons | 6012 @node Article Buttons |
5248 @subsection Article Buttons | 6013 @subsection Article Buttons |
5275 @samp{<URL:\\([^\n\r>]*\\)>}. | 6040 @samp{<URL:\\([^\n\r>]*\\)>}. |
5276 | 6041 |
5277 @item button-par | 6042 @item button-par |
5278 Gnus has to know which parts of the match is to be highlighted. This is | 6043 Gnus has to know which parts of the match is to be highlighted. This is |
5279 a number that says what sub-expression of the regexp that is to be | 6044 a number that says what sub-expression of the regexp that is to be |
5280 highlighted. If you want it all highlighted, you use @code{0} here. | 6045 highlighted. If you want it all highlighted, you use 0 here. |
5281 | 6046 |
5282 @item use-p | 6047 @item use-p |
5283 This form will be @code{eval}ed, and if the result is non-@code{nil}, | 6048 This form will be @code{eval}ed, and if the result is non-@code{nil}, |
5284 this is considered a match. This is useful if you want extra sifting to | 6049 this is considered a match. This is useful if you want extra sifting to |
5285 avoid false matches. | 6050 avoid false matches. |
5316 A regular expression that matches embedded URLs. It is used in the | 6081 A regular expression that matches embedded URLs. It is used in the |
5317 default values of the variables above. | 6082 default values of the variables above. |
5318 | 6083 |
5319 @item gnus-article-button-face | 6084 @item gnus-article-button-face |
5320 @vindex gnus-article-button-face | 6085 @vindex gnus-article-button-face |
5321 Face used on bottons. | 6086 Face used on buttons. |
5322 | 6087 |
5323 @item gnus-article-mouse-face | 6088 @item gnus-article-mouse-face |
5324 @vindex gnus-article-mouse-face | 6089 @vindex gnus-article-mouse-face |
5325 Face is used when the mouse cursor is over a button. | 6090 Face is used when the mouse cursor is over a button. |
5326 | 6091 |
5344 | 6109 |
5345 @item W T l | 6110 @item W T l |
5346 @kindex W T l (Summary) | 6111 @kindex W T l (Summary) |
5347 @findex gnus-article-date-local | 6112 @findex gnus-article-date-local |
5348 Display the date in the local timezone (@code{gnus-article-date-local}). | 6113 Display the date in the local timezone (@code{gnus-article-date-local}). |
6114 | |
6115 @item W T s | |
6116 @kindex W T s (Summary) | |
6117 @vindex gnus-article-time-format | |
6118 @findex gnus-article-date-user | |
6119 @findex format-time-string | |
6120 Display the date using a user-defined format | |
6121 (@code{gnus-article-date-user}). The format is specified by the | |
6122 @code{gnus-article-time-format} variable, and is a string that's passed | |
6123 to @code{format-time-string}. See the documentation of that variable | |
6124 for a list possible format specs. | |
5349 | 6125 |
5350 @item W T e | 6126 @item W T e |
5351 @kindex W T e (Summary) | 6127 @kindex W T e (Summary) |
5352 @findex gnus-article-date-lapsed | 6128 @findex gnus-article-date-lapsed |
5353 Say how much time has (e)lapsed between the article was posted and now | 6129 Say how much time has (e)lapsed between the article was posted and now |
5363 @emph{totally} impossible. Don't you trust me? *titter* | 6139 @emph{totally} impossible. Don't you trust me? *titter* |
5364 | 6140 |
5365 @end table | 6141 @end table |
5366 | 6142 |
5367 | 6143 |
6144 @node Article Signature | |
6145 @subsection Article Signature | |
6146 @cindex signatures | |
6147 @cindex article signature | |
6148 | |
6149 @vindex gnus-signature-separator | |
6150 Each article is divided into two parts---the head and the body. The | |
6151 body can be divided into a signature part and a text part. The variable | |
6152 that says what is to be considered a signature is | |
6153 @code{gnus-signature-separator}. This is normally the standard | |
6154 @samp{^-- $} as mandated by son-of-RFC 1036. However, many people use | |
6155 non-standard signature separators, so this variable can also be a list | |
6156 of regular expressions to be tested, one by one. (Searches are done | |
6157 from the end of the body towards the beginning.) One likely value is: | |
6158 | |
6159 @lisp | |
6160 (setq gnus-signature-separator | |
6161 '("^-- $" ; The standard | |
6162 "^-- *$" ; A common mangling | |
6163 "^-------*$" ; Many people just use a looong | |
6164 ; line of dashes. Shame! | |
6165 "^ *--------*$" ; Double-shame! | |
6166 "^________*$" ; Underscores are also popular | |
6167 "^========*$")) ; Pervert! | |
6168 @end lisp | |
6169 | |
6170 The more permissive you are, the more likely it is that you'll get false | |
6171 positives. | |
6172 | |
6173 @vindex gnus-signature-limit | |
6174 @code{gnus-signature-limit} provides a limit to what is considered a | |
6175 signature. | |
6176 | |
6177 @enumerate | |
6178 @item | |
6179 If it is an integer, no signature may be longer (in characters) than | |
6180 that integer. | |
6181 @item | |
6182 If it is a floating point number, no signature may be longer (in lines) | |
6183 than that number. | |
6184 @item | |
6185 If it is a function, the function will be called without any parameters, | |
6186 and if it returns @code{nil}, there is no signature in the buffer. | |
6187 @item | |
6188 If it is a string, it will be used as a regexp. If it matches, the text | |
6189 in question is not a signature. | |
6190 @end enumerate | |
6191 | |
6192 This variable can also be a list where the elements may be of the types | |
6193 listed above. | |
6194 | |
6195 | |
6196 @node Article Commands | |
6197 @section Article Commands | |
6198 | |
6199 @table @kbd | |
6200 | |
6201 @item A P | |
6202 @cindex PostScript | |
6203 @cindex printing | |
6204 @kindex A P (Summary) | |
6205 @vindex gnus-ps-print-hook | |
6206 @findex gnus-summary-print-article | |
6207 Generate and print a PostScript image of the article buffer | |
6208 (@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will be | |
6209 run just before printing the buffer. | |
6210 | |
6211 @end table | |
6212 | |
6213 | |
5368 @node Summary Sorting | 6214 @node Summary Sorting |
5369 @section Summary Sorting | 6215 @section Summary Sorting |
5370 @cindex summary sorting | 6216 @cindex summary sorting |
5371 | 6217 |
5372 You can have the summary buffer sorted in various ways, even though I | 6218 You can have the summary buffer sorted in various ways, even though I |
5391 | 6237 |
5392 @item C-c C-s C-d | 6238 @item C-c C-s C-d |
5393 @kindex C-c C-s C-d (Summary) | 6239 @kindex C-c C-s C-d (Summary) |
5394 @findex gnus-summary-sort-by-date | 6240 @findex gnus-summary-sort-by-date |
5395 Sort by date (@code{gnus-summary-sort-by-date}). | 6241 Sort by date (@code{gnus-summary-sort-by-date}). |
6242 | |
6243 @item C-c C-s C-l | |
6244 @kindex C-c C-s C-l (Summary) | |
6245 @findex gnus-summary-sort-by-lines | |
6246 Sort by lines (@code{gnus-summary-sort-by-lines}). | |
5396 | 6247 |
5397 @item C-c C-s C-i | 6248 @item C-c C-s C-i |
5398 @kindex C-c C-s C-i (Summary) | 6249 @kindex C-c C-s C-i (Summary) |
5399 @findex gnus-summary-sort-by-score | 6250 @findex gnus-summary-sort-by-score |
5400 Sort by score (@code{gnus-summary-sort-by-score}). | 6251 Sort by score (@code{gnus-summary-sort-by-score}). |
5422 can just press @kbd{^} or @kbd{A r} | 6273 can just press @kbd{^} or @kbd{A r} |
5423 (@code{gnus-summary-refer-parent-article}). If everything goes well, | 6274 (@code{gnus-summary-refer-parent-article}). If everything goes well, |
5424 you'll get the parent. If the parent is already displayed in the | 6275 you'll get the parent. If the parent is already displayed in the |
5425 summary buffer, point will just move to this article. | 6276 summary buffer, point will just move to this article. |
5426 | 6277 |
6278 If given a positive numerical prefix, fetch that many articles back into | |
6279 the ancestry. If given a negative numerical prefix, fetch just that | |
6280 ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the | |
6281 grandparent and the grandgrandparent of the current article. If you say | |
6282 @kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current | |
6283 article. | |
6284 | |
5427 @findex gnus-summary-refer-references | 6285 @findex gnus-summary-refer-references |
5428 @kindex A R (Summary) | 6286 @kindex A R (Summary) |
5429 You can have Gnus fetch all articles mentioned in the @code{References} | 6287 You can have Gnus fetch all articles mentioned in the @code{References} |
5430 header of the article by pushing @kbd{A R} | 6288 header of the article by pushing @kbd{A R} |
5431 (@code{gnus-summary-refer-references}). | 6289 (@code{gnus-summary-refer-references}). |
5432 | 6290 |
5433 @findex gnus-summary-refer-article | 6291 @findex gnus-summary-refer-article |
5434 @kindex M-^ (Summary) | 6292 @kindex M-^ (Summary) |
6293 @cindex Message-ID | |
6294 @cindex fetching by Message-ID | |
5435 You can also ask the @sc{nntp} server for an arbitrary article, no | 6295 You can also ask the @sc{nntp} server for an arbitrary article, no |
5436 matter what group it belongs to. @kbd{M-^} | 6296 matter what group it belongs to. @kbd{M-^} |
5437 (@code{gnus-summary-refer-article}) will ask you for a | 6297 (@code{gnus-summary-refer-article}) will ask you for a |
5438 @code{Message-ID}, which is one of those long thingies that look | 6298 @code{Message-ID}, which is one of those long, hard-to-read thingies |
5439 something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You have to get | 6299 that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You |
5440 it all exactly right. No fuzzy searches, I'm afraid. | 6300 have to get it all exactly right. No fuzzy searches, I'm afraid. |
5441 | 6301 |
5442 @vindex gnus-refer-article-method | 6302 @vindex gnus-refer-article-method |
5443 If the group you are reading is located on a backend that does not | 6303 If the group you are reading is located on a backend that does not |
5444 support fetching by @code{Message-ID} very well (like @code{nnspool}), | 6304 support fetching by @code{Message-ID} very well (like @code{nnspool}), |
5445 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It | 6305 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It |
5485 available. | 6345 available. |
5486 | 6346 |
5487 Here are the available keystrokes when using pick mode: | 6347 Here are the available keystrokes when using pick mode: |
5488 | 6348 |
5489 @table @kbd | 6349 @table @kbd |
6350 @item . | |
6351 @kindex . (Pick) | |
6352 @findex gnus-summary-mark-as-processable | |
6353 Pick the article on the current line | |
6354 (@code{gnus-summary-mark-as-processable}). If given a numerical prefix, | |
6355 go to the article on that line and pick that article. (The line number | |
6356 is normally displayed on the beginning of the summary pick lines.) | |
6357 | |
5490 @item SPACE | 6358 @item SPACE |
5491 @kindex SPACE (Pick) | 6359 @kindex SPACE (Pick) |
5492 @findex gnus-summary-mark-as-processable | 6360 @findex gnus-pick-next-page |
5493 Pick the article (@code{gnus-summary-mark-as-processable}). | 6361 Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If |
6362 at the end of the buffer, start reading the picked articles. | |
5494 | 6363 |
5495 @item u | 6364 @item u |
5496 @kindex u (Pick) | 6365 @kindex u (Pick) |
5497 @findex gnus-summary-unmark-as-processable | 6366 @findex gnus-summary-unmark-as-processable |
5498 Unpick the article (@code{gnus-summary-unmark-as-processable}). | 6367 Unpick the article (@code{gnus-summary-unmark-as-processable}). |
5559 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) | 6428 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) |
5560 @end lisp | 6429 @end lisp |
5561 | 6430 |
5562 @vindex gnus-pick-mode-hook | 6431 @vindex gnus-pick-mode-hook |
5563 @code{gnus-pick-mode-hook} is run in pick minor mode buffers. | 6432 @code{gnus-pick-mode-hook} is run in pick minor mode buffers. |
6433 | |
6434 @vindex gnus-mark-unpicked-articles-as-read | |
6435 If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark | |
6436 all unpicked articles as read. The default is @code{nil}. | |
6437 | |
6438 @vindex gnus-summary-pick-line-format | |
6439 The summary line format in pick mode is slightly different than the | |
6440 standard format. At the beginning of each line the line number is | |
6441 displayed. The pick mode line format is controlled by the | |
6442 @code{gnus-summary-pick-line-format} variable (@pxref{Formatting | |
6443 Variables}). It accepts the same format specs that | |
6444 @code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}). | |
5564 | 6445 |
5565 | 6446 |
5566 @node Binary Groups | 6447 @node Binary Groups |
5567 @subsection Binary Groups | 6448 @subsection Binary Groups |
5568 @cindex binary groups | 6449 @cindex binary groups |
5675 | 6556 |
5676 Here's and example from a horizontal tree buffer: | 6557 Here's and example from a horizontal tree buffer: |
5677 | 6558 |
5678 @example | 6559 @example |
5679 @{***@}-(***)-[odd]-[Gun] | 6560 @{***@}-(***)-[odd]-[Gun] |
5680 | \[Jan] | 6561 | \[Jan] |
5681 | \[odd]-[Eri] | 6562 | \[odd]-[Eri] |
5682 | \(***)-[Eri] | 6563 | \(***)-[Eri] |
5683 | \[odd]-[Paa] | 6564 | \[odd]-[Paa] |
5684 \[Bjo] | 6565 \[Bjo] |
5685 \[Gun] | 6566 \[Gun] |
5686 \[Gun]-[Jor] | 6567 \[Gun]-[Jor] |
5687 @end example | 6568 @end example |
5688 | 6569 |
5720 (@code{gnus-summary-expire-articles}). | 6601 (@code{gnus-summary-expire-articles}). |
5721 | 6602 |
5722 @item B M-C-e | 6603 @item B M-C-e |
5723 @kindex B M-C-e (Summary) | 6604 @kindex B M-C-e (Summary) |
5724 @findex gnus-summary-expire-articles-now | 6605 @findex gnus-summary-expire-articles-now |
5725 Expunge all the expirable articles in the group | 6606 Delete all the expirable articles in the group |
5726 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} | 6607 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} |
5727 articles that are eligible for expiry in the current group will | 6608 articles that are eligible for expiry in the current group will |
5728 disappear forever into that big @file{/dev/null} in the sky. | 6609 disappear forever into that big @file{/dev/null} in the sky. |
5729 | 6610 |
5730 @item B DEL | 6611 @item B DEL |
5766 | 6647 |
5767 @item B r | 6648 @item B r |
5768 @kindex B r (Summary) | 6649 @kindex B r (Summary) |
5769 @findex gnus-summary-respool-article | 6650 @findex gnus-summary-respool-article |
5770 Respool the mail article (@code{gnus-summary-move-article}). | 6651 Respool the mail article (@code{gnus-summary-move-article}). |
6652 @code{gnus-summary-respool-default-method} will be used as the default | |
6653 select method when respooling. This variable is @code{nil} by default, | |
6654 which means that the current group select method will be used instead. | |
5771 | 6655 |
5772 @item B w | 6656 @item B w |
5773 @itemx e | 6657 @itemx e |
5774 @kindex B w (Summary) | 6658 @kindex B w (Summary) |
5775 @kindex e (Summary) | 6659 @kindex e (Summary) |
5783 @kindex B q (Summary) | 6667 @kindex B q (Summary) |
5784 @findex gnus-summary-respool-query | 6668 @findex gnus-summary-respool-query |
5785 If you want to re-spool an article, you might be curious as to what group | 6669 If you want to re-spool an article, you might be curious as to what group |
5786 the article will end up in before you do the re-spooling. This command | 6670 the article will end up in before you do the re-spooling. This command |
5787 will tell you (@code{gnus-summary-respool-query}). | 6671 will tell you (@code{gnus-summary-respool-query}). |
6672 | |
6673 @item B p | |
6674 @kindex B p (Summary) | |
6675 @findex gnus-summary-article-posted-p | |
6676 Some people have a tendency to send you "courtesy" copies when they | |
6677 follow up to articles you have posted. These usually have a | |
6678 @code{Newsgroups} header in them, but not always. This command | |
6679 (@code{gnus-summary-article-posted-p}) will try to fetch the current | |
6680 article from your news server (or rather, from | |
6681 @code{gnus-refer-article-method} or @code{gnus-select-method}) and will | |
6682 report back whether it found the article or not. Even if it says that | |
6683 it didn't find the article, it may have been posted anyway---mail | |
6684 propagation is much faster than news propagation, and the news copy may | |
6685 just not have arrived yet. | |
6686 | |
5788 @end table | 6687 @end table |
5789 | 6688 |
5790 @vindex gnus-move-split-methods | 6689 @vindex gnus-move-split-methods |
5791 @cindex moving articles | 6690 @cindex moving articles |
5792 If you move (or copy) articles regularly, you might wish to have Gnus | 6691 If you move (or copy) articles regularly, you might wish to have Gnus |
5793 suggest where to put the articles. @code{gnus-move-split-methods} is a | 6692 suggest where to put the articles. @code{gnus-move-split-methods} is a |
5794 variable that uses the same syntax as @code{gnus-split-methods} | 6693 variable that uses the same syntax as @code{gnus-split-methods} |
5795 (@pxref{Saving Articles}). You may customize that variable to create | 6694 (@pxref{Saving Articles}). You may customize that variable to create |
5796 suggestions you find reasonable. | 6695 suggestions you find reasonable. |
5797 | 6696 |
6697 @lisp | |
6698 (setq gnus-move-split-methods | |
6699 '(("^From:.*Lars Magne" "nnml:junk") | |
6700 ("^Subject:.*gnus" "nnfolder:important") | |
6701 (".*" "nnml:misc"))) | |
6702 @end lisp | |
6703 | |
5798 | 6704 |
5799 @node Various Summary Stuff | 6705 @node Various Summary Stuff |
5800 @section Various Summary Stuff | 6706 @section Various Summary Stuff |
5801 | 6707 |
5802 @menu | 6708 @menu |
5803 * Summary Group Information:: Information oriented commands. | 6709 * Summary Group Information:: Information oriented commands. |
5804 * Searching for Articles:: Multiple article commands. | 6710 * Searching for Articles:: Multiple article commands. |
6711 * Summary Generation Commands:: (Re)generating the summary buffer. | |
5805 * Really Various Summary Commands:: Those pesky non-conformant commands. | 6712 * Really Various Summary Commands:: Those pesky non-conformant commands. |
5806 @end menu | 6713 @end menu |
5807 | 6714 |
5808 @table @code | 6715 @table @code |
5809 @vindex gnus-summary-mode-hook | 6716 @vindex gnus-summary-mode-hook |
5852 rereading the description from the server. | 6759 rereading the description from the server. |
5853 | 6760 |
5854 @item H h | 6761 @item H h |
5855 @kindex H h (Summary) | 6762 @kindex H h (Summary) |
5856 @findex gnus-summary-describe-briefly | 6763 @findex gnus-summary-describe-briefly |
5857 Give a very brief description of the most important summary keystrokes | 6764 Give an extremely brief description of the most important summary |
5858 (@code{gnus-summary-describe-briefly}). | 6765 keystrokes (@code{gnus-summary-describe-briefly}). |
5859 | 6766 |
5860 @item H i | 6767 @item H i |
5861 @kindex H i (Summary) | 6768 @kindex H i (Summary) |
5862 @findex gnus-info-find-node | 6769 @findex gnus-info-find-node |
5863 Go to the Gnus info node (@code{gnus-info-find-node}). | 6770 Go to the Gnus info node (@code{gnus-info-find-node}). |
5893 @findex gnus-summary-universal-argument | 6800 @findex gnus-summary-universal-argument |
5894 Perform any operation on all articles that have been marked with | 6801 Perform any operation on all articles that have been marked with |
5895 the process mark (@code{gnus-summary-universal-argument}). | 6802 the process mark (@code{gnus-summary-universal-argument}). |
5896 @end table | 6803 @end table |
5897 | 6804 |
6805 @node Summary Generation Commands | |
6806 @subsection Summary Generation Commands | |
6807 | |
6808 @table @kbd | |
6809 | |
6810 @item Y g | |
6811 @kindex Y g (Summary) | |
6812 @findex gnus-summary-prepare | |
6813 Regenerate the current summary buffer (@code{gnus-summary-prepare}). | |
6814 | |
6815 @item Y c | |
6816 @kindex Y c (Summary) | |
6817 @findex gnus-summary-insert-cached-articles | |
6818 Pull all cached articles (for the current group) into the summary buffer | |
6819 (@code{gnus-summary-insert-cached-articles}). | |
6820 | |
6821 @end table | |
6822 | |
5898 | 6823 |
5899 @node Really Various Summary Commands | 6824 @node Really Various Summary Commands |
5900 @subsection Really Various Summary Commands | 6825 @subsection Really Various Summary Commands |
5901 | 6826 |
5902 @table @kbd | 6827 @table @kbd |
5903 | 6828 |
5904 @item A D | 6829 @item C-d |
5905 @kindex A D (Summary) | 6830 @kindex C-d (Summary) |
5906 @findex gnus-summary-enter-digest-group | 6831 @findex gnus-summary-enter-digest-group |
5907 If the current article is a collection of other articles (for instance, | 6832 If the current article is a collection of other articles (for instance, |
5908 a digest), you might use this command to enter a group based on the that | 6833 a digest), you might use this command to enter a group based on the that |
5909 article (@code{gnus-summary-enter-digest-group}). Gnus will try to | 6834 article (@code{gnus-summary-enter-digest-group}). Gnus will try to |
5910 guess what article type is currently displayed unless you give a prefix | 6835 guess what article type is currently displayed unless you give a prefix |
5911 to this command, which forces a ``digest'' interpretation. Basically, | 6836 to this command, which forces a ``digest'' interpretation. Basically, |
5912 whenever you see a message that is a collection of other messages on | 6837 whenever you see a message that is a collection of other messages on |
5913 some format, you @kbd{A D} and read these messages in a more convenient | 6838 some format, you @kbd{C-d} and read these messages in a more convenient |
5914 fashion. | 6839 fashion. |
6840 | |
6841 @item M-C-d | |
6842 @kindex M-C-d (Summary) | |
6843 @findex gnus-summary-read-document | |
6844 This command is very similar to the one above, but lets you gather | |
6845 several documents into one biiig group | |
6846 (@code{gnus-summary-read-document}). It does this by opening several | |
6847 @code{nndoc} groups for each document, and then opening an | |
6848 @code{nnvirtual} group on top of these @code{nndoc} groups. This | |
6849 command understands the process/prefix convention | |
6850 (@pxref{Process/Prefix}). | |
5915 | 6851 |
5916 @item C-t | 6852 @item C-t |
5917 @kindex C-t (Summary) | 6853 @kindex C-t (Summary) |
5918 @findex gnus-summary-toggle-truncation | 6854 @findex gnus-summary-toggle-truncation |
5919 Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}). | 6855 Toggle truncation of summary lines |
6856 (@code{gnus-summary-toggle-truncation}). This will probably confuse the | |
6857 line centering function in the summary buffer, so it's not a good idea | |
6858 to have truncation switched off while reading articles. | |
5920 | 6859 |
5921 @item = | 6860 @item = |
5922 @kindex = (Summary) | 6861 @kindex = (Summary) |
5923 @findex gnus-summary-expand-window | 6862 @findex gnus-summary-expand-window |
5924 Expand the summary buffer window (@code{gnus-summary-expand-window}). | 6863 Expand the summary buffer window (@code{gnus-summary-expand-window}). |
5925 If given a prefix, force an @code{article} window configuration. | 6864 If given a prefix, force an @code{article} window configuration. |
6865 | |
5926 @end table | 6866 @end table |
5927 | 6867 |
5928 | 6868 |
5929 @node Exiting the Summary Buffer | 6869 @node Exiting the Summary Buffer |
5930 @section Exiting the Summary Buffer | 6870 @section Exiting the Summary Buffer |
5946 Exit the current group and update all information on the group | 6886 Exit the current group and update all information on the group |
5947 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is | 6887 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is |
5948 called before doing much of the exiting, and calls | 6888 called before doing much of the exiting, and calls |
5949 @code{gnus-summary-expire-articles} by default. | 6889 @code{gnus-summary-expire-articles} by default. |
5950 @code{gnus-summary-exit-hook} is called after finishing the exiting | 6890 @code{gnus-summary-exit-hook} is called after finishing the exiting |
5951 process. | 6891 process. @code{gnus-group-no-more-groups-hook} is run when returning to |
6892 group mode having no more (unread) groups. | |
5952 | 6893 |
5953 @item Z E | 6894 @item Z E |
5954 @itemx Q | 6895 @itemx Q |
5955 @kindex Z E (Summary) | 6896 @kindex Z E (Summary) |
5956 @kindex Q (Summary) | 6897 @kindex Q (Summary) |
6003 @item Z P | 6944 @item Z P |
6004 @kindex Z P (Summary) | 6945 @kindex Z P (Summary) |
6005 @findex gnus-summary-prev-group | 6946 @findex gnus-summary-prev-group |
6006 Exit the group and go to the previous group | 6947 Exit the group and go to the previous group |
6007 (@code{gnus-summary-prev-group}). | 6948 (@code{gnus-summary-prev-group}). |
6949 | |
6950 @item Z s | |
6951 @kindex Z s (Summary) | |
6952 @findex gnus-summary-save-newsrc | |
6953 Save the current number of read/marked articles in the dribble buffer | |
6954 and then save the dribble buffer (@code{gnus-summary-save-newsrc}). If | |
6955 given a prefix, also save the @file{.newsrc} file(s). Using this | |
6956 command will make exit without updating (the @kbd{Q} command) worthless. | |
6008 @end table | 6957 @end table |
6009 | 6958 |
6010 @vindex gnus-exit-group-hook | 6959 @vindex gnus-exit-group-hook |
6011 @code{gnus-exit-group-hook} is called when you exit the current | 6960 @code{gnus-exit-group-hook} is called when you exit the current |
6012 group. | 6961 group. |
6032 summary buffer. If the @code{gnus-use-cross-reference} variable is | 6981 summary buffer. If the @code{gnus-use-cross-reference} variable is |
6033 @code{t} (which is the default), articles that are cross-referenced to | 6982 @code{t} (which is the default), articles that are cross-referenced to |
6034 this group and are marked as read, will also be marked as read in the | 6983 this group and are marked as read, will also be marked as read in the |
6035 other subscribed groups they were cross-posted to. If this variable is | 6984 other subscribed groups they were cross-posted to. If this variable is |
6036 neither @code{nil} nor @code{t}, the article will be marked as read in | 6985 neither @code{nil} nor @code{t}, the article will be marked as read in |
6037 both subscribed and unsubscribed groups. | 6986 both subscribed and unsubscribed groups (@pxref{Crosspost Handling}). |
6987 | |
6988 | |
6989 @node Crosspost Handling | |
6990 @section Crosspost Handling | |
6038 | 6991 |
6039 @cindex velveeta | 6992 @cindex velveeta |
6040 @cindex spamming | 6993 @cindex spamming |
6041 Marking cross-posted articles as read ensures that you'll never have to | 6994 Marking cross-posted articles as read ensures that you'll never have to |
6042 read the same article more than once. Unless, of course, somebody has | 6995 read the same article more than once. Unless, of course, somebody has |
6043 posted it to several groups separately. Posting the same article to | 6996 posted it to several groups separately. Posting the same article to |
6044 several groups (not cross-posting) is called @dfn{spamming}, and you are | 6997 several groups (not cross-posting) is called @dfn{spamming}, and you are |
6045 by law required to send nasty-grams to anyone who perpetrates such a | 6998 by law required to send nasty-grams to anyone who perpetrates such a |
6046 heinous crime. | 6999 heinous crime. You may want to try NoCeM handling to filter out spam |
7000 (@pxref{NoCeM}). | |
6047 | 7001 |
6048 Remember: Cross-posting is kinda ok, but posting the same article | 7002 Remember: Cross-posting is kinda ok, but posting the same article |
6049 separately to several groups is not. Massive cross-posting (aka. | 7003 separately to several groups is not. Massive cross-posting (aka. |
6050 @dfn{velveeta}) is to be avoided. | 7004 @dfn{velveeta}) is to be avoided at all costs, and you can even use the |
7005 @code{gnus-summary-mail-crosspost-complaint} command to complain about | |
7006 excessive crossposting (@pxref{Summary Mail Commands}). | |
6051 | 7007 |
6052 @cindex cross-posting | 7008 @cindex cross-posting |
6053 @cindex Xref | 7009 @cindex Xref |
6054 @cindex @sc{nov} | 7010 @cindex @sc{nov} |
6055 One thing that may cause Gnus to not do the cross-posting thing | 7011 One thing that may cause Gnus to not do the cross-posting thing |
6078 set @code{gnus-nov-is-evil} to @code{t}, which slows things down | 7034 set @code{gnus-nov-is-evil} to @code{t}, which slows things down |
6079 considerably. | 7035 considerably. |
6080 | 7036 |
6081 C'est la vie. | 7037 C'est la vie. |
6082 | 7038 |
7039 For an alternative approach, @pxref{Duplicate Suppression}. | |
7040 | |
7041 | |
7042 @node Duplicate Suppression | |
7043 @section Duplicate Suppression | |
7044 | |
7045 By default, Gnus tries to make sure that you don't have to read the same | |
7046 article more than once by utilizing the crossposting mechanism | |
7047 (@pxref{Crosspost Handling}). However, that simple and efficient | |
7048 approach may not work satisfactorily for some users for various | |
7049 reasons. | |
7050 | |
7051 @enumerate | |
7052 @item | |
7053 The @sc{nntp} server may fail to generate the @code{Xref} header. This | |
7054 is evil and not very common. | |
7055 | |
7056 @item | |
7057 The @sc{nntp} server may fail to include the @code{Xref} header in the | |
7058 @file{.overview} data bases. This is evil and all too common, alas. | |
7059 | |
7060 @item | |
7061 You may be reading the same group (or several related groups) from | |
7062 different @sc{nntp} servers. | |
7063 | |
7064 @item | |
7065 You may be getting mail that duplicates articles posted to groups. | |
7066 @end enumerate | |
7067 | |
7068 I'm sure there are other situations that @code{Xref} handling fails as | |
7069 well, but these four are the most common situations. | |
7070 | |
7071 If, and only if, @code{Xref} handling fails for you, then you may | |
7072 consider switching on @dfn{duplicate suppression}. If you do so, Gnus | |
7073 will remember the @code{Message-ID}s of all articles you have read or | |
7074 otherwise marked as read, and then, as if by magic, mark them as read | |
7075 all subsequent times you see them---in @emph{all} groups. Using this | |
7076 mechanism is quite likely to be somewhat inefficient, but not overly | |
7077 so. It's certainly preferable to reading the same articles more than | |
7078 once. | |
7079 | |
7080 Duplicate suppression is not a very subtle instrument. It's more like a | |
7081 sledge hammer than anything else. It works in a very simple | |
7082 fashion---if you have marked an article as read, it adds this Message-ID | |
7083 to a cache. The next time it sees this Message-ID, it will mark the | |
7084 article as read the the @samp{M} mark. It doesn't care what group it | |
7085 saw the article in. | |
7086 | |
7087 @table @code | |
7088 @item gnus-suppress-duplicates | |
7089 @vindex gnus-suppress-duplicates | |
7090 If non-@code{nil}, suppress duplicates. | |
7091 | |
7092 @item gnus-save-duplicate-list | |
7093 @vindex gnus-save-duplicate-list | |
7094 If non-@code{nil}, save the list of duplicates to a file. This will | |
7095 make startup and shutdown take longer, so the default is @code{nil}. | |
7096 However, this means that only duplicate articles that is read in a | |
7097 single Gnus session are suppressed. | |
7098 | |
7099 @item gnus-duplicate-list-length | |
7100 @vindex gnus-duplicate-list-length | |
7101 This variables says how many @code{Message-ID}s to keep in the duplicate | |
7102 suppression list. The default is 10000. | |
7103 | |
7104 @item gnus-duplicate-file | |
7105 @vindex gnus-duplicate-file | |
7106 The name of the file to store the duplicate suppression list. The | |
7107 default is @file{~/News/suppression}. | |
7108 @end table | |
7109 | |
7110 If you have a tendency to stop and start Gnus often, setting | |
7111 @code{gnus-save-duplicate-list} to @code{t} is probably a good idea. If | |
7112 you leave Gnus running for weeks on end, you may have it @code{nil}. On | |
7113 the other hand, saving the list makes startup and shutdown much slower, | |
7114 so that means that if you stop and start Gnus often, you should set | |
7115 @code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up | |
7116 to you to figure out, I think. | |
7117 | |
6083 | 7118 |
6084 @node The Article Buffer | 7119 @node The Article Buffer |
6085 @chapter The Article Buffer | 7120 @chapter The Article Buffer |
6086 @cindex article buffer | 7121 @cindex article buffer |
6087 | 7122 |
6091 | 7126 |
6092 @menu | 7127 @menu |
6093 * Hiding Headers:: Deciding what headers should be displayed. | 7128 * Hiding Headers:: Deciding what headers should be displayed. |
6094 * Using MIME:: Pushing articles through @sc{mime} before reading them. | 7129 * Using MIME:: Pushing articles through @sc{mime} before reading them. |
6095 * Customizing Articles:: Tailoring the look of the articles. | 7130 * Customizing Articles:: Tailoring the look of the articles. |
6096 * Article Keymap:: Keystrokes available in the article buffer | 7131 * Article Keymap:: Keystrokes available in the article buffer. |
6097 * Misc Article:: Other stuff. | 7132 * Misc Article:: Other stuff. |
6098 @end menu | 7133 @end menu |
6099 | 7134 |
6100 | 7135 |
6101 @node Hiding Headers | 7136 @node Hiding Headers |
6229 | 7264 |
6230 @vindex gnus-show-mime | 7265 @vindex gnus-show-mime |
6231 @vindex gnus-show-mime-method | 7266 @vindex gnus-show-mime-method |
6232 @vindex gnus-strict-mime | 7267 @vindex gnus-strict-mime |
6233 @findex metamail-buffer | 7268 @findex metamail-buffer |
6234 Gnus handles @sc{mime} by shoving the articles through | 7269 Gnus handles @sc{mime} by pushing the articles through |
6235 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by | 7270 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by |
6236 default. Set @code{gnus-show-mime} to @code{t} if you want to use | 7271 default. Set @code{gnus-show-mime} to @code{t} if you want to use |
6237 @sc{mime} all the time. However, if @code{gnus-strict-mime} is | 7272 @sc{mime} all the time. However, if @code{gnus-strict-mime} is |
6238 non-@code{nil}, the @sc{mime} method will only be used if there are | 7273 non-@code{nil}, the @sc{mime} method will only be used if there are |
6239 @sc{mime} headers in the article. | 7274 @sc{mime} headers in the article. If you have @code{gnus-show-mime} |
7275 set, then you'll see some unfortunate display glitches in the article | |
7276 buffer. These can't be avoided. | |
6240 | 7277 |
6241 It might be best to just use the toggling functions from the summary | 7278 It might be best to just use the toggling functions from the summary |
6242 buffer to avoid getting nasty surprises. (For instance, you enter the | 7279 buffer to avoid getting nasty surprises. (For instance, you enter the |
6243 group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has | 7280 group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has |
6244 decoded the sound file in the article and some horrible sing-a-long song | 7281 decoded the sound file in the article and some horrible sing-a-long song |
6259 The @code{gnus-article-display-hook} is called after the article has | 7296 The @code{gnus-article-display-hook} is called after the article has |
6260 been inserted into the article buffer. It is meant to handle all | 7297 been inserted into the article buffer. It is meant to handle all |
6261 treatment of the article before it is displayed. | 7298 treatment of the article before it is displayed. |
6262 | 7299 |
6263 @findex gnus-article-maybe-highlight | 7300 @findex gnus-article-maybe-highlight |
6264 By default it contains @code{gnus-article-hide-headers}, | 7301 By default this hook just contains @code{gnus-article-hide-headers}, |
6265 @code{gnus-article-treat-overstrike}, and | 7302 @code{gnus-article-treat-overstrike}, and |
6266 @code{gnus-article-maybe-highlight}, but there are thousands, nay | 7303 @code{gnus-article-maybe-highlight}, but there are thousands, nay |
6267 millions, of functions you can put in this hook. For an overview of | 7304 millions, of functions you can put in this hook. For an overview of |
6268 functions @pxref{Article Highlighting}, @pxref{Article Hiding}, | 7305 functions @pxref{Article Highlighting}, @pxref{Article Hiding}, |
6269 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article | 7306 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article |
6270 Date}. | 7307 Date}. Note that the order of functions in this hook might affect |
7308 things, so you may have to fiddle a bit to get the desired results. | |
6271 | 7309 |
6272 You can, of course, write your own functions. The functions are called | 7310 You can, of course, write your own functions. The functions are called |
6273 from the article buffer, and you can do anything you like, pretty much. | 7311 from the article buffer, and you can do anything you like, pretty much. |
6274 There is no information that you have to keep in the buffer---you can | 7312 There is no information that you have to keep in the buffer---you can |
6275 change everything. However, you shouldn't delete any headers. Instead | 7313 change everything. However, you shouldn't delete any headers. Instead |
6364 | 7402 |
6365 @item gnus-article-mode-hook | 7403 @item gnus-article-mode-hook |
6366 @vindex gnus-article-mode-hook | 7404 @vindex gnus-article-mode-hook |
6367 Hook called in article mode buffers. | 7405 Hook called in article mode buffers. |
6368 | 7406 |
7407 @item gnus-article-mode-syntax-table | |
7408 @vindex gnus-article-mode-syntax-table | |
7409 Syntax table used in article buffers. It is initialized from | |
7410 @code{text-mode-syntax-table}. | |
7411 | |
6369 @vindex gnus-article-mode-line-format | 7412 @vindex gnus-article-mode-line-format |
6370 @item gnus-article-mode-line-format | 7413 @item gnus-article-mode-line-format |
6371 This variable is a format string along the same lines as | 7414 This variable is a format string along the same lines as |
6372 @code{gnus-summary-mode-line-format}. It accepts exactly the same | 7415 @code{gnus-summary-mode-line-format}. It accepts the same |
6373 format specifications as that variable. | 7416 format specifications as that variable, with one extension: |
7417 | |
7418 @table @samp | |
7419 @item w | |
7420 The @dfn{wash status} of the article. This is a short string with one | |
7421 character for each possible article wash operation that may have been | |
7422 performed. | |
7423 @end table | |
7424 | |
6374 @vindex gnus-break-pages | 7425 @vindex gnus-break-pages |
6375 | 7426 |
6376 @item gnus-break-pages | 7427 @item gnus-break-pages |
6377 Controls whether @dfn{page breaking} is to take place. If this variable | 7428 Controls whether @dfn{page breaking} is to take place. If this variable |
6378 is non-@code{nil}, the articles will be divided into pages whenever a | 7429 is non-@code{nil}, the articles will be divided into pages whenever a |
6477 Now, if you've done this, and then this server rejects your article, or | 7528 Now, if you've done this, and then this server rejects your article, or |
6478 this server is down, what do you do then? To override this variable you | 7529 this server is down, what do you do then? To override this variable you |
6479 can use a non-zero prefix to the @kbd{C-c C-c} command to force using | 7530 can use a non-zero prefix to the @kbd{C-c C-c} command to force using |
6480 the ``current'' server for posting. | 7531 the ``current'' server for posting. |
6481 | 7532 |
6482 If you give a zero prefix (i. e., @kbd{C-u 0 C-c C-c}) to that command, | 7533 If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command, |
6483 Gnus will prompt you for what method to use for posting. | 7534 Gnus will prompt you for what method to use for posting. |
6484 | 7535 |
6485 You can also set @code{gnus-post-method} to a list of select methods. | 7536 You can also set @code{gnus-post-method} to a list of select methods. |
6486 If that's the case, Gnus will always prompt you for what method to use | 7537 If that's the case, Gnus will always prompt you for what method to use |
6487 for posting. | 7538 for posting. |
6526 @cindex archived messages | 7577 @cindex archived messages |
6527 @cindex sent messages | 7578 @cindex sent messages |
6528 | 7579 |
6529 Gnus provides a few different methods for storing the mail you send. | 7580 Gnus provides a few different methods for storing the mail you send. |
6530 The default method is to use the @dfn{archive virtual server} to store | 7581 The default method is to use the @dfn{archive virtual server} to store |
6531 the mail. If you want to disable this completely, you should set | 7582 the mail. If you want to disable this completely, the |
6532 @code{gnus-message-archive-group} to @code{nil}. | 7583 @code{gnus-message-archive-group} variable should be @code{nil}, which |
7584 is the default. | |
6533 | 7585 |
6534 @vindex gnus-message-archive-method | 7586 @vindex gnus-message-archive-method |
6535 @code{gnus-message-archive-method} says what virtual server Gnus is to | 7587 @code{gnus-message-archive-method} says what virtual server Gnus is to |
6536 use to store sent messages. It is @code{(nnfolder "archive" | 7588 use to store sent messages. The default is: |
6537 (nnfolder-directory "~/Mail/archive/"))} by default, but you can use any | 7589 |
6538 mail select method (@code{nnml}, @code{nnmbox}, etc.). However, | 7590 @lisp |
6539 @code{nnfolder} is a quite likeable select method for doing this sort of | 7591 (nnfolder "archive" |
6540 thing. If you don't like the default directory chosen, you could say | 7592 (nnfolder-directory "~/Mail/archive/")) |
6541 something like: | 7593 @end lisp |
7594 | |
7595 You can, however, use any mail select method (@code{nnml}, | |
7596 @code{nnmbox}, etc.). @code{nnfolder} is a quite likeable select method | |
7597 for doing this sort of thing, though. If you don't like the default | |
7598 directory chosen, you could say something like: | |
6542 | 7599 |
6543 @lisp | 7600 @lisp |
6544 (setq gnus-message-archive-method | 7601 (setq gnus-message-archive-method |
6545 '(nnfolder "archive" | 7602 '(nnfolder "archive" |
6546 (nnfolder-inhibit-expiry t) | 7603 (nnfolder-inhibit-expiry t) |
6615 group. If the group gets really big and annoying, you can simply rename | 7672 group. If the group gets really big and annoying, you can simply rename |
6616 if (using @kbd{G r} in the group buffer) to something | 7673 if (using @kbd{G r} in the group buffer) to something |
6617 nice---@samp{misc-mail-september-1995}, or whatever. New messages will | 7674 nice---@samp{misc-mail-september-1995}, or whatever. New messages will |
6618 continue to be stored in the old (now empty) group. | 7675 continue to be stored in the old (now empty) group. |
6619 | 7676 |
6620 That's the default method of archiving sent mail. Gnus also offers two | 7677 That's the default method of archiving sent mail. Gnus also a different |
6621 other variables for the people who don't like the default method. In | 7678 way for the people who don't like the default method. In that case you |
6622 that case you should set @code{gnus-message-archive-group} to | 7679 should set @code{gnus-message-archive-group} to @code{nil}; this will |
6623 @code{nil}; this will disable archiving. | 7680 disable archiving. |
6624 | 7681 |
6625 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to | 7682 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to |
6626 use a different value for @code{gnus-message-archive-group} there. | 7683 use a different value for @code{gnus-message-archive-group} there. |
6627 | |
6628 | 7684 |
6629 @table @code | 7685 @table @code |
6630 @item gnus-outgoing-message-group | 7686 @item gnus-outgoing-message-group |
6631 @vindex gnus-outgoing-message-group | 7687 @vindex gnus-outgoing-message-group |
6632 All outgoing messages will be put in this group. If you want to store | 7688 All outgoing messages will be put in this group. If you want to store |
6814 @sc{nntp} server, it could be a virtual group, or it could be your own | 7870 @sc{nntp} server, it could be a virtual group, or it could be your own |
6815 personal mail group. | 7871 personal mail group. |
6816 | 7872 |
6817 A foreign group (or any group, really) is specified by a @dfn{name} and | 7873 A foreign group (or any group, really) is specified by a @dfn{name} and |
6818 a @dfn{select method}. To take the latter first, a select method is a | 7874 a @dfn{select method}. To take the latter first, a select method is a |
6819 list where the first element says what backend to use (eg. @code{nntp}, | 7875 list where the first element says what backend to use (e.g. @code{nntp}, |
6820 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server | 7876 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server |
6821 name}. There may be additional elements in the select method, where the | 7877 name}. There may be additional elements in the select method, where the |
6822 value may have special meaning for the backend in question. | 7878 value may have special meaning for the backend in question. |
6823 | 7879 |
6824 One could say that a select method defines a @dfn{virtual server}---so | 7880 One could say that a select method defines a @dfn{virtual server}---so |
6827 The @dfn{name} of the group is the name the backend will recognize the | 7883 The @dfn{name} of the group is the name the backend will recognize the |
6828 group as. | 7884 group as. |
6829 | 7885 |
6830 For instance, the group @samp{soc.motss} on the @sc{nntp} server | 7886 For instance, the group @samp{soc.motss} on the @sc{nntp} server |
6831 @samp{some.where.edu} will have the name @samp{soc.motss} and select | 7887 @samp{some.where.edu} will have the name @samp{soc.motss} and select |
6832 method @code{(nntp "some.where.edu")}. Gnus will call this group, in | 7888 method @code{(nntp "some.where.edu")}. Gnus will call this group |
6833 all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the | 7889 @samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp} |
6834 @code{nntp} backend just knows this group as @samp{soc.motss}. | 7890 backend just knows this group as @samp{soc.motss}. |
6835 | 7891 |
6836 The different methods all have their peculiarities, of course. | 7892 The different methods all have their peculiarities, of course. |
6837 | 7893 |
6838 @menu | 7894 @menu |
6839 * The Server Buffer:: Making and editing virtual servers. | 7895 * The Server Buffer:: Making and editing virtual servers. |
6859 on the same actual @sc{nntp} server. You tell Gnus which backend to | 7915 on the same actual @sc{nntp} server. You tell Gnus which backend to |
6860 use, and what parameters to set by specifying a @dfn{select method}. | 7916 use, and what parameters to set by specifying a @dfn{select method}. |
6861 | 7917 |
6862 These select methods specifications can sometimes become quite | 7918 These select methods specifications can sometimes become quite |
6863 complicated---say, for instance, that you want to read from the | 7919 complicated---say, for instance, that you want to read from the |
6864 @sc{nntp} server @samp{news.funet.fi} on port number @code{13}, which | 7920 @sc{nntp} server @samp{news.funet.fi} on port number 13, which |
6865 hangs if queried for @sc{nov} headers and has a buggy select. Ahem. | 7921 hangs if queried for @sc{nov} headers and has a buggy select. Ahem. |
6866 Anyways, if you had to specify that for each group that used this | 7922 Anyways, if you had to specify that for each group that used this |
6867 server, that would be too much work, so Gnus offers a way of naming | 7923 server, that would be too much work, so Gnus offers a way of naming |
6868 select methods, which is what you do in the server buffer. | 7924 select methods, which is what you do in the server buffer. |
6869 | 7925 |
6967 @item l | 8023 @item l |
6968 @kindex l (Server) | 8024 @kindex l (Server) |
6969 @findex gnus-server-list-servers | 8025 @findex gnus-server-list-servers |
6970 List all servers (@code{gnus-server-list-servers}). | 8026 List all servers (@code{gnus-server-list-servers}). |
6971 | 8027 |
8028 @item s | |
8029 @kindex s (Server) | |
8030 @findex gnus-server-scan-server | |
8031 Request that the server scan its sources for new articles | |
8032 (@code{gnus-server-scan-server}). This is mainly sensible with mail | |
8033 servers. | |
8034 | |
8035 @item g | |
8036 @kindex g (Server) | |
8037 @findex gnus-server-regenerate-server | |
8038 Request that the server regenerate all its data structures | |
8039 (@code{gnus-server-regenerate-server}). This can be useful if you have | |
8040 a mail backend that has gotten out of synch. | |
8041 | |
6972 @end table | 8042 @end table |
6973 | 8043 |
6974 | 8044 |
6975 @node Example Methods | 8045 @node Example Methods |
6976 @subsection Example Methods | 8046 @subsection Example Methods |
6993 | 8063 |
6994 After these two elements, there may be a arbitrary number of | 8064 After these two elements, there may be a arbitrary number of |
6995 @var{(variable form)} pairs. | 8065 @var{(variable form)} pairs. |
6996 | 8066 |
6997 To go back to the first example---imagine that you want to read from | 8067 To go back to the first example---imagine that you want to read from |
6998 port @code{15} from that machine. This is what the select method should | 8068 port 15 from that machine. This is what the select method should |
6999 look like then: | 8069 look like then: |
7000 | 8070 |
7001 @lisp | 8071 @lisp |
7002 (nntp "news.funet.fi" (nntp-port-number 15)) | 8072 (nntp "news.funet.fi" (nntp-port-number 15)) |
7003 @end lisp | 8073 @end lisp |
7023 (nnmh "public" | 8093 (nnmh "public" |
7024 (nnmh-directory "/usr/information/spool/") | 8094 (nnmh-directory "/usr/information/spool/") |
7025 (nnmh-get-new-mail nil)) | 8095 (nnmh-get-new-mail nil)) |
7026 @end lisp | 8096 @end lisp |
7027 | 8097 |
8098 If you are behind a firewall and only have access to the @sc{nntp} | |
8099 server from the firewall machine, you can instruct Gnus to @code{rlogin} | |
8100 on the firewall machine and telnet from there to the @sc{nntp} server. | |
8101 Doing this can be rather fiddly, but your virtual server definition | |
8102 should probably look something like this: | |
8103 | |
8104 @lisp | |
8105 (nntp "firewall" | |
8106 (nntp-address "the.firewall.machine") | |
8107 (nntp-open-connection-function nntp-open-rlogin) | |
8108 (nntp-end-of-line "\n") | |
8109 (nntp-rlogin-parameters | |
8110 ("telnet" "the.real.nntp.host" "nntp"))) | |
8111 @end lisp | |
8112 | |
8113 | |
7028 | 8114 |
7029 @node Creating a Virtual Server | 8115 @node Creating a Virtual Server |
7030 @subsection Creating a Virtual Server | 8116 @subsection Creating a Virtual Server |
7031 | 8117 |
7032 If you're saving lots of articles in the cache by using persistent | 8118 If you're saving lots of articles in the cache by using persistent |
7049 | 8135 |
7050 Change that to: | 8136 Change that to: |
7051 | 8137 |
7052 @lisp | 8138 @lisp |
7053 (nnspool "cache" | 8139 (nnspool "cache" |
7054 (nnspool-spool-directory "~/News/cache/") | 8140 (nnspool-spool-directory "~/News/cache/") |
7055 (nnspool-nov-directory "~/News/cache/") | 8141 (nnspool-nov-directory "~/News/cache/") |
7056 (nnspool-active-file "~/News/cache/active")) | 8142 (nnspool-active-file "~/News/cache/active")) |
7057 @end lisp | 8143 @end lisp |
7058 | 8144 |
7059 Type @kbd{C-c C-c} to return to the server buffer. If you now press | 8145 Type @kbd{C-c C-c} to return to the server buffer. If you now press |
7060 @kbd{RET} over this virtual server, you should be entered into a browse | 8146 @kbd{RET} over this virtual server, you should be entered into a browse |
7061 buffer, and you should be able to enter any of the groups displayed. | 8147 buffer, and you should be able to enter any of the groups displayed. |
7063 | 8149 |
7064 @node Servers and Methods | 8150 @node Servers and Methods |
7065 @subsection Servers and Methods | 8151 @subsection Servers and Methods |
7066 | 8152 |
7067 Wherever you would normally use a select method | 8153 Wherever you would normally use a select method |
7068 (eg. @code{gnus-secondary-select-method}, in the group select method, | 8154 (e.g. @code{gnus-secondary-select-method}, in the group select method, |
7069 when browsing a foreign server) you can use a virtual server name | 8155 when browsing a foreign server) you can use a virtual server name |
7070 instead. This could potentially save lots of typing. And it's nice all | 8156 instead. This could potentially save lots of typing. And it's nice all |
7071 over. | 8157 over. |
7072 | 8158 |
7073 | 8159 |
7112 @item D | 8198 @item D |
7113 @kindex D (Server) | 8199 @kindex D (Server) |
7114 @findex gnus-server-deny-server | 8200 @findex gnus-server-deny-server |
7115 Mark the current server as unreachable | 8201 Mark the current server as unreachable |
7116 (@code{gnus-server-deny-server}). | 8202 (@code{gnus-server-deny-server}). |
8203 | |
8204 @item M-o | |
8205 @kindex M-o (Server) | |
8206 @findex gnus-server-open-all-servers | |
8207 Open the connections to all servers in the buffer | |
8208 (@code{gnus-server-open-all-servers}). | |
8209 | |
8210 @item M-c | |
8211 @kindex M-c (Server) | |
8212 @findex gnus-server-close-all-servers | |
8213 Close the connections to all servers in the buffer | |
8214 (@code{gnus-server-close-all-servers}). | |
7117 | 8215 |
7118 @item R | 8216 @item R |
7119 @kindex R (Server) | 8217 @kindex R (Server) |
7120 @findex gnus-server-remove-denials | 8218 @findex gnus-server-remove-denials |
7121 Remove all marks to whether Gnus was denied connection from all servers | 8219 Remove all marks to whether Gnus was denied connection from all servers |
7170 @findex nntp-send-authinfo | 8268 @findex nntp-send-authinfo |
7171 @findex nntp-send-mode-reader | 8269 @findex nntp-send-mode-reader |
7172 @code{nntp-server-opened-hook} is run after a connection has been made. | 8270 @code{nntp-server-opened-hook} is run after a connection has been made. |
7173 It can be used to send commands to the @sc{nntp} server after it has | 8271 It can be used to send commands to the @sc{nntp} server after it has |
7174 been contacted. By default is sends the command @code{MODE READER} to | 8272 been contacted. By default is sends the command @code{MODE READER} to |
7175 the server with the @code{nntp-send-mode-reader} function. Another | 8273 the server with the @code{nntp-send-mode-reader} function. |
7176 popular function is @code{nntp-send-authinfo}, which will prompt you for | 8274 |
7177 an @sc{nntp} password and stuff. | 8275 @item nntp-authinfo-function |
8276 @vindex nntp-authinfo-function | |
8277 This function will be used to send @samp{AUTHINFO} to the @sc{nntp} | |
8278 server. Available functions include: | |
8279 | |
8280 @table @code | |
8281 @item nntp-send-authinfo | |
8282 @findex nntp-send-authinfo | |
8283 This function will used you current login name as the user name and will | |
8284 prompt you for the password. This is the default. | |
8285 | |
8286 @item nntp-send-nosy-authinfo | |
8287 @findex nntp-send-nosy-authinfo | |
8288 This function will prompt you for both user name and password. | |
8289 | |
8290 @item nntp-send-authinfo-from-file | |
8291 @findex nntp-send-authinfo-from-file | |
8292 This function will use your current login name as the user name and will | |
8293 read the @sc{nntp} password from @file{~/.nntp-authinfo}. | |
8294 @end table | |
7178 | 8295 |
7179 @item nntp-server-action-alist | 8296 @item nntp-server-action-alist |
7180 @vindex nntp-server-action-alist | 8297 @vindex nntp-server-action-alist |
7181 This is an list of regexps to match on server types and actions to be | 8298 This is an list of regexps to match on server types and actions to be |
7182 taken when matches are made. For instance, if you want Gnus to beep | 8299 taken when matches are made. For instance, if you want Gnus to beep |
7244 This hook is run as the last step when connecting to an @sc{nntp} | 8361 This hook is run as the last step when connecting to an @sc{nntp} |
7245 server. | 8362 server. |
7246 | 8363 |
7247 @findex nntp-open-rlogin | 8364 @findex nntp-open-rlogin |
7248 @findex nntp-open-network-stream | 8365 @findex nntp-open-network-stream |
7249 @item nntp-open-server-function | 8366 @item nntp-open-connection-function |
7250 @vindex nntp-open-server-function | 8367 @vindex nntp-open-connection-function |
7251 This function is used to connect to the remote system. Two pre-made | 8368 This function is used to connect to the remote system. Two pre-made |
7252 functions are @code{nntp-open-network-stream}, which is the default, and | 8369 functions are @code{nntp-open-network-stream}, which is the default, and |
7253 simply connects to some port or other on the remote system. The other | 8370 simply connects to some port or other on the remote system. The other |
7254 is @code{nntp-open-rlogin}, which does an rlogin on the remote system, | 8371 is @code{nntp-open-rlogin}, which does an rlogin on the remote system, |
7255 and then does a telnet to the @sc{nntp} server available there. | 8372 and then does a telnet to the @sc{nntp} server available there. |
7256 | 8373 |
7257 @item nntp-rlogin-parameters | 8374 @item nntp-rlogin-parameters |
7258 @vindex nntp-rlogin-parameters | 8375 @vindex nntp-rlogin-parameters |
7259 If you use @code{nntp-open-rlogin} as the | 8376 If you use @code{nntp-open-rlogin} as the |
7260 @code{nntp-open-server-function}, this list will be used as the | 8377 @code{nntp-open-connection-function}, this list will be used as the |
7261 parameter list given to @code{rsh}. | 8378 parameter list given to @code{rsh}. |
7262 | 8379 |
7263 @item nntp-end-of-line | 8380 @item nntp-end-of-line |
7264 @vindex nntp-end-of-line | 8381 @vindex nntp-end-of-line |
7265 String to use as end-of-line markers when talking to the @sc{nntp} | 8382 String to use as end-of-line markers when talking to the @sc{nntp} |
7313 | 8430 |
7314 @item nntp-prepare-server-hook | 8431 @item nntp-prepare-server-hook |
7315 @vindex nntp-prepare-server-hook | 8432 @vindex nntp-prepare-server-hook |
7316 A hook run before attempting to connect to an @sc{nntp} server. | 8433 A hook run before attempting to connect to an @sc{nntp} server. |
7317 | 8434 |
7318 @item nntp-async-number | |
7319 @vindex nntp-async-number | |
7320 How many articles should be pre-fetched when in asynchronous mode. If | |
7321 this variable is @code{t}, @code{nntp} will pre-fetch all the articles | |
7322 that it can without bound. If it is @code{nil}, no pre-fetching will be | |
7323 made. | |
7324 | |
7325 @item nntp-warn-about-losing-connection | 8435 @item nntp-warn-about-losing-connection |
7326 @vindex nntp-warn-about-losing-connection | 8436 @vindex nntp-warn-about-losing-connection |
7327 If this variable is non-@code{nil}, some noise will be made when a | 8437 If this variable is non-@code{nil}, some noise will be made when a |
7328 server closes connection. | 8438 server closes connection. |
7329 | 8439 |
7334 @subsection News Spool | 8444 @subsection News Spool |
7335 @cindex nnspool | 8445 @cindex nnspool |
7336 @cindex news spool | 8446 @cindex news spool |
7337 | 8447 |
7338 Subscribing to a foreign group from the local spool is extremely easy, | 8448 Subscribing to a foreign group from the local spool is extremely easy, |
7339 and might be useful, for instance, to speed up reading groups like | 8449 and might be useful, for instance, to speed up reading groups that |
7340 @samp{alt.binaries.pictures.furniture}. | 8450 contain very big articles---@samp{alt.binaries.pictures.furniture}, for |
8451 instance. | |
7341 | 8452 |
7342 Anyways, you just specify @code{nnspool} as the method and @samp{} (or | 8453 Anyways, you just specify @code{nnspool} as the method and @samp{} (or |
7343 anything else) as the address. | 8454 anything else) as the address. |
7344 | 8455 |
7345 If you have access to a local spool, you should probably use that as the | 8456 If you have access to a local spool, you should probably use that as the |
7416 * Mail Backend Variables:: Variables for customizing mail handling. | 8527 * Mail Backend Variables:: Variables for customizing mail handling. |
7417 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. | 8528 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. |
7418 * Mail and Procmail:: Reading mail groups that procmail create. | 8529 * Mail and Procmail:: Reading mail groups that procmail create. |
7419 * Incorporating Old Mail:: What about the old mail you have? | 8530 * Incorporating Old Mail:: What about the old mail you have? |
7420 * Expiring Mail:: Getting rid of unwanted mail. | 8531 * Expiring Mail:: Getting rid of unwanted mail. |
8532 * Washing Mail:: Removing gruft from the mail you get. | |
7421 * Duplicates:: Dealing with duplicated mail. | 8533 * Duplicates:: Dealing with duplicated mail. |
7422 * Not Reading Mail:: Using mail backends for reading other files. | 8534 * Not Reading Mail:: Using mail backends for reading other files. |
7423 * Choosing a Mail Backend:: Gnus can read a variety of mail formats. | 8535 * Choosing a Mail Backend:: Gnus can read a variety of mail formats. |
7424 @end menu | 8536 @end menu |
7425 | 8537 |
7447 | 8559 |
7448 You will probably want to split the mail into several groups, though: | 8560 You will probably want to split the mail into several groups, though: |
7449 | 8561 |
7450 @lisp | 8562 @lisp |
7451 (setq nnmail-split-methods | 8563 (setq nnmail-split-methods |
7452 '(("junk" "^From:.*Lars Ingebrigtsen") | 8564 '(("junk" "^From:.*Lars Ingebrigtsen") |
7453 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") | 8565 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") |
7454 ("other" ""))) | 8566 ("other" ""))) |
7455 @end lisp | 8567 @end lisp |
7456 | 8568 |
7457 This will result in three new mail groups being created: | 8569 This will result in three new @code{nnml} mail groups being created: |
7458 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the | 8570 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the |
7459 mail that doesn't fit into the first two groups will be placed in the | 8571 mail that doesn't fit into the first two groups will be placed in the |
7460 latter group. | 8572 latter group. |
7461 | 8573 |
7462 This should be sufficient for reading mail with Gnus. You might want to | 8574 This should be sufficient for reading mail with Gnus. You might want to |
7484 these lists is the name of the mail group (they do not have to be called | 8596 these lists is the name of the mail group (they do not have to be called |
7485 something beginning with @samp{mail}, by the way), and the second | 8597 something beginning with @samp{mail}, by the way), and the second |
7486 element is a regular expression used on the header of each mail to | 8598 element is a regular expression used on the header of each mail to |
7487 determine if it belongs in this mail group. | 8599 determine if it belongs in this mail group. |
7488 | 8600 |
8601 If the first element is the special symbol @code{junk}, then messages | |
8602 that match the regexp will disappear into the aether. Use with | |
8603 extreme caution. | |
8604 | |
7489 The second element can also be a function. In that case, it will be | 8605 The second element can also be a function. In that case, it will be |
7490 called narrowed to the headers with the first element of the rule as the | 8606 called narrowed to the headers with the first element of the rule as the |
7491 argument. It should return a non-@code{nil} value if it thinks that the | 8607 argument. It should return a non-@code{nil} value if it thinks that the |
7492 mail belongs in that group. | 8608 mail belongs in that group. |
7493 | 8609 |
7494 The last of these groups should always be a general one, and the regular | 8610 The last of these groups should always be a general one, and the regular |
7495 expression should @emph{always} be @samp{} so that it matches any | 8611 expression should @emph{always} be @samp{} so that it matches any mails |
7496 mails that haven't been matched by any of the other regexps. | 8612 that haven't been matched by any of the other regexps. (These rules are |
8613 processed from the beginning of the alist toward the end. The first | |
8614 rule to make a match will "win", unless you have crossposting enabled. | |
8615 In that case, all matching rules will "win".) | |
7497 | 8616 |
7498 If you like to tinker with this yourself, you can set this variable to a | 8617 If you like to tinker with this yourself, you can set this variable to a |
7499 function of your choice. This function will be called without any | 8618 function of your choice. This function will be called without any |
7500 arguments in a buffer narrowed to the headers of an incoming mail | 8619 arguments in a buffer narrowed to the headers of an incoming mail |
7501 message. The function should return a list of groups names that it | 8620 message. The function should return a list of groups names that it |
7518 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to | 8637 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to |
7519 the crossposted articles. However, not all files systems support hard | 8638 the crossposted articles. However, not all files systems support hard |
7520 links. If that's the case for you, set | 8639 links. If that's the case for you, set |
7521 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This | 8640 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This |
7522 variable is @code{add-name-to-file} by default.) | 8641 variable is @code{add-name-to-file} by default.) |
8642 | |
8643 @kindex M-x nnmail-split-history | |
8644 @kindex nnmail-split-history | |
8645 If you wish to see where the previous mail split put the messages, you | |
8646 can use the @kbd{M-x nnmail-split-history} command. | |
7523 | 8647 |
7524 Gnus gives you all the opportunity you could possibly want for shooting | 8648 Gnus gives you all the opportunity you could possibly want for shooting |
7525 yourself in the foot. Let's say you create a group that will contain | 8649 yourself in the foot. Let's say you create a group that will contain |
7526 all the mail you get from your boss. And then you accidentally | 8650 all the mail you get from your boss. And then you accidentally |
7527 unsubscribe from the group. Gnus will still put all the mail from your | 8651 unsubscribe from the group. Gnus will still put all the mail from your |
7563 @code{MAILHOST} environment variable. If the POP server needs a | 8687 @code{MAILHOST} environment variable. If the POP server needs a |
7564 password, you can either set @code{nnmail-pop-password-required} to | 8688 password, you can either set @code{nnmail-pop-password-required} to |
7565 @code{t} and be prompted for the password, or set | 8689 @code{t} and be prompted for the password, or set |
7566 @code{nnmail-pop-password} to the password itself. | 8690 @code{nnmail-pop-password} to the password itself. |
7567 | 8691 |
8692 @code{nnmail-spool-file} can also be a list of mailboxes. | |
8693 | |
8694 Your Emacs has to have been configured with @samp{--with-pop} before | |
8695 compilation. This is the default, but some installations have it | |
8696 switched off. | |
8697 | |
7568 When you use a mail backend, Gnus will slurp all your mail from your | 8698 When you use a mail backend, Gnus will slurp all your mail from your |
7569 inbox and plonk it down in your home directory. Gnus doesn't move any | 8699 inbox and plonk it down in your home directory. Gnus doesn't move any |
7570 mail if you're not using a mail backend---you have to do a lot of magic | 8700 mail if you're not using a mail backend---you have to do a lot of magic |
7571 invocations first. At the time when you have finished drawing the | 8701 invocations first. At the time when you have finished drawing the |
7572 pentagram, lightened the candles, and sacrificed the goat, you really | 8702 pentagram, lightened the candles, and sacrificed the goat, you really |
7590 | 8720 |
7591 @vindex nnmail-prepare-incoming-hook | 8721 @vindex nnmail-prepare-incoming-hook |
7592 @item nnmail-prepare-incoming-hook | 8722 @item nnmail-prepare-incoming-hook |
7593 This is run in a buffer that holds all the new incoming mail, and can be | 8723 This is run in a buffer that holds all the new incoming mail, and can be |
7594 used for, well, anything, really. | 8724 used for, well, anything, really. |
8725 | |
8726 @vindex nnmail-split-hook | |
8727 @item nnmail-split-hook | |
8728 @findex article-decode-rfc1522 | |
8729 @findex RFC1522 decoding | |
8730 Hook run in the buffer where the mail headers of each message is kept | |
8731 just before the splitting based on these headers is done. The hook is | |
8732 free to modify the buffer contents in any way it sees fit---the buffer | |
8733 is discarded after the splitting has been done, and no changes performed | |
8734 in the buffer will show up in any files. @code{gnus-article-decode-rfc1522} | |
8735 is one likely function to add to this hook. | |
7595 | 8736 |
7596 @vindex nnmail-pre-get-new-mail-hook | 8737 @vindex nnmail-pre-get-new-mail-hook |
7597 @vindex nnmail-post-get-new-mail-hook | 8738 @vindex nnmail-post-get-new-mail-hook |
7598 @item nnmail-pre-get-new-mail-hook | 8739 @item nnmail-pre-get-new-mail-hook |
7599 @itemx nnmail-post-get-new-mail-hook | 8740 @itemx nnmail-post-get-new-mail-hook |
7622 @item nnmail-movemail-program | 8763 @item nnmail-movemail-program |
7623 @vindex nnmail-movemail-program | 8764 @vindex nnmail-movemail-program |
7624 This program is executed to move mail from the user's inbox to her home | 8765 This program is executed to move mail from the user's inbox to her home |
7625 directory. The default is @samp{movemail}. | 8766 directory. The default is @samp{movemail}. |
7626 | 8767 |
8768 This can also be a function. In that case, the function will be called | |
8769 with two parameters -- the name of the inbox, and the file to be moved | |
8770 to. | |
8771 | |
7627 @item nnmail-delete-incoming | 8772 @item nnmail-delete-incoming |
7628 @vindex nnmail-delete-incoming | 8773 @vindex nnmail-delete-incoming |
7629 @cindex incoming mail files | 8774 @cindex incoming mail files |
7630 @cindex deleting incoming files | 8775 @cindex deleting incoming files |
7631 If non-@code{nil}, the mail backends will delete the temporary incoming | 8776 If non-@code{nil}, the mail backends will delete the temporary incoming |
7632 file after splitting mail into the proper groups. This is @code{nil} by | 8777 file after splitting mail into the proper groups. This is @code{nil} by |
7633 default for reasons of security. | 8778 default for reasons of security. |
7634 | 8779 |
8780 @c Since Red Gnus is an alpha release, it is to be expected to lose mail. | |
8781 (No Gnus release since (ding) Gnus 0.10 (or something like that) have | |
8782 lost mail, I think, but that's not the point. (Except certain versions | |
8783 of Red Gnus.)) By not deleting the Incoming* files, one can be sure to | |
8784 not lose mail -- if Gnus totally whacks out, one can always recover what | |
8785 was lost. | |
8786 | |
8787 Delete the @file{Incoming*} files at will. | |
8788 | |
7635 @item nnmail-use-long-file-names | 8789 @item nnmail-use-long-file-names |
7636 @vindex nnmail-use-long-file-names | 8790 @vindex nnmail-use-long-file-names |
7637 If non-@code{nil}, the mail backends will use long file and directory | 8791 If non-@code{nil}, the mail backends will use long file and directory |
7638 names. Groups like @samp{mail.misc} will end up in directories like | 8792 names. Groups like @samp{mail.misc} will end up in directories like |
7639 @file{mail.misc/}. If it is @code{nil}, the same group will end up in | 8793 @file{mail.misc/}. If it is @code{nil}, the same group will end up in |
7655 @vindex nnmail-split-fancy | 8809 @vindex nnmail-split-fancy |
7656 @findex nnmail-split-fancy | 8810 @findex nnmail-split-fancy |
7657 If the rather simple, standard method for specifying how to split mail | 8811 If the rather simple, standard method for specifying how to split mail |
7658 doesn't allow you to do what you want, you can set | 8812 doesn't allow you to do what you want, you can set |
7659 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can | 8813 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can |
7660 play with the @code{nnmail-split-fancy} variable. | 8814 play with the @code{nnmail-split-fancy} variable. |
7661 | 8815 |
7662 Let's look at an example value of this variable first: | 8816 Let's look at an example value of this variable first: |
7663 | 8817 |
7664 @lisp | 8818 @lisp |
7665 ;; Messages from the mailer daemon are not crossposted to any of | 8819 ;; Messages from the mailer daemon are not crossposted to any of |
7676 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") | 8830 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") |
7677 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") | 8831 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") |
7678 ;; People... | 8832 ;; People... |
7679 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen")) | 8833 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen")) |
7680 ;; Unmatched mail goes to the catch all group. | 8834 ;; Unmatched mail goes to the catch all group. |
7681 "misc.misc"))") | 8835 "misc.misc") |
7682 @end lisp | 8836 @end lisp |
7683 | 8837 |
7684 This variable has the format of a @dfn{split}. A split is a (possibly) | 8838 This variable has the format of a @dfn{split}. A split is a (possibly) |
7685 recursive structure where each split may contain other splits. Here are | 8839 recursive structure where each split may contain other splits. Here are |
7686 the four possible split syntaxes: | 8840 the five possible split syntaxes: |
7687 | 8841 |
7688 @table @dfn | 8842 @enumerate |
7689 | 8843 |
7690 @item GROUP | 8844 @item |
7691 If the split is a string, that will be taken as a group name. | 8845 @samp{group}: If the split is a string, that will be taken as a group name. |
7692 | 8846 |
7693 @item (FIELD VALUE SPLIT) | 8847 @item |
7694 If the split is a list, and the first element is a string, then that | 8848 @var{(FIELD VALUE SPLIT)}: If the split is a list, and the first |
7695 means that if header FIELD (a regexp) contains VALUE (also a regexp), | 8849 element is a string, then that means that if header FIELD (a regexp) |
7696 then store the message as specified by SPLIT. | 8850 contains VALUE (also a regexp), then store the message as specified by |
7697 | 8851 SPLIT. |
7698 @item (| SPLIT...) | 8852 |
7699 If the split is a list, and the first element is @code{|} (vertical | 8853 @item |
7700 bar), then process each SPLIT until one of them matches. A SPLIT is | 8854 @var{(| SPLIT...)}: If the split is a list, and the first element is |
7701 said to match if it will cause the mail message to be stored in one or | 8855 @code{|} (vertical bar), then process each SPLIT until one of them |
7702 more groups. | 8856 matches. A SPLIT is said to match if it will cause the mail message to |
7703 | 8857 be stored in one or more groups. |
7704 @item (& SPLIT...) | 8858 |
7705 If the split is a list, and the first element is @code{&}, then process | 8859 @item |
7706 all SPLITs in the list. | 8860 @var{(& SPLIT...)}: If the split is a list, and the first element is |
7707 @end table | 8861 @code{&}, then process all SPLITs in the list. |
7708 | 8862 |
7709 In these splits, FIELD must match a complete field name. VALUE must | 8863 @item |
7710 match a complete word according to the fundamental mode syntax table. | 8864 @code{junk}: If the split is the symbol @code{junk}, then don't save |
7711 You can use @code{.*} in the regexps to match partial field names or | 8865 this message anywhere. |
7712 words. | 8866 |
8867 @item | |
8868 @var{(: function arg1 arg2 ...)}: If the split is a list, and the first | |
8869 element is @code{:}, then the second element will be called as a | |
8870 function with @var{args} given as arguments. The function should return | |
8871 a SPLIT. | |
8872 | |
8873 @end enumerate | |
8874 | |
8875 In these splits, @var{FIELD} must match a complete field name. | |
8876 @var{VALUE} must match a complete word according to the fundamental mode | |
8877 syntax table. You can use @code{.*} in the regexps to match partial | |
8878 field names or words. In other words, all @var{VALUE}'s are wrapped in | |
8879 @samp{\<} and @samp{\>} pairs. | |
7713 | 8880 |
7714 @vindex nnmail-split-abbrev-alist | 8881 @vindex nnmail-split-abbrev-alist |
7715 FIELD and VALUE can also be lisp symbols, in that case they are expanded | 8882 @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they |
7716 as specified by the variable @code{nnmail-split-abbrev-alist}. This is | 8883 are expanded as specified by the variable |
7717 an alist of cons cells, where the car of the cells contains the key, and | 8884 @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where |
7718 the cdr contains a string. | 8885 the car of the cells contains the key, and the cdr contains a string. |
7719 | 8886 |
7720 @vindex nnmail-split-fancy-syntax-table | 8887 @vindex nnmail-split-fancy-syntax-table |
7721 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect | 8888 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect |
7722 when all this splitting is performed. | 8889 when all this splitting is performed. |
8890 | |
8891 If you want to have Gnus create groups dynamically based on some | |
8892 information in the headers, you can say things like: | |
8893 | |
8894 @example | |
8895 (any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1") | |
8896 @end example | |
8897 | |
8898 That is, do @code{replace-match}-like substitions in the group names. | |
7723 | 8899 |
7724 | 8900 |
7725 @node Mail and Procmail | 8901 @node Mail and Procmail |
7726 @subsection Mail and Procmail | 8902 @subsection Mail and Procmail |
7727 @cindex procmail | 8903 @cindex procmail |
7781 directory (which you shouldn't do), you should set | 8957 directory (which you shouldn't do), you should set |
7782 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from | 8958 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from |
7783 ever expiring the final article in a mail newsgroup. This is quite, | 8959 ever expiring the final article in a mail newsgroup. This is quite, |
7784 quite important. | 8960 quite important. |
7785 | 8961 |
8962 Here's an example setup: The incoming spools are located in | |
8963 @file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming | |
8964 spool files have the same names as the equivalent groups). The | |
8965 @code{nnfolder} backend is to be used as the mail interface, and the | |
8966 @code{nnfolder} directory is @file{~/fMail/}. | |
8967 | |
8968 @lisp | |
8969 (setq nnfolder-directory "~/fMail/") | |
8970 (setq nnmail-spool-file 'procmail) | |
8971 (setq nnmail-procmail-directory "~/incoming/") | |
8972 (setq gnus-secondary-select-methods '((nnfolder ""))) | |
8973 (setq nnmail-procmail-suffix "") | |
8974 @end lisp | |
8975 | |
7786 | 8976 |
7787 @node Incorporating Old Mail | 8977 @node Incorporating Old Mail |
7788 @subsection Incorporating Old Mail | 8978 @subsection Incorporating Old Mail |
7789 | 8979 |
7790 Most people have lots of old mail stored in various file formats. If | 8980 Most people have lots of old mail stored in various file formats. If |
7863 match the regular expression @code{gnus-auto-expirable-newsgroups} will | 9053 match the regular expression @code{gnus-auto-expirable-newsgroups} will |
7864 have all articles that you read marked as expirable automatically. All | 9054 have all articles that you read marked as expirable automatically. All |
7865 articles that are marked as expirable have an @samp{E} in the first | 9055 articles that are marked as expirable have an @samp{E} in the first |
7866 column in the summary buffer. | 9056 column in the summary buffer. |
7867 | 9057 |
9058 Note that making a group auto-expirable don't mean that all read | |
9059 articles are expired---only the articles that are marked as expirable | |
9060 will be expired. Also note the using the @kbd{d} command won't make | |
9061 groups expirable---only semi-automatic marking of articles as read will | |
9062 mark the articles as expirable in auto-expirable groups. | |
9063 | |
7868 Let's say you subscribe to a couple of mailing lists, and you want the | 9064 Let's say you subscribe to a couple of mailing lists, and you want the |
7869 articles you have read to disappear after a while: | 9065 articles you have read to disappear after a while: |
7870 | 9066 |
7871 @lisp | 9067 @lisp |
7872 (setq gnus-auto-expirable-newsgroups | 9068 (setq gnus-auto-expirable-newsgroups |
7873 "mail.nonsense-list\\|mail.nice-list") | 9069 "mail.nonsense-list\\|mail.nice-list") |
7874 @end lisp | 9070 @end lisp |
7875 | 9071 |
7876 Another way to have auto-expiry happen is to have the element | 9072 Another way to have auto-expiry happen is to have the element |
7877 @code{auto-expire} in the group parameters of the group. | 9073 @code{auto-expire} in the group parameters of the group. |
9074 | |
9075 If you use adaptive scoring (@pxref{Adaptive Scoring}) and | |
9076 auto-expiring, you'll have problems. Auto-expiring and adaptive scoring | |
9077 doesn't really mix very well. | |
7878 | 9078 |
7879 @vindex nnmail-expiry-wait | 9079 @vindex nnmail-expiry-wait |
7880 The @code{nnmail-expiry-wait} variable supplies the default time an | 9080 The @code{nnmail-expiry-wait} variable supplies the default time an |
7881 expirable article has to live. The default is seven days. | 9081 expirable article has to live. The default is seven days. |
7882 | 9082 |
7929 crying to me when you discover that the regexp you used matched the | 9129 crying to me when you discover that the regexp you used matched the |
7930 wrong group and all your important mail has disappeared. Be a | 9130 wrong group and all your important mail has disappeared. Be a |
7931 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable | 9131 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable |
7932 with! So there! | 9132 with! So there! |
7933 | 9133 |
9134 Most people make most of their mail groups total-expirable, though. | |
9135 | |
9136 | |
9137 @node Washing Mail | |
9138 @subsection Washing Mail | |
9139 @cindex mail washing | |
9140 @cindex list server brain damage | |
9141 @cindex incoming mail treatment | |
9142 | |
9143 Mailers and list servers are notorious for doing all sorts of really, | |
9144 really stupid things with mail. ``Hey, RFC822 doesn't explicitly | |
9145 prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the | |
9146 end of all lines passing through our server, so let's do that!!!!1!'' | |
9147 Yes, but RFC822 wasn't designed to be read by morons. Things that were | |
9148 considered to be self-evident were not discussed. So. Here we are. | |
9149 | |
9150 Case in point: The German version of Microsoft Exchange adds @samp{AW: | |
9151 } to the subjects of replies instead of @samp{Re: }. I could pretend to | |
9152 be shocked and dismayed by this, but I haven't got the energy. It is to | |
9153 laugh. | |
9154 | |
9155 Gnus provides a plethora of functions for washing articles while | |
9156 displaying them, but it might be nicer to do the filtering before | |
9157 storing the mail to disc. For that purpose, we have three hooks and | |
9158 various functions that can be put in these hooks. | |
9159 | |
9160 @table @code | |
9161 @item nnmail-prepare-incoming-hook | |
9162 @vindex nnmail-prepare-incoming-hook | |
9163 This hook is called before doing anything with the mail and is meant for | |
9164 grand, sweeping gestures. Functions to be used include: | |
9165 | |
9166 @table @code | |
9167 @item nnheader-ms-strip-cr | |
9168 @findex nnheader-ms-strip-cr | |
9169 Remove trailing carriage returns from each line. This is default on | |
9170 Emacs running on MS machines. | |
9171 | |
9172 @end table | |
9173 | |
9174 @item nnmail-prepare-incoming-header-hook | |
9175 @vindex nnmail-prepare-incoming-header-hook | |
9176 This hook is called narrowed to each header. It can be used when | |
9177 cleaning up the headers. Functions that can be used include: | |
9178 | |
9179 @table @code | |
9180 @item nnmail-remove-leading-whitespace | |
9181 @findex nnmail-remove-leading-whitespace | |
9182 Clear leading white space that ``helpful'' listservs have added to the | |
9183 headers too make them look nice. Aaah. | |
9184 | |
9185 @item nnmail-remove-list-identifiers | |
9186 @findex nnmail-remove-list-identifiers | |
9187 Some list servers add an identifier---for example, @samp{(idm)}---to the | |
9188 beginning of all @code{Subject} headers. I'm sure that's nice for | |
9189 people who use stone age mail readers. This function will remove | |
9190 strings that match the @code{nnmail-list-identifiers} regexp, which can | |
9191 also be a list of regexp. | |
9192 | |
9193 For instance, if you want to remove the @samp{(idm)} and the | |
9194 @samp{nagnagnag} identifiers: | |
9195 | |
9196 @lisp | |
9197 (setq nnmail-list-identifiers | |
9198 '("(idm)" "nagnagnag")) | |
9199 @end lisp | |
9200 | |
9201 @item nnmail-remove-tabs | |
9202 @findex nnmail-remove-tabs | |
9203 Translate all @samp{TAB} characters into @samp{SPACE} characters. | |
9204 | |
9205 @end table | |
9206 | |
9207 @item nnmail-prepare-incoming-message-hook | |
9208 @vindex nnmail-prepare-incoming-message-hook | |
9209 This hook is called narrowed to each message. Functions to be used | |
9210 include: | |
9211 | |
9212 @table @code | |
9213 @item article-de-quoted-unreadable | |
9214 @findex article-de-quoted-unreadable | |
9215 Decode Quoted Readable encoding. | |
9216 | |
9217 @end table | |
9218 @end table | |
9219 | |
7934 | 9220 |
7935 @node Duplicates | 9221 @node Duplicates |
7936 @subsection Duplicates | 9222 @subsection Duplicates |
7937 | 9223 |
7938 @vindex nnmail-treat-duplicates | 9224 @vindex nnmail-treat-duplicates |
7940 @vindex nnmail-message-id-cache-file | 9226 @vindex nnmail-message-id-cache-file |
7941 @cindex duplicate mails | 9227 @cindex duplicate mails |
7942 If you are a member of a couple of mailing list, you will sometime | 9228 If you are a member of a couple of mailing list, you will sometime |
7943 receive two copies of the same mail. This can be quite annoying, so | 9229 receive two copies of the same mail. This can be quite annoying, so |
7944 @code{nnmail} checks for and treats any duplicates it might find. To do | 9230 @code{nnmail} checks for and treats any duplicates it might find. To do |
7945 this, it keeps a cache of old @code{Message-ID}s - | 9231 this, it keeps a cache of old @code{Message-ID}s--- |
7946 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by | 9232 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by |
7947 default. The approximate maximum number of @code{Message-ID}s stored | 9233 default. The approximate maximum number of @code{Message-ID}s stored |
7948 there is controlled by the @code{nnmail-message-id-cache-length} | 9234 there is controlled by the @code{nnmail-message-id-cache-length} |
7949 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be | 9235 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be |
7950 stored.) If all this sounds scary to you, you can set | 9236 stored.) If all this sounds scary to you, you can set |
8159 @findex nnml-generate-nov-databases | 9445 @findex nnml-generate-nov-databases |
8160 If your @code{nnml} groups and @sc{nov} files get totally out of whack, | 9446 If your @code{nnml} groups and @sc{nov} files get totally out of whack, |
8161 you can do a complete update by typing @kbd{M-x | 9447 you can do a complete update by typing @kbd{M-x |
8162 nnml-generate-nov-databases}. This command will trawl through the | 9448 nnml-generate-nov-databases}. This command will trawl through the |
8163 entire @code{nnml} hierarchy, looking at each and every article, so it | 9449 entire @code{nnml} hierarchy, looking at each and every article, so it |
8164 might take a while to complete. | 9450 might take a while to complete. A better interface to this |
9451 functionality can be found in the server buffer (@pxref{Server | |
9452 Commands}). | |
8165 | 9453 |
8166 | 9454 |
8167 @node MH Spool | 9455 @node MH Spool |
8168 @subsubsection MH Spool | 9456 @subsubsection MH Spool |
8169 @cindex nnmh | 9457 @cindex nnmh |
8241 Gnus can do more than just read news or mail. The methods described | 9529 Gnus can do more than just read news or mail. The methods described |
8242 below allow Gnus to view directories and files as if they were | 9530 below allow Gnus to view directories and files as if they were |
8243 newsgroups. | 9531 newsgroups. |
8244 | 9532 |
8245 @menu | 9533 @menu |
8246 * Directory Groups:: You can read a directory as if it was a newsgroup. | 9534 * Directory Groups:: You can read a directory as if it was a newsgroup. |
8247 * Anything Groups:: Dired? Who needs dired? | 9535 * Anything Groups:: Dired? Who needs dired? |
8248 * Document Groups:: Single files can be the basis of a group. | 9536 * Document Groups:: Single files can be the basis of a group. |
8249 * SOUP:: Reading @sc{SOUP} packets ``offline''. | 9537 * SOUP:: Reading @sc{SOUP} packets ``offline''. |
9538 * Web Searches:: Creating groups from articles that match a string. | |
9539 * Mail-To-News Gateways:: Posting articles via mail-to-news gateways. | |
8250 @end menu | 9540 @end menu |
8251 | 9541 |
8252 | 9542 |
8253 @node Directory Groups | 9543 @node Directory Groups |
8254 @subsection Directory Groups | 9544 @subsection Directory Groups |
8262 This might be an opportune moment to mention @code{ange-ftp}, that most | 9552 This might be an opportune moment to mention @code{ange-ftp}, that most |
8263 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I | 9553 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I |
8264 didn't think much about it---a backend to read directories. Big deal. | 9554 didn't think much about it---a backend to read directories. Big deal. |
8265 | 9555 |
8266 @code{ange-ftp} changes that picture dramatically. For instance, if you | 9556 @code{ange-ftp} changes that picture dramatically. For instance, if you |
8267 enter @file{"/ftp.hpc.uh.edu:/pub/emacs/ding-list/"} as the the | 9557 enter the @code{ange-ftp} file name |
8268 directory name, ange-ftp will actually allow you to read this directory | 9558 @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the the directory name, |
8269 over at @samp{sina} as a newsgroup. Distributed news ahoy! | 9559 @code{ange-ftp} will actually allow you to read this directory over at |
9560 @samp{sina} as a newsgroup. Distributed news ahoy! | |
8270 | 9561 |
8271 @code{nndir} will use @sc{nov} files if they are present. | 9562 @code{nndir} will use @sc{nov} files if they are present. |
8272 | 9563 |
8273 @code{nndir} is a ``read-only'' backend---you can't delete or expire | 9564 @code{nndir} is a ``read-only'' backend---you can't delete or expire |
8274 articles with this method. You can use @code{nnmh} or @code{nnml} for | 9565 articles with this method. You can use @code{nnmh} or @code{nnml} for |
8290 a group, @code{nneething} must create ``headers'' that Gnus can use. | 9581 a group, @code{nneething} must create ``headers'' that Gnus can use. |
8291 After all, Gnus is a newsreader, in case you're | 9582 After all, Gnus is a newsreader, in case you're |
8292 forgetting. @code{nneething} does this in a two-step process. First, it | 9583 forgetting. @code{nneething} does this in a two-step process. First, it |
8293 snoops each file in question. If the file looks like an article (i.e., | 9584 snoops each file in question. If the file looks like an article (i.e., |
8294 the first few lines look like headers), it will use this as the head. | 9585 the first few lines look like headers), it will use this as the head. |
8295 If this is just some arbitrary file without a head (eg. a C source | 9586 If this is just some arbitrary file without a head (e.g. a C source |
8296 file), @code{nneething} will cobble up a header out of thin air. It | 9587 file), @code{nneething} will cobble up a header out of thin air. It |
8297 will use file ownership, name and date and do whatever it can with these | 9588 will use file ownership, name and date and do whatever it can with these |
8298 elements. | 9589 elements. |
8299 | 9590 |
8300 All this should happen automatically for you, and you will be presented | 9591 All this should happen automatically for you, and you will be presented |
8397 | 9688 |
8398 If you have some old archived articles that you want to insert into your | 9689 If you have some old archived articles that you want to insert into your |
8399 new & spiffy Gnus mail backend, @code{nndoc} can probably help you with | 9690 new & spiffy Gnus mail backend, @code{nndoc} can probably help you with |
8400 that. Say you have an old @file{RMAIL} file with mail that you now want | 9691 that. Say you have an old @file{RMAIL} file with mail that you now want |
8401 to split into your new @code{nnml} groups. You look at that file using | 9692 to split into your new @code{nnml} groups. You look at that file using |
8402 @code{nndoc}, set the process mark on all the articles in the buffer | 9693 @code{nndoc} (using the @kbd{G f} command in the group buffer |
8403 (@kbd{M P b}, for instance), and then re-spool (@kbd{B r}) using | 9694 (@pxref{Foreign Groups})), set the process mark on all the articles in |
8404 @code{nnml}. If all goes well, all the mail in the @file{RMAIL} file is | 9695 the buffer (@kbd{M P b}, for instance), and then re-spool (@kbd{B r}) |
8405 now also stored in lots of @code{nnml} directories, and you can delete | 9696 using @code{nnml}. If all goes well, all the mail in the @file{RMAIL} |
8406 that pesky @file{RMAIL} file. If you have the guts! | 9697 file is now also stored in lots of @code{nnml} directories, and you can |
9698 delete that pesky @file{RMAIL} file. If you have the guts! | |
8407 | 9699 |
8408 Virtual server variables: | 9700 Virtual server variables: |
8409 | 9701 |
8410 @table @code | 9702 @table @code |
8411 @item nndoc-article-type | 9703 @item nndoc-article-type |
8419 This variable says whether Gnus is to consider the group a news group or | 9711 This variable says whether Gnus is to consider the group a news group or |
8420 a mail group. There are two legal values: @code{mail} (the default) | 9712 a mail group. There are two legal values: @code{mail} (the default) |
8421 and @code{news}. | 9713 and @code{news}. |
8422 @end table | 9714 @end table |
8423 | 9715 |
9716 @menu | |
9717 * Document Server Internals:: How to add your own document types. | |
9718 @end menu | |
9719 | |
9720 | |
9721 @node Document Server Internals | |
9722 @subsubsection Document Server Internals | |
9723 | |
9724 Adding new document types to be recognized by @code{nndoc} isn't | |
9725 difficult. You just have to whip up a definition of what the document | |
9726 looks like, write a predicate function to recognize that document type, | |
9727 and then hook into @code{nndoc}. | |
9728 | |
9729 First, here's an example document type definition: | |
9730 | |
9731 @example | |
9732 (mmdf | |
9733 (article-begin . "^\^A\^A\^A\^A\n") | |
9734 (body-end . "^\^A\^A\^A\^A\n")) | |
9735 @end example | |
9736 | |
9737 The definition is simply a unique @dfn{name} followed by a series of | |
9738 regexp pseudo-variable settings. Below are the possible | |
9739 variables---don't be daunted by the number of variables; most document | |
9740 types can be defined with very few settings: | |
9741 | |
9742 @table @code | |
9743 @item first-article | |
9744 If present, @code{nndoc} will skip past all text until it finds | |
9745 something that match this regexp. All text before this will be | |
9746 totally ignored. | |
9747 | |
9748 @item article-begin | |
9749 This setting has to be present in all document type definitions. It | |
9750 says what the beginning of each article looks like. | |
9751 | |
9752 @item head-begin-function | |
9753 If present, this should be a function that moves point to the head of | |
9754 the article. | |
9755 | |
9756 @item nndoc-head-begin | |
9757 If present, this should be a regexp that matches the head of the | |
9758 article. | |
9759 | |
9760 @item nndoc-head-end | |
9761 This should match the end of the head of the article. It defaults to | |
9762 @samp{^$}---the empty line. | |
9763 | |
9764 @item body-begin-function | |
9765 If present, this function should move point to the beginning of the body | |
9766 of the article. | |
9767 | |
9768 @item body-begin | |
9769 This should match the beginning of the body of the article. It defaults | |
9770 to @samp{^\n}. | |
9771 | |
9772 @item body-end-function | |
9773 If present, this function should move point to the end of the body of | |
9774 the article. | |
9775 | |
9776 @item body-end | |
9777 If present, this should match the end of the body of the article. | |
9778 | |
9779 @item nndoc-file-end | |
9780 If present, this should match the end of the file. All text after this | |
9781 regexp will be totally ignored. | |
9782 | |
9783 @end table | |
9784 | |
9785 So, using these variables @code{nndoc} is able to dissect a document | |
9786 file into a series of articles, each with a head and a body. However, a | |
9787 few more variables are needed since not all document types are all that | |
9788 news-like---variables needed to transform the head or the body into | |
9789 something that's palatable for Gnus: | |
9790 | |
9791 @table @code | |
9792 @item prepare-body-function | |
9793 If present, this function will be called when requesting an article. It | |
9794 will be called with point at the start of the body, and is useful if the | |
9795 document has encoded some parts of its contents. | |
9796 | |
9797 @item article-transform-function | |
9798 If present, this function is called when requesting an article. It's | |
9799 meant to be used how more wide-ranging transformation of both head and | |
9800 body of the article. | |
9801 | |
9802 @item generate-head-function | |
9803 If present, this function is called to generate a head that Gnus can | |
9804 understand. It is called with the article number as a parameter, and is | |
9805 expected to generate a nice head for the article in question. It is | |
9806 called when requesting the headers of all articles. | |
9807 | |
9808 @end table | |
9809 | |
9810 Let's look at the most complicated example I can come up with---standard | |
9811 digests: | |
9812 | |
9813 @example | |
9814 (standard-digest | |
9815 (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+")) | |
9816 (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+")) | |
9817 (prepare-body-function . nndoc-unquote-dashes) | |
9818 (body-end-function . nndoc-digest-body-end) | |
9819 (head-end . "^ ?$") | |
9820 (body-begin . "^ ?\n") | |
9821 (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$") | |
9822 (subtype digest guess)) | |
9823 @end example | |
9824 | |
9825 We see that all text before a 70-width line of dashes is ignored; all | |
9826 text after a line that starts with that @samp{^End of} is also ignored; | |
9827 each article begins with a 30-width line of dashes; the line separating | |
9828 the head from the body may contain a single space; and that the body is | |
9829 run through @code{nndoc-unquote-dashes} before being delivered. | |
9830 | |
9831 To hook your own document definition into @code{nndoc}, use the | |
9832 @code{nndoc-add-type} function. It takes two parameters---the first is | |
9833 the definition itself and the second (optional) parameter says where in | |
9834 the document type definition alist to put this definition. The alist is | |
9835 traversed sequentially, and @code{nndoc-TYPE-type-p} is called for each | |
9836 type. So @code{nndoc-mmdf-type-p} is called to see whether a document | |
9837 is of @code{mmdf} type, and so on. These type predicates should return | |
9838 @code{nil} if the document is not of the correct type; @code{t} if it is | |
9839 of the correct type; and a number if the document might be of the | |
9840 correct type. A high number means high probability; a low number means | |
9841 low probability with @samp{0} being the lowest legal number. | |
9842 | |
8424 | 9843 |
8425 @node SOUP | 9844 @node SOUP |
8426 @subsection SOUP | 9845 @subsection SOUP |
8427 @cindex SOUP | 9846 @cindex SOUP |
8428 @cindex offline | 9847 @cindex offline |
8442 | 9861 |
8443 A file format called @sc{soup} has been developed for transporting news | 9862 A file format called @sc{soup} has been developed for transporting news |
8444 and mail from servers to home machines and back again. It can be a bit | 9863 and mail from servers to home machines and back again. It can be a bit |
8445 fiddly. | 9864 fiddly. |
8446 | 9865 |
9866 First some terminology: | |
9867 | |
9868 @table @dfn | |
9869 | |
9870 @item server | |
9871 This is the machine that is connected to the outside world and where you | |
9872 get news and/or mail from. | |
9873 | |
9874 @item home machine | |
9875 This is the machine that you want to do the actual reading and responding | |
9876 on. It is typically not connected to the rest of the world in any way. | |
9877 | |
9878 @item packet | |
9879 Something that contains messages and/or commands. There are two kinds | |
9880 of packets: | |
9881 | |
9882 @table @dfn | |
9883 @item message packets | |
9884 These are packets made at the server, and typically contains lots of | |
9885 messages for you to read. These are called @file{SoupoutX.tgz} by | |
9886 default, where @var{X} is a number. | |
9887 | |
9888 @item response packets | |
9889 These are packets made at the home machine, and typically contains | |
9890 replies that you've written. These are called @file{SoupinX.tgz} by | |
9891 default, where @var{X} is a number. | |
9892 | |
9893 @end table | |
9894 | |
9895 @end table | |
9896 | |
9897 | |
8447 @enumerate | 9898 @enumerate |
8448 | 9899 |
8449 @item | 9900 @item |
8450 You log in on the server and create a @sc{soup} packet. You can either | 9901 You log in on the server and create a @sc{soup} packet. You can either |
8451 use a dedicated @sc{soup} thingie, or you can use Gnus to create the | 9902 use a dedicated @sc{soup} thingie (like the @code{awk} program), or you |
8452 packet with the @kbd{O s} command. | 9903 can use Gnus to create the packet with its @sc{soup} commands (@kbd{O |
9904 s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}). | |
8453 | 9905 |
8454 @item | 9906 @item |
8455 You transfer the packet home. Rail, boat, car or modem will do fine. | 9907 You transfer the packet home. Rail, boat, car or modem will do fine. |
8456 | 9908 |
8457 @item | 9909 @item |
8458 You put the packet in your home directory. | 9910 You put the packet in your home directory. |
8459 | 9911 |
8460 @item | 9912 @item |
8461 You fire up Gnus using the @code{nnsoup} backend as the native server. | 9913 You fire up Gnus on your home machine using the @code{nnsoup} backend as |
9914 the native or secondary server. | |
8462 | 9915 |
8463 @item | 9916 @item |
8464 You read articles and mail and answer and followup to the things you | 9917 You read articles and mail and answer and followup to the things you |
8465 want. | 9918 want (@pxref{SOUP Replies}). |
8466 | 9919 |
8467 @item | 9920 @item |
8468 You do the @kbd{G s r} command to pack these replies into a @sc{soup} | 9921 You do the @kbd{G s r} command to pack these replies into a @sc{soup} |
8469 packet. | 9922 packet. |
8470 | 9923 |
8489 @end menu | 9942 @end menu |
8490 | 9943 |
8491 | 9944 |
8492 @node SOUP Commands | 9945 @node SOUP Commands |
8493 @subsubsection SOUP Commands | 9946 @subsubsection SOUP Commands |
9947 | |
9948 These are commands for creating and manipulating @sc{soup} packets. | |
8494 | 9949 |
8495 @table @kbd | 9950 @table @kbd |
8496 @item G s b | 9951 @item G s b |
8497 @kindex G s b (Group) | 9952 @kindex G s b (Group) |
8498 @findex gnus-group-brew-soup | 9953 @findex gnus-group-brew-soup |
8501 process/prefix convention. | 9956 process/prefix convention. |
8502 | 9957 |
8503 @item G s w | 9958 @item G s w |
8504 @kindex G s w (Group) | 9959 @kindex G s w (Group) |
8505 @findex gnus-soup-save-areas | 9960 @findex gnus-soup-save-areas |
8506 Save all data files (@code{gnus-soup-save-areas}). | 9961 Save all @sc{soup} data files (@code{gnus-soup-save-areas}). |
8507 | 9962 |
8508 @item G s s | 9963 @item G s s |
8509 @kindex G s s (Group) | 9964 @kindex G s s (Group) |
8510 @findex gnus-soup-send-replies | 9965 @findex gnus-soup-send-replies |
8511 Send all replies from the replies packet | 9966 Send all replies from the replies packet |
8524 @item O s | 9979 @item O s |
8525 @kindex O s (Summary) | 9980 @kindex O s (Summary) |
8526 @findex gnus-soup-add-article | 9981 @findex gnus-soup-add-article |
8527 This summary-mode command adds the current article to a @sc{soup} packet | 9982 This summary-mode command adds the current article to a @sc{soup} packet |
8528 (@code{gnus-soup-add-article}). It understands the process/prefix | 9983 (@code{gnus-soup-add-article}). It understands the process/prefix |
8529 convention. | 9984 convention (@pxref{Process/Prefix}). |
8530 | 9985 |
8531 @end table | 9986 @end table |
8532 | 9987 |
8533 | 9988 |
8534 There are a few variables to customize where Gnus will put all these | 9989 There are a few variables to customize where Gnus will put all these |
8542 @sc{soup} packets. The default is @file{~/SoupBrew/}. | 9997 @sc{soup} packets. The default is @file{~/SoupBrew/}. |
8543 | 9998 |
8544 @item gnus-soup-replies-directory | 9999 @item gnus-soup-replies-directory |
8545 @vindex gnus-soup-replies-directory | 10000 @vindex gnus-soup-replies-directory |
8546 This is what Gnus will use as a temporary directory while sending our | 10001 This is what Gnus will use as a temporary directory while sending our |
8547 reply packets. The default is @file{~/SoupBrew/SoupReplies/}. | 10002 reply packets. @file{~/SoupBrew/SoupReplies/} is the default. |
8548 | 10003 |
8549 @item gnus-soup-prefix-file | 10004 @item gnus-soup-prefix-file |
8550 @vindex gnus-soup-prefix-file | 10005 @vindex gnus-soup-prefix-file |
8551 Name of the file where Gnus stores the last used prefix. The default is | 10006 Name of the file where Gnus stores the last used prefix. The default is |
8552 @samp{gnus-prefix}. | 10007 @samp{gnus-prefix}. |
8654 @sc{soup} system. | 10109 @sc{soup} system. |
8655 | 10110 |
8656 In specific, this is what it does: | 10111 In specific, this is what it does: |
8657 | 10112 |
8658 @lisp | 10113 @lisp |
8659 (setq gnus-inews-article-function 'nnsoup-request-post) | 10114 (setq message-send-news-function 'nnsoup-request-post) |
8660 (setq send-mail-function 'nnsoup-request-mail) | 10115 (setq message-send-mail-function 'nnsoup-request-mail) |
8661 @end lisp | 10116 @end lisp |
8662 | 10117 |
8663 And that's it, really. If you only want news to go into the @sc{soup} | 10118 And that's it, really. If you only want news to go into the @sc{soup} |
8664 system you just use the first line. If you only want mail to be | 10119 system you just use the first line. If you only want mail to be |
8665 @sc{soup}ed you use the second. | 10120 @sc{soup}ed you use the second. |
10121 | |
10122 | |
10123 @node Web Searches | |
10124 @subsection Web Searches | |
10125 @cindex nnweb | |
10126 @cindex DejaNews | |
10127 @cindex Alta Vista | |
10128 @cindex InReference | |
10129 @cindex Usenet searches | |
10130 @cindex searching the Usenet | |
10131 | |
10132 It's, like, too neat to search the Usenet for articles that match a | |
10133 string, but it, like, totally @emph{sucks}, like, totally, to use one of | |
10134 those, like, Web browsers, and you, like, have to, rilly, like, look at | |
10135 the commercials, so, like, with Gnus you can do @emph{rad}, rilly, | |
10136 searches without having to use a browser. | |
10137 | |
10138 The @code{nnweb} backend allows an easy interface to the mighty search | |
10139 engine. You create an @code{nnweb} group, enter a search pattern, and | |
10140 then enter the group and read the articles like you would any normal | |
10141 group. The @kbd{G w} command in the group buffer (@pxref{Foreign | |
10142 Groups}) will do this in an easy-to-use fashion. | |
10143 | |
10144 @code{nnweb} groups don't really lend themselves to being solid | |
10145 groups---they have a very fleeting idea of article numbers. In fact, | |
10146 each time you enter an @code{nnweb} group (not even changing the search | |
10147 pattern), you are likely to get the articles ordered in a different | |
10148 manner. Not even using duplicate suppression (@code{Duplicate | |
10149 Suppression}) will help, since @code{nnweb} doesn't even know the | |
10150 @code{Message-ID} of the articles before reading them using some search | |
10151 engines (DejaNews, for instance). The only possible way to keep track | |
10152 of which articles you've read is by scoring on the @code{Date} | |
10153 header---mark all articles that were posted before the last date you | |
10154 read the group as read. | |
10155 | |
10156 If the search engine changes its output substantially, @code{nnweb} | |
10157 won't be able to parse it and will fail. One could hardly fault the Web | |
10158 providers if they were to do this---their @emph{raison d'être} is to | |
10159 make money off of advertisements, not to provide services to the | |
10160 community. Since @code{nnweb} washes the ads off all the articles, one | |
10161 might think that the providers might be somewhat miffed. We'll see. | |
10162 | |
10163 You must have the @code{url} and @code{w3} package installed to be able | |
10164 to use @code{nnweb}. | |
10165 | |
10166 Virtual server variables: | |
10167 | |
10168 @table @code | |
10169 @item nnweb-type | |
10170 @vindex nnweb-type | |
10171 What search engine type is being used. The currently supported types | |
10172 are @code{dejanews}, @code{altavista} and @code{reference}. | |
10173 | |
10174 @item nnweb-search | |
10175 @vindex nnweb-search | |
10176 The search string to feed to the search engine. | |
10177 | |
10178 @item nnweb-max-hits | |
10179 @vindex nnweb-max-hits | |
10180 Advisory maximum number of hits per search to display. The default is | |
10181 100. | |
10182 | |
10183 @item nnweb-type-definition | |
10184 @vindex nnweb-type-definition | |
10185 Type-to-definition alist. This alist says what @code{nnweb} should do | |
10186 with the various search engine types. The following elements must be | |
10187 present: | |
10188 | |
10189 @table @code | |
10190 @item article | |
10191 Function to decode the article and provide something that Gnus | |
10192 understands. | |
10193 | |
10194 @item map | |
10195 Function to create an article number to message header and URL alist. | |
10196 | |
10197 @item search | |
10198 Function to send the search string to the search engine. | |
10199 | |
10200 @item address | |
10201 The address the aforementioned function should send the search string | |
10202 to. | |
10203 | |
10204 @item id | |
10205 Format string URL to fetch an article by @code{Message-ID}. | |
10206 @end table | |
10207 | |
10208 @end table | |
10209 | |
10210 | |
10211 | |
10212 @node Mail-To-News Gateways | |
10213 @subsection Mail-To-News Gateways | |
10214 @cindex mail-to-news gateways | |
10215 @cindex gateways | |
10216 | |
10217 If your local @code{nntp} server doesn't allow posting, for some reason | |
10218 or other, you can post using one of the numerous mail-to-news gateways. | |
10219 The @code{nngateway} backend provides the interface. | |
10220 | |
10221 Note that you can't read anything from this backend---it can only be | |
10222 used to post with. | |
10223 | |
10224 Server variables: | |
10225 | |
10226 @table @code | |
10227 @item nngateway-address | |
10228 @vindex nngateway-address | |
10229 This is the address of the mail-to-news gateway. | |
10230 | |
10231 @item nngateway-header-transformation | |
10232 @vindex nngateway-header-transformation | |
10233 News headers have often have to be transformed in some odd way or other | |
10234 for the mail-to-news gateway to accept it. This variable says what | |
10235 transformation should be called, and defaults to | |
10236 @code{nngateway-simple-header-transformation}. The function is called | |
10237 narrowed to the headers to be transformed and with one parameter---the | |
10238 gateway address. | |
10239 | |
10240 This default function just inserts a new @code{To} header based on the | |
10241 @code{Newsgroups} header and the gateway address---an article with this | |
10242 @code{Newsgroups} header: | |
10243 | |
10244 @example | |
10245 Newsgroups: alt.religion.emacs | |
10246 @end example | |
10247 | |
10248 will get this @code{From} header inserted: | |
10249 | |
10250 @example | |
10251 To: alt-religion-emacs@@GATEWAY | |
10252 @end example | |
10253 | |
10254 @end table | |
10255 | |
10256 So, to use this, simply say something like: | |
10257 | |
10258 @lisp | |
10259 (setq gnus-post-method '(nngateway "GATEWAY.ADDRESS")) | |
10260 @end lisp | |
8666 | 10261 |
8667 | 10262 |
8668 @node Combined Groups | 10263 @node Combined Groups |
8669 @section Combined Groups | 10264 @section Combined Groups |
8670 | 10265 |
8823 * Summary Score Commands:: Adding score entries for the current group. | 10418 * Summary Score Commands:: Adding score entries for the current group. |
8824 * Group Score Commands:: General score commands. | 10419 * Group Score Commands:: General score commands. |
8825 * Score Variables:: Customize your scoring. (My, what terminology). | 10420 * Score Variables:: Customize your scoring. (My, what terminology). |
8826 * Score File Format:: What a score file may contain. | 10421 * Score File Format:: What a score file may contain. |
8827 * Score File Editing:: You can edit score files by hand as well. | 10422 * Score File Editing:: You can edit score files by hand as well. |
8828 * Adaptive Scoring:: Big Sister Gnus @emph{knows} what you read. | 10423 * Adaptive Scoring:: Big Sister Gnus knows what you read. |
10424 * Home Score File:: How to say where new score entries are to go. | |
8829 * Followups To Yourself:: Having Gnus notice when people answer you. | 10425 * Followups To Yourself:: Having Gnus notice when people answer you. |
8830 * Scoring Tips:: How to score effectively. | 10426 * Scoring Tips:: How to score effectively. |
8831 * Reverse Scoring:: That problem child of old is not problem. | 10427 * Reverse Scoring:: That problem child of old is not problem. |
8832 * Global Score Files:: Earth-spanning, ear-splitting score files. | 10428 * Global Score Files:: Earth-spanning, ear-splitting score files. |
8833 * Kill Files:: They are still here, but they can be ignored. | 10429 * Kill Files:: They are still here, but they can be ignored. |
10430 * Converting Kill Files:: Translating kill files to score files. | |
8834 * GroupLens:: Getting predictions on what you like to read. | 10431 * GroupLens:: Getting predictions on what you like to read. |
10432 * Advanced Scoring:: Using logical expressions to build score rules. | |
10433 * Score Decays:: It can be useful to let scores wither away. | |
8835 @end menu | 10434 @end menu |
8836 | 10435 |
8837 | 10436 |
8838 @node Summary Score Commands | 10437 @node Summary Score Commands |
8839 @section Summary Score Commands | 10438 @section Summary Score Commands |
8845 @dfn{current score file alist}. The score commands simply insert | 10444 @dfn{current score file alist}. The score commands simply insert |
8846 entries into this list, and upon group exit, this list is saved. | 10445 entries into this list, and upon group exit, this list is saved. |
8847 | 10446 |
8848 The current score file is by default the group's local score file, even | 10447 The current score file is by default the group's local score file, even |
8849 if no such score file actually exists. To insert score commands into | 10448 if no such score file actually exists. To insert score commands into |
8850 some other score file (eg. @file{all.SCORE}), you must first make this | 10449 some other score file (e.g. @file{all.SCORE}), you must first make this |
8851 score file the current one. | 10450 score file the current one. |
8852 | 10451 |
8853 General score commands that don't actually change the score file: | 10452 General score commands that don't actually change the score file: |
8854 | 10453 |
8855 @table @kbd | 10454 @table @kbd |
8870 @findex gnus-score-find-trace | 10469 @findex gnus-score-find-trace |
8871 Display all score rules that have been used on the current article | 10470 Display all score rules that have been used on the current article |
8872 (@code{gnus-score-find-trace}). | 10471 (@code{gnus-score-find-trace}). |
8873 | 10472 |
8874 @item V R | 10473 @item V R |
8875 @cindex V R (Summary) | 10474 @kindex V R (Summary) |
8876 @findex gnus-summary-rescore | 10475 @findex gnus-summary-rescore |
8877 Run the current summary through the scoring process | 10476 Run the current summary through the scoring process |
8878 (@code{gnus-summary-rescore}). This might be useful if you're playing | 10477 (@code{gnus-summary-rescore}). This might be useful if you're playing |
8879 around with your score files behind Gnus' back and want to see the | 10478 around with your score files behind Gnus' back and want to see the |
8880 effect you're having. | 10479 effect you're having. |
8905 (@code{gnus-score-edit-file}). | 10504 (@code{gnus-score-edit-file}). |
8906 | 10505 |
8907 @item V F | 10506 @item V F |
8908 @kindex V F (Summary) | 10507 @kindex V F (Summary) |
8909 @findex gnus-score-flush-cache | 10508 @findex gnus-score-flush-cache |
8910 Flush the score cahe (@code{gnus-score-flush-cache}). This is useful | 10509 Flush the score cache (@code{gnus-score-flush-cache}). This is useful |
8911 after editing score files. | 10510 after editing score files. |
8912 | 10511 |
8913 @item V C | 10512 @item V C |
8914 @kindex V C (Summary) | 10513 @kindex V C (Summary) |
8915 @findex gnus-score-customize | 10514 @findex gnus-score-customize |
9152 | 10751 |
9153 @item gnus-summary-default-score | 10752 @item gnus-summary-default-score |
9154 @vindex gnus-summary-default-score | 10753 @vindex gnus-summary-default-score |
9155 Default score of an article, which is 0 by default. | 10754 Default score of an article, which is 0 by default. |
9156 | 10755 |
10756 @item gnus-summary-expunge-below | |
10757 @vindex gnus-summary-expunge-below | |
10758 Don't display the summary lines of articles that have scores lower than | |
10759 this variable. This is @code{nil} by default, which means that no | |
10760 articles will be hidden. | |
10761 | |
9157 @item gnus-score-over-mark | 10762 @item gnus-score-over-mark |
9158 @vindex gnus-score-over-mark | 10763 @vindex gnus-score-over-mark |
9159 Mark (in the third column) used for articles with a score over the | 10764 Mark (in the third column) used for articles with a score over the |
9160 default. Default is @samp{+}. | 10765 default. Default is @samp{+}. |
9161 | 10766 |
9177 Only apply the group's own score file. | 10782 Only apply the group's own score file. |
9178 | 10783 |
9179 @item gnus-score-find-bnews | 10784 @item gnus-score-find-bnews |
9180 @findex gnus-score-find-bnews | 10785 @findex gnus-score-find-bnews |
9181 Apply all score files that match, using bnews syntax. This is the | 10786 Apply all score files that match, using bnews syntax. This is the |
9182 default. For instance, if the current group is @samp{gnu.emacs.gnus}, | 10787 default. If the current group is @samp{gnu.emacs.gnus}, for instance, |
9183 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and | 10788 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and |
9184 @file{gnu.all.SCORE} would all apply. In short, the instances of | 10789 @file{gnu.all.SCORE} would all apply. In short, the instances of |
9185 @samp{all} in the score file names are translated into @samp{.*}, and | 10790 @samp{all} in the score file names are translated into @samp{.*}, and |
9186 then a regexp match is done. | 10791 then a regexp match is done. |
9187 | 10792 |
9188 This means that if you have some score entries that you want to apply to | 10793 This means that if you have some score entries that you want to apply to |
9189 all groups, then you put those entries in the @file{all.SCORE} file. | 10794 all groups, then you put those entries in the @file{all.SCORE} file. |
9190 | 10795 |
10796 The score files are applied in a semi-random order, although Gnus will | |
10797 try to apply the more general score files before the more specific score | |
10798 files. It does this by looking at the number of elements in the score | |
10799 file names---discarding the @samp{all} elements. | |
10800 | |
9191 @item gnus-score-find-hierarchical | 10801 @item gnus-score-find-hierarchical |
9192 @findex gnus-score-find-hierarchical | 10802 @findex gnus-score-find-hierarchical |
9193 Apply all score files from all the parent groups. This means that you | 10803 Apply all score files from all the parent groups. This means that you |
9194 can't have score files like @file{all.SCORE} or @file{all.emacs.SCORE}, | 10804 can't have score files like @file{all.SCORE}, but you can have |
9195 but you can have @file{SCORE}, @file{comp.SCORE} and | 10805 @file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}. |
9196 @file{comp.emacs.SCORE}. | |
9197 | 10806 |
9198 @end table | 10807 @end table |
9199 This variable can also be a list of functions. In that case, all these | 10808 This variable can also be a list of functions. In that case, all these |
9200 functions will be called, and all the returned lists of score files will | 10809 functions will be called, and all the returned lists of score files will |
9201 be applied. These functions can also return lists of score alists | 10810 be applied. These functions can also return lists of score alists |
9315 whether this score entry matches the article. What match types that can | 10924 whether this score entry matches the article. What match types that can |
9316 be used depends on what header you wish to perform the match on. | 10925 be used depends on what header you wish to perform the match on. |
9317 @table @dfn | 10926 @table @dfn |
9318 | 10927 |
9319 @item From, Subject, References, Xref, Message-ID | 10928 @item From, Subject, References, Xref, Message-ID |
9320 For most header types, there are the @code{r} and @code{R} (regexp) as | 10929 For most header types, there are the @code{r} and @code{R} (regexp), as |
9321 well as @code{s} and @code{S} (substring) types and @code{e} and | 10930 well as @code{s} and @code{S} (substring) types, and @code{e} and |
9322 @code{E} (exact match) types. If this element is not present, Gnus will | 10931 @code{E} (exact match), and @code{w} (word match) types. If this |
9323 assume that substring matching should be used. @code{R} and @code{S} | 10932 element is not present, Gnus will assume that substring matching should |
9324 differ from the other two in that the matches will be done in a | 10933 be used. @code{R}, @code{S}, and @code{E} differ from the others in |
9325 case-sensitive manner. All these one-letter types are really just | 10934 that the matches will be done in a case-sensitive manner. All these |
9326 abbreviations for the @code{regexp}, @code{string} and @code{exact} | 10935 one-letter types are really just abbreviations for the @code{regexp}, |
9327 types, which you can use instead, if you feel like. | 10936 @code{string}, @code{exact}, and @code{word} types, which you can use |
10937 instead, if you feel like. | |
9328 | 10938 |
9329 @item Lines, Chars | 10939 @item Lines, Chars |
9330 These two headers use different match types: @code{<}, @code{>}, | 10940 These two headers use different match types: @code{<}, @code{>}, |
9331 @code{=}, @code{>=} and @code{<=}. | 10941 @code{=}, @code{>=} and @code{<=}. When matching on @code{Lines}, be |
10942 careful because some backends (like @code{nndir}) do not generate | |
10943 @code{Lines} header, so every article ends up being marked as having 0 | |
10944 lines. This can lead to strange results if you happen to lower score of | |
10945 the articles with few lines. | |
9332 | 10946 |
9333 @item Date | 10947 @item Date |
9334 For the Date header we have three match types: @code{before}, @code{at} | 10948 For the Date header we have three kinda silly match types: |
9335 and @code{after}. I can't really imagine this ever being useful, but, | 10949 @code{before}, @code{at} and @code{after}. I can't really imagine this |
9336 like, it would feel kinda silly not to provide this function. Just in | 10950 ever being useful, but, like, it would feel kinda silly not to provide |
9337 case. You never know. Better safe than sorry. Once burnt, twice shy. | 10951 this function. Just in case. You never know. Better safe than sorry. |
9338 Don't judge a book by its cover. Never not have sex on a first date. | 10952 Once burnt, twice shy. Don't judge a book by its cover. Never not have |
9339 (I have been told that at least one person, and I quote, ``found this | 10953 sex on a first date. (I have been told that at least one person, and I |
9340 function indispensable'', however.) | 10954 quote, ``found this function indispensable'', however.) |
10955 | |
10956 @cindex ISO8601 | |
10957 @cindex date | |
10958 A more useful match type is @code{regexp}. With it, you can match the | |
10959 date string using a regular expression. The date is normalized to | |
10960 ISO8601 compact format first---@samp{YYYYMMDDTHHMMSS}. If you want to | |
10961 match all articles that have been posted on April 1st in every year, you | |
10962 could use @samp{....0401.........} as a match string, for instance. | |
10963 (Note that the date is kept in its original time zone, so this will | |
10964 match articles that were posted when it was April 1st where the article | |
10965 was posted from. Time zones are such wholesome fun for the whole | |
10966 family, eh?) | |
9341 | 10967 |
9342 @item Head, Body, All | 10968 @item Head, Body, All |
9343 These three match keys use the same match types as the @code{From} (etc) | 10969 These three match keys use the same match types as the @code{From} (etc) |
9344 header uses. | 10970 header uses. |
9345 | 10971 |
9346 @item Followup | 10972 @item Followup |
9347 This match key will add a score entry on all articles that followup to | 10973 This match key is somewhat special, in that it will match the |
9348 some author. Uses the same match types as the @code{From} header uses. | 10974 @code{From} header, and affect the score of not only the matching |
10975 articles, but also all followups to the matching articles. This allows | |
10976 you e.g. increase the score of followups to your own articles, or | |
10977 decrease the score of followups to the articles of some known | |
10978 trouble-maker. Uses the same match types as the @code{From} header | |
10979 uses. | |
9349 | 10980 |
9350 @item Thread | 10981 @item Thread |
9351 This match key will add a score entry on all articles that are part of | 10982 This match key works along the same lines as the @code{Followup} match |
9352 a thread. Uses the same match types as the @code{References} header | 10983 key. If you say that you want to score on a (sub-)thread that is |
9353 uses. | 10984 started by an article with a @code{Message-ID} @var{X}, then you add a |
10985 @samp{thread} match. This will add a new @samp{thread} match for each | |
10986 article that has @var{X} in its @code{References} header. (These new | |
10987 @samp{thread} matches will use the @code{Message-ID}s of these matching | |
10988 articles.) This will ensure that you can raise/lower the score of an | |
10989 entire thread, even though some articles in the thread may not have | |
10990 complete @code{References} headers. Note that using this may lead to | |
10991 undeterministic scores of the articles in the thread. | |
9354 @end table | 10992 @end table |
9355 @end enumerate | 10993 @end enumerate |
9356 | 10994 |
9357 @item mark | 10995 @item mark |
9358 The value of this entry should be a number. Any articles with a score | 10996 The value of this entry should be a number. Any articles with a score |
9377 The value of this entry should be any number of file names. These files | 11015 The value of this entry should be any number of file names. These files |
9378 are assumed to be score files as well, and will be loaded the same way | 11016 are assumed to be score files as well, and will be loaded the same way |
9379 this one was. | 11017 this one was. |
9380 | 11018 |
9381 @item exclude-files | 11019 @item exclude-files |
9382 The clue of this entry should be any number of files. This files will | 11020 The clue of this entry should be any number of files. These files will |
9383 not be loaded, even though they would normally be so, for some reason or | 11021 not be loaded, even though they would normally be so, for some reason or |
9384 other. | 11022 other. |
9385 | 11023 |
9386 @item eval | 11024 @item eval |
9387 The value of this entry will be @code{eval}el. This element will be | 11025 The value of this entry will be @code{eval}el. This element will be |
9398 will only follow a few of the threads, also want to see any new threads. | 11036 will only follow a few of the threads, also want to see any new threads. |
9399 | 11037 |
9400 You can do this with the following two score file entries: | 11038 You can do this with the following two score file entries: |
9401 | 11039 |
9402 @example | 11040 @example |
9403 (orphan -500) | 11041 (orphan -500) |
9404 (mark-and-expunge -100) | 11042 (mark-and-expunge -100) |
9405 @end example | 11043 @end example |
9406 | 11044 |
9407 When you enter the group the first time, you will only see the new | 11045 When you enter the group the first time, you will only see the new |
9408 threads. You then raise the score of the threads that you find | 11046 threads. You then raise the score of the threads that you find |
9409 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the | 11047 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the |
9499 @vindex gnus-use-adaptive-scoring | 11137 @vindex gnus-use-adaptive-scoring |
9500 When you read an article, or mark an article as read, or kill an | 11138 When you read an article, or mark an article as read, or kill an |
9501 article, you leave marks behind. On exit from the group, Gnus can sniff | 11139 article, you leave marks behind. On exit from the group, Gnus can sniff |
9502 these marks and add score elements depending on what marks it finds. | 11140 these marks and add score elements depending on what marks it finds. |
9503 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to | 11141 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to |
9504 @code{t}. | 11142 @code{t} or @code{(line)}. If you want score adaptively on separate |
11143 words appearing in the subjects, you should set this variable to | |
11144 @code{(word)}. If you want to use both adaptive methods, set this | |
11145 variable to @code{(word line)}. | |
9505 | 11146 |
9506 @vindex gnus-default-adaptive-score-alist | 11147 @vindex gnus-default-adaptive-score-alist |
9507 To give you complete control over the scoring process, you can customize | 11148 To give you complete control over the scoring process, you can customize |
9508 the @code{gnus-default-adaptive-score-alist} variable. For instance, it | 11149 the @code{gnus-default-adaptive-score-alist} variable. For instance, it |
9509 might look something like this: | 11150 might look something like this: |
9542 If you have marked 10 articles with the same subject with | 11183 If you have marked 10 articles with the same subject with |
9543 @code{gnus-del-mark}, the rule for that mark will be applied ten times. | 11184 @code{gnus-del-mark}, the rule for that mark will be applied ten times. |
9544 That means that that subject will get a score of ten times -1, which | 11185 That means that that subject will get a score of ten times -1, which |
9545 should be, unless I'm much mistaken, -10. | 11186 should be, unless I'm much mistaken, -10. |
9546 | 11187 |
11188 If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all | |
11189 the read articles will be marked with the @samp{E} mark. This'll | |
11190 probably make adaptive scoring slightly impossible, so auto-expiring and | |
11191 adaptive scoring doesn't really mix very well. | |
11192 | |
9547 The headers you can score on are @code{from}, @code{subject}, | 11193 The headers you can score on are @code{from}, @code{subject}, |
9548 @code{message-id}, @code{references}, @code{xref}, @code{lines}, | 11194 @code{message-id}, @code{references}, @code{xref}, @code{lines}, |
9549 @code{chars} and @code{date}. In addition, you can score on | 11195 @code{chars} and @code{date}. In addition, you can score on |
9550 @code{followup}, which will create an adaptive score entry that matches | 11196 @code{followup}, which will create an adaptive score entry that matches |
9551 on the @code{References} header using the @code{Message-ID} of the | 11197 on the @code{References} header using the @code{Message-ID} of the |
9582 the length of the match is less than | 11228 the length of the match is less than |
9583 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If | 11229 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If |
9584 this variable is @code{nil}, exact matching will always be used to avoid | 11230 this variable is @code{nil}, exact matching will always be used to avoid |
9585 this problem. | 11231 this problem. |
9586 | 11232 |
11233 @vindex gnus-default-adaptive-word-score-alist | |
11234 As mentioned above, you can adapt either on individual words or entire | |
11235 headers. If you adapt on words, the | |
11236 @code{gnus-default-adaptive-word-score-alist} variable says what score | |
11237 each instance of a word should add given a mark. | |
11238 | |
11239 @lisp | |
11240 (setq gnus-default-adaptive-word-score-alist | |
11241 `((,gnus-read-mark . 30) | |
11242 (,gnus-catchup-mark . -10) | |
11243 (,gnus-killed-mark . -20) | |
11244 (,gnus-del-mark . -15))) | |
11245 @end lisp | |
11246 | |
11247 This is the default value. If you have adaption on words enabled, every | |
11248 word that appears in subjects of articles that are marked with | |
11249 @code{gnus-read-mark} will result in a score rule that increase the | |
11250 score with 30 points. | |
11251 | |
11252 @vindex gnus-default-ignored-adaptive-words | |
11253 @vindex gnus-ignored-adaptive-words | |
11254 Words that appear in the @code{gnus-default-ignored-adaptive-words} list | |
11255 will be ignored. If you wish to add more words to be ignored, use the | |
11256 @code{gnus-ignored-adaptive-words} list instead. | |
11257 | |
11258 @vindex gnus-adaptive-word-syntax-table | |
11259 When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the | |
11260 syntax table in effect. It is similar to the standard syntax table, but | |
11261 it considers numbers to be non-word-constituent characters. | |
11262 | |
11263 After using this scheme for a while, it might be nice to write a | |
11264 @code{gnus-psychoanalyze-user} command to go through the rules and see | |
11265 what words you like and what words you don't like. Or perhaps not. | |
11266 | |
11267 Note that the adaptive word scoring thing is highly experimental and is | |
11268 likely to change in the future. Initial impressions seem to indicate | |
11269 that it's totally useless as it stands. Some more work (involving more | |
11270 rigorous statistical methods) will have to be done to make this useful. | |
11271 | |
11272 | |
11273 @node Home Score File | |
11274 @section Home Score File | |
11275 | |
11276 The score file where new score file entries will go is called the | |
11277 @dfn{home score file}. This is normally (and by default) the score file | |
11278 for the group itself. For instance, the home score file for | |
11279 @samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}. | |
11280 | |
11281 However, this may not be what you want. It is often convenient to share | |
11282 a common home score file among many groups---all @samp{emacs} groups | |
11283 could perhaps use the same home score file. | |
11284 | |
11285 @vindex gnus-home-score-file | |
11286 The variable that controls this is @code{gnus-home-score-file}. It can | |
11287 be: | |
11288 | |
11289 @enumerate | |
11290 @item | |
11291 A string. Then this file will be used as the home score file for all | |
11292 groups. | |
11293 | |
11294 @item | |
11295 A function. The result of this function will be used as the home score | |
11296 file. The function will be called with the name of the group as the | |
11297 parameter. | |
11298 | |
11299 @item | |
11300 A list. The elements in this list can be: | |
11301 | |
11302 @enumerate | |
11303 @item | |
11304 @var{(regexp file-name)}. If the @var{regexp} matches the group name, | |
11305 the @var{file-name} will will be used as the home score file. | |
11306 | |
11307 @item | |
11308 A function. If the function returns non-nil, the result will be used as | |
11309 the home score file. | |
11310 | |
11311 @item | |
11312 A string. Use the string as the home score file. | |
11313 @end enumerate | |
11314 | |
11315 The list will be traversed from the beginning towards the end looking | |
11316 for matches. | |
11317 | |
11318 @end enumerate | |
11319 | |
11320 So, if you want to use just a single score file, you could say: | |
11321 | |
11322 @lisp | |
11323 (setq gnus-home-score-file | |
11324 "my-total-score-file.SCORE") | |
11325 @end lisp | |
11326 | |
11327 If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and | |
11328 @file{rec.SCORE} for all @samp{rec} groups (and so on), you can say: | |
11329 | |
11330 @lisp | |
11331 (setq gnus-home-score-file | |
11332 'gnus-hierarchial-home-score-file) | |
11333 @end lisp | |
11334 | |
11335 This is a ready-made function provided for your convenience. | |
11336 | |
11337 If you want to have one score file for the @samp{emacs} groups and | |
11338 another for the @samp{comp} groups, while letting all other groups use | |
11339 their own home score files: | |
11340 | |
11341 @lisp | |
11342 (setq gnus-home-score-file | |
11343 ;; All groups that match the regexp "\\.emacs" | |
11344 '("\\.emacs" "emacs.SCORE") | |
11345 ;; All the comp groups in one score file | |
11346 ("^comp" "comp.SCORE")) | |
11347 @end lisp | |
11348 | |
11349 @vindex gnus-home-adapt-file | |
11350 @code{gnus-home-adapt-file} works exactly the same way as | |
11351 @code{gnus-home-score-file}, but says what the home adaptive score file | |
11352 is instead. All new adaptive file entries will go into the file | |
11353 specified by this variable, and the same syntax is allowed. | |
11354 | |
11355 In addition to using @code{gnus-home-score-file} and | |
11356 @code{gnus-home-adapt-file}, you can also use group parameters | |
11357 (@pxref{Group Parameters}) and topic parameters (@pxref{Topic | |
11358 Parameters}) to achieve much the same. Group and topic parameters take | |
11359 precedence over this variable. | |
11360 | |
9587 | 11361 |
9588 @node Followups To Yourself | 11362 @node Followups To Yourself |
9589 @section Followups To Yourself | 11363 @section Followups To Yourself |
9590 | 11364 |
9591 Gnus offers two commands for picking out the @code{Message-ID} header in | 11365 Gnus offers two commands for picking out the @code{Message-ID} header in |
9606 @findex gnus-score-followup-thread | 11380 @findex gnus-score-followup-thread |
9607 This will add a score to all articles that appear in a thread ``below'' | 11381 This will add a score to all articles that appear in a thread ``below'' |
9608 your own article. | 11382 your own article. |
9609 @end table | 11383 @end table |
9610 | 11384 |
9611 @vindex gnus-inews-article-hook | 11385 @vindex message-sent-hook |
9612 These two functions are both primarily meant to be used in hooks like | 11386 These two functions are both primarily meant to be used in hooks like |
9613 @code{message-send-hook}. | 11387 @code{message-sent-hook}. |
11388 | |
11389 If you look closely at your own @code{Message-ID}, you'll notice that | |
11390 the first two or three characters are always the same. Here's two of | |
11391 mine: | |
11392 | |
11393 @example | |
11394 <x6u3u47icf.fsf@@eyesore.no> | |
11395 <x6sp9o7ibw.fsf@@eyesore.no> | |
11396 @end example | |
11397 | |
11398 So ``my'' ident on this machine is @samp{x6}. This can be | |
11399 exploited---the following rule will raise the score on all followups to | |
11400 myself: | |
11401 | |
11402 @lisp | |
11403 ("references" | |
11404 ("<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r)) | |
11405 @end lisp | |
11406 | |
11407 Whether it's the first two or first three characters that are ``yours'' | |
11408 is system-dependent. | |
11409 | |
9614 | 11410 |
9615 @node Scoring Tips | 11411 @node Scoring Tips |
9616 @section Scoring Tips | 11412 @section Scoring Tips |
9617 @cindex scoring tips | 11413 @cindex scoring tips |
9618 | 11414 |
9695 All you have to do to use other people's score files is to set the | 11491 All you have to do to use other people's score files is to set the |
9696 @code{gnus-global-score-files} variable. One entry for each score file, | 11492 @code{gnus-global-score-files} variable. One entry for each score file, |
9697 or each score file directory. Gnus will decide by itself what score | 11493 or each score file directory. Gnus will decide by itself what score |
9698 files are applicable to which group. | 11494 files are applicable to which group. |
9699 | 11495 |
9700 Say you want to use all score files in the | 11496 Say you want to use the score file |
9701 @file{/ftp@@ftp.some-where:/pub/score} directory and the single score | 11497 @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE} and |
9702 file @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE}: | 11498 all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory: |
9703 | 11499 |
9704 @lisp | 11500 @lisp |
9705 (setq gnus-global-score-files | 11501 (setq gnus-global-score-files |
9706 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" | 11502 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" |
9707 "/ftp@@ftp.some-where:/pub/score/")) | 11503 "/ftp@@ftp.some-where:/pub/score/")) |
9768 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any | 11564 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any |
9769 forms into this file, which means that you can use kill files as some | 11565 forms into this file, which means that you can use kill files as some |
9770 sort of primitive hook function to be run on group entry, even though | 11566 sort of primitive hook function to be run on group entry, even though |
9771 that isn't a very good idea. | 11567 that isn't a very good idea. |
9772 | 11568 |
9773 XCNormal kill files look like this: | 11569 Normal kill files look like this: |
9774 | 11570 |
9775 @lisp | 11571 @lisp |
9776 (gnus-kill "From" "Lars Ingebrigtsen") | 11572 (gnus-kill "From" "Lars Ingebrigtsen") |
9777 (gnus-kill "Subject" "ding") | 11573 (gnus-kill "Subject" "ding") |
9778 (gnus-expunge "X") | 11574 (gnus-expunge "X") |
9847 A hook called in kill-file mode buffers. | 11643 A hook called in kill-file mode buffers. |
9848 | 11644 |
9849 @end table | 11645 @end table |
9850 | 11646 |
9851 | 11647 |
11648 @node Converting Kill Files | |
11649 @section Converting Kill Files | |
11650 @cindex kill files | |
11651 @cindex converting kill files | |
11652 | |
11653 If you have loads of old kill files, you may want to convert them into | |
11654 score files. If they are ``regular'', you can use | |
11655 the @file{gnus-kill-to-score.el} package; if not, you'll have to do it | |
11656 by hand. | |
11657 | |
11658 The kill to score conversion package isn't included in Gnus by default. | |
11659 You can fetch it from | |
11660 @file{http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}. | |
11661 | |
11662 If your old kill files are very complex---if they contain more | |
11663 non-@code{gnus-kill} forms than not, you'll have to convert them by | |
11664 hand. Or just let them be as they are. Gnus will still use them as | |
11665 before. | |
11666 | |
11667 | |
9852 @node GroupLens | 11668 @node GroupLens |
9853 @section GroupLens | 11669 @section GroupLens |
9854 @cindex GroupLens | 11670 @cindex GroupLens |
9855 | 11671 |
9856 GroupLens is a collaborative filtering system that helps you work | 11672 GroupLens is a collaborative filtering system that helps you work |
9877 | 11693 |
9878 @node Using GroupLens | 11694 @node Using GroupLens |
9879 @subsection Using GroupLens | 11695 @subsection Using GroupLens |
9880 | 11696 |
9881 To use GroupLens you must register a pseudonym with your local Better | 11697 To use GroupLens you must register a pseudonym with your local Better |
9882 Bit Bureau (BBB). At the moment the only better bit in town is at | 11698 Bit Bureau (BBB). |
9883 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html}. | 11699 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only |
11700 better bit in town is at the moment. | |
9884 | 11701 |
9885 Once you have registered you'll need to set a couple of variables. | 11702 Once you have registered you'll need to set a couple of variables. |
9886 | 11703 |
9887 @table @code | 11704 @table @code |
9888 | 11705 |
9891 Setting this variable to a non-@code{nil} value will make Gnus hook into | 11708 Setting this variable to a non-@code{nil} value will make Gnus hook into |
9892 all the relevant GroupLens functions. | 11709 all the relevant GroupLens functions. |
9893 | 11710 |
9894 @item grouplens-pseudonym | 11711 @item grouplens-pseudonym |
9895 @vindex grouplens-pseudonym | 11712 @vindex grouplens-pseudonym |
9896 This variable should be set to the pseudonum you got when registering | 11713 This variable should be set to the pseudonym you got when registering |
9897 with the Better Bit Bureau. | 11714 with the Better Bit Bureau. |
9898 | 11715 |
9899 @item grouplens-newsgroups | 11716 @item grouplens-newsgroups |
9900 @vindex grouplens-newsgroups | 11717 @vindex grouplens-newsgroups |
9901 A list of groups that you want to get GroupLens predictions for. | 11718 A list of groups that you want to get GroupLens predictions for. |
10024 enhanced. It accepts the same specs as the normal summary line format | 11841 enhanced. It accepts the same specs as the normal summary line format |
10025 (@pxref{Summary Buffer Lines}). The default is | 11842 (@pxref{Summary Buffer Lines}). The default is |
10026 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. | 11843 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. |
10027 | 11844 |
10028 @item grouplens-bbb-host | 11845 @item grouplens-bbb-host |
10029 Host running the bbbd server. The default is | 11846 Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the |
10030 @samp{grouplens.cs.umn.edu}. | 11847 default. |
10031 | 11848 |
10032 @item grouplens-bbb-port | 11849 @item grouplens-bbb-port |
10033 Port of the host running the bbbd server. The default is 9000. | 11850 Port of the host running the bbbd server. The default is 9000. |
10034 | 11851 |
10035 @item grouplens-score-offset | 11852 @item grouplens-score-offset |
10041 This variable allows the user to magnify the effect of GroupLens scores. | 11858 This variable allows the user to magnify the effect of GroupLens scores. |
10042 The scale factor is applied after the offset. The default is 1. | 11859 The scale factor is applied after the offset. The default is 1. |
10043 | 11860 |
10044 @end table | 11861 @end table |
10045 | 11862 |
11863 | |
11864 @node Advanced Scoring | |
11865 @section Advanced Scoring | |
11866 | |
11867 Scoring on Subjects and From headers is nice enough, but what if you're | |
11868 really interested in what a person has to say only when she's talking | |
11869 about a particular subject? Or what about if you really don't want to | |
11870 read what person A has to say when she's following up to person B, but | |
11871 want to read what she says when she's following up to person C? | |
11872 | |
11873 By using advanced scoring rules you may create arbitrarily complex | |
11874 scoring patterns. | |
11875 | |
11876 @menu | |
11877 * Advanced Scoring Syntax:: A definition. | |
11878 * Advanced Scoring Examples:: What they look like. | |
11879 * Advanced Scoring Tips:: Getting the most out of it. | |
11880 @end menu | |
11881 | |
11882 | |
11883 @node Advanced Scoring Syntax | |
11884 @subsection Advanced Scoring Syntax | |
11885 | |
11886 Ordinary scoring rules have a string as the first element in the rule. | |
11887 Advanced scoring rules have a list as the first element. The second | |
11888 element is the score to be applied if the first element evaluated to a | |
11889 non-@code{nil} value. | |
11890 | |
11891 These lists may consist of three logical operators, one redirection | |
11892 operator, and various match operators. | |
11893 | |
11894 Logical operators: | |
11895 | |
11896 @table @code | |
11897 @item & | |
11898 @itemx and | |
11899 This logical operator will evaluate each of its arguments until it finds | |
11900 one that evaluates to @code{false}, and then it'll stop. If all arguments | |
11901 evaluate to @code{true} values, then this operator will return | |
11902 @code{true}. | |
11903 | |
11904 @item | | |
11905 @itemx or | |
11906 This logical operator will evaluate each of its arguments until it finds | |
11907 one that evaluates to @code{true}. If no arguments are @code{true}, | |
11908 then this operator will return @code{false}. | |
11909 | |
11910 @item ! | |
11911 @itemx not | |
11912 @itemx ¬ | |
11913 This logical operator only takes a single argument. It returns the | |
11914 inverse of the value of its argument. | |
11915 | |
11916 @end table | |
11917 | |
11918 There is an @dfn{indirection operator} that will make its arguments | |
11919 apply to the ancestors of the current article being scored. For | |
11920 instance, @code{1-} will make score rules apply to the parent of the | |
11921 current article. @code{2-} will make score fules apply to the | |
11922 grandparent of the current article. Alternatively, you can write | |
11923 @code{^^}, where the number of @code{^}s (carets) say how far back into | |
11924 the ancestry you want to go. | |
11925 | |
11926 Finally, we have the match operators. These are the ones that do the | |
11927 real work. Match operators are header name strings followed by a match | |
11928 and a match type. A typical match operator looks like @samp{("from" | |
11929 "Lars Ingebrigtsen" s)}. The header names are the same as when using | |
11930 simple scoring, and the match types are also the same. | |
11931 | |
11932 | |
11933 @node Advanced Scoring Examples | |
11934 @subsection Advanced Scoring Examples | |
11935 | |
11936 Let's say you want to increase the score of articles written by Lars | |
11937 when he's talking about Gnus: | |
11938 | |
11939 @example | |
11940 ((& | |
11941 ("from" "Lars Ingebrigtsen") | |
11942 ("subject" "Gnus")) | |
11943 1000) | |
11944 @end example | |
11945 | |
11946 Quite simple, huh? | |
11947 | |
11948 When he writes long articles, he sometimes has something nice to say: | |
11949 | |
11950 @example | |
11951 ((& | |
11952 ("from" "Lars Ingebrigtsen") | |
11953 (| | |
11954 ("subject" "Gnus") | |
11955 ("lines" 100 >))) | |
11956 1000) | |
11957 @end example | |
11958 | |
11959 However, when he responds to things written by Reig Eigil Logge, you | |
11960 really don't want to read what he's written: | |
11961 | |
11962 @example | |
11963 ((& | |
11964 ("from" "Lars Ingebrigtsen") | |
11965 (1- ("from" "Reig Eigir Logge"))) | |
11966 -100000) | |
11967 @end example | |
11968 | |
11969 Everybody that follows up Redmondo when he writes about disappearing | |
11970 socks should have their scores raised, but only when they talk about | |
11971 white socks. However, when Lars talks about socks, it's usually not | |
11972 very interesting: | |
11973 | |
11974 @example | |
11975 ((& | |
11976 (1- | |
11977 (& | |
11978 ("from" "redmondo@@.*no" r) | |
11979 ("body" "disappearing.*socks" t))) | |
11980 (! ("from" "Lars Ingebrigtsen")) | |
11981 ("body" "white.*socks")) | |
11982 1000) | |
11983 @end example | |
11984 | |
11985 The possibilities are endless. | |
11986 | |
11987 | |
11988 @node Advanced Scoring Tips | |
11989 @subsection Advanced Scoring Tips | |
11990 | |
11991 The @code{&} and @code{|} logical operators do short-circuit logic. | |
11992 That is, they stop processing their arguments when it's clear what the | |
11993 result of the operation will be. For instance, if one of the arguments | |
11994 of an @code{&} evaluates to @code{false}, there's no point in evaluating | |
11995 the rest of the arguments. This means that you should put slow matches | |
11996 (@samp{body}, @code{header}) last and quick matches (@samp{from}, | |
11997 @samp{subject}) first. | |
11998 | |
11999 The indirection arguments (@code{1-} and so on) will make their | |
12000 arguments work on previous generations of the thread. If you say | |
12001 something like: | |
12002 | |
12003 @example | |
12004 ... | |
12005 (1- | |
12006 (1- | |
12007 ("from" "lars"))) | |
12008 ... | |
12009 @end example | |
12010 | |
12011 Then that means "score on the from header of the grandparent of the | |
12012 current article". An indirection is quite fast, but it's better to say: | |
12013 | |
12014 @example | |
12015 (1- | |
12016 (& | |
12017 ("from" "Lars") | |
12018 ("subject" "Gnus"))) | |
12019 @end example | |
12020 | |
12021 than it is to say: | |
12022 | |
12023 @example | |
12024 (& | |
12025 (1- ("from" "Lars")) | |
12026 (1- ("subject" "Gnus"))) | |
12027 @end example | |
12028 | |
12029 | |
12030 @node Score Decays | |
12031 @section Score Decays | |
12032 @cindex score decays | |
12033 @cindex decays | |
12034 | |
12035 You may find that your scores have a tendency to grow without | |
12036 bounds, especially if you're using adaptive scoring. If scores get too | |
12037 big, they lose all meaning---they simply max out and it's difficult to | |
12038 use them in any sensible way. | |
12039 | |
12040 @vindex gnus-decay-scores | |
12041 @findex gnus-decay-score | |
12042 @vindex gnus-score-decay-function | |
12043 Gnus provides a mechanism for decaying scores to help with this problem. | |
12044 When score files are loaded and @code{gnus-decay-scores} is | |
12045 non-@code{nil}, Gnus will run the score files through the decaying | |
12046 mechanism thereby lowering the scores of all non-permanent score rules. | |
12047 The decay itself if performed by the @code{gnus-score-decay-function} | |
12048 function, which is @code{gnus-decay-score} by default. Here's the | |
12049 definition of that function: | |
12050 | |
12051 @lisp | |
12052 (defun gnus-decay-score (score) | |
12053 (floor | |
12054 (- score | |
12055 (* (if (< score 0) 1 -1) | |
12056 (min score | |
12057 (max gnus-score-decay-constant | |
12058 (* (abs score) | |
12059 gnus-score-decay-scale))))))) | |
12060 @end lisp | |
12061 | |
12062 @vindex gnus-score-decay-scale | |
12063 @vindex gnus-score-decay-constant | |
12064 @code{gnus-score-decay-constant} is 3 by default and | |
12065 @code{gnus-score-decay-scale} is 0.05. This should cause the following: | |
12066 | |
12067 @enumerate | |
12068 @item | |
12069 Scores between -3 and 3 will be set to 0 when this function is called. | |
12070 | |
12071 @item | |
12072 Scores with magnitudes between 3 and 60 will be shrunk by 3. | |
12073 | |
12074 @item | |
12075 Scores with magnitudes greater than 60 will be shrunk by 5% of the | |
12076 score. | |
12077 @end enumerate | |
12078 | |
12079 If you don't like this decay function, write your own. It is called | |
12080 with the score to be decayed as its only parameter, and it should return | |
12081 the new score, which should be an integer. | |
12082 | |
12083 Gnus will try to decay scores once a day. If you haven't run Gnus for | |
12084 four days, Gnus will decay the scores four times, for instance. | |
10046 | 12085 |
10047 | 12086 |
10048 @node Various | 12087 @node Various |
10049 @chapter Various | 12088 @chapter Various |
10050 | 12089 |
10058 * Highlighting and Menus:: Making buffers look all nice and cozy. | 12097 * Highlighting and Menus:: Making buffers look all nice and cozy. |
10059 * Buttons:: Get tendonitis in ten easy steps! | 12098 * Buttons:: Get tendonitis in ten easy steps! |
10060 * Daemons:: Gnus can do things behind your back. | 12099 * Daemons:: Gnus can do things behind your back. |
10061 * NoCeM:: How to avoid spam and other fatty foods. | 12100 * NoCeM:: How to avoid spam and other fatty foods. |
10062 * Picons:: How to display pictures of what your reading. | 12101 * Picons:: How to display pictures of what your reading. |
12102 * Undo:: Some actions can be undone. | |
12103 * Moderation:: What to do if you're a moderator. | |
12104 * XEmacs Enhancements:: There are more pictures and stuff under XEmacs. | |
10063 * Various Various:: Things that are really various. | 12105 * Various Various:: Things that are really various. |
10064 @end menu | 12106 @end menu |
10065 | 12107 |
10066 | 12108 |
10067 @node Process/Prefix | 12109 @node Process/Prefix |
10092 If there is neither a numeric prefix nor any articles marked with the | 12134 If there is neither a numeric prefix nor any articles marked with the |
10093 process mark, just perform the operation on the current article. | 12135 process mark, just perform the operation on the current article. |
10094 | 12136 |
10095 Quite simple, really, but it needs to be made clear so that surprises | 12137 Quite simple, really, but it needs to be made clear so that surprises |
10096 are avoided. | 12138 are avoided. |
12139 | |
12140 Commands that react to the process mark will push the current list of | |
12141 process marked articles onto a stack and will then clear all process | |
12142 marked articles. You can restore the previous configuration with the | |
12143 @kbd{M P y} command (@pxref{Setting Process Marks}). | |
10097 | 12144 |
10098 @vindex gnus-summary-goto-unread | 12145 @vindex gnus-summary-goto-unread |
10099 One thing that seems to shock & horrify lots of people is that, for | 12146 One thing that seems to shock & horrify lots of people is that, for |
10100 instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}. | 12147 instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}. |
10101 Since each @kbd{d} (which marks the current article as read) by default | 12148 Since each @kbd{d} (which marks the current article as read) by default |
10150 | 12197 |
10151 Here's an example format spec (from the group buffer): @samp{%M%S%5y: | 12198 Here's an example format spec (from the group buffer): @samp{%M%S%5y: |
10152 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are | 12199 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are |
10153 lots of percentages everywhere. | 12200 lots of percentages everywhere. |
10154 | 12201 |
12202 @menu | |
12203 * Formatting Basics:: A formatting variable is basically a format string. | |
12204 * Advanced Formatting:: Modifying output in various ways. | |
12205 * User-Defined Specs:: Having Gnus call your own functions. | |
12206 * Formatting Fonts:: Making the formatting look colorful and nice. | |
12207 @end menu | |
12208 | |
12209 Currently Gnus uses the following formatting variables: | |
12210 @code{gnus-group-line-format}, @code{gnus-summary-line-format}, | |
12211 @code{gnus-server-line-format}, @code{gnus-topic-line-format}, | |
12212 @code{gnus-group-mode-line-format}, | |
12213 @code{gnus-summary-mode-line-format}, | |
12214 @code{gnus-article-mode-line-format}, | |
12215 @code{gnus-server-mode-line-format}, and | |
12216 @code{gnus-summary-pick-line-format}. | |
12217 | |
12218 All these format variables can also be arbitrary elisp forms. In that | |
12219 case, they will be @code{eval}ed to insert the required lines. | |
12220 | |
12221 @kindex M-x gnus-update-format | |
12222 @findex gnus-update-format | |
12223 Gnus includes a command to help you while creating your own format | |
12224 specs. @kbd{M-x gnus-update-format} will @code{eval} the current form, | |
12225 update the spec in question and pop you to a buffer where you can | |
12226 examine the resulting lisp code to be run to generate the line. | |
12227 | |
12228 | |
12229 | |
12230 @node Formatting Basics | |
12231 @subsection Formatting Basics | |
12232 | |
10155 Each @samp{%} element will be replaced by some string or other when the | 12233 Each @samp{%} element will be replaced by some string or other when the |
10156 buffer in question is generated. @samp{%5y} means ``insert the @samp{y} | 12234 buffer in question is generated. @samp{%5y} means ``insert the @samp{y} |
10157 spec, and pad with spaces to get a 5-character field''. Just like a | 12235 spec, and pad with spaces to get a 5-character field''. |
10158 normal format spec, almost. | 12236 |
10159 | 12237 As with normal C and Emacs Lisp formatting strings, the numerical |
10160 You can also say @samp{%6,4y}, which means that the field will never be | 12238 modifier between the @samp{%} and the formatting type character will |
10161 more than 4 characters wide and never less than 6 characters wide. | 12239 @dfn{pad} the output so that it is always at least that long. |
10162 | 12240 @samp{%5y} will make the field always (at least) five characters wide by |
10163 There are also specs for highlighting, and these are shared by all the | 12241 padding with spaces to the left. If you say @samp{%-5y}, it will pad to |
10164 format variables. Text inside the @samp{%(} and @samp{%)} specifiers | 12242 the right instead. |
10165 will get the special @code{mouse-face} property set, which means that it | 12243 |
10166 will be highlighted (with @code{gnus-mouse-face}) when you put the mouse | 12244 You may also wish to limit the length of the field to protect against |
10167 pointer over it. | 12245 particularly wide values. For that you can say @samp{%4,6y}, which |
12246 means that the field will never be more than 6 characters wide and never | |
12247 less than 4 characters wide. | |
12248 | |
12249 | |
12250 @node Advanced Formatting | |
12251 @subsection Advanced Formatting | |
12252 | |
12253 It is frequently useful to post-process the fields in some way. | |
12254 Padding, limiting, cutting off parts and suppressing certain values can | |
12255 be achieved by using @dfn{tilde modifiers}. A typical tilde spec might | |
12256 look like @samp{%~(cut 3)~(ignore "0")y}. | |
12257 | |
12258 These are the legal modifiers: | |
12259 | |
12260 @table @code | |
12261 @item pad | |
12262 @itemx pad-left | |
12263 Pad the field to the left with spaces until it reaches the required | |
12264 length. | |
12265 | |
12266 @item pad-right | |
12267 Pad the field to the right with spaces until it reaches the required | |
12268 length. | |
12269 | |
12270 @item max | |
12271 @itemx max-left | |
12272 Cut off characters from the left until it reaches the specified length. | |
12273 | |
12274 @item max-right | |
12275 Cut off characters from the right until it reaches the specified | |
12276 length. | |
12277 | |
12278 @item cut | |
12279 @itemx cut-left | |
12280 Cut off the specified number of characters from the left. | |
12281 | |
12282 @item cut-right | |
12283 Cut off the specified number of characters from the right. | |
12284 | |
12285 @item ignore | |
12286 Return an empty string if the field is equal to the specified value. | |
12287 | |
12288 @item form | |
12289 Use the specified form as the field value when the @samp{@@} spec is | |
12290 used. | |
12291 @end table | |
12292 | |
12293 Let's take an example. The @samp{%o} spec in the summary mode lines | |
12294 will return a date in compact ISO8601 format---@samp{19960809T230410}. | |
12295 This is quite a mouthful, so we want to shave off the century number and | |
12296 the time, leaving us with a six-character date. That would be | |
12297 @samp{%~(cut-left 2)~(max-right 6)~(pad 6)o}. (Cutting is done before | |
12298 maxing, and we need the padding to ensure that the date is never less | |
12299 than 6 characters to make it look nice in columns.) | |
12300 | |
12301 Ignoring is done first; then cutting; then maxing; and then as the very | |
12302 last operation, padding. | |
12303 | |
12304 If you use lots of these advanced thingies, you'll find that Gnus gets | |
12305 quite slow. This can be helped enormously by running @kbd{M-x | |
12306 gnus-compile} when you are satisfied with the look of your lines. | |
12307 @xref{Compilation}. | |
12308 | |
12309 | |
12310 @node User-Defined Specs | |
12311 @subsection User-Defined Specs | |
12312 | |
12313 All the specs allow for inserting user defined specifiers---@samp{u}. | |
12314 The next character in the format string should be a letter. Gnus | |
12315 will call the function @code{gnus-user-format-function-}@samp{X}, where | |
12316 @samp{X} is the letter following @samp{%u}. The function will be passed | |
12317 a single parameter---what the parameter means depends on what buffer | |
12318 it's being called from. The function should return a string, which will | |
12319 be inserted into the buffer just like information from any other | |
12320 specifier. This function may also be called with dummy values, so it | |
12321 should protect against that. | |
12322 | |
12323 You can also use tilde modifiers (@pxref{Advanced Formatting} to achieve | |
12324 much the same without defining new functions. Here's an example: | |
12325 @samp{%~(form (count-lines (point-min) (point)))@@}. The form | |
12326 given here will be evaluated to yield the current line number, and then | |
12327 inserted. | |
12328 | |
12329 | |
12330 @node Formatting Fonts | |
12331 @subsection Formatting Fonts | |
12332 | |
12333 There are specs for highlighting, and these are shared by all the format | |
12334 variables. Text inside the @samp{%(} and @samp{%)} specifiers will get | |
12335 the special @code{mouse-face} property set, which means that it will be | |
12336 highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer | |
12337 over it. | |
10168 | 12338 |
10169 Text inside the @samp{%[} and @samp{%]} specifiers will have their | 12339 Text inside the @samp{%[} and @samp{%]} specifiers will have their |
10170 normal faces set using @code{gnus-face-0}, which is @code{bold} by | 12340 normal faces set using @code{gnus-face-0}, which is @code{bold} by |
10171 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1} | 12341 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1} |
10172 instead, and so on. Create as many faces as you wish. The same goes | 12342 instead, and so on. Create as many faces as you wish. The same goes |
10194 @end lisp | 12364 @end lisp |
10195 | 12365 |
10196 I'm sure you'll be able to use this scheme to create totally unreadable | 12366 I'm sure you'll be able to use this scheme to create totally unreadable |
10197 and extremely vulgar displays. Have fun! | 12367 and extremely vulgar displays. Have fun! |
10198 | 12368 |
10199 Currently Gnus uses the following formatting variables: | |
10200 @code{gnus-group-line-format}, @code{gnus-summary-line-format}, | |
10201 @code{gnus-server-line-format}, @code{gnus-topic-line-format}, | |
10202 @code{gnus-group-mode-line-format}, | |
10203 @code{gnus-summary-mode-line-format}, | |
10204 @code{gnus-article-mode-line-format}, | |
10205 @code{gnus-server-mode-line-format}. | |
10206 | |
10207 Note that the @samp{%(} specs (and friends) do not make any sense on the | 12369 Note that the @samp{%(} specs (and friends) do not make any sense on the |
10208 mode-line variables. | 12370 mode-line variables. |
10209 | |
10210 All these format variables can also be arbitrary elisp forms. In that | |
10211 case, they will be @code{eval}ed to insert the required lines. | |
10212 | |
10213 @kindex M-x gnus-update-format | |
10214 @findex gnus-update-format | |
10215 Gnus includes a command to help you while creating your own format | |
10216 specs. @kbd{M-x gnus-update-format} will @code{eval} the current form, | |
10217 update the spec in question and pop you to a buffer where you can | |
10218 examine the resulting lisp code to be run to generate the line. | |
10219 | 12371 |
10220 | 12372 |
10221 @node Windows Configuration | 12373 @node Windows Configuration |
10222 @section Windows Configuration | 12374 @section Windows Configuration |
10223 @cindex windows configuration | 12375 @cindex windows configuration |
10243 This is an alist. The @dfn{key} is a symbol that names some action or | 12395 This is an alist. The @dfn{key} is a symbol that names some action or |
10244 other. For instance, when displaying the group buffer, the window | 12396 other. For instance, when displaying the group buffer, the window |
10245 configuration function will use @code{group} as the key. A full list of | 12397 configuration function will use @code{group} as the key. A full list of |
10246 possible names is listed below. | 12398 possible names is listed below. |
10247 | 12399 |
10248 The @dfn{value} (i. e., the @dfn{split}) says how much space each buffer | 12400 The @dfn{value} (i.e., the @dfn{split}) says how much space each buffer |
10249 should occupy. To take the @code{article} split as an example - | 12401 should occupy. To take the @code{article} split as an example - |
10250 | 12402 |
10251 @lisp | 12403 @lisp |
10252 (article (vertical 1.0 (summary 0.25 point) | 12404 (article (vertical 1.0 (summary 0.25 point) |
10253 (article 1.0))) | 12405 (article 1.0))) |
10404 @code{reply-yank}, @code{mail-bounce}, @code{draft}, | 12556 @code{reply-yank}, @code{mail-bounce}, @code{draft}, |
10405 @code{pipe}, @code{bug}, @code{compose-bounce}. | 12557 @code{pipe}, @code{bug}, @code{compose-bounce}. |
10406 | 12558 |
10407 Note that the @code{message} key is used for both | 12559 Note that the @code{message} key is used for both |
10408 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If | 12560 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If |
10409 it is desireable to distinguish between the two, something like this | 12561 it is desirable to distinguish between the two, something like this |
10410 might be used: | 12562 might be used: |
10411 | 12563 |
10412 @lisp | 12564 @lisp |
10413 (message (horizontal 1.0 | 12565 (message (horizontal 1.0 |
10414 (vertical 1.0 (message 1.0 point)) | 12566 (vertical 1.0 (message 1.0 point)) |
10415 (vertical 0.24 | 12567 (vertical 0.24 |
10416 (if (buffer-live-p gnus-summary-buffer) | 12568 (if (buffer-live-p gnus-summary-buffer) |
10417 '(summary 0.5)) | 12569 '(summary 0.5)) |
10418 (group 1.0))))) | 12570 (group 1.0))))) |
10419 @end lisp | 12571 @end lisp |
10420 | 12572 |
10421 @findex gnus-add-configuration | 12573 @findex gnus-add-configuration |
10422 Since the @code{gnus-buffer-configuration} variable is so long and | 12574 Since the @code{gnus-buffer-configuration} variable is so long and |
10423 complicated, there's a function you can use to ease changing the config | 12575 complicated, there's a function you can use to ease changing the config |
10431 (summary .25 point) | 12583 (summary .25 point) |
10432 (article 1.0)))) | 12584 (article 1.0)))) |
10433 @end lisp | 12585 @end lisp |
10434 | 12586 |
10435 You'd typically stick these @code{gnus-add-configuration} calls in your | 12587 You'd typically stick these @code{gnus-add-configuration} calls in your |
10436 @file{.gnus} file or in some startup hook---they should be run after | 12588 @file{.gnus.el} file or in some startup hook---they should be run after |
10437 Gnus has been loaded. | 12589 Gnus has been loaded. |
10438 | 12590 |
10439 | 12591 @vindex gnus-always-force-window-configuration |
10440 @node Compilation | 12592 If all windows mentioned in the configuration are already visible, Gnus |
10441 @section Compilation | 12593 won't change the window configuration. If you always want to force the |
12594 ``right'' window configuration, you can set | |
12595 @code{gnus-always-force-window-configuration} to non-@code{nil}. | |
12596 | |
12597 | |
12598 @node Compilation | |
12599 @section Compilation | |
10442 @cindex compilation | 12600 @cindex compilation |
10443 @cindex byte-compilation | 12601 @cindex byte-compilation |
10444 | 12602 |
10445 @findex gnus-compile | 12603 @findex gnus-compile |
10446 | 12604 |
10453 course.) | 12611 course.) |
10454 | 12612 |
10455 To help with this, you can run @kbd{M-x gnus-compile} after you've | 12613 To help with this, you can run @kbd{M-x gnus-compile} after you've |
10456 fiddled around with the variables and feel that you're (kind of) | 12614 fiddled around with the variables and feel that you're (kind of) |
10457 satisfied. This will result in the new specs being byte-compiled, and | 12615 satisfied. This will result in the new specs being byte-compiled, and |
10458 you'll get top speed again. | 12616 you'll get top speed again. Gnus will save these compiled specs in the |
12617 @file{.newsrc.eld} file. (User-defined functions aren't compiled by | |
12618 this function, though---you should compile them yourself by sticking | |
12619 them into the @code{.gnus.el} file and byte-compiling that file.) | |
10459 | 12620 |
10460 | 12621 |
10461 @node Mode Lines | 12622 @node Mode Lines |
10462 @section Mode Lines | 12623 @section Mode Lines |
10463 @cindex mode lines | 12624 @cindex mode lines |
10474 @cindex display-time | 12635 @cindex display-time |
10475 | 12636 |
10476 @vindex gnus-mode-non-string-length | 12637 @vindex gnus-mode-non-string-length |
10477 By default, Gnus displays information on the current article in the mode | 12638 By default, Gnus displays information on the current article in the mode |
10478 lines of the summary and article buffers. The information Gnus wishes | 12639 lines of the summary and article buffers. The information Gnus wishes |
10479 to display (eg. the subject of the article) is often longer than the | 12640 to display (e.g. the subject of the article) is often longer than the |
10480 mode lines, and therefore have to be cut off at some point. The | 12641 mode lines, and therefore have to be cut off at some point. The |
10481 @code{gnus-mode-non-string-length} variable says how long the other | 12642 @code{gnus-mode-non-string-length} variable says how long the other |
10482 elements on the line is (i.e., the non-info part). If you put | 12643 elements on the line is (i.e., the non-info part). If you put |
10483 additional elements on the mode line (eg. a clock), you should modify | 12644 additional elements on the mode line (e.g. a clock), you should modify |
10484 this variable: | 12645 this variable: |
10485 | 12646 |
10486 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it> | 12647 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it> |
10487 @lisp | 12648 @lisp |
10488 (add-hook 'display-time-hook | 12649 (add-hook 'display-time-hook |
10493 (length display-time-string))))) | 12654 (length display-time-string))))) |
10494 @end lisp | 12655 @end lisp |
10495 | 12656 |
10496 If this variable is @code{nil} (which is the default), the mode line | 12657 If this variable is @code{nil} (which is the default), the mode line |
10497 strings won't be chopped off, and they won't be padded either. | 12658 strings won't be chopped off, and they won't be padded either. |
12659 Note that the default is unlikely to be desirable, as even the | |
12660 percentage complete in the buffer may be crowded off the mode line; | |
12661 the user should configure this variable appropriately for their | |
12662 configuration. | |
10498 | 12663 |
10499 | 12664 |
10500 @node Highlighting and Menus | 12665 @node Highlighting and Menus |
10501 @section Highlighting and Menus | 12666 @section Highlighting and Menus |
10502 @cindex visual | 12667 @cindex visual |
10559 @item gnus-mouse-face | 12724 @item gnus-mouse-face |
10560 @vindex gnus-mouse-face | 12725 @vindex gnus-mouse-face |
10561 This is the face (i.e., font) used for mouse highlighting in Gnus. No | 12726 This is the face (i.e., font) used for mouse highlighting in Gnus. No |
10562 mouse highlights will be done if @code{gnus-visual} is @code{nil}. | 12727 mouse highlights will be done if @code{gnus-visual} is @code{nil}. |
10563 | 12728 |
10564 @item gnus-display-type | |
10565 @vindex gnus-display-type | |
10566 This variable is symbol indicating the display type Emacs is running | |
10567 under. The symbol should be one of @code{color}, @code{grayscale} or | |
10568 @code{mono}. If Gnus guesses this display attribute wrongly, either set | |
10569 this variable in your @file{~/.emacs} or set the resource | |
10570 @code{Emacs.displayType} in your @file{~/.Xdefaults}. | |
10571 | |
10572 @item gnus-background-mode | |
10573 @vindex gnus-background-mode | |
10574 This is a symbol indicating the Emacs background brightness. The symbol | |
10575 should be one of @code{light} or @code{dark}. If Gnus guesses this | |
10576 frame attribute wrongly, either set this variable in your @file{~/.emacs} or | |
10577 set the resource @code{Emacs.backgroundMode} in your @file{~/.Xdefaults}. | |
10578 `gnus-display-type'. | |
10579 @end table | 12729 @end table |
10580 | 12730 |
10581 There are hooks associated with the creation of all the different menus: | 12731 There are hooks associated with the creation of all the different menus: |
10582 | 12732 |
10583 @table @code | 12733 @table @code |
10715 the function will then be called once every day somewhere near that | 12865 the function will then be called once every day somewhere near that |
10716 time. Modified by the @var{idle} parameter, of course. | 12866 time. Modified by the @var{idle} parameter, of course. |
10717 | 12867 |
10718 @vindex gnus-demon-timestep | 12868 @vindex gnus-demon-timestep |
10719 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep} | 12869 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep} |
10720 seconds. This is @code{60} by default. If you change that variable, | 12870 seconds. This is 60 by default. If you change that variable, |
10721 all the timings in the handlers will be affected.) | 12871 all the timings in the handlers will be affected.) |
10722 | 12872 |
10723 @vindex gnus-use-demon | 12873 @vindex gnus-use-demon |
10724 To set the whole thing in motion, though, you have to set | 12874 To set the whole thing in motion, though, you have to set |
10725 @code{gnus-use-demon} to @code{t}. | 12875 @code{gnus-use-demon} to @code{t}. |
10732 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) | 12882 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) |
10733 @end lisp | 12883 @end lisp |
10734 | 12884 |
10735 @findex gnus-demon-add-nocem | 12885 @findex gnus-demon-add-nocem |
10736 @findex gnus-demon-add-scanmail | 12886 @findex gnus-demon-add-scanmail |
12887 @findex gnus-demon-add-rescan | |
10737 @findex gnus-demon-add-disconnection | 12888 @findex gnus-demon-add-disconnection |
10738 Some ready-made functions to do this has been created: | 12889 Some ready-made functions to do this has been created: |
10739 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, and | 12890 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, |
10740 @code{gnus-demon-add-scanmail}. Just put those functions in your | 12891 @code{gnus-demon-add-rescan}, and @code{gnus-demon-add-scanmail}. Just |
10741 @file{.gnus} if you want those abilities. | 12892 put those functions in your @file{.gnus} if you want those abilities. |
10742 | 12893 |
10743 @findex gnus-demon-init | 12894 @findex gnus-demon-init |
10744 @findex gnus-demon-cancel | 12895 @findex gnus-demon-cancel |
10745 @vindex gnus-demon-handlers | 12896 @vindex gnus-demon-handlers |
10746 If you add handlers to @code{gnus-demon-handlers} directly, you should | 12897 If you add handlers to @code{gnus-demon-handlers} directly, you should |
10784 by default. | 12935 by default. |
10785 | 12936 |
10786 @item gnus-nocem-groups | 12937 @item gnus-nocem-groups |
10787 @vindex gnus-nocem-groups | 12938 @vindex gnus-nocem-groups |
10788 Gnus will look for NoCeM messages in the groups in this list. The | 12939 Gnus will look for NoCeM messages in the groups in this list. The |
10789 default is @code{("alt.nocem.misc" "news.admin.net-abuse.announce")}. | 12940 default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins" |
12941 "alt.nocem.misc" "news.admin.net-abuse.announce")}. | |
10790 | 12942 |
10791 @item gnus-nocem-issuers | 12943 @item gnus-nocem-issuers |
10792 @vindex gnus-nocem-issuers | 12944 @vindex gnus-nocem-issuers |
10793 There are many people issuing NoCeM messages. This list says what | 12945 There are many people issuing NoCeM messages. This list says what |
10794 people you want to listen to. The default is @code{("Automoose-1" | 12946 people you want to listen to. The default is @code{("Automoose-1" |
10808 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be | 12960 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be |
10809 Norwegian, and was the person(s) who invented NoCeM. | 12961 Norwegian, and was the person(s) who invented NoCeM. |
10810 | 12962 |
10811 @item jem@@xpat.com; | 12963 @item jem@@xpat.com; |
10812 @cindex Jem | 12964 @cindex Jem |
10813 Jem---Korean despammer who is getting very busy these days. | 12965 John Milburn---despammer located in Korea who is getting very busy these |
12966 days. | |
10814 | 12967 |
10815 @item red@@redpoll.mrfs.oh.us (Richard E. Depew) | 12968 @item red@@redpoll.mrfs.oh.us (Richard E. Depew) |
10816 Richard E. Depew---lone American despammer. He mostly cancels binary | 12969 Richard E. Depew---lone American despammer. He mostly cancels binary |
10817 postings to non-binary groups and removes spews (regurgitated articles). | 12970 postings to non-binary groups and removes spews (regurgitated articles). |
10818 @end table | 12971 @end table |
10819 | 12972 |
10820 You do not have to heed NoCeM messages from all these people---just the | 12973 You do not have to heed NoCeM messages from all these people---just the |
10821 ones you want to listen to. | 12974 ones you want to listen to. |
12975 | |
12976 @item gnus-nocem-verifyer | |
12977 @vindex gnus-nocem-verifyer | |
12978 @findex mc-verify | |
12979 This should be a function for verifying that the NoCeM issuer is who she | |
12980 says she is. The default is @code{mc-verify}, which is a Mailcrypt | |
12981 function. If this is too slow and you don't care for verification | |
12982 (which may be dangerous), you can set this variable to @code{nil}. | |
10822 | 12983 |
10823 @item gnus-nocem-directory | 12984 @item gnus-nocem-directory |
10824 @vindex gnus-nocem-directory | 12985 @vindex gnus-nocem-directory |
10825 This is where Gnus will store its NoCeM cache files. The default is | 12986 This is where Gnus will store its NoCeM cache files. The default is |
10826 @file{~/News/NoCeM/}. | 12987 @file{~/News/NoCeM/}. |
10851 | 13012 |
10852 | 13013 |
10853 @node Picon Basics | 13014 @node Picon Basics |
10854 @subsection Picon Basics | 13015 @subsection Picon Basics |
10855 | 13016 |
10856 What are Picons? To quote directly from the Picons Web site | 13017 What are Picons? To quote directly from the Picons Web site: |
10857 (@samp{http://www.cs.indiana.edu/picons/ftp/index.html}): | |
10858 | 13018 |
10859 @quotation | 13019 @quotation |
10860 @dfn{Picons} is short for ``personal icons''. They're small, | 13020 @dfn{Picons} is short for ``personal icons''. They're small, |
10861 constrained images used to represent users and domains on the net, | 13021 constrained images used to represent users and domains on the net, |
10862 organized into databases so that the appropriate image for a given | 13022 organized into databases so that the appropriate image for a given |
10864 databases for Usenet newsgroups and weather forecasts. The picons are | 13024 databases for Usenet newsgroups and weather forecasts. The picons are |
10865 in either monochrome @code{XBM} format or color @code{XPM} and | 13025 in either monochrome @code{XBM} format or color @code{XPM} and |
10866 @code{GIF} formats. | 13026 @code{GIF} formats. |
10867 @end quotation | 13027 @end quotation |
10868 | 13028 |
10869 Please see the above mentioned web site for instructions on obtaining | 13029 For instructions on obtaining and installing the picons databases, point |
10870 and installing the picons databases, or the following ftp site: | 13030 your Web browser at |
10871 @samp{http://www.cs.indiana.edu/picons/ftp/index.html}. | 13031 @file{http://www.cs.indiana.edu/picons/ftp/index.html}. |
10872 | 13032 |
10873 @vindex gnus-picons-database | 13033 @vindex gnus-picons-database |
10874 Gnus expects picons to be installed into a location pointed to by | 13034 Gnus expects picons to be installed into a location pointed to by |
10875 @code{gnus-picons-database}. | 13035 @code{gnus-picons-database}. |
10876 | 13036 |
10918 @item gnus-picons-display-where | 13078 @item gnus-picons-display-where |
10919 @vindex gnus-picons-display-where | 13079 @vindex gnus-picons-display-where |
10920 Where the picon images should be displayed. It is @code{picons} by | 13080 Where the picon images should be displayed. It is @code{picons} by |
10921 default (which by default maps to the buffer @samp{*Picons*}). Other | 13081 default (which by default maps to the buffer @samp{*Picons*}). Other |
10922 valid places could be @code{article}, @code{summary}, or | 13082 valid places could be @code{article}, @code{summary}, or |
10923 @samp{"*scratch*"} for all I care. Just make sure that you've made the | 13083 @samp{*scratch*} for all I care. Just make sure that you've made the |
10924 buffer visible using the standard Gnus window configuration | 13084 buffer visible using the standard Gnus window configuration |
10925 routines---@xref{Windows Configuration}. | 13085 routines---@pxref{Windows Configuration}. |
10926 | 13086 |
10927 @end table | 13087 @end table |
10928 | 13088 |
10929 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your | 13089 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your |
10930 window configuration for you to include the @code{picons} buffer. | 13090 window configuration for you to include the @code{picons} buffer. |
10984 newsgroups. | 13144 newsgroups. |
10985 | 13145 |
10986 @item gnus-picons-user-directories | 13146 @item gnus-picons-user-directories |
10987 @vindex gnus-picons-user-directories | 13147 @vindex gnus-picons-user-directories |
10988 List of subdirectories to search in @code{gnus-picons-database} for user | 13148 List of subdirectories to search in @code{gnus-picons-database} for user |
10989 faces. Defaults to @code{("local" "users" "usenix" "misc/MISC")}. | 13149 faces. @code{("local" "users" "usenix" "misc/MISC")} is the default. |
10990 | 13150 |
10991 @item gnus-picons-domain-directories | 13151 @item gnus-picons-domain-directories |
10992 @vindex gnus-picons-domain-directories | 13152 @vindex gnus-picons-domain-directories |
10993 List of subdirectories to search in @code{gnus-picons-database} for | 13153 List of subdirectories to search in @code{gnus-picons-database} for |
10994 domain name faces. Defaults to @code{("domains")}. Some people may | 13154 domain name faces. Defaults to @code{("domains")}. Some people may |
11012 @samp{*Icon Buffer*}. | 13172 @samp{*Icon Buffer*}. |
11013 | 13173 |
11014 @end table | 13174 @end table |
11015 | 13175 |
11016 | 13176 |
13177 @node Undo | |
13178 @section Undo | |
13179 @cindex undo | |
13180 | |
13181 It is very useful to be able to undo actions one has done. In normal | |
13182 Emacs buffers, it's easy enough---you just push the @code{undo} button. | |
13183 In Gnus buffers, however, it isn't that simple. | |
13184 | |
13185 The things Gnus displays in its buffer is of no value whatsoever to | |
13186 Gnus---it's all just data that is designed to look nice to the user. | |
13187 Killing a group in the group buffer with @kbd{C-k} makes the line | |
13188 disappear, but that's just a side-effect of the real action---the | |
13189 removal of the group in question from the internal Gnus structures. | |
13190 Undoing something like that can't be done by the normal Emacs | |
13191 @code{undo} function. | |
13192 | |
13193 Gnus tries to remedy this somewhat by keeping track of what the user | |
13194 does and coming up with actions that would reverse the actions the user | |
13195 takes. When the user then presses the @code{undo} key, Gnus will run | |
13196 the code to reverse the previous action, or the previous actions. | |
13197 However, not all actions are easily reversible, so Gnus currently offers | |
13198 a few key functions to be undoable. These include killing groups, | |
13199 yanking groups, and changing the list of read articles of groups. | |
13200 That's it, really. More functions may be added in the future, but each | |
13201 added function means an increase in data to be stored, so Gnus will | |
13202 never be totally undoable. | |
13203 | |
13204 @findex gnus-undo-mode | |
13205 @vindex gnus-use-undo | |
13206 @findex gnus-undo | |
13207 The undoability is provided by the @code{gnus-undo-mode} minor mode. It | |
13208 is used if @code{gnus-use-undo} is non-@code{nil}, which is the | |
13209 default. The @kbd{M-C-_} key performs the @code{gnus-undo} command | |
13210 command, which should feel kinda like the normal Emacs @code{undo} | |
13211 command. | |
13212 | |
13213 | |
13214 @node Moderation | |
13215 @section Moderation | |
13216 @cindex moderation | |
13217 | |
13218 If you are a moderator, you can use the @file{gnus-mdrtn.el} package. | |
13219 It is not included in the standard Gnus package. Write a mail to | |
13220 @samp{larsi@@ifi.uio.no} and state what group you moderate, and you'll | |
13221 get a copy. | |
13222 | |
13223 The moderation package is implemented as a minor mode for summary | |
13224 buffers. Put | |
13225 | |
13226 @lisp | |
13227 (add-hook 'gnus-summary-mode-hook 'gnus-moderate) | |
13228 @end lisp | |
13229 | |
13230 in your @file{.gnus.el} file. | |
13231 | |
13232 If you are the moderation of @samp{rec.zoofle}, this is how it's | |
13233 supposed to work: | |
13234 | |
13235 @enumerate | |
13236 @item | |
13237 You split your incoming mail by matching on | |
13238 @samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted | |
13239 articles in some mail group---for instance, @samp{nnml:rec.zoofle}. | |
13240 | |
13241 @item | |
13242 You enter that group once in a while and post articles using the @kbd{e} | |
13243 (edit-and-post) or @kbd{s} (just send unedited) commands. | |
13244 | |
13245 @item | |
13246 If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some | |
13247 articles that weren't approved by you, you can cancel them with the | |
13248 @kbd{c} command. | |
13249 @end enumerate | |
13250 | |
13251 To use moderation mode in these two groups, say: | |
13252 | |
13253 @lisp | |
13254 (setq gnus-moderated-list | |
13255 "^nnml:rec.zoofle$\\|^rec.zoofle$") | |
13256 @end lisp | |
13257 | |
13258 | |
13259 @node XEmacs Enhancements | |
13260 @section XEmacs Enhancements | |
13261 @cindex XEmacs | |
13262 | |
13263 XEmacs is able to display pictures and stuff, so Gnus has taken | |
13264 advantage of that. Relevant variables include: | |
13265 | |
13266 @table @code | |
13267 @item gnus-xmas-glyph-directory | |
13268 @vindex gnus-xmas-glyph-directory | |
13269 This is where Gnus will look for pictures. Gnus will normally | |
13270 auto-detect this directory, but you may set it manually if you have an | |
13271 unusual directory structure. | |
13272 | |
13273 @item gnus-xmas-logo-color-alist | |
13274 @vindex gnus-xmas-logo-color-alist | |
13275 This is an alist where the key is a type symbol and the values are the | |
13276 foreground and background color of the splash page glyph. | |
13277 | |
13278 @item gnus-xmas-logo-color-style | |
13279 @vindex gnus-xmas-logo-color-style | |
13280 This is the key used to look up the color in the alist described above. | |
13281 Legal values include @code{flame}, @code{pine}, @code{moss}, | |
13282 @code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape}, | |
13283 @code{labia}, @code{berry}, @code{neutral}, and @code{september}. | |
13284 | |
13285 @item gnus-use-toolbar | |
13286 @vindex gnus-use-toolbar | |
13287 If @code{nil}, don't display toolbars. If non-@code{nil}, it should be | |
13288 one of @code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar}, | |
13289 @code{right-toolbar}, or @code{left-toolbar}. | |
13290 | |
13291 @item gnus-group-toolbar | |
13292 @vindex gnus-group-toolbar | |
13293 The toolbar in the group buffer. | |
13294 | |
13295 @item gnus-summary-toolbar | |
13296 @vindex gnus-summary-toolbar | |
13297 The toolbar in the summary buffer. | |
13298 | |
13299 @item gnus-summary-mail-toolbar | |
13300 @vindex gnus-summary-mail-toolbar | |
13301 The toolbar in the summary buffer of mail groups. | |
13302 | |
13303 @item gnus-xmas-modeline-glyph | |
13304 @vindex gnus-xmas-modeline-glyph | |
13305 A glyph displayed in all Gnus mode lines. It is a tiny gnu head by | |
13306 default. | |
13307 | |
13308 @end table | |
13309 | |
13310 | |
11017 @node Various Various | 13311 @node Various Various |
11018 @section Various Various | 13312 @section Various Various |
11019 @cindex mode lines | 13313 @cindex mode lines |
11020 @cindex highlights | 13314 @cindex highlights |
11021 | 13315 |
11022 @table @code | 13316 @table @code |
13317 | |
13318 @item gnus-directory | |
13319 @vindex gnus-directory | |
13320 All Gnus directories will be initialized from this variable, which | |
13321 defaults to the @samp{SAVEDIR} environment variable, or @file{~/News/} | |
13322 if that variable isn't set. | |
13323 | |
13324 @item gnus-default-directory | |
13325 @vindex gnus-default-directory | |
13326 Not related to the above variable at all---this variable says what the | |
13327 default directory of all Gnus buffers should be. If you issue commands | |
13328 like @kbd{C-x C-f}, the prompt you'll get starts in the current buffer's | |
13329 default directory. If this variable is @code{nil} (which is the | |
13330 default), the default directory will be the default directory of the | |
13331 buffer you were in when you started Gnus. | |
11023 | 13332 |
11024 @item gnus-verbose | 13333 @item gnus-verbose |
11025 @vindex gnus-verbose | 13334 @vindex gnus-verbose |
11026 This variable is an integer between zero and ten. The higher the value, | 13335 This variable is an integer between zero and ten. The higher the value, |
11027 the more messages will be displayed. If this variable is zero, Gnus | 13336 the more messages will be displayed. If this variable is zero, Gnus |
11035 to the Gnus backends instead of Gnus proper. | 13344 to the Gnus backends instead of Gnus proper. |
11036 | 13345 |
11037 @item nnheader-max-head-length | 13346 @item nnheader-max-head-length |
11038 @vindex nnheader-max-head-length | 13347 @vindex nnheader-max-head-length |
11039 When the backends read straight heads of articles, they all try to read | 13348 When the backends read straight heads of articles, they all try to read |
11040 as little as possible. This variable (default @code{4096}) specifies | 13349 as little as possible. This variable (default 4096) specifies |
11041 the absolute max length the backends will try to read before giving up | 13350 the absolute max length the backends will try to read before giving up |
11042 on finding a separator line between the head and the body. If this | 13351 on finding a separator line between the head and the body. If this |
11043 variable is @code{nil}, there is no upper read bound. If it is | 13352 variable is @code{nil}, there is no upper read bound. If it is |
11044 @code{t}, the backends won't try to read the articles piece by piece, | 13353 @code{t}, the backends won't try to read the articles piece by piece, |
11045 but read the entire articles. This makes sense with some versions of | 13354 but read the entire articles. This makes sense with some versions of |
11046 @code{ange-ftp}. | 13355 @code{ange-ftp}. |
13356 | |
13357 @item nnheader-head-chop-length | |
13358 @vindex nnheader-head-chop-length | |
13359 This variable says how big a piece of each article to read when doing | |
13360 the operation described above. | |
11047 | 13361 |
11048 @item nnheader-file-name-translation-alist | 13362 @item nnheader-file-name-translation-alist |
11049 @vindex nnheader-file-name-translation-alist | 13363 @vindex nnheader-file-name-translation-alist |
11050 @cindex file names | 13364 @cindex file names |
11051 @cindex illegal characters in file names | 13365 @cindex illegal characters in file names |
11092 | 13406 |
11093 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: | 13407 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: |
11094 | 13408 |
11095 @quotation | 13409 @quotation |
11096 @strong{Te Deum} | 13410 @strong{Te Deum} |
13411 | |
11097 @sp 1 | 13412 @sp 1 |
11098 Not because of victories @* | 13413 Not because of victories @* |
11099 I sing,@* | 13414 I sing,@* |
11100 having none,@* | 13415 having none,@* |
11101 but for the common sunshine,@* | 13416 but for the common sunshine,@* |
11102 the breeze,@* | 13417 the breeze,@* |
11103 the largess of the spring. | 13418 the largess of the spring. |
13419 | |
11104 @sp 1 | 13420 @sp 1 |
11105 Not for victory@* | 13421 Not for victory@* |
11106 but for the day's work done@* | 13422 but for the day's work done@* |
11107 as well as I was able;@* | 13423 as well as I was able;@* |
11108 not for a seat upon the dais@* | 13424 not for a seat upon the dais@* |
11136 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary | 13452 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary |
11137 distribution point for the new and spiffy versions of Gnus, and is known | 13453 distribution point for the new and spiffy versions of Gnus, and is known |
11138 as The Site That Destroys Newsrcs And Drives People Mad. | 13454 as The Site That Destroys Newsrcs And Drives People Mad. |
11139 | 13455 |
11140 During the first extended alpha period of development, the new Gnus was | 13456 During the first extended alpha period of development, the new Gnus was |
11141 called ``(ding) Gnus''. @dfn{(ding)}, is, of course, short for | 13457 called ``(ding) Gnus''. @dfn{(ding)} is, of course, short for |
11142 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares? | 13458 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares? |
11143 (Besides, the ``Gnus'' in this abbreviation should probably be | 13459 (Besides, the ``Gnus'' in this abbreviation should probably be |
11144 pronounced ``news'' as @sc{Umeda} intended, which makes it a more | 13460 pronounced ``news'' as @sc{Umeda} intended, which makes it a more |
11145 appropriate name, don't you think?) | 13461 appropriate name, don't you think?) |
11146 | 13462 |
11148 spunky name, we decided that the name was @emph{too} spunky, so we | 13464 spunky name, we decided that the name was @emph{too} spunky, so we |
11149 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. | 13465 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. |
11150 ``@sc{gnus}''. New vs. old. | 13466 ``@sc{gnus}''. New vs. old. |
11151 | 13467 |
11152 The first ``proper'' release of Gnus 5 was done in November 1995 when it | 13468 The first ``proper'' release of Gnus 5 was done in November 1995 when it |
11153 was included in the Emacs 19.30 distribution. | 13469 was included in the Emacs 19.30 distribution (132 (ding) Gnus releases |
11154 | 13470 plus 15 Gnus 5.0 releases). |
11155 In May 1996 the next Gnus generation (aka. ``September Gnus'') was | 13471 |
11156 released under the name ``Gnus 5.2''. | 13472 In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99 |
13473 releases)) was released under the name ``Gnus 5.2'' (40 releases). | |
13474 | |
13475 On July 28th 1996 work on Red Gnus was begun, and it was released on | |
13476 January 25th 1997 (after 84 releases) as ``Gnus 5.4''. | |
13477 | |
13478 If you happen upon a version of Gnus that has a name that is prefixed -- | |
13479 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' -- | |
13480 don't panic. Don't let it know that you're frightened. Back away. | |
13481 Slowly. Whatever you do, don't run. Walk away, calmly, until you're | |
13482 out of its reach. Find a proper released version of Gnus and snuggle up | |
13483 to that instead. | |
11157 | 13484 |
11158 @menu | 13485 @menu |
11159 * Why?:: What's the point of Gnus? | 13486 * Why?:: What's the point of Gnus? |
11160 * Compatibility:: Just how compatible is Gnus with @sc{gnus}? | 13487 * Compatibility:: Just how compatible is Gnus with @sc{gnus}? |
11161 * Conformity:: Gnus tries to conform to all standards. | 13488 * Conformity:: Gnus tries to conform to all standards. |
11295 This is considered to be a ``vanity header'', while I consider it to be | 13622 This is considered to be a ``vanity header'', while I consider it to be |
11296 consumer information. After seeing so many badly formatted articles | 13623 consumer information. After seeing so many badly formatted articles |
11297 coming from @code{tin} and @code{Netscape} I know not to use either of | 13624 coming from @code{tin} and @code{Netscape} I know not to use either of |
11298 those for posting articles. I would not have known that if it wasn't | 13625 those for posting articles. I would not have known that if it wasn't |
11299 for the @code{X-Newsreader} header. | 13626 for the @code{X-Newsreader} header. |
11300 | |
11301 @item References | |
11302 Gnus does line breaking on this header. I infer from RFC1036 that being | |
11303 conservative in what you output is not creating 5000-character lines, so | |
11304 it seems like a good idea to me. However, this standard-to-be says that | |
11305 whitespace in the @code{References} header is to be preserved, so... It | |
11306 doesn't matter one way or the other to Gnus, so if somebody tells me | |
11307 what The Way is, I'll change it. Or not. | |
11308 @end table | 13627 @end table |
11309 | 13628 |
11310 @end table | 13629 @end table |
11311 | 13630 |
11312 If you ever notice Gnus acting non-compliantly with regards to the texts | 13631 If you ever notice Gnus acting non-compliantly with regards to the texts |
11324 Gnus should work on : | 13643 Gnus should work on : |
11325 | 13644 |
11326 @itemize @bullet | 13645 @itemize @bullet |
11327 | 13646 |
11328 @item | 13647 @item |
11329 Emacs 19.30 and up. | 13648 Emacs 19.32 and up. |
11330 | 13649 |
11331 @item | 13650 @item |
11332 XEmacs 19.13 and up. | 13651 XEmacs 19.14 and up. |
11333 | 13652 |
11334 @item | 13653 @item |
11335 Mule versions based on Emacs 19.30 and up. | 13654 Mule versions based on Emacs 19.32 and up. |
11336 | 13655 |
11337 @end itemize | 13656 @end itemize |
11338 | 13657 |
11339 Gnus will absolutely not work on any Emacsen older than that. Not | 13658 Gnus will absolutely not work on any Emacsen older than that. Not |
11340 reliably, at least. | 13659 reliably, at least. |
11341 | 13660 |
11342 There are some vague differences between Gnus on the various platforms: | 13661 There are some vague differences between Gnus on the various |
11343 | 13662 platforms---XEmacs features more graphics (a logo and a toolbar)---but |
11344 @itemize @bullet | 13663 other than that, things should look pretty much the same under all |
11345 | 13664 Emacsen. |
11346 @item | |
11347 The mouse-face on Gnus lines under Emacs and Mule is delimited to | |
11348 certain parts of the lines while they cover the entire line under | |
11349 XEmacs. | |
11350 | |
11351 @item | |
11352 The same with current-article marking---XEmacs puts an underline under | |
11353 the entire summary line while Emacs and Mule are nicer and kinder. | |
11354 | |
11355 @item | |
11356 XEmacs features more graphics---a logo and a toolbar. | |
11357 | |
11358 @item | |
11359 Citation highlighting us better under Emacs and Mule than under XEmacs. | |
11360 | |
11361 @item | |
11362 Emacs 19.26-19.28 have tangible hidden headers, which can be a bit | |
11363 confusing. | |
11364 | |
11365 @end itemize | |
11366 | 13665 |
11367 | 13666 |
11368 @node Contributors | 13667 @node Contributors |
11369 @subsection Contributors | 13668 @subsection Contributors |
11370 @cindex contributors | 13669 @cindex contributors |
11383 I would like to take this opportunity to thank the Academy for... oops, | 13682 I would like to take this opportunity to thank the Academy for... oops, |
11384 wrong show. | 13683 wrong show. |
11385 | 13684 |
11386 @itemize @bullet | 13685 @itemize @bullet |
11387 | 13686 |
11388 @item Masanobu @sc{Umeda} | 13687 @item |
11389 The writer of the original @sc{gnus}. | 13688 Masanobu @sc{Umeda}---the writer of the original @sc{gnus}. |
11390 | 13689 |
11391 @item Per Abrahamsen | 13690 @item |
11392 Custom, scoring, highlighting and @sc{soup} code (as well as numerous | 13691 Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as |
11393 other things). | 13692 well as numerous other things). |
11394 | 13693 |
11395 @item Luis Fernandes | 13694 @item |
11396 Design and graphics. | 13695 Luis Fernandes---design and graphics. |
11397 | 13696 |
11398 @item Wes Hardaker | 13697 @item |
11399 @file{gnus-picon.el} and the manual section on @dfn{picons} | 13698 Erik Naggum---help, ideas, support, code and stuff. |
11400 (@pxref{Picons}). | 13699 |
11401 | 13700 @item |
11402 @item Brad Miller | 13701 Wes Hardaker---@file{gnus-picon.el} and the manual section on |
11403 @file{gnus-gl.el} and the GroupLens manual section (@pxref{GroupLens}). | 13702 @dfn{picons} (@pxref{Picons}). |
11404 | 13703 |
11405 @item Sudish Joseph | 13704 @item |
11406 Innumerable bug fixes. | 13705 Brad Miller---@file{gnus-gl.el} and the GroupLens manual section |
11407 | 13706 (@pxref{GroupLens}). |
11408 @item Ilja Weis | 13707 |
11409 @file{gnus-topic.el}. | 13708 @item |
11410 | 13709 Sudish Joseph---innumerable bug fixes. |
11411 @item Steven L. Baur | 13710 |
11412 Lots and lots of bugs detections and fixes. | 13711 @item |
11413 | 13712 Ilja Weis---@file{gnus-topic.el}. |
11414 @item Vladimir Alexiev | 13713 |
11415 The refcard and reference booklets. | 13714 @item |
11416 | 13715 Steven L. Baur---lots and lots and lots of bugs detections and fixes. |
11417 @item Felix Lee & JWZ | 13716 |
11418 I stole some pieces from the XGnus distribution by Felix Lee and JWZ. | 13717 @item |
11419 | 13718 Vladimir Alexiev---the refcard and reference booklets. |
11420 @item Scott Byer | 13719 |
11421 @file{nnfolder.el} enhancements & rewrite. | 13720 @item |
11422 | 13721 Felix Lee & Jamie Zawinsky---I stole some pieces from the XGnus |
11423 @item Peter Mutsaers | 13722 distribution by Felix Lee and JWZ. |
11424 Orphan article scoring code. | 13723 |
11425 | 13724 @item |
11426 @item Ken Raeburn | 13725 Scott Byer---@file{nnfolder.el} enhancements & rewrite. |
11427 POP mail support. | 13726 |
11428 | 13727 @item |
11429 @item Hallvard B Furuseth | 13728 Peter Mutsaers---orphan article scoring code. |
11430 Various bits and pieces, especially dealing with .newsrc files. | 13729 |
11431 | 13730 @item |
11432 @item Brian Edmonds | 13731 Ken Raeburn---POP mail support. |
11433 @file{gnus-bbdb.el}. | 13732 |
11434 | 13733 @item |
11435 @item Ricardo Nassif and Mark Borges | 13734 Hallvard B Furuseth---various bits and pieces, especially dealing with |
11436 Proof-reading. | 13735 .newsrc files. |
11437 | 13736 |
11438 @item Kevin Davidson | 13737 @item |
11439 Came up with the name @dfn{ding}, so blame him. | 13738 Brian Edmonds---@file{gnus-bbdb.el}. |
13739 | |
13740 @item | |
13741 David Moore---rewrite of @file{nnvirtual.el} and many other things. | |
13742 | |
13743 @item | |
13744 Ricardo Nassif, Mark Borges, and Jost Krieger---proof-reading. | |
13745 | |
13746 @item | |
13747 Kevin Davidson---came up with the name @dfn{ding}, so blame him. | |
13748 | |
13749 @item | |
13750 François Pinard---many, many interesting and thorough bug reports. | |
11440 | 13751 |
11441 @end itemize | 13752 @end itemize |
11442 | 13753 |
11443 Peter Arius, Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel | 13754 The following people have contributed many patches and suggestions: |
11444 Quinlan, Frank D. Cringle, Geoffrey T. Dairiki, Fabrice Popineau and | 13755 |
11445 Andrew Eskilsson have all contributed code and suggestions. | 13756 Christopher Davis, |
13757 Andrew Eskilsson, | |
13758 Kai Grossjohann, | |
13759 David Kågedal, | |
13760 Richard Pieri, | |
13761 Fabrice Popineau, | |
13762 Daniel Quinlan, | |
13763 Jason L. Tibbitts, III, | |
13764 and | |
13765 Jack Vinson. | |
13766 | |
13767 Also thanks to the following for patches and stuff: | |
13768 | |
13769 Peter Arius, | |
13770 Marc Auslander, | |
13771 Chris Bone, | |
13772 Mark Borges, | |
13773 Lance A. Brown, | |
13774 Kees de Bruin, | |
13775 Martin Buchholz, | |
13776 Kevin Buhr, | |
13777 Alastair Burt, | |
13778 Joao Cachopo, | |
13779 Massimo Campostrini, | |
13780 Michael R. Cook, | |
13781 Glenn Coombs, | |
13782 Frank D. Cringle, | |
13783 Geoffrey T. Dairiki, | |
13784 Andre Deparade, | |
13785 Ulrik Dickow, | |
13786 Dave Disser, | |
13787 Joev Dubach, | |
13788 Paul Eggert, | |
13789 Michael Ernst, | |
13790 Luc Van Eycken, | |
13791 Sam Falkner, | |
13792 Paul Franklin, | |
13793 David S. Goldberg, | |
13794 D. Hall, | |
13795 Magnus Hammerin, | |
13796 Raja R. Harinath, | |
13797 Hisashige Kenji, @c Hisashige | |
13798 Marc Horowitz, | |
13799 François Felix Ingrand, | |
13800 Ishikawa Ichiro, @c Ishikawa | |
13801 Lee Iverson, | |
13802 Rajappa Iyer, | |
13803 Randell Jesup, | |
13804 Fred Johansen, | |
13805 Greg Klanderman, | |
13806 Peter Skov Knudsen, | |
13807 Shuhei Kobayashi, @c Kobayashi | |
13808 Thor Kristoffersen, | |
13809 Jens Lautenbacher, | |
13810 Carsten Leonhardt, | |
13811 Christian Limpach, | |
13812 Markus Linnala, | |
13813 Dave Love, | |
13814 Tonny Madsen, | |
13815 Shlomo Mahlab, | |
13816 Nat Makarevitch, | |
13817 Timo Metzemakers, | |
13818 Richard Mlynarik, | |
13819 Lantz Moore, | |
13820 Morioka Tomohiko, @c Morioka | |
13821 Erik Toubro Nielsen, | |
13822 Hrvoje Niksic, | |
13823 Andy Norman, | |
13824 C. R. Oldham, | |
13825 Alexandre Oliva, | |
13826 Ken Olstad, | |
13827 Masaharu Onishi, @c Onishi | |
13828 Hideki Ono, @c Ono | |
13829 William Perry, | |
13830 Stephen Peters, | |
13831 Ulrich Pfeifer, | |
13832 John McClary Prevost, | |
13833 Colin Rafferty, | |
13834 Bart Robinson, | |
13835 Jason Rumney, | |
13836 Loren Schall, | |
13837 Dan Schmidt, | |
13838 Ralph Schleicher, | |
13839 Randal L. Schwartz, | |
13840 Danny Siu, | |
13841 Paul D. Smith, | |
13842 Jeff Sparkes, | |
13843 Michael Sperber, | |
13844 Richard Stallman, | |
13845 Greg Stark, | |
13846 Paul Stodghill, | |
13847 Kurt Swanson, | |
13848 Samuel Tardieu, | |
13849 Teddy, | |
13850 Chuck Thompson, | |
13851 Philippe Troin, | |
13852 Jan Vroonhof, | |
13853 Barry A. Warsaw, | |
13854 Christoph Wedler, | |
13855 Joe Wells, | |
13856 and | |
13857 Katsumi Yamaoka. @c Yamaoka | |
13858 | |
13859 For a full overview of what each person has done, the ChangeLogs | |
13860 included in the Gnus alpha distributions should give ample reading | |
13861 (550kB and counting). | |
13862 | |
13863 Apologies to everybody that I've forgotten, of which there are many, I'm | |
13864 sure. | |
13865 | |
13866 Gee, that's quite a list of people. I guess that must mean that there | |
13867 actually are people who are using Gnus. Who'd'a thunk it! | |
11446 | 13868 |
11447 | 13869 |
11448 @node New Features | 13870 @node New Features |
11449 @subsection New Features | 13871 @subsection New Features |
11450 @cindex new features | 13872 @cindex new features |
13873 | |
13874 @menu | |
13875 * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. | |
13876 * September Gnus:: The Thing Formally Known As Gnus 5.3/5.3. | |
13877 * Red Gnus:: Third time best---Gnus 5.4/5.5. | |
13878 @end menu | |
13879 | |
13880 These lists are, of course, just @emph{short} overviews of the | |
13881 @emph{most} important new features. No, really. There are tons more. | |
13882 Yes, we have feeping creaturism in full effect. | |
13883 | |
13884 | |
13885 @node ding Gnus | |
13886 @subsubsection (ding) Gnus | |
13887 | |
13888 New features in Gnus 5.0/5.1: | |
11451 | 13889 |
11452 @itemize @bullet | 13890 @itemize @bullet |
11453 | 13891 |
11454 @item | 13892 @item |
11455 The look of all buffers can be changed by setting format-like variables | 13893 The look of all buffers can be changed by setting format-like variables |
11556 | 13994 |
11557 @item | 13995 @item |
11558 You can click on buttons instead of using the keyboard | 13996 You can click on buttons instead of using the keyboard |
11559 (@pxref{Buttons}). | 13997 (@pxref{Buttons}). |
11560 | 13998 |
11561 @item | |
11562 Gnus can use NoCeM files to weed out spam (@pxref{NoCeM}). | |
11563 | |
11564 @end itemize | 13999 @end itemize |
11565 | 14000 |
11566 This is, of course, just a @emph{short} overview of the @emph{most} | 14001 |
11567 important new features. No, really. There are tons more. Yes, we have | 14002 @node September Gnus |
11568 feeping creaturism in full effect, but nothing too gratuitous, I would | 14003 @subsubsection September Gnus |
11569 hope. | 14004 |
14005 New features in Gnus 5.2/5.3: | |
14006 | |
14007 @itemize @bullet | |
14008 | |
14009 @item | |
14010 A new message composition mode is used. All old customization variables | |
14011 for @code{mail-mode}, @code{rnews-reply-mode} and @code{gnus-msg} are | |
14012 now obsolete. | |
14013 | |
14014 @item | |
14015 Gnus is now able to generate @dfn{sparse} threads---threads where | |
14016 missing articles are represented by empty nodes (@pxref{Customizing | |
14017 Threading}). | |
14018 | |
14019 @lisp | |
14020 (setq gnus-build-sparse-threads 'some) | |
14021 @end lisp | |
14022 | |
14023 @item | |
14024 Outgoing articles are stored on a special archive server | |
14025 (@pxref{Archived Messages}). | |
14026 | |
14027 @item | |
14028 Partial thread regeneration now happens when articles are | |
14029 referred. | |
14030 | |
14031 @item | |
14032 Gnus can make use of GroupLens predictions (@pxref{GroupLens}). | |
14033 | |
14034 @item | |
14035 Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). | |
14036 | |
14037 @item | |
14038 A @code{trn}-line tree buffer can be displayed (@pxref{Tree Display}). | |
14039 | |
14040 @lisp | |
14041 (setq gnus-use-trees t) | |
14042 @end lisp | |
14043 | |
14044 @item | |
14045 An @code{nn}-like pick-and-read minor mode is available for the summary | |
14046 buffers (@pxref{Pick and Read}). | |
14047 | |
14048 @lisp | |
14049 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) | |
14050 @end lisp | |
14051 | |
14052 @item | |
14053 In binary groups you can use a special binary minor mode (@pxref{Binary | |
14054 Groups}). | |
14055 | |
14056 @item | |
14057 Groups can be grouped in a folding topic hierarchy (@pxref{Group | |
14058 Topics}). | |
14059 | |
14060 @lisp | |
14061 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) | |
14062 @end lisp | |
14063 | |
14064 @item | |
14065 Gnus can re-send and bounce mail (@pxref{Summary Mail Commands}). | |
14066 | |
14067 @item | |
14068 Groups can now have a score, and bubbling based on entry frequency | |
14069 is possible (@pxref{Group Score}). | |
14070 | |
14071 @lisp | |
14072 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) | |
14073 @end lisp | |
14074 | |
14075 @item | |
14076 Groups can be process-marked, and commands can be performed on | |
14077 groups of groups (@pxref{Marking Groups}). | |
14078 | |
14079 @item | |
14080 Caching is possible in virtual groups. | |
14081 | |
14082 @item | |
14083 @code{nndoc} now understands all kinds of digests, mail boxes, rnews | |
14084 news batches, ClariNet briefs collections, and just about everything | |
14085 else (@pxref{Document Groups}). | |
14086 | |
14087 @item | |
14088 Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets | |
14089 (@pxref{SOUP}). | |
14090 | |
14091 @item | |
14092 The Gnus cache is much faster. | |
14093 | |
14094 @item | |
14095 Groups can be sorted according to many criteria (@pxref{Sorting | |
14096 Groups}). | |
14097 | |
14098 @item | |
14099 New group parameters have been introduced to set list-address and | |
14100 expiry times (@pxref{Group Parameters}). | |
14101 | |
14102 @item | |
14103 All formatting specs allow specifying faces to be used | |
14104 (@pxref{Formatting Fonts}). | |
14105 | |
14106 @item | |
14107 There are several more commands for setting/removing/acting on process | |
14108 marked articles on the @kbd{M P} submap (@pxref{Setting Process Marks}). | |
14109 | |
14110 @item | |
14111 The summary buffer can be limited to show parts of the available | |
14112 articles based on a wide range of criteria. These commands have been | |
14113 bound to keys on the @kbd{/} submap (@pxref{Limiting}). | |
14114 | |
14115 @item | |
14116 Articles can be made persistent with the @kbd{*} command | |
14117 (@pxref{Persistent Articles}). | |
14118 | |
14119 @item | |
14120 All functions for hiding article elements are now toggles. | |
14121 | |
14122 @item | |
14123 Article headers can be buttonized (@pxref{Article Washing}). | |
14124 | |
14125 @lisp | |
14126 (add-hook 'gnus-article-display-hook | |
14127 'gnus-article-add-buttons-to-head) | |
14128 @end lisp | |
14129 | |
14130 @item | |
14131 All mail backends support fetching articles by @code{Message-ID}. | |
14132 | |
14133 @item | |
14134 Duplicate mail can now be treated properly (@pxref{Duplicates}). | |
14135 | |
14136 @item | |
14137 All summary mode commands are available directly from the article | |
14138 buffer (@pxref{Article Keymap}). | |
14139 | |
14140 @item | |
14141 Frames can be part of @code{gnus-buffer-configuration} (@pxref{Windows | |
14142 Configuration}). | |
14143 | |
14144 @item | |
14145 Mail can be re-scanned by a daemonic process (@pxref{Daemons}). | |
14146 | |
14147 @item | |
14148 Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}). | |
14149 | |
14150 @lisp | |
14151 (setq gnus-use-nocem t) | |
14152 @end lisp | |
14153 | |
14154 @item | |
14155 Groups can be made permanently visible (@pxref{Listing Groups}). | |
14156 | |
14157 @lisp | |
14158 (setq gnus-permanently-visible-groups "^nnml:") | |
14159 @end lisp | |
14160 | |
14161 @item | |
14162 Many new hooks have been introduced to make customizing easier. | |
14163 | |
14164 @item | |
14165 Gnus respects the @code{Mail-Copies-To} header. | |
14166 | |
14167 @item | |
14168 Threads can be gathered by looking at the @code{References} header | |
14169 (@pxref{Customizing Threading}). | |
14170 | |
14171 @lisp | |
14172 (setq gnus-summary-thread-gathering-function | |
14173 'gnus-gather-threads-by-references) | |
14174 @end lisp | |
14175 | |
14176 @item | |
14177 Read articles can be stored in a special backlog buffer to avoid | |
14178 refetching (@pxref{Article Backlog}). | |
14179 | |
14180 @lisp | |
14181 (setq gnus-keep-backlog 50) | |
14182 @end lisp | |
14183 | |
14184 @item | |
14185 A clean copy of the current article is always stored in a separate | |
14186 buffer to allow easier treatment. | |
14187 | |
14188 @item | |
14189 Gnus can suggest where to save articles (@pxref{Saving Articles}). | |
14190 | |
14191 @item | |
14192 Gnus doesn't have to do as much prompting when saving (@pxref{Saving | |
14193 Articles}). | |
14194 | |
14195 @lisp | |
14196 (setq gnus-prompt-before-saving t) | |
14197 @end lisp | |
14198 | |
14199 @item | |
14200 @code{gnus-uu} can view decoded files asynchronously while fetching | |
14201 articles (@pxref{Other Decode Variables}). | |
14202 | |
14203 @lisp | |
14204 (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view) | |
14205 @end lisp | |
14206 | |
14207 @item | |
14208 Filling in the article buffer now works properly on cited text | |
14209 (@pxref{Article Washing}). | |
14210 | |
14211 @item | |
14212 Hiding cited text adds buttons to toggle hiding, and how much | |
14213 cited text to hide is now customizable (@pxref{Article Hiding}). | |
14214 | |
14215 @lisp | |
14216 (setq gnus-cited-lines-visible 2) | |
14217 @end lisp | |
14218 | |
14219 @item | |
14220 Boring headers can be hidden (@pxref{Article Hiding}). | |
14221 | |
14222 @lisp | |
14223 (add-hook 'gnus-article-display-hook | |
14224 'gnus-article-hide-boring-headers t) | |
14225 @end lisp | |
14226 | |
14227 @item | |
14228 Default scoring values can now be set from the menu bar. | |
14229 | |
14230 @item | |
14231 Further syntax checking of outgoing articles have been added. | |
14232 | |
14233 @end itemize | |
14234 | |
14235 | |
14236 @node Red Gnus | |
14237 @subsubsection Red Gnus | |
14238 | |
14239 New features in Gnus 5.4/5.5: | |
14240 | |
14241 @itemize @bullet | |
14242 | |
14243 @item | |
14244 @file{nntp.el} has been totally rewritten in an asynchronous fashion. | |
14245 | |
14246 @item | |
14247 Article prefetching functionality has been moved up into | |
14248 Gnus (@pxref{Asynchronous Fetching}). | |
14249 | |
14250 @item | |
14251 Scoring can now be performed with logical operators like @code{and}, | |
14252 @code{or}, @code{not}, and parent redirection (@pxref{Advanced | |
14253 Scoring}). | |
14254 | |
14255 @item | |
14256 Article washing status can be displayed in the | |
14257 article mode line (@pxref{Misc Article}). | |
14258 | |
14259 @item | |
14260 @file{gnus.el} has been split into many smaller files. | |
14261 | |
14262 @item | |
14263 Suppression of duplicate articles based on Message-ID can be done | |
14264 (@pxref{Duplicate Suppression}). | |
14265 | |
14266 @lisp | |
14267 (setq gnus-suppress-duplicates t) | |
14268 @end lisp | |
14269 | |
14270 @item | |
14271 New variables for specifying what score and adapt files are to be | |
14272 considered home score and adapt files (@pxref{Home Score File}). | |
14273 | |
14274 @item | |
14275 @code{nndoc} was rewritten to be easily extendable (@pxref{Document | |
14276 Server Internals}). | |
14277 | |
14278 @item | |
14279 Groups can inherit group parameters from parent topics (@pxref{Topic | |
14280 Parameters}). | |
14281 | |
14282 @item | |
14283 Article editing has been revamped and is now actually usable. | |
14284 | |
14285 @item | |
14286 Signatures can be recognized in more intelligent fashions | |
14287 (@pxref{Article Signature}). | |
14288 | |
14289 @item | |
14290 Summary pick mode has been made to look more @code{nn}-like. Line | |
14291 numbers are displayed and the @kbd{.} command can be used to pick | |
14292 articles (@code{Pick and Read}). | |
14293 | |
14294 @item | |
14295 Commands for moving the @file{.newsrc.eld} from one server to | |
14296 another have been added (@pxref{Changing Servers}). | |
14297 | |
14298 @item | |
14299 A way to specify that ``uninteresting'' fields be suppressed when | |
14300 generating lines in buffers (@pxref{Advanced Formatting}). | |
14301 | |
14302 @item | |
14303 Several commands in the group buffer can be undone with @kbd{M-C-_} | |
14304 (@pxref{Undo}). | |
14305 | |
14306 @item | |
14307 Scoring can be done on words using the new score type @code{w} | |
14308 (@pxref{Score File Format}). | |
14309 | |
14310 @item | |
14311 Adaptive scoring can be done on a Subject word-by-word basis | |
14312 (@pxref{Adaptive Scoring}). | |
14313 | |
14314 @lisp | |
14315 (setq gnus-use-adaptive-scoring '(word)) | |
14316 @end lisp | |
14317 | |
14318 @item | |
14319 Scores can be decayed (@pxref{Score Decays}). | |
14320 | |
14321 @lisp | |
14322 (setq gnus-decay-scores t) | |
14323 @end lisp | |
14324 | |
14325 @item | |
14326 Scoring can be performed using a regexp on the Date header. The Date is | |
14327 normalized to compact ISO 8601 format first (@pxref{Score File Format}). | |
14328 | |
14329 @item | |
14330 A new command has been added to remove all data on articles from | |
14331 the native server (@pxref{Changing Servers}). | |
14332 | |
14333 @item | |
14334 A new command for reading collections of documents | |
14335 (@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{M-C-d} | |
14336 (@pxref{Really Various Summary Commands}). | |
14337 | |
14338 @item | |
14339 Process mark sets can be pushed and popped (@pxref{Setting Process | |
14340 Marks}). | |
14341 | |
14342 @item | |
14343 A new mail-to-news backend makes it possible to post even when the NNTP | |
14344 server doesn't allow posting (@pxref{Mail-To-News Gateways}). | |
14345 | |
14346 @item | |
14347 A new backend for reading searches from Web search engines | |
14348 (@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added | |
14349 (@pxref{Web Searches}). | |
14350 | |
14351 @item | |
14352 Groups inside topics can now be sorted using the standard sorting | |
14353 functions, and each topic can be sorted independently (@pxref{Topic | |
14354 Sorting}). | |
14355 | |
14356 @item | |
14357 Subsets of the groups can be sorted independently (@code{Sorting | |
14358 Groups}). | |
14359 | |
14360 @item | |
14361 Cached articles can be pulled into the groups (@pxref{Summary Generation | |
14362 Commands}). | |
14363 | |
14364 @item | |
14365 Score files are now applied in a more reliable order (@pxref{Score | |
14366 Variables}). | |
14367 | |
14368 @item | |
14369 Reports on where mail messages end up can be generated (@pxref{Splitting | |
14370 Mail}). | |
14371 | |
14372 @item | |
14373 More hooks and functions have been added to remove junk from incoming | |
14374 mail before saving the mail (@pxref{Washing Mail}). | |
14375 | |
14376 @item | |
14377 Emphasized text can be properly fontisized: | |
14378 | |
14379 @lisp | |
14380 (add-hook 'gnus-article-display-hook 'gnus-article-emphasize) | |
14381 @end lisp | |
14382 | |
14383 @end itemize | |
11570 | 14384 |
11571 | 14385 |
11572 @node Newest Features | 14386 @node Newest Features |
11573 @subsection Newest Features | 14387 @subsection Newest Features |
11574 @cindex todo | 14388 @cindex todo |
11580 | 14394 |
11581 @itemize @bullet | 14395 @itemize @bullet |
11582 @item | 14396 @item |
11583 Native @sc{mime} support is something that should be done. | 14397 Native @sc{mime} support is something that should be done. |
11584 @item | 14398 @item |
11585 A better and simpler method for specifying mail composing methods. | |
11586 @item | |
11587 Allow posting through mail-to-news gateways. | |
11588 @item | |
11589 Really do unbinhexing. | 14399 Really do unbinhexing. |
11590 @end itemize | 14400 @end itemize |
11591 | 14401 |
11592 And much, much, much more. There is more to come than has already been | 14402 And much, much, much more. There is more to come than has already been |
11593 implemented. (But that's always true, isn't it?) | 14403 implemented. (But that's always true, isn't it?) |
11594 | 14404 |
11595 @code{<URL:http://www.ifi.uio.no/~larsi/sgnus/todo>} is where the actual | 14405 @file{<URL:http://www.ifi.uio.no/~larsi/rgnus/todo>} is where the actual |
11596 up-to-the-second todo list is located, so if you're really curious, you | 14406 up-to-the-second todo list is located, so if you're really curious, you |
11597 could point your Web browser over that-a-way. | 14407 could point your Web browser over that-a-way. |
14408 | |
14409 @iftex | |
14410 | |
14411 @node The Manual | |
14412 @section The Manual | |
14413 @cindex colophon | |
14414 @cindex manual | |
14415 | |
14416 This manual was generated from a TeXinfo file and then run through | |
14417 either @code{texi2dvi} | |
14418 @iflatex | |
14419 or my own home-brewed TeXinfo to \LaTeX\ transformer, | |
14420 and then run through @code{latex} and @code{dvips} | |
14421 @end iflatex | |
14422 to get what you hold in your hands now. | |
14423 | |
14424 The following conventions have been used: | |
14425 | |
14426 @enumerate | |
14427 | |
14428 @item | |
14429 This is a @samp{string} | |
14430 | |
14431 @item | |
14432 This is a @kbd{keystroke} | |
14433 | |
14434 @item | |
14435 This is a @file{file} | |
14436 | |
14437 @item | |
14438 This is a @code{symbol} | |
14439 | |
14440 @end enumerate | |
14441 | |
14442 So if I were to say ``set @code{flargnoze} to @samp{yes}'', that would | |
14443 mean: | |
14444 | |
14445 @lisp | |
14446 (setq flargnoze "yes") | |
14447 @end lisp | |
14448 | |
14449 If I say ``set @code{flumphel} to @code{yes}'', that would mean: | |
14450 | |
14451 @lisp | |
14452 (setq flumphel 'yes) | |
14453 @end lisp | |
14454 | |
14455 @samp{yes} and @code{yes} are two @emph{very} different things---don't | |
14456 ever get them confused. | |
14457 | |
14458 @iflatex | |
14459 @c @head | |
14460 Of course, everything in this manual is of vital interest, so you should | |
14461 read it all. Several times. However, if you feel like skimming the | |
14462 manual, look for that gnu head you should see in the margin over | |
14463 there---it means that what's being discussed is of more importance than | |
14464 the rest of the stuff. (On the other hand, if everything is infinitely | |
14465 important, how can anything be more important than that? Just one more | |
14466 of the mysteries of this world, I guess.) | |
14467 @end iflatex | |
14468 | |
14469 @end iftex | |
11598 | 14470 |
11599 | 14471 |
11600 @node Terminology | 14472 @node Terminology |
11601 @section Terminology | 14473 @section Terminology |
11602 | 14474 |
11648 Secondary backends are somewhere half-way between being native and being | 14520 Secondary backends are somewhere half-way between being native and being |
11649 foreign, but they mostly act like they are native. | 14521 foreign, but they mostly act like they are native. |
11650 | 14522 |
11651 @item article | 14523 @item article |
11652 @cindex article | 14524 @cindex article |
11653 A nessage that has been posted as news. | 14525 A message that has been posted as news. |
11654 | 14526 |
11655 @item mail message | 14527 @item mail message |
11656 @cindex mail message | 14528 @cindex mail message |
11657 A message that has been mailed. | 14529 A message that has been mailed. |
11658 | 14530 |
11711 is rather large, as you might surmise. | 14583 is rather large, as you might surmise. |
11712 | 14584 |
11713 @item bogus groups | 14585 @item bogus groups |
11714 @cindex bogus groups | 14586 @cindex bogus groups |
11715 A group that exists in the @file{.newsrc} file, but isn't known to the | 14587 A group that exists in the @file{.newsrc} file, but isn't known to the |
11716 server (i. e., it isn't in the active file), is a @emph{bogus group}. | 14588 server (i.e., it isn't in the active file), is a @emph{bogus group}. |
11717 This means that the group probably doesn't exist (any more). | 14589 This means that the group probably doesn't exist (any more). |
11718 | 14590 |
11719 @item server | 14591 @item server |
11720 @cindex server | 14592 @cindex server |
11721 A machine than one can connect to and get news (or mail) from. | 14593 A machine than one can connect to and get news (or mail) from. |
11726 server parameters. | 14598 server parameters. |
11727 | 14599 |
11728 @item virtual server | 14600 @item virtual server |
11729 @cindex virtual server | 14601 @cindex virtual server |
11730 A named select method. Since a select methods defines all there is to | 14602 A named select method. Since a select methods defines all there is to |
11731 know about connecting to a (physical) server, taking the who things as a | 14603 know about connecting to a (physical) server, taking the things as a |
11732 whole is a virtual server. | 14604 whole is a virtual server. |
14605 | |
14606 @item washing | |
14607 @cindex washing | |
14608 Taking a buffer and running it through a filter of some sort. The | |
14609 result will (more often than not) be cleaner and more pleasing than the | |
14610 original. | |
14611 | |
14612 @item ephemeral groups | |
14613 @cindex ephemeral groups | |
14614 Most groups store data on what articles you have read. @dfn{Ephemeral} | |
14615 groups are groups that will have no data stored---when you exit the | |
14616 group, it'll disappear into the aether. | |
14617 | |
14618 @item solid groups | |
14619 @cindex solid groups | |
14620 This is the opposite of ephemeral groups. All groups listed in the | |
14621 group buffer are solid groups. | |
14622 | |
14623 @item sparse articles | |
14624 @cindex sparse articles | |
14625 These are article placeholders shown in the summary buffer when | |
14626 @code{gnus-build-sparse-threads} has been switched on. | |
11733 | 14627 |
11734 @end table | 14628 @end table |
11735 | 14629 |
11736 | 14630 |
11737 @node Customization | 14631 @node Customization |
11760 @table @code | 14654 @table @code |
11761 | 14655 |
11762 @item gnus-read-active-file | 14656 @item gnus-read-active-file |
11763 Set this to @code{nil}, which will inhibit Gnus from requesting the | 14657 Set this to @code{nil}, which will inhibit Gnus from requesting the |
11764 entire active file from the server. This file is often v. large. You | 14658 entire active file from the server. This file is often v. large. You |
11765 also have to set @code{gnus-check-new-news} and | 14659 also have to set @code{gnus-check-new-newsgroups} and |
11766 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus | 14660 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus |
11767 doesn't suddenly decide to fetch the active file anyway. | 14661 doesn't suddenly decide to fetch the active file anyway. |
11768 | 14662 |
11769 @item gnus-nov-is-evil | 14663 @item gnus-nov-is-evil |
11770 This one has to be @code{nil}. If not, grabbing article headers from | 14664 This one has to be @code{nil}. If not, grabbing article headers from |
11886 flee}, you have some old @file{.el} files lying around. Delete these. | 14780 flee}, you have some old @file{.el} files lying around. Delete these. |
11887 | 14781 |
11888 @item | 14782 @item |
11889 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a | 14783 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a |
11890 how-to. | 14784 how-to. |
14785 | |
14786 @item | |
14787 @vindex max-lisp-eval-depth | |
14788 Gnus works on many recursive structures, and in some extreme (and very | |
14789 rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at | |
14790 you. If this happens to you, set @code{max-lisp-eval-depth} to 500 or | |
14791 something like that. | |
11891 @end enumerate | 14792 @end enumerate |
11892 | 14793 |
11893 If all else fails, report the problem as a bug. | 14794 If all else fails, report the problem as a bug. |
11894 | 14795 |
11895 @cindex bugs | 14796 @cindex bugs |
11916 mail you and ask for more info, and everything takes more time. | 14817 mail you and ask for more info, and everything takes more time. |
11917 | 14818 |
11918 If the problem you're seeing is very visual, and you can't quite explain | 14819 If the problem you're seeing is very visual, and you can't quite explain |
11919 it, copy the Emacs window to a file (with @code{xwd}, for instance), put | 14820 it, copy the Emacs window to a file (with @code{xwd}, for instance), put |
11920 it somewhere it can be reached, and include the URL of the picture in | 14821 it somewhere it can be reached, and include the URL of the picture in |
11921 the bug report.a | 14822 the bug report. |
11922 | 14823 |
11923 If you just need help, you are better off asking on | 14824 If you just need help, you are better off asking on |
11924 @samp{gnu.emacs.gnus}. I'm not very helpful. | 14825 @samp{gnu.emacs.gnus}. I'm not very helpful. |
11925 | 14826 |
11926 @cindex gnu.emacs.gnus | 14827 @cindex gnu.emacs.gnus |
11928 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. | 14829 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. |
11929 Write to @samp{ding-request@@ifi.uio.no} to subscribe. | 14830 Write to @samp{ding-request@@ifi.uio.no} to subscribe. |
11930 | 14831 |
11931 | 14832 |
11932 @node A Programmers Guide to Gnus | 14833 @node A Programmers Guide to Gnus |
11933 @section A Programmer's Guide to Gnus | 14834 @section A Programmer@'s Guide to Gnus |
11934 | 14835 |
11935 It is my hope that other people will figure out smart stuff that Gnus | 14836 It is my hope that other people will figure out smart stuff that Gnus |
11936 can do, and that other people will write those smart things as well. To | 14837 can do, and that other people will write those smart things as well. To |
11937 facilitate that I thought it would be a good idea to describe the inner | 14838 facilitate that I thought it would be a good idea to describe the inner |
11938 workings of Gnus. And some of the not-so-inner workings, while I'm at | 14839 workings of Gnus. And some of the not-so-inner workings, while I'm at |
11993 always check whether are present before attempting to call. | 14894 always check whether are present before attempting to call. |
11994 | 14895 |
11995 All these functions are expected to return data in the buffer | 14896 All these functions are expected to return data in the buffer |
11996 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat | 14897 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat |
11997 unfortunately named, but we'll have to live with it. When I talk about | 14898 unfortunately named, but we'll have to live with it. When I talk about |
11998 ``resulting data'', I always refer to the data in that buffer. When I | 14899 @dfn{resulting data}, I always refer to the data in that buffer. When I |
11999 talk about ``return value'', I talk about the function value returned by | 14900 talk about @dfn{return value}, I talk about the function value returned by |
12000 the function call. | 14901 the function call. Functions that fail should return @code{nil} as the |
14902 return value. | |
12001 | 14903 |
12002 Some backends could be said to be @dfn{server-forming} backends, and | 14904 Some backends could be said to be @dfn{server-forming} backends, and |
12003 some might be said to not be. The latter are backends that generally | 14905 some might be said to not be. The latter are backends that generally |
12004 only operate on one group at a time, and have no concept of ``server'' | 14906 only operate on one group at a time, and have no concept of ``server'' |
12005 -- they have a group, and they deliver info on that group and nothing | 14907 -- they have a group, and they deliver info on that group and nothing |
12011 @cindex @code{nnchoke} | 14913 @cindex @code{nnchoke} |
12012 | 14914 |
12013 @menu | 14915 @menu |
12014 * Required Backend Functions:: Functions that must be implemented. | 14916 * Required Backend Functions:: Functions that must be implemented. |
12015 * Optional Backend Functions:: Functions that need not be implemented. | 14917 * Optional Backend Functions:: Functions that need not be implemented. |
14918 * Error Messaging:: How to get messages and report errors. | |
12016 * Writing New Backends:: Extending old backends. | 14919 * Writing New Backends:: Extending old backends. |
14920 * Hooking New Backends Into Gnus:: What has to be done on the Gnus end. | |
14921 * Mail-like Backends:: Some tips on mail backends. | |
12017 @end menu | 14922 @end menu |
12018 | 14923 |
12019 | 14924 |
12020 @node Required Backend Functions | 14925 @node Required Backend Functions |
12021 @subsubsection Required Backend Functions | 14926 @subsubsection Required Backend Functions |
12155 group and article numbers are when fetching articles by | 15060 group and article numbers are when fetching articles by |
12156 @code{Message-ID}. If this isn't possible, @code{t} should be returned | 15061 @code{Message-ID}. If this isn't possible, @code{t} should be returned |
12157 on successful article retrievement. | 15062 on successful article retrievement. |
12158 | 15063 |
12159 | 15064 |
12160 @item (nnchoke-open-group GROUP &optional SERVER) | 15065 @item (nnchoke-request-group GROUP &optional SERVER FAST) |
12161 | |
12162 Make @var{group} the current group. | |
12163 | |
12164 There should be no data returned by this function. | |
12165 | |
12166 | |
12167 @item (nnchoke-request-group GROUP &optional SERVER) | |
12168 | 15066 |
12169 Get data on @var{group}. This function also has the side effect of | 15067 Get data on @var{group}. This function also has the side effect of |
12170 making @var{group} the current group. | 15068 making @var{group} the current group. |
15069 | |
15070 If @var{FAST}, don't bother to return useful data, just make @var{group} | |
15071 the current group. | |
12171 | 15072 |
12172 Here's an example of some result data and a definition of the same: | 15073 Here's an example of some result data and a definition of the same: |
12173 | 15074 |
12174 @example | 15075 @example |
12175 211 56 1000 1059 ifi.discussion | 15076 211 56 1000 1059 ifi.discussion |
12176 @end example | 15077 @end example |
12177 | 15078 |
12178 The first number is the status, which should be @code{211}. Next is the | 15079 The first number is the status, which should be 211. Next is the |
12179 total number of articles in the group, the lowest article number, the | 15080 total number of articles in the group, the lowest article number, the |
12180 highest article number, and finally the group name. Note that the total | 15081 highest article number, and finally the group name. Note that the total |
12181 number of articles may be less than one might think while just | 15082 number of articles may be less than one might think while just |
12182 considering the highest and lowest article numbers, but some articles | 15083 considering the highest and lowest article numbers, but some articles |
12183 may have been canceled. Gnus just discards the total-number, so | 15084 may have been canceled. Gnus just discards the total-number, so |
12265 @item (nnchoke-request-update-info GROUP INFO &optional SERVER) | 15166 @item (nnchoke-request-update-info GROUP INFO &optional SERVER) |
12266 | 15167 |
12267 A Gnus group info (@pxref{Group Info}) is handed to the backend for | 15168 A Gnus group info (@pxref{Group Info}) is handed to the backend for |
12268 alterations. This comes in handy if the backend really carries all the | 15169 alterations. This comes in handy if the backend really carries all the |
12269 information (as is the case with virtual an imap groups). This function | 15170 information (as is the case with virtual an imap groups). This function |
12270 may alter the info in any manner it sees fit, and should return the | 15171 should destructively alter the info to suit its needs, and should return |
12271 (altered) group info. This function may alter the group info | 15172 the (altered) group info. |
12272 destructively, so no copying is needed before boogeying. | |
12273 | 15173 |
12274 There should be no result data from this function. | 15174 There should be no result data from this function. |
12275 | 15175 |
12276 | 15176 |
12277 @item (nnchoke-request-type GROUP &optional ARTICLE) | 15177 @item (nnchoke-request-type GROUP &optional ARTICLE) |
12280 summary buffer, for instance), Gnus has to know whether the article the | 15180 summary buffer, for instance), Gnus has to know whether the article the |
12281 user is following up is news or mail. This function should return | 15181 user is following up is news or mail. This function should return |
12282 @code{news} if @var{article} in @var{group} is news, @code{mail} if it | 15182 @code{news} if @var{article} in @var{group} is news, @code{mail} if it |
12283 is mail and @code{unknown} if the type can't be decided. (The | 15183 is mail and @code{unknown} if the type can't be decided. (The |
12284 @var{article} parameter is necessary in @code{nnvirtual} groups which | 15184 @var{article} parameter is necessary in @code{nnvirtual} groups which |
12285 might very well combine mail groups and news groups.) | 15185 might very well combine mail groups and news groups.) Both @var{group} |
15186 and @var{article} may be @code{nil}. | |
12286 | 15187 |
12287 There should be no result data from this function. | 15188 There should be no result data from this function. |
12288 | 15189 |
12289 | 15190 |
12290 @item (nnchoke-request-update-mark GROUP ARTICLE MARK) | 15191 @item (nnchoke-request-update-mark GROUP ARTICLE MARK) |
12314 would be nice, however, to keep things local if that's practical. | 15215 would be nice, however, to keep things local if that's practical. |
12315 | 15216 |
12316 There should be no result data from this function. | 15217 There should be no result data from this function. |
12317 | 15218 |
12318 | 15219 |
12319 @item (nnchoke-request-asynchronous GROUP &optional SERVER ARTICLES) | |
12320 | |
12321 This is a request to fetch articles asynchronously later. | |
12322 @var{articles} is an alist of @var{(article-number line-number)}. One | |
12323 would generally expect that if one later fetches article number 4, for | |
12324 instance, some sort of asynchronous fetching of the articles after 4 | |
12325 (which might be 5, 6, 7 or 11, 3, 909 depending on the order in that | |
12326 alist) would be fetched asynchronously, but that is left up to the | |
12327 backend. Gnus doesn't care. | |
12328 | |
12329 There should be no result data from this function. | |
12330 | |
12331 | |
12332 @item (nnchoke-request-group-description GROUP &optional SERVER) | 15220 @item (nnchoke-request-group-description GROUP &optional SERVER) |
12333 | 15221 |
12334 The result data from this function should be a description of | 15222 The result data from this function should be a description of |
12335 @var{group}. | 15223 @var{group}. |
12336 | 15224 |
12439 There should be no data returned. | 15327 There should be no data returned. |
12440 | 15328 |
12441 @end table | 15329 @end table |
12442 | 15330 |
12443 | 15331 |
15332 @node Error Messaging | |
15333 @subsubsection Error Messaging | |
15334 | |
15335 @findex nnheader-report | |
15336 @findex nnheader-get-report | |
15337 The backends should use the function @code{nnheader-report} to report | |
15338 error conditions---they should not raise errors when they aren't able to | |
15339 perform a request. The first argument to this function is the backend | |
15340 symbol, and the rest are interpreted as arguments to @code{format} if | |
15341 there are many of them, or just a string if there is one of them. | |
15342 This function always returns @code{nil}. | |
15343 | |
15344 @lisp | |
15345 (nnheader-report 'nnchoke "You did something totally bogus") | |
15346 | |
15347 (nnheader-report 'nnchoke "Could not request group %s" group) | |
15348 @end lisp | |
15349 | |
15350 Gnus, in turn, will call @code{nnheader-get-report} when it gets a | |
15351 @code{nil} back from a server, and this function returns the most | |
15352 recently reported message for the backend in question. This function | |
15353 takes one argument---the server symbol. | |
15354 | |
15355 Internally, these function access @var{backend}@code{-status-string}, so | |
15356 the @code{nnchoke} backend will have its error message stored in | |
15357 @code{nnchoke-status-string}. | |
15358 | |
15359 | |
12444 @node Writing New Backends | 15360 @node Writing New Backends |
12445 @subsubsection Writing New Backends | 15361 @subsubsection Writing New Backends |
12446 | 15362 |
12447 The various backends share many similarities. @code{nnml} is just like | 15363 Many backends are quite similar. @code{nnml} is just like |
12448 @code{nnspool}, but it allows you to edit the articles on the server. | 15364 @code{nnspool}, but it allows you to edit the articles on the server. |
12449 @code{nnmh} is just like @code{nnml}, but it doesn't use an active file, | 15365 @code{nnmh} is just like @code{nnml}, but it doesn't use an active file, |
12450 and it doesn't maintain overview databases. @code{nndir} is just like | 15366 and it doesn't maintain overview databases. @code{nndir} is just like |
12451 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow | 15367 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow |
12452 editing articles. | 15368 editing articles. |
12580 | 15496 |
12581 (nnoo-define-basics nndir) | 15497 (nnoo-define-basics nndir) |
12582 | 15498 |
12583 (deffoo nndir-open-server (server &optional defs) | 15499 (deffoo nndir-open-server (server &optional defs) |
12584 (setq nndir-directory | 15500 (setq nndir-directory |
12585 (or (cadr (assq 'nndir-directory defs)) | 15501 (or (cadr (assq 'nndir-directory defs)) |
12586 server)) | 15502 server)) |
12587 (unless (assq 'nndir-directory defs) | 15503 (unless (assq 'nndir-directory defs) |
12588 (push `(nndir-directory ,server) defs)) | 15504 (push `(nndir-directory ,server) defs)) |
12589 (push `(nndir-current-group | 15505 (push `(nndir-current-group |
12590 ,(file-name-nondirectory (directory-file-name nndir-directory))) | 15506 ,(file-name-nondirectory (directory-file-name nndir-directory))) |
12591 defs) | 15507 defs) |
12592 (push `(nndir-top-directory | 15508 (push `(nndir-top-directory |
12593 ,(file-name-directory (directory-file-name nndir-directory))) | 15509 ,(file-name-directory (directory-file-name nndir-directory))) |
12594 defs) | 15510 defs) |
12595 (nnoo-change-server 'nndir server defs)) | 15511 (nnoo-change-server 'nndir server defs)) |
12596 | 15512 |
12597 (nnoo-map-functions nndir | 15513 (nnoo-map-functions nndir |
12598 (nnml-retrieve-headers 0 nndir-current-group 0 0) | 15514 (nnml-retrieve-headers 0 nndir-current-group 0 0) |
12599 (nnmh-request-article 0 nndir-current-group 0 0) | 15515 (nnmh-request-article 0 nndir-current-group 0 0) |
12607 nnmh-request-newgroups)) | 15523 nnmh-request-newgroups)) |
12608 | 15524 |
12609 (provide 'nndir) | 15525 (provide 'nndir) |
12610 @end lisp | 15526 @end lisp |
12611 | 15527 |
15528 | |
15529 @node Hooking New Backends Into Gnus | |
15530 @subsubsection Hooking New Backends Into Gnus | |
15531 | |
15532 @vindex gnus-valid-select-methods | |
15533 Having Gnus start using your new backend is rather easy---you just | |
15534 declare it with the @code{gnus-declare-backend} functions. This will | |
15535 enter the backend into the @code{gnus-valid-select-methods} variable. | |
15536 | |
15537 @code{gnus-declare-backend} takes two parameters---the backend name and | |
15538 an arbitrary number of @dfn{abilities}. | |
15539 | |
15540 Here's an example: | |
15541 | |
15542 @lisp | |
15543 (gnus-declare-backend "nnchoke" 'mail 'respool 'address) | |
15544 @end lisp | |
15545 | |
15546 The abilities can be: | |
15547 | |
15548 @table @code | |
15549 @item mail | |
15550 This is a mailish backend---followups should (probably) go via mail. | |
15551 @item post | |
15552 This is a newsish backend---followups should (probably) go via news. | |
15553 @item post-mail | |
15554 This backend supports both mail and news. | |
15555 @item none | |
15556 This is neither a post or mail backend---it's something completely | |
15557 different. | |
15558 @item respool | |
15559 It supports respooling---or rather, it is able to modify its source | |
15560 articles and groups. | |
15561 @item address | |
15562 The name of the server should be in the virtual server name. This is | |
15563 true for almost all backends. | |
15564 @item prompt-address | |
15565 The user should be prompted for an address when doing commands like | |
15566 @kbd{B} in the group buffer. This is true for backends like | |
15567 @code{nntp}, but not @code{nnmbox}, for instance. | |
15568 @end table | |
15569 | |
15570 | |
15571 @node Mail-like Backends | |
15572 @subsubsection Mail-like Backends | |
15573 | |
15574 One of the things that separate the mail backends from the rest of the | |
15575 backends is the heavy dependence by the mail backends on common | |
15576 functions in @file{nnmail.el}. For instance, here's the definition of | |
15577 @code{nnml-request-scan}: | |
15578 | |
15579 @lisp | |
15580 (deffoo nnml-request-scan (&optional group server) | |
15581 (setq nnml-article-file-alist nil) | |
15582 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group)) | |
15583 @end lisp | |
15584 | |
15585 It simply just calls @code{nnmail-get-new-mail} will a few parameters, | |
15586 and @code{nnmail} takes care of all the moving and splitting of the | |
15587 mail. | |
15588 | |
15589 This function takes four parameters. | |
15590 | |
15591 @table @var | |
15592 @item method | |
15593 This should be a symbol to designate which backend is responsible for | |
15594 the call. | |
15595 | |
15596 @item exit-function | |
15597 This function should be called after the splitting has been performed. | |
15598 | |
15599 @item temp-directory | |
15600 Where the temporary files should be stored. | |
15601 | |
15602 @item group | |
15603 This optional argument should be a group name if the splitting is to be | |
15604 performed for one group only. | |
15605 @end table | |
15606 | |
15607 @code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to | |
15608 save each article. @var{backend}@code{-active-number} will be called to | |
15609 find the article number assigned to this article. | |
15610 | |
15611 The function also uses the following variables: | |
15612 @var{backend}@code{-get-new-mail} (to see whether to get new mail for | |
15613 this backend); and @var{backend}@code{-group-alist} and | |
15614 @var{backend}@code{-active-file} to generate the new active file. | |
15615 @var{backend}@code{-group-alist} should be a group-active alist, like | |
15616 this: | |
15617 | |
15618 @example | |
15619 (("a-group" (1 . 10)) | |
15620 ("some-group" (34 . 39))) | |
15621 @end example | |
12612 | 15622 |
12613 | 15623 |
12614 @node Score File Syntax | 15624 @node Score File Syntax |
12615 @subsection Score File Syntax | 15625 @subsection Score File Syntax |
12616 | 15626 |
12694 corresponds to the @sc{nov} format in a mysterious fashion. One could | 15704 corresponds to the @sc{nov} format in a mysterious fashion. One could |
12695 almost suspect that the author looked at the @sc{nov} specification and | 15705 almost suspect that the author looked at the @sc{nov} specification and |
12696 just shamelessly @emph{stole} the entire thing, and one would be right. | 15706 just shamelessly @emph{stole} the entire thing, and one would be right. |
12697 | 15707 |
12698 @dfn{Header} is a severely overloaded term. ``Header'' is used in | 15708 @dfn{Header} is a severely overloaded term. ``Header'' is used in |
12699 RFC1036 to talk about lines in the head of an article (eg., | 15709 RFC1036 to talk about lines in the head of an article (e.g., |
12700 @code{From}). It is used by many people as a synonym for | 15710 @code{From}). It is used by many people as a synonym for |
12701 ``head''---``the header and the body''. (That should be avoided, in my | 15711 ``head''---``the header and the body''. (That should be avoided, in my |
12702 opinion.) And Gnus uses a format internally that it calls ``header'', | 15712 opinion.) And Gnus uses a format internally that it calls ``header'', |
12703 which is what I'm talking about here. This is a 9-element vector, | 15713 which is what I'm talking about here. This is a 9-element vector, |
12704 basically, with each header (ouch) having one slot. | 15714 basically, with each header (ouch) having one slot. |
12719 @sc{gnus} introduced a concept that I found so useful that I've started | 15729 @sc{gnus} introduced a concept that I found so useful that I've started |
12720 using it a lot and have elaborated on it greatly. | 15730 using it a lot and have elaborated on it greatly. |
12721 | 15731 |
12722 The question is simple: If you have a large amount of objects that are | 15732 The question is simple: If you have a large amount of objects that are |
12723 identified by numbers (say, articles, to take a @emph{wild} example) | 15733 identified by numbers (say, articles, to take a @emph{wild} example) |
12724 that you want to callify as being ``included'', a normal sequence isn't | 15734 that you want to qualify as being ``included'', a normal sequence isn't |
12725 very useful. (A 200,000 length sequence is a bit long-winded.) | 15735 very useful. (A 200,000 length sequence is a bit long-winded.) |
12726 | 15736 |
12727 The solution is as simple as the question: You just collapse the | 15737 The solution is as simple as the question: You just collapse the |
12728 sequence. | 15738 sequence. |
12729 | 15739 |
12810 ((tick (15 . 19)) (replied 3 6 (19 . 3))) | 15820 ((tick (15 . 19)) (replied 3 6 (19 . 3))) |
12811 (nnml "") | 15821 (nnml "") |
12812 (auto-expire (to-address "ding@@ifi.uio.no"))) | 15822 (auto-expire (to-address "ding@@ifi.uio.no"))) |
12813 @end example | 15823 @end example |
12814 | 15824 |
12815 The first element is the group name as Gnus knows the group; the second | 15825 The first element is the @dfn{group name}---as Gnus knows the group, |
12816 is the group level; the third is the read articles in range format; the | 15826 anyway. The second element is the @dfn{subscription level}, which |
12817 fourth is a list of article marks lists; the fifth is the select method; | 15827 normally is a small integer. The third element is a list of ranges of |
12818 and the sixth contains the group parameters. | 15828 read articles. The fourth element is a list of lists of article marks |
15829 of various kinds. The fifth element is the select method (or virtual | |
15830 server, if you like). The sixth element is a list of @dfn{group | |
15831 parameters}, which is what this section is about. | |
15832 | |
15833 Any of the last three elements may be missing if they are not required. | |
15834 In fact, the vast majority of groups will normally only have the first | |
15835 three elements, which saves quite a lot of cons cells. | |
12819 | 15836 |
12820 Here's a BNF definition of the group info format: | 15837 Here's a BNF definition of the group info format: |
12821 | 15838 |
12822 @example | 15839 @example |
12823 info = "(" group space level space read | 15840 info = "(" group space level space read |