Mercurial > hg > xemacs-beta
comparison man/gnus.texi @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | 8d2a9b52c682 |
children | 0d2f883870bc |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
1 \input texinfo @c -*-texinfo-*- | 1 \input texinfo @c -*-texinfo-*- |
2 | 2 |
3 @setfilename gnus | 3 @setfilename ../info/gnus.info |
4 @settitle Gnus 5.4.37 Manual | 4 @settitle Gnus 5.2 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} | |
17 \usepackage{pagestyle} | 19 \usepackage{pagestyle} |
18 \usepackage{epsfig} | 20 \usepackage{epsfig} |
21 % \usepackage{ifitricks} | |
19 \fontfamily{bembo}\selectfont | 22 \fontfamily{bembo}\selectfont |
20 | 23 |
21 \makeindex | 24 \makeindex |
22 \begin{document} | 25 \begin{document} |
23 | 26 |
52 \newcommand{\gnusampersand}{\&} | 55 \newcommand{\gnusampersand}{\&} |
53 \newcommand{\gnuspercent}{\%} | 56 \newcommand{\gnuspercent}{\%} |
54 \newcommand{\gnushash}{\#} | 57 \newcommand{\gnushash}{\#} |
55 \newcommand{\gnushat}{\symbol{"5E}} | 58 \newcommand{\gnushat}{\symbol{"5E}} |
56 \newcommand{\gnusunderline}{\symbol{"5F}} | 59 \newcommand{\gnusunderline}{\symbol{"5F}} |
57 \newcommand{\gnusnot}{$\neg$} | |
58 \newcommand{\gnustilde}{\symbol{"7E}} | 60 \newcommand{\gnustilde}{\symbol{"7E}} |
59 \newcommand{\gnusless}{{$<$}} | 61 \newcommand{\gnusless}{{$<$}} |
60 \newcommand{\gnusgreater}{{$>$}} | 62 \newcommand{\gnusgreater}{{$>$}} |
61 | 63 |
62 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} | 64 \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} |
63 \newcommand{\gnusinteresting}{ | 65 \newcommand{\gnusinteresting}{ |
64 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} | 66 \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} |
65 } | 67 } |
66 | 68 |
67 \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi} | 69 \newcommand{\gnuschapter}[1]{ |
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} | |
80 \renewcommand{\gnussectionname}{} | 70 \renewcommand{\gnussectionname}{} |
81 \renewcommand{\gnuschaptername}{#2} | 71 \chapter{#1} |
72 \renewcommand{\gnuschaptername}{#1} | |
82 \thispagestyle{empty} | 73 \thispagestyle{empty} |
83 \hspace*{-2cm} | 74 % \epsfig{figure=gnus-herd-\arabic{chapter}.eps,height=15cm} |
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} | |
88 \clearpage | 75 \clearpage |
89 } | 76 } |
90 | 77 |
91 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1} | 78 \newcommand{\gnusitemx}[1]{\vspace{-\itemsep}\item#1} |
92 | 79 |
93 \newcommand{\gnussection}[1]{ | 80 \newcommand{\gnussection}[1]{ |
94 \renewcommand{\gnussectionname}{#1} | 81 \renewcommand{\gnussectionname}{#1} |
95 \section{#1} | 82 \section{#1} |
96 } | 83 } |
129 \newenvironment{emphlist}% | 116 \newenvironment{emphlist}% |
130 {\begin{list}{}{ | 117 {\begin{list}{}{ |
131 } | 118 } |
132 }{\end{list}} | 119 }{\end{list}} |
133 | 120 |
134 \newlength\gnusheadtextwidth | 121 \newpagestyle{gnus}% |
135 \setlength{\gnusheadtextwidth}{\headtextwidth} | |
136 \addtolength{\gnusheadtextwidth}{1cm} | |
137 | |
138 \newpagestyle{gnuspreamble}% | |
139 { | 122 { |
140 { | 123 { |
141 \ifodd\count0 | 124 \ifodd\count0 |
142 { | 125 { |
143 \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}} | 126 \hspace*{-2ex} |
127 \underline{ | |
128 \makebox[\headtextwidth]{ | |
129 \hspace*{-2.3ex} | |
130 \textbf{\arabic{chapter}.\arabic{section}} | |
131 \textbf{\gnussectionname\hfill\arabic{page}} | |
132 }} | |
144 } | 133 } |
145 \else | 134 \else |
146 { | 135 { |
147 \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}} | 136 \hspace*{-2.25cm} |
148 } | 137 \underline{ |
138 \hspace*{-2.3ex} | |
139 \makebox[\headtextwidth]{ | |
140 \textbf{\arabic{page}\hfill\gnuschaptername} | |
141 }} | |
149 } | 142 } |
150 \fi | 143 \fi |
151 } | 144 } |
152 } | 145 } |
153 { | 146 { |
157 \else | 150 \else |
158 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} | 151 \raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} |
159 \hfill \mbox{} | 152 \hfill \mbox{} |
160 \fi | 153 \fi |
161 } | 154 } |
162 | 155 \pagestyle{gnus} |
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} | |
213 | 156 |
214 @end iflatex | 157 @end iflatex |
215 @end iftex | 158 @end iftex |
216 | 159 |
217 @iftex | 160 @iftex |
285 @end ifinfo | 228 @end ifinfo |
286 | 229 |
287 @tex | 230 @tex |
288 | 231 |
289 @titlepage | 232 @titlepage |
290 @title Gnus 5.4.37 Manual | 233 @title Gnus Manual |
291 | 234 |
292 @author by Lars Magne Ingebrigtsen | 235 @author by Lars Magne Ingebrigtsen |
293 @page | 236 @page |
294 | 237 |
295 @vskip 0pt plus 1filll | 238 @vskip 0pt plus 1filll |
296 Copyright @copyright{} 1995,96,97 Free Software Foundation, Inc. | 239 Copyright @copyright{} 1995,96 Free Software Foundation, Inc. |
297 | 240 |
298 Permission is granted to make and distribute verbatim copies of | 241 Permission is granted to make and distribute verbatim copies of |
299 this manual provided the copyright notice and this permission notice | 242 this manual provided the copyright notice and this permission notice |
300 are preserved on all copies. | 243 are preserved on all copies. |
301 | 244 |
321 You can read news (and mail) from within Emacs by using Gnus. The news | 264 You can read news (and mail) from within Emacs by using Gnus. The news |
322 can be gotten by any nefarious means you can think of---@sc{nntp}, local | 265 can be gotten by any nefarious means you can think of---@sc{nntp}, local |
323 spool or your mbox file. All at the same time, if you want to push your | 266 spool or your mbox file. All at the same time, if you want to push your |
324 luck. | 267 luck. |
325 | 268 |
326 This manual corresponds to Gnus 5.4.37. | |
327 | |
328 @end ifinfo | 269 @end ifinfo |
329 | 270 |
330 @iftex | 271 @iftex |
331 | 272 |
332 @iflatex | 273 @iflatex |
333 \tableofcontents | 274 \thispagestyle{empty} |
334 \gnuscleardoublepage | |
335 @end iflatex | 275 @end iflatex |
336 | 276 |
337 Gnus is the advanced, self-documenting, customizable, extensible | 277 Gnus is the advanced, self-documenting, customizable, extensible |
338 unreal-time newsreader for GNU Emacs. | 278 unreal-time newsreader for GNU Emacs. |
339 | 279 |
368 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals. | 308 * Appendices:: Terminology, Emacs intro, FAQ, History, Internals. |
369 * Index:: Variable, function and concept index. | 309 * Index:: Variable, function and concept index. |
370 * Key Index:: Key Index. | 310 * Key Index:: Key Index. |
371 @end menu | 311 @end menu |
372 | 312 |
313 | |
373 @node Starting Up | 314 @node Starting Up |
374 @chapter Starting Gnus | 315 @chapter Starting Gnus |
375 @cindex starting up | 316 @cindex starting up |
376 | 317 |
377 @kindex M-x gnus | 318 @kindex M-x gnus |
390 | 331 |
391 @menu | 332 @menu |
392 * Finding the News:: Choosing a method for getting news. | 333 * Finding the News:: Choosing a method for getting news. |
393 * The First Time:: What does Gnus do the first time you start it? | 334 * The First Time:: What does Gnus do the first time you start it? |
394 * The Server is Down:: How can I read my mail then? | 335 * The Server is Down:: How can I read my mail then? |
395 * Slave Gnusae:: You can have more than one Gnus active at a time. | 336 * Slave Gnusii:: You can have more than one Gnus active at a time. |
396 * Fetching a Group:: Starting Gnus just to read a group. | 337 * Fetching a Group:: Starting Gnus just to read a group. |
397 * New Groups:: What is Gnus supposed to do with new groups? | 338 * New Groups:: What is Gnus supposed to do with new groups? |
398 * Startup Files:: Those pesky startup files---@file{.newsrc}. | 339 * Startup Files:: Those pesky startup files---@file{.newsrc}. |
399 * Auto Save:: Recovering from a crash. | 340 * Auto Save:: Recovering from a crash. |
400 * The Active File:: Reading the active file over a slow line Takes Time. | 341 * 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. | |
402 * Startup Variables:: Other variables you might change. | 342 * Startup Variables:: Other variables you might change. |
403 @end menu | 343 @end menu |
404 | 344 |
405 | 345 |
406 @node Finding the News | 346 @node Finding the News |
407 @section Finding the News | 347 @section Finding the News |
408 @cindex finding news | |
409 | 348 |
410 @vindex gnus-select-method | 349 @vindex gnus-select-method |
411 @c @head | 350 @c @head |
412 The @code{gnus-select-method} variable says where Gnus should look for | 351 The @code{gnus-select-method} variable says where Gnus should look for |
413 news. This variable should be a list where the first element says | 352 news. This variable should be a list where the first element says |
437 If this variable is not set, Gnus will take a look at the | 376 If this variable is not set, Gnus will take a look at the |
438 @code{NNTPSERVER} environment variable. If that variable isn't set, | 377 @code{NNTPSERVER} environment variable. If that variable isn't set, |
439 Gnus will see whether @code{gnus-nntpserver-file} | 378 Gnus will see whether @code{gnus-nntpserver-file} |
440 (@file{/etc/nntpserver} by default) has any opinions on the matter. If | 379 (@file{/etc/nntpserver} by default) has any opinions on the matter. If |
441 that fails as well, Gnus will will try to use the machine that is | 380 that fails as well, Gnus will will try to use the machine that is |
442 running Emacs as an @sc{nntp} server. That's a long shot, though. | 381 running Emacs as an @sc{nntp} server. That's a long-shot, though. |
443 | 382 |
444 @vindex gnus-nntp-server | 383 @vindex gnus-nntp-server |
445 If @code{gnus-nntp-server} is set, this variable will override | 384 If @code{gnus-nntp-server} is set, this variable will override |
446 @code{gnus-select-method}. You should therefore set | 385 @code{gnus-select-method}. You should therefore set |
447 @code{gnus-nntp-server} to @code{nil}, which is what it is by default. | 386 @code{gnus-nntp-server} to @code{nil}, which is what it is by default. |
520 for some reason or other. If you decide to continue and have no foreign | 459 for some reason or other. If you decide to continue and have no foreign |
521 groups, you'll find it difficult to actually do anything in the group | 460 groups, you'll find it difficult to actually do anything in the group |
522 buffer. But, hey, that's your problem. Blllrph! | 461 buffer. But, hey, that's your problem. Blllrph! |
523 | 462 |
524 @findex gnus-no-server | 463 @findex gnus-no-server |
525 @kindex M-x gnus-no-server | |
526 @c @head | 464 @c @head |
527 If you know that the server is definitely down, or you just want to read | 465 If you know that the server is definitely down, or you just want to read |
528 your mail without bothering with the server at all, you can use the | 466 your mail without bothering with the server at all, you can use the |
529 @code{gnus-no-server} command to start Gnus. That might come in handy | 467 @code{gnus-no-server} command to start Gnus. That might come in handy |
530 if you're in a hurry as well. This command will not attempt to contact | 468 if you're in a hurry as well. |
531 your primary server---instead, it will just activate all groups on level | 469 |
532 1 and 2. (You should preferably keep no native groups on those two | 470 |
533 levels.) | 471 @node Slave Gnusii |
534 | 472 @section Slave Gnusiï |
535 | |
536 @node Slave Gnusae | |
537 @section Slave Gnusae | |
538 @cindex slave | 473 @cindex slave |
539 | 474 |
540 You might want to run more than one Emacs with more than one Gnus at the | 475 You might want to run more than one Emacs with more than one Gnus at the |
541 same time. If you are using different @file{.newsrc} files (e.g., if you | 476 same time. If you are using different @file{.newsrc} files (eg., if you |
542 are using the two different Gnusae to read from two different servers), | 477 are using the two different Gnusiï to read from two different servers), |
543 that is no problem whatsoever. You just do it. | 478 that is no problem whatsoever. You just do it. |
544 | 479 |
545 The problem appears when you want to run two Gnusae that use the same | 480 The problem appears when you want to run two Gnusiï that use the same |
546 @code{.newsrc} file. | 481 @code{.newsrc} file. |
547 | 482 |
548 To work around that problem some, we here at the Think-Tank at the Gnus | 483 To work around that problem some, we here at the Think-Tank at the Gnus |
549 Towers have come up with a new concept: @dfn{Masters} and | 484 Towers have come up with a new concept: @dfn{Masters} and |
550 @dfn{slaves}. (We have applied for a patent on this concept, and have | 485 @dfn{servants}. (We have applied for a patent on this concept, and have |
551 taken out a copyright on those words. If you wish to use those words in | 486 taken out a copyright on those words. If you wish to use those words in |
552 conjunction with each other, you have to send $1 per usage instance to | 487 conjunction with each other, you have to send $1 per usage instance to |
553 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer | 488 me. Usage of the patent (@dfn{Master/Slave Relationships In Computer |
554 Applications}) will be much more expensive, of course.) | 489 Applications}) will be much more expensive, of course.) |
555 | 490 |
556 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or | 491 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or |
557 however you do it). Each subsequent slave Gnusae should be started with | 492 however you do it). Each subsequent slave Gnusiï should be started with |
558 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} | 493 @kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} |
559 files, but instead save @dfn{slave files} that contain information only | 494 files, but instead save @dfn{slave files} that contains information only |
560 on what groups have been read in the slave session. When a master Gnus | 495 on what groups have been read in the slave session. When a master Gnus |
561 starts, it will read (and delete) these slave files, incorporating all | 496 starts, it will read (and delete) these slave files, incorporating all |
562 information from them. (The slave files will be read in the sequence | 497 information from them. (The slave files will be read in the sequence |
563 they were created, so the latest changes will have precedence.) | 498 they were created, so the latest changes will have precedence.) |
564 | 499 |
565 Information from the slave files has, of course, precedence over the | 500 Information from the slave files has, of course, precedence over the |
566 information in the normal (i.e., master) @code{.newsrc} file. | 501 information in the normal (i. e., master) @code{.newsrc} file. |
567 | 502 |
568 | 503 |
569 @node Fetching a Group | 504 @node Fetching a Group |
570 @section Fetching a Group | 505 @section Fetching a Group |
571 @cindex fetching a group | |
572 | 506 |
573 @findex gnus-fetch-group | 507 @findex gnus-fetch-group |
574 It it sometimes convenient to be able to just say ``I want to read this | 508 It it sometime convenient to be able to just say ``I want to read this |
575 group and I don't care whether Gnus has been started or not''. This is | 509 group and I don't care whether Gnus has been started or not''. This is |
576 perhaps more useful for people who write code than for users, but the | 510 perhaps more useful for people who write code than for users, but the |
577 command @code{gnus-fetch-group} provides this functionality in any case. | 511 command @code{gnus-fetch-group} provides this functionality in any case. |
578 It takes the group name as a parameter. | 512 It takes the group name as a parameter. |
579 | 513 |
580 | 514 |
581 @node New Groups | 515 @node New Groups |
582 @section New Groups | 516 @section New Groups |
583 @cindex new groups | 517 @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 | |
639 | 518 |
640 @vindex gnus-subscribe-newsgroup-method | 519 @vindex gnus-subscribe-newsgroup-method |
641 What Gnus does when it encounters a new group is determined by the | 520 What Gnus does when it encounters a new group is determined by the |
642 @code{gnus-subscribe-newsgroup-method} variable. | 521 @code{gnus-subscribe-newsgroup-method} variable. |
643 | 522 |
646 | 525 |
647 @table @code | 526 @table @code |
648 | 527 |
649 @item gnus-subscribe-zombies | 528 @item gnus-subscribe-zombies |
650 @vindex gnus-subscribe-zombies | 529 @vindex gnus-subscribe-zombies |
651 Make all new groups zombies. This is the default. You can browse the | 530 Make all new groups zombies. You can browse the zombies later (with |
652 zombies later (with @kbd{A z}) and either kill them all off properly | 531 @kbd{A z}) and either kill them all off properly, or subscribe to them. |
653 (with @kbd{S z}), or subscribe to them (with @kbd{u}). | 532 This is the default. |
654 | 533 |
655 @item gnus-subscribe-randomly | 534 @item gnus-subscribe-randomly |
656 @vindex gnus-subscribe-randomly | 535 @vindex gnus-subscribe-randomly |
657 Subscribe all new groups randomly. | 536 Subscribe all new groups randomly. |
658 | 537 |
659 @item gnus-subscribe-alphabetically | 538 @item gnus-subscribe-alphabetically |
660 @vindex gnus-subscribe-alphabetically | 539 @vindex gnus-subscribe-alphabetically |
661 Subscribe all new groups alphabetically. | 540 Subscribe all new groups alphabetically. |
662 | 541 |
663 @item gnus-subscribe-hierarchically | 542 @item gnus-subscribe-hierarchically |
664 @vindex gnus-subscribe-hierarchically | 543 @vindex gnus-subscribe-hierarchically |
665 Subscribe all new groups hierarchically. The difference between this | 544 Subscribe all new groups hierarchically. The difference between this |
666 function and @code{gnus-subscribe-alphabetically} is slight. | 545 function and @code{gnus-subscribe-alphabetically} is slight. |
667 @code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly | 546 @code{gnus-subscribe-alphabetically} will subscribe new groups in a |
668 alphabetical fashion, while this function will enter groups into it's | 547 strictly alphabetical fashion, while this function will enter groups |
669 hierarchy. So if you want to have the @samp{rec} hierarchy before the | 548 into it's hierarchy. So if you want to have the @samp{rec} hierarchy |
670 @samp{comp} hierarchy, this function will not mess that configuration | 549 before the @samp{comp} hierarchy, this function will not mess that |
671 up. Or something like that. | 550 configuration up. Or something like that. |
672 | 551 |
673 @item gnus-subscribe-interactively | 552 @item gnus-subscribe-interactively |
674 @vindex gnus-subscribe-interactively | 553 @vindex gnus-subscribe-interactively |
675 Subscribe new groups interactively. This means that Gnus will ask | 554 Subscribe new groups interactively. This means that Gnus will ask |
676 you about @strong{all} new groups. | 555 you about @strong{all} new groups. |
690 hierarchy or not. | 569 hierarchy or not. |
691 | 570 |
692 One common mistake is to set the variable a few paragraphs above to | 571 One common mistake is to set the variable a few paragraphs above to |
693 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This | 572 @code{gnus-subscribe-hierarchical-interactive}. This is an error. This |
694 will not work. This is ga-ga. So don't do it. | 573 will not work. This is ga-ga. So don't do it. |
695 | |
696 | |
697 @node Filtering New Groups | |
698 @subsection Filtering New Groups | |
699 | 574 |
700 A nice and portable way to control which new newsgroups should be | 575 A nice and portable way to control which new newsgroups should be |
701 subscribed (or ignored) is to put an @dfn{options} line at the start of | 576 subscribed (or ignored) is to put an @dfn{options} line at the start of |
702 the @file{.newsrc} file. Here's an example: | 577 the @file{.newsrc} file. Here's an example: |
703 | 578 |
733 more for user fiddling. By default this variable makes all new groups | 608 more for user fiddling. By default this variable makes all new groups |
734 that come from mail backends (@code{nnml}, @code{nnbabyl}, | 609 that come from mail backends (@code{nnml}, @code{nnbabyl}, |
735 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you | 610 @code{nnfolder}, @code{nnmbox}, and @code{nnmh}) subscribed. If you |
736 don't like that, just set this variable to @code{nil}. | 611 don't like that, just set this variable to @code{nil}. |
737 | 612 |
738 New groups that match this regexp are subscribed using | 613 @vindex gnus-check-new-newsgroups |
739 @code{gnus-subscribe-options-newsgroup-method}. | 614 If you are satisfied that you really never want to see any new groups, |
740 | 615 you could set @code{gnus-check-new-newsgroups} to @code{nil}. This will |
741 | 616 also save you some time at startup. Even if this variable is |
742 @node Changing Servers | 617 @code{nil}, you can always subscribe to the new groups just by pressing |
743 @section Changing Servers | 618 @kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable |
744 @cindex changing servers | 619 is @code{t} by default. |
745 | 620 |
746 Sometimes it is necessary to move from one @sc{nntp} server to another. | 621 Gnus normally determines whether a group is new or not by comparing the |
747 This happens very rarely, but perhaps you change jobs, or one server is | 622 list of groups from the active file(s) with the lists of subscribed and |
748 very flaky and you want to use another. | 623 dead groups. This isn't a particularly fast method. If |
749 | 624 @code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the |
750 Changing the server is pretty easy, right? You just change | 625 server for new groups since the last time. This is both faster & |
751 @code{gnus-select-method} to point to the new server? | 626 cheaper. This also means that you can get rid of the list of killed |
752 | 627 groups altogether, so you may set @code{gnus-save-killed-list} to |
753 @emph{Wrong!} | 628 @code{nil}, which will save time both at startup, at exit, and all over. |
754 | 629 Saves disk space, too. Why isn't this the default, then? |
755 Article numbers are not (in any way) kept synchronized between different | 630 Unfortunately, not all servers support this command. |
756 @sc{nntp} servers, and the only way Gnus keeps track of what articles | 631 |
757 you have read is by keeping track of article numbers. So when you | 632 I bet I know what you're thinking now: How do I find out whether my |
758 change @code{gnus-select-method}, your @file{.newsrc} file becomes | 633 server supports @code{ask-server}? No? Good, because I don't have a |
759 worthless. | 634 fail-safe answer. I would suggest just setting this variable to |
760 | 635 @code{ask-server} and see whether any new groups appear within the next |
761 Gnus provides a few functions to attempt to translate a @file{.newsrc} | 636 few days. If any do, then it works. If any don't, then it doesn't |
762 file from one server to another. They all have one thing in | 637 work. I could write a function to make Gnus guess whether the server |
763 common---they take a looong time to run. You don't want to use these | 638 supports @code{ask-server}, but it would just be a guess. So I won't. |
764 functions more than absolutely necessary. | 639 You could @code{telnet} to the server and say @code{HELP} and see |
765 | 640 whether it lists @samp{NEWGROUPS} among the commands it understands. If |
766 @kindex M-x gnus-change-server | 641 it does, then it might work. (But there are servers that lists |
767 @findex gnus-change-server | 642 @samp{NEWGROUPS} without supporting the function properly.) |
768 If you have access to both servers, Gnus can request the headers for all | 643 |
769 the articles you have read and compare @code{Message-ID}s and map the | 644 This variable can also be a list of select methods. If so, Gnus will |
770 article numbers of the read articles and article marks. The @kbd{M-x | 645 issue an @code{ask-server} command to each of the select methods, and |
771 gnus-change-server} command will do this for all your native groups. It | 646 subscribe them (or not) using the normal methods. This might be handy |
772 will prompt for the method you want to move to. | 647 if you are monitoring a few servers for new groups. A side effect is |
773 | 648 that startup will take much longer, so you can meditate while waiting. |
774 @kindex M-x gnus-group-move-group-to-server | 649 Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss. |
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. | |
786 | 650 |
787 | 651 |
788 @node Startup Files | 652 @node Startup Files |
789 @section Startup Files | 653 @section Startup Files |
790 @cindex startup files | 654 @cindex startup files |
791 @cindex .newsrc | 655 @cindex .newsrc |
792 @cindex .newsrc.el | |
793 @cindex .newsrc.eld | |
794 | 656 |
795 Now, you all know about the @file{.newsrc} file. All subscription | 657 Now, you all know about the @file{.newsrc} file. All subscription |
796 information is traditionally stored in this file. | 658 information is traditionally stored in this file. |
797 | 659 |
798 Things got a bit more complicated with @sc{gnus}. In addition to | 660 Things got a bit more complicated with @sc{gnus}. In addition to |
817 | 679 |
818 @vindex gnus-save-killed-list | 680 @vindex gnus-save-killed-list |
819 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus | 681 If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus |
820 will not save the list of killed groups to the startup file. This will | 682 will not save the list of killed groups to the startup file. This will |
821 save both time (when starting and quitting) and space (on disk). It | 683 save both time (when starting and quitting) and space (on disk). It |
822 will also mean that Gnus has no record of what groups are new or old, | 684 will also means that Gnus has no record of what groups are new or old, |
823 so the automatic new groups subscription methods become meaningless. | 685 so the automatic new groups subscription methods become meaningless. |
824 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or | 686 You should always set @code{gnus-check-new-newsgroups} to @code{nil} or |
825 @code{ask-server} if you set this variable to @code{nil} (@pxref{New | 687 @code{ask-server} if you set this variable to @code{nil} (@pxref{New |
826 Groups}). This variable can also be a regular expression. If that's | 688 Groups}). |
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}. | |
830 | 689 |
831 @vindex gnus-startup-file | 690 @vindex gnus-startup-file |
832 The @code{gnus-startup-file} variable says where the startup files are. | 691 The @code{gnus-startup-file} variable says where the startup files are. |
833 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup | 692 The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup |
834 file being whatever that one is with a @samp{.eld} appended. | 693 file being whatever that one is with a @samp{.eld} appended. |
839 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc | 698 @code{gnus-save-newsrc-hook} is called before saving any of the newsrc |
840 files, while @code{gnus-save-quick-newsrc-hook} is called just before | 699 files, while @code{gnus-save-quick-newsrc-hook} is called just before |
841 saving the @file{.newsrc.eld} file, and | 700 saving the @file{.newsrc.eld} file, and |
842 @code{gnus-save-standard-newsrc-hook} is called just before saving the | 701 @code{gnus-save-standard-newsrc-hook} is called just before saving the |
843 @file{.newsrc} file. The latter two are commonly used to turn version | 702 @file{.newsrc} file. The latter two are commonly used to turn version |
844 control on or off. Version control is on by default when saving the | 703 control on or off. Version control is off by default when saving the |
845 startup files. If you want to turn backup creation off, say something like: | 704 startup files. |
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 | |
854 | 705 |
855 @vindex gnus-init-file | 706 @vindex gnus-init-file |
856 When Gnus starts, it will read the @code{gnus-site-init-file} | 707 When Gnus starts, it will read the @code{gnus-init-file} file, which is |
857 (@file{.../site-lisp/gnus} by default) and @code{gnus-init-file} | 708 @file{~/.gnus.el} by default. This is a normal Emacs Lisp file and can |
858 (@file{~/.gnus} by default) files. These are normal Emacs Lisp files | 709 be used to avoid cluttering your @file{.emacs} file with Gnus stuff. |
859 and can be used to avoid cluttering your @file{~/.emacs} and | |
860 @file{site-init} files with Gnus stuff. Gnus will also check for files | |
861 with the same names as these, but with @file{.elc} and @file{.el} | |
862 suffixes. In other words, if you have set @code{gnus-init-file} to | |
863 @file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el}, | |
864 and finally @file{~/.gnus} (in this order). | |
865 | |
866 | 710 |
867 | 711 |
868 @node Auto Save | 712 @node Auto Save |
869 @section Auto Save | 713 @section Auto Save |
870 @cindex dribble file | 714 @cindex dribble file |
943 @code{LIST ACTIVE group} command, this isn't very nice to the server. | 787 @code{LIST ACTIVE group} command, this isn't very nice to the server. |
944 | 788 |
945 In any case, if you use @code{some} or @code{nil}, you should definitely | 789 In any case, if you use @code{some} or @code{nil}, you should definitely |
946 kill all groups that you aren't interested in to speed things up. | 790 kill all groups that you aren't interested in to speed things up. |
947 | 791 |
948 Note that this variable also affects active file retrieval from | |
949 secondary select methods. | |
950 | |
951 | 792 |
952 @node Startup Variables | 793 @node Startup Variables |
953 @section Startup Variables | 794 @section Startup Variables |
954 | 795 |
955 @table @code | 796 @table @code |
961 times you start Gnus. | 802 times you start Gnus. |
962 | 803 |
963 @item gnus-startup-hook | 804 @item gnus-startup-hook |
964 @vindex gnus-startup-hook | 805 @vindex gnus-startup-hook |
965 A hook that is run after starting up Gnus successfully. | 806 A hook that is run after starting up Gnus successfully. |
966 | |
967 @item gnus-started-hook | |
968 @vindex gnus-started-hook | |
969 A hook that is run as the very last thing after starting up Gnus | |
970 successfully. | |
971 | 807 |
972 @item gnus-check-bogus-newsgroups | 808 @item gnus-check-bogus-newsgroups |
973 @vindex gnus-check-bogus-newsgroups | 809 @vindex gnus-check-bogus-newsgroups |
974 If non-@code{nil}, Gnus will check for and delete all bogus groups at | 810 If non-@code{nil}, Gnus will check for and delete all bogus groups at |
975 startup. A @dfn{bogus group} is a group that you have in your | 811 startup. A @dfn{bogus group} is a group that you have in your |
979 in a while from the group buffer instead (@pxref{Group Maintenance}). | 815 in a while from the group buffer instead (@pxref{Group Maintenance}). |
980 | 816 |
981 @item gnus-inhibit-startup-message | 817 @item gnus-inhibit-startup-message |
982 @vindex gnus-inhibit-startup-message | 818 @vindex gnus-inhibit-startup-message |
983 If non-@code{nil}, the startup message won't be displayed. That way, | 819 If non-@code{nil}, the startup message won't be displayed. That way, |
984 your boss might not notice as easily that you are reading news instead | 820 your boss might not notice that you are reading news instead of doing |
985 of doing your job. Note that this variable is used before | 821 your job as easily. |
986 @file{.gnus.el} is loaded, so it should be set in @code{.emacs} instead. | |
987 | 822 |
988 @item gnus-no-groups-message | 823 @item gnus-no-groups-message |
989 @vindex gnus-no-groups-message | 824 @vindex gnus-no-groups-message |
990 Message displayed by Gnus when no groups are available. | 825 Message displayed by Gnus when no groups are available. |
991 | |
992 @item gnus-play-startup-jingle | |
993 @vindex gnus-play-startup-jingle | |
994 If non-@code{nil}, play the Gnus jingle at startup. | |
995 | |
996 @item gnus-startup-jingle | |
997 @vindex gnus-startup-jingle | |
998 Jingle to be played if the above variable is non-@code{nil}. The | |
999 default is @samp{Tuxedomoon.Jingle4.au}. | |
1000 | |
1001 @end table | 826 @end table |
1002 | 827 |
1003 | 828 |
1004 @node The Group Buffer | 829 @node The Group Buffer |
1005 @chapter The Group Buffer | 830 @chapter The Group Buffer |
1011 | 836 |
1012 @menu | 837 @menu |
1013 * Group Buffer Format:: Information listed and how you can change it. | 838 * Group Buffer Format:: Information listed and how you can change it. |
1014 * Group Maneuvering:: Commands for moving in the group buffer. | 839 * Group Maneuvering:: Commands for moving in the group buffer. |
1015 * Selecting a Group:: Actually reading news. | 840 * Selecting a Group:: Actually reading news. |
1016 * Group Data:: Changing the info for a group. | |
1017 * Subscription Commands:: Unsubscribing, killing, subscribing. | 841 * Subscription Commands:: Unsubscribing, killing, subscribing. |
1018 * Group Levels:: Levels? What are those, then? | 842 * Group Levels:: Levels? What are those, then? |
1019 * Group Score:: A mechanism for finding out what groups you like. | 843 * Group Score:: A mechanism for finding out what groups you like. |
1020 * Marking Groups:: You can mark groups for later processing. | 844 * Marking Groups:: You can mark groups for later processing. |
1021 * Foreign Groups:: Creating and editing groups. | 845 * Foreign Groups:: Creating and editing groups. |
1030 @end menu | 854 @end menu |
1031 | 855 |
1032 | 856 |
1033 @node Group Buffer Format | 857 @node Group Buffer Format |
1034 @section Group Buffer Format | 858 @section Group Buffer Format |
859 @cindex group buffer format | |
1035 | 860 |
1036 @menu | 861 @menu |
1037 * Group Line Specification:: Deciding how the group buffer is to look. | 862 * Group Line Specification:: Deciding how the group buffer is to look. |
1038 * Group Modeline Specification:: The group buffer modeline. | 863 * Group Modeline Specification:: The group buffer modeline. |
1039 * Group Highlighting:: Having nice colors in the group buffer. | 864 * Group Highlighting:: Having nice colors in the group buffer. |
1040 @end menu | 865 @end menu |
1041 | 866 |
1042 | 867 |
1043 @node Group Line Specification | 868 @node Group Line Specification |
1044 @subsection Group Line Specification | 869 @subsection Group Line Specification |
1045 @cindex group buffer format | |
1046 | 870 |
1047 The default format of the group buffer is nice and dull, but you can | 871 The default format of the group buffer is nice and dull, but you can |
1048 make it as exciting and ugly as you feel like. | 872 make it as exciting and ugly as you feel like. |
1049 | 873 |
1050 Here's a couple of example group lines: | 874 Here's a couple of example group lines: |
1066 @code{gnus-group-line-format} variable. This variable works along the | 890 @code{gnus-group-line-format} variable. This variable works along the |
1067 lines of a @code{format} specification, which is pretty much the same as | 891 lines of a @code{format} specification, which is pretty much the same as |
1068 a @code{printf} specifications, for those of you who use (feh!) C. | 892 a @code{printf} specifications, for those of you who use (feh!) C. |
1069 @xref{Formatting Variables}. | 893 @xref{Formatting Variables}. |
1070 | 894 |
1071 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above. | 895 The default value that produced those lines above is |
896 @samp{%M%S%5y: %(%g%)\n}. | |
1072 | 897 |
1073 There should always be a colon on the line; the cursor always moves to | 898 There should always be a colon on the line; the cursor always moves to |
1074 the colon after performing an operation. Nothing else is required---not | 899 the colon after performing an operation. Nothing else is required---not |
1075 even the group name. All displayed text is just window dressing, and is | 900 even the group name. All displayed text is just window dressing, and is |
1076 never examined by Gnus. Gnus stores all real information it needs using | 901 never examined by Gnus. Gnus stores all real information it needs using |
1083 Here's a list of all available format characters: | 908 Here's a list of all available format characters: |
1084 | 909 |
1085 @table @samp | 910 @table @samp |
1086 | 911 |
1087 @item M | 912 @item M |
1088 An asterisk if the group only has marked articles. | 913 Only marked articles. |
1089 | 914 |
1090 @item S | 915 @item S |
1091 Whether the group is subscribed. | 916 Whether the group is subscribed. |
1092 | 917 |
1093 @item L | 918 @item L |
1104 | 929 |
1105 @item R | 930 @item R |
1106 Number of read articles. | 931 Number of read articles. |
1107 | 932 |
1108 @item t | 933 @item t |
1109 Estimated total number of articles. (This is really @var{max-number} | 934 Total number of articles. |
1110 minus @var{min-number} plus 1.) | |
1111 | 935 |
1112 @item y | 936 @item y |
1113 Number of unread, unticked, non-dormant articles. | 937 Number of unread, unticked, non-dormant articles. |
1114 | 938 |
1115 @item i | 939 @item i |
1145 | 969 |
1146 @item c | 970 @item c |
1147 @vindex gnus-group-uncollapsed-levels | 971 @vindex gnus-group-uncollapsed-levels |
1148 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} | 972 Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} |
1149 variable says how many levels to leave at the end of the group name. | 973 variable says how many levels to leave at the end of the group name. |
1150 The default is 1---this will mean that group names like | 974 The default is @code{1}. |
1151 @samp{gnu.emacs.gnus} will be shortened to @samp{g.emacs.gnus}. | |
1152 | |
1153 @item m | |
1154 @vindex gnus-new-mail-mark | |
1155 @cindex % | |
1156 @samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to | |
1157 the group lately. | |
1158 | |
1159 @item d | |
1160 A string that says when you last read the group (@pxref{Group | |
1161 Timestamp}). | |
1162 | 975 |
1163 @item u | 976 @item u |
1164 User defined specifier. The next character in the format string should | 977 User defined specifier. The next character in the format string should |
1165 be a letter. @sc{gnus} will call the function | 978 be a letter. @sc{gnus} will call the function |
1166 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter | 979 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter |
1167 following @samp{%u}. The function will be passed a single dummy | 980 following @samp{%u}. The function will be passed the current headers as |
1168 parameter as argument. The function should return a string, which will | 981 argument. The function should return a string, which will be inserted |
1169 be inserted into the buffer just like information from any other | 982 into the buffer just like information from any other specifier. |
1170 specifier. | |
1171 @end table | 983 @end table |
1172 | 984 |
1173 @cindex * | 985 @cindex * |
1174 All the ``number-of'' specs will be filled with an asterisk (@samp{*}) | 986 All the ``number-of'' specs will be filled with an asterisk (@samp{*}) |
1175 if no info is available---for instance, if it is a non-activated foreign | 987 if no info is available---for instance, if it is a non-activated foreign |
1176 group, or a bogus native group. | 988 group, or a bogus (or semi-bogus) native group. |
1177 | 989 |
1178 | 990 |
1179 @node Group Modeline Specification | 991 @node Group Modeline Specification |
1180 @subsection Group Modeline Specification | 992 @subsection Group Modeline Specification |
1181 @cindex group modeline | |
1182 | 993 |
1183 @vindex gnus-group-mode-line-format | 994 @vindex gnus-group-mode-line-format |
1184 The mode line can be changed by setting | 995 The mode line can be changed by setting |
1185 @code{gnus-group-mode-line-format} (@pxref{Formatting Variables}). It | 996 (@code{gnus-group-mode-line-format}). It doesn't understand that many |
1186 doesn't understand that many format specifiers: | 997 format specifiers: |
1187 | 998 |
1188 @table @samp | 999 @table @samp |
1189 @item S | 1000 @item S |
1190 The native news server. | 1001 The native news server. |
1191 @item M | 1002 @item M |
1193 @end table | 1004 @end table |
1194 | 1005 |
1195 | 1006 |
1196 @node Group Highlighting | 1007 @node Group Highlighting |
1197 @subsection Group Highlighting | 1008 @subsection Group Highlighting |
1198 @cindex highlighting | |
1199 @cindex group highlighting | |
1200 | 1009 |
1201 @vindex gnus-group-highlight | 1010 @vindex gnus-group-highlight |
1202 Highlighting in the group buffer is controlled by the | 1011 Highlighting in the group buffer is controlled by the |
1203 @code{gnus-group-highlight} variable. This is an alist with elements | 1012 @code{gnus-group-highlight} variable. This is an alist with elements |
1204 that look like @var{(form . face)}. If @var{form} evaluates to | 1013 that look like @var{(form . face)}. If @var{form} evaluates to |
1207 Here's an example value for this variable that might look nice if the | 1016 Here's an example value for this variable that might look nice if the |
1208 background is dark: | 1017 background is dark: |
1209 | 1018 |
1210 @lisp | 1019 @lisp |
1211 (setq gnus-group-highlight | 1020 (setq gnus-group-highlight |
1212 `(((> unread 200) . | 1021 `(((> unread 200) . |
1213 ,(custom-face-lookup "Red" nil nil t nil nil)) | 1022 ,(custom-face-lookup "Red" nil nil t nil nil)) |
1214 ((and (< level 3) (zerop unread)) . | 1023 ((and (< level 3) (zerop unread)) . |
1215 ,(custom-face-lookup "SeaGreen" nil nil t nil nil)) | 1024 ,(custom-face-lookup "SeaGreen" nil nil t nil nil)) |
1216 ((< level 3) . | 1025 ((< level 3) . |
1217 ,(custom-face-lookup "SpringGreen" nil nil t nil nil)) | 1026 ,(custom-face-lookup "SpringGreen" nil nil t nil nil)) |
1218 ((zerop unread) . | 1027 ((zerop unread) . |
1219 ,(custom-face-lookup "SteelBlue" nil nil t nil nil)) | 1028 ,(custom-face-lookup "SteelBlue" nil nil t nil nil)) |
1220 (t . | 1029 (t . |
1221 ,(custom-face-lookup "SkyBlue" nil nil t nil nil)))) | 1030 ,(custom-face-lookup "SkyBlue" nil nil t nil nil)) |
1031 )) | |
1222 @end lisp | 1032 @end lisp |
1223 | 1033 |
1224 Variables that are dynamically bound when the forms are evaluated | 1034 Variables that are dynamically bound when the forms are evaluated |
1225 include: | 1035 include: |
1226 | 1036 |
1237 The level of the group. | 1047 The level of the group. |
1238 @item score | 1048 @item score |
1239 The score of the group. | 1049 The score of the group. |
1240 @item ticked | 1050 @item ticked |
1241 The number of ticked articles in the group. | 1051 The number of ticked articles in the group. |
1242 @item total | |
1243 The total number of articles in the group. Or rather, MAX-NUMBER minus | |
1244 MIN-NUMBER. | |
1245 @item topic | 1052 @item topic |
1246 When using the topic minor mode, this variable is bound to the current | 1053 When using the topic minor mode, this variable is bound to the current |
1247 topic being inserted. | 1054 topic being inserted. |
1248 @end table | 1055 @end table |
1249 | 1056 |
1272 @findex gnus-group-next-unread-group | 1079 @findex gnus-group-next-unread-group |
1273 Go to the next group that has unread articles | 1080 Go to the next group that has unread articles |
1274 (@code{gnus-group-next-unread-group}). | 1081 (@code{gnus-group-next-unread-group}). |
1275 | 1082 |
1276 @item p | 1083 @item p |
1084 | |
1277 @itemx DEL | 1085 @itemx DEL |
1278 @kindex DEL (Group) | 1086 @kindex DEL (Group) |
1279 @kindex p (Group) | 1087 @kindex p (Group) |
1280 @findex gnus-group-prev-unread-group | 1088 @findex gnus-group-prev-unread-group |
1281 Go to the previous group that has unread articles | 1089 Go to the previous group group that has unread articles |
1282 (@code{gnus-group-prev-unread-group}). | 1090 (@code{gnus-group-prev-unread-group}). |
1283 | 1091 |
1284 @item N | 1092 @item N |
1285 @kindex N (Group) | 1093 @kindex N (Group) |
1286 @findex gnus-group-next-group | 1094 @findex gnus-group-next-group |
1292 Go to the previous group (@code{gnus-group-prev-group}). | 1100 Go to the previous group (@code{gnus-group-prev-group}). |
1293 | 1101 |
1294 @item M-p | 1102 @item M-p |
1295 @kindex M-p (Group) | 1103 @kindex M-p (Group) |
1296 @findex gnus-group-next-unread-group-same-level | 1104 @findex gnus-group-next-unread-group-same-level |
1297 Go to the next unread group on the same (or lower) level | 1105 Go to the next unread group on the same level (or lower) |
1298 (@code{gnus-group-next-unread-group-same-level}). | 1106 (@code{gnus-group-next-unread-group-same-level}). |
1299 | 1107 |
1300 @item M-n | 1108 @item M-n |
1301 @kindex M-n (Group) | 1109 @kindex M-n (Group) |
1302 @findex gnus-group-prev-unread-group-same-level | 1110 @findex gnus-group-prev-unread-group-same-level |
1303 Go to the previous unread group on the same (or lower) level | 1111 Go to the previous unread group on the same level (or lower) |
1304 (@code{gnus-group-prev-unread-group-same-level}). | 1112 (@code{gnus-group-prev-unread-group-same-level}). |
1305 @end table | 1113 @end table |
1306 | 1114 |
1307 Three commands for jumping to groups: | 1115 Three commands for jumping to groups: |
1308 | 1116 |
1346 @findex gnus-group-read-group | 1154 @findex gnus-group-read-group |
1347 Select the current group, switch to the summary buffer and display the | 1155 Select the current group, switch to the summary buffer and display the |
1348 first unread article (@code{gnus-group-read-group}). If there are no | 1156 first unread article (@code{gnus-group-read-group}). If there are no |
1349 unread articles in the group, or if you give a non-numerical prefix to | 1157 unread articles in the group, or if you give a non-numerical prefix to |
1350 this command, Gnus will offer to fetch all the old articles in this | 1158 this command, Gnus will offer to fetch all the old articles in this |
1351 group from the server. If you give a numerical prefix @var{N}, @var{N} | 1159 group from the server. If you give a numerical prefix @var{N}, Gnus |
1352 determines the number of articles Gnus will fetch. If @var{N} is | 1160 will fetch @var{N} number of articles. If @var{N} is positive, fetch |
1353 positive, Gnus fetches the @var{N} newest articles, if @var{N} is | 1161 the @var{N} newest articles, if @var{N} is negative, fetch the |
1354 negative, Gnus fetches the @var{abs(N)} oldest articles. | 1162 @var{abs(N)} oldest articles. |
1355 | 1163 |
1356 @item RET | 1164 @item RET |
1357 @kindex RET (Group) | 1165 @kindex RET (Group) |
1358 @findex gnus-group-select-group | 1166 @findex gnus-group-select-group |
1359 Select the current group and switch to the summary buffer | 1167 Select the current group and switch to the summary buffer |
1364 | 1172 |
1365 @item M-RET | 1173 @item M-RET |
1366 @kindex M-RET (Group) | 1174 @kindex M-RET (Group) |
1367 @findex gnus-group-quick-select-group | 1175 @findex gnus-group-quick-select-group |
1368 This does the same as the command above, but tries to do it with the | 1176 This does the same as the command above, but tries to do it with the |
1369 minimum amount of fuzz (@code{gnus-group-quick-select-group}). No | 1177 minimum amount off fuzz (@code{gnus-group-quick-select-group}). No |
1370 scoring/killing will be performed, there will be no highlights and no | 1178 scoring/killing will be performed, there will be no highlights and no |
1371 expunging. This might be useful if you're in a real hurry and have to | 1179 expunging. This might be useful if you're in a real hurry and have to |
1372 enter some humongous group. If you give a 0 prefix to this command | 1180 enter some humongous group. |
1373 (i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer. | |
1374 This might be useful if you want to toggle threading before entering the | |
1375 group. | |
1376 | 1181 |
1377 @item M-SPACE | 1182 @item M-SPACE |
1378 @kindex M-SPACE (Group) | 1183 @kindex M-RET (Group) |
1379 @findex gnus-group-visible-select-group | 1184 @findex gnus-group-visible-select-group |
1380 This is yet one more command that does the same as the @kbd{RET} | 1185 This is yet one more command that does the same as the one above, but |
1381 command, but this one does it without expunging and hiding dormants | 1186 this one does it without expunging and hiding dormants |
1382 (@code{gnus-group-visible-select-group}). | 1187 (@code{gnus-group-visible-select-group}). |
1383 | 1188 |
1384 @item M-C-RET | 1189 @item c |
1385 @kindex M-C-RET (Group) | 1190 @kindex c (Group) |
1386 @findex gnus-group-select-group-ephemerally | 1191 @findex gnus-group-catchup-current |
1387 Finally, this command selects the current group ephemerally without | 1192 @vindex gnus-group-catchup-group-hook |
1388 doing any processing of its contents | 1193 Mark all unticked articles in this group as read |
1389 (@code{gnus-group-select-group-ephemerally}). Even threading has been | 1194 (@code{gnus-group-catchup-current}). |
1390 turned off. Everything you do in the group after selecting it in this | 1195 @code{gnus-group-catchup-group-hook} is when catching up a group from |
1391 manner will have no permanent effects. | 1196 the group buffer. |
1392 | 1197 |
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}). | |
1393 @end table | 1203 @end table |
1394 | 1204 |
1395 @vindex gnus-large-newsgroup | 1205 @vindex gnus-large-newsgroup |
1396 The @code{gnus-large-newsgroup} variable says what Gnus should consider | 1206 The @code{gnus-large-newsgroup} variable says what Gnus should consider |
1397 to be a big group. This is 200 by default. If the group has more | 1207 to be a big group. This is 200 by default. If the group has more |
1398 (unread and/or ticked) articles than this, Gnus will query the user | 1208 unread articles than this, Gnus will query the user before entering the |
1399 before entering the group. The user can then specify how many articles | 1209 group. The user can then specify how many articles should be fetched |
1400 should be fetched from the server. If the user specifies a negative | 1210 from the server. If the user specifies a negative number (@code{-n}), |
1401 number (@code{-n}), the @code{n} oldest articles will be fetched. If it | 1211 the @code{n} oldest articles will be fetched. If it is positive, the |
1402 is positive, the @code{n} articles that have arrived most recently will | 1212 @code{n} articles that have arrived most recently will be fetched. |
1403 be fetched. | |
1404 | 1213 |
1405 @vindex gnus-select-group-hook | 1214 @vindex gnus-select-group-hook |
1406 @vindex gnus-auto-select-first | 1215 @vindex gnus-auto-select-first |
1407 @code{gnus-auto-select-first} control whether any articles are selected | 1216 @code{gnus-auto-select-first} control whether any articles are selected |
1408 automatically when entering a group with the @kbd{SPACE} command. | 1217 automatically when entering a group. |
1409 | 1218 |
1410 @table @code | 1219 @table @code |
1411 | 1220 |
1412 @item nil | 1221 @item nil |
1413 Don't select any articles when entering the group. Just display the | 1222 Don't select any articles when entering the group. Just display the |
1427 selected. | 1236 selected. |
1428 | 1237 |
1429 | 1238 |
1430 @node Subscription Commands | 1239 @node Subscription Commands |
1431 @section Subscription Commands | 1240 @section Subscription Commands |
1432 @cindex subscription | 1241 @cindex subscribing |
1433 | 1242 |
1434 @table @kbd | 1243 @table @kbd |
1435 | 1244 |
1436 @item S t | 1245 @item S t |
1437 @itemx u | 1246 @itemx u |
1486 @item S C-k | 1295 @item S C-k |
1487 @kindex S C-k (Group) | 1296 @kindex S C-k (Group) |
1488 @findex gnus-group-kill-level | 1297 @findex gnus-group-kill-level |
1489 Kill all groups on a certain level (@code{gnus-group-kill-level}). | 1298 Kill all groups on a certain level (@code{gnus-group-kill-level}). |
1490 These groups can't be yanked back after killing, so this command should | 1299 These groups can't be yanked back after killing, so this command should |
1491 be used with some caution. The only time where this command comes in | 1300 be used with some caution. The only thing where this command comes in |
1492 really handy is when you have a @file{.newsrc} with lots of unsubscribed | 1301 really handy is when you have a @file{.newsrc} with lots of unsubscribed |
1493 groups that you want to get rid off. @kbd{S C-k} on level 7 will | 1302 groups that you want to get rid off. @kbd{S C-k} on level @code{7} will |
1494 kill off all unsubscribed groups that do not have message numbers in the | 1303 kill off all unsubscribed groups that do not have message numbers in the |
1495 @file{.newsrc} file. | 1304 @file{.newsrc} file. |
1496 | 1305 |
1497 @end table | 1306 @end table |
1498 | 1307 |
1499 Also @pxref{Group Levels}. | 1308 Also @pxref{Group Levels}. |
1500 | |
1501 | |
1502 @node Group Data | |
1503 @section Group Data | |
1504 | |
1505 @table @kbd | |
1506 | |
1507 @item c | |
1508 @kindex c (Group) | |
1509 @findex gnus-group-catchup-current | |
1510 @vindex gnus-group-catchup-group-hook | |
1511 Mark all unticked articles in this group as read | |
1512 (@code{gnus-group-catchup-current}). | |
1513 @code{gnus-group-catchup-group-hook} is called when catching up a group from | |
1514 the group buffer. | |
1515 | |
1516 @item C | |
1517 @kindex C (Group) | |
1518 @findex gnus-group-catchup-current-all | |
1519 Mark all articles in this group, even the ticked ones, as read | |
1520 (@code{gnus-group-catchup-current-all}). | |
1521 | |
1522 @item M-c | |
1523 @kindex M-c (Group) | |
1524 @findex gnus-group-clear-data | |
1525 Clear the data from the current group---nix out marks and the list of | |
1526 read articles (@code{gnus-group-clear-data}). | |
1527 | |
1528 @item M-x gnus-group-clear-data-on-native-groups | |
1529 @kindex M-x gnus-group-clear-data-on-native-groups | |
1530 @findex gnus-group-clear-data-on-native-groups | |
1531 If you have switched from one @sc{nntp} server to another, all your marks | |
1532 and read ranges have become worthless. You can use this command to | |
1533 clear out all data that you have on your native groups. Use with | |
1534 caution. | |
1535 | |
1536 @end table | |
1537 | 1309 |
1538 | 1310 |
1539 @node Group Levels | 1311 @node Group Levels |
1540 @section Group Levels | 1312 @section Group Levels |
1541 @cindex group level | 1313 @cindex group level |
1542 @cindex level | |
1543 | 1314 |
1544 All groups have a level of @dfn{subscribedness}. For instance, if a | 1315 All groups have a level of @dfn{subscribedness}. For instance, if a |
1545 group is on level 2, it is more subscribed than a group on level 5. You | 1316 group is on level 2, it is more subscribed than a group on level 5. You |
1546 can ask Gnus to just list groups on a given level or lower | 1317 can ask Gnus to just list groups on a given level or lower |
1547 (@pxref{Listing Groups}), or to just check for new articles in groups on | 1318 (@pxref{Listing Groups}), or to just check for new articles in groups on |
1574 articles you have read, etc, stored. This distinction between dead and | 1345 articles you have read, etc, stored. This distinction between dead and |
1575 living groups isn't done because it is nice or clever, it is done purely | 1346 living groups isn't done because it is nice or clever, it is done purely |
1576 for reasons of efficiency. | 1347 for reasons of efficiency. |
1577 | 1348 |
1578 It is recommended that you keep all your mail groups (if any) on quite | 1349 It is recommended that you keep all your mail groups (if any) on quite |
1579 low levels (e.g. 1 or 2). | 1350 low levels (eg. 1 or 2). |
1580 | 1351 |
1581 If you want to play with the level variables, you should show some care. | 1352 If you want to play with the level variables, you should show some care. |
1582 Set them once, and don't touch them ever again. Better yet, don't touch | 1353 Set them once, and don't touch them ever again. Better yet, don't touch |
1583 them at all unless you know exactly what you're doing. | 1354 them at all unless you know exactly what you're doing. |
1584 | 1355 |
1616 | 1387 |
1617 @vindex gnus-activate-level | 1388 @vindex gnus-activate-level |
1618 Gnus will normally just activate groups that are on level | 1389 Gnus will normally just activate groups that are on level |
1619 @code{gnus-activate-level} or less. If you don't want to activate | 1390 @code{gnus-activate-level} or less. If you don't want to activate |
1620 unsubscribed groups, for instance, you might set this variable to | 1391 unsubscribed groups, for instance, you might set this variable to |
1621 5. The default is 6. | 1392 @code{5}. |
1622 | 1393 |
1623 | 1394 |
1624 @node Group Score | 1395 @node Group Score |
1625 @section Group Score | 1396 @section Group Score |
1626 @cindex group score | 1397 @cindex group score |
1634 group. You can then sort the group buffer based on this score. | 1405 group. You can then sort the group buffer based on this score. |
1635 Alternatively, you can sort on score and then level. (Taken together, | 1406 Alternatively, you can sort on score and then level. (Taken together, |
1636 the level and the score is called the @dfn{rank} of the group. A group | 1407 the level and the score is called the @dfn{rank} of the group. A group |
1637 that is on level 4 and has a score of 1 has a higher rank than a group | 1408 that is on level 4 and has a score of 1 has a higher rank than a group |
1638 on level 5 that has a score of 300. (The level is the most significant | 1409 on level 5 that has a score of 300. (The level is the most significant |
1639 part and the score is the least significant part.)) | 1410 part and the score is the least significant part.) |
1640 | 1411 |
1641 @findex gnus-summary-bubble-group | 1412 @findex gnus-summary-bubble-group |
1642 If you want groups you read often to get higher scores than groups you | 1413 If you want groups you read often to get higher scores than groups you |
1643 read seldom you can add the @code{gnus-summary-bubble-group} function to | 1414 read seldom you can add the @code{gnus-summary-bubble-group} function to |
1644 the @code{gnus-summary-exit-hook} hook. This will result (after | 1415 the @code{gnus-summary-exit-hook} hook. This will result (after |
1710 the command to be executed. | 1481 the command to be executed. |
1711 | 1482 |
1712 | 1483 |
1713 @node Foreign Groups | 1484 @node Foreign Groups |
1714 @section Foreign Groups | 1485 @section Foreign Groups |
1715 @cindex foreign groups | 1486 |
1716 | 1487 Here are some group mode commands for making and editing general foreign |
1717 Below are some group mode commands for making and editing general foreign | |
1718 groups, as well as commands to ease the creation of a few | 1488 groups, as well as commands to ease the creation of a few |
1719 special-purpose groups. All these commands insert the newly created | 1489 special-purpose groups: |
1720 groups under point---@code{gnus-subscribe-newsgroup-method} is not | |
1721 consulted. | |
1722 | 1490 |
1723 @table @kbd | 1491 @table @kbd |
1724 | 1492 |
1725 @item G m | 1493 @item G m |
1726 @kindex G m (Group) | 1494 @kindex G m (Group) |
1727 @findex gnus-group-make-group | 1495 @findex gnus-group-make-group |
1728 @cindex making groups | |
1729 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you | 1496 Make a new group (@code{gnus-group-make-group}). Gnus will prompt you |
1730 for a name, a method and possibly an @dfn{address}. For an easier way | 1497 for a name, a method and possibly an @dfn{address}. For an easier way |
1731 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}. | 1498 to subscribe to @sc{nntp} groups, @pxref{Browse Foreign Server}. |
1732 | 1499 |
1733 @item G r | 1500 @item G r |
1734 @kindex G r (Group) | 1501 @kindex G r (Group) |
1735 @findex gnus-group-rename-group | 1502 @findex gnus-group-rename-group |
1736 @cindex renaming groups | |
1737 Rename the current group to something else | 1503 Rename the current group to something else |
1738 (@code{gnus-group-rename-group}). This is legal only on some | 1504 (@code{gnus-group-rename-group}). This is legal only on some |
1739 groups---mail groups mostly. This command might very well be quite slow | 1505 groups---mail groups mostly. This command might very well be quite slow |
1740 on some backends. | 1506 on some backends. |
1741 | 1507 |
1742 @item G c | |
1743 @kindex G c (Group) | |
1744 @cindex customizing | |
1745 @findex gnus-group-customize | |
1746 Customize the group parameters (@code{gnus-group-customize}). | |
1747 | |
1748 @item G e | 1508 @item G e |
1749 @kindex G e (Group) | 1509 @kindex G e (Group) |
1750 @findex gnus-group-edit-group-method | 1510 @findex gnus-group-edit-group-method |
1751 @cindex renaming groups | |
1752 Enter a buffer where you can edit the select method of the current | 1511 Enter a buffer where you can edit the select method of the current |
1753 group (@code{gnus-group-edit-group-method}). | 1512 group (@code{gnus-group-edit-group-method}). |
1754 | 1513 |
1755 @item G p | 1514 @item G p |
1756 @kindex G p (Group) | 1515 @kindex G p (Group) |
1765 (@code{gnus-group-edit-group}). | 1524 (@code{gnus-group-edit-group}). |
1766 | 1525 |
1767 @item G d | 1526 @item G d |
1768 @kindex G d (Group) | 1527 @kindex G d (Group) |
1769 @findex gnus-group-make-directory-group | 1528 @findex gnus-group-make-directory-group |
1770 @cindex nndir | 1529 Make a directory group. You will be prompted for a directory name |
1771 Make a directory group (@pxref{Directory Groups}). You will be prompted | 1530 (@code{gnus-group-make-directory-group}). |
1772 for a directory name (@code{gnus-group-make-directory-group}). | |
1773 | 1531 |
1774 @item G h | 1532 @item G h |
1775 @kindex G h (Group) | 1533 @kindex G h (Group) |
1776 @cindex help group | |
1777 @findex gnus-group-make-help-group | 1534 @findex gnus-group-make-help-group |
1778 Make the Gnus help group (@code{gnus-group-make-help-group}). | 1535 Make the Gnus help group (@code{gnus-group-make-help-group}). |
1779 | 1536 |
1780 @item G a | 1537 @item G a |
1781 @kindex G a (Group) | 1538 @kindex G a (Group) |
1782 @cindex (ding) archive | |
1783 @cindex archive group | |
1784 @findex gnus-group-make-archive-group | 1539 @findex gnus-group-make-archive-group |
1785 @vindex gnus-group-archive-directory | 1540 @vindex gnus-group-archive-directory |
1786 @vindex gnus-group-recent-archive-directory | 1541 @vindex gnus-group-recent-archive-directory |
1787 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By | 1542 Make a Gnus archive group (@code{gnus-group-make-archive-group}). By |
1788 default a group pointing to the most recent articles will be created | 1543 default a group pointing to the most recent articles will be created |
1790 group will be created from @code{gnus-group-archive-directory}. | 1545 group will be created from @code{gnus-group-archive-directory}. |
1791 | 1546 |
1792 @item G k | 1547 @item G k |
1793 @kindex G k (Group) | 1548 @kindex G k (Group) |
1794 @findex gnus-group-make-kiboze-group | 1549 @findex gnus-group-make-kiboze-group |
1795 @cindex nnkiboze | |
1796 Make a kiboze group. You will be prompted for a name, for a regexp to | 1550 Make a kiboze group. You will be prompted for a name, for a regexp to |
1797 match groups to be ``included'' in the kiboze group, and a series of | 1551 match groups to be ``included'' in the kiboze group, and a series of |
1798 strings to match on headers (@code{gnus-group-make-kiboze-group}). | 1552 strings to match on headers (@code{gnus-group-make-kiboze-group}). |
1799 @xref{Kibozed Groups}. | 1553 @xref{Kibozed Groups} |
1800 | 1554 |
1801 @item G D | 1555 @item G D |
1802 @kindex G D (Group) | 1556 @kindex G D (Group) |
1803 @findex gnus-group-enter-directory | 1557 @findex gnus-group-enter-directory |
1804 @cindex nneething | |
1805 Read an arbitrary directory as if with were a newsgroup with the | 1558 Read an arbitrary directory as if with were a newsgroup with the |
1806 @code{nneething} backend (@code{gnus-group-enter-directory}). | 1559 @code{nneething} backend (@code{gnus-group-enter-directory}). |
1807 @xref{Anything Groups}. | |
1808 | 1560 |
1809 @item G f | 1561 @item G f |
1810 @kindex G f (Group) | 1562 @kindex G f (Group) |
1811 @findex gnus-group-make-doc-group | 1563 @findex gnus-group-make-doc-group |
1812 @cindex ClariNet Briefs | 1564 @cindex ClariNet Briefs |
1813 @cindex nndoc | |
1814 Make a group based on some file or other | 1565 Make a group based on some file or other |
1815 (@code{gnus-group-make-doc-group}). If you give a prefix to this | 1566 (@code{gnus-group-make-doc-group}). If you give a prefix to this |
1816 command, you will be prompted for a file name and a file type. | 1567 command, you will be prompted for a file name and a file type. |
1817 Currently supported types are @code{babyl}, @code{mbox}, @code{digest}, | 1568 Currently supported types are @code{babyl}, @code{mbox}, @code{digest}, |
1818 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, | 1569 @code{mmdf}, @code{news}, @code{rnews}, @code{clari-briefs}, and |
1819 @code{rfc934}, @code{rfc822-forward}, and @code{forward}. If you run | 1570 @code{forward}. If you run this command without a prefix, Gnus will |
1820 this command without a prefix, Gnus will guess at the file type. | 1571 guess at the file type. |
1821 @xref{Document Groups}. | |
1822 | |
1823 @item G w | |
1824 @kindex G w (Group) | |
1825 @findex gnus-group-make-web-group | |
1826 @cindex DejaNews | |
1827 @cindex Alta Vista | |
1828 @cindex InReference | |
1829 @cindex nnweb | |
1830 Make an ephemeral group based on a web search | |
1831 (@code{gnus-group-make-web-group}). If you give a prefix to this | |
1832 command, make a solid group instead. You will be prompted for the | |
1833 search engine type and the search string. Legal search engine types | |
1834 include @code{dejanews}, @code{altavista} and @code{reference}. | |
1835 @xref{Web Searches}. | |
1836 | 1572 |
1837 @item G DEL | 1573 @item G DEL |
1838 @kindex G DEL (Group) | 1574 @kindex G DEL (Group) |
1839 @findex gnus-group-delete-group | 1575 @findex gnus-group-delete-group |
1840 This function will delete the current group | 1576 This function will delete the current group |
1845 | 1581 |
1846 @item G V | 1582 @item G V |
1847 @kindex G V (Group) | 1583 @kindex G V (Group) |
1848 @findex gnus-group-make-empty-virtual | 1584 @findex gnus-group-make-empty-virtual |
1849 Make a new, fresh, empty @code{nnvirtual} group | 1585 Make a new, fresh, empty @code{nnvirtual} group |
1850 (@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}. | 1586 (@code{gnus-group-make-empty-virtual}). |
1851 | 1587 |
1852 @item G v | 1588 @item G v |
1853 @kindex G v (Group) | 1589 @kindex G v (Group) |
1854 @findex gnus-group-add-to-virtual | 1590 @findex gnus-group-add-to-virtual |
1855 Add the current group to an @code{nnvirtual} group | 1591 Add the current group to an @code{nnvirtual} group |
1858 | 1594 |
1859 @xref{Select Methods} for more information on the various select | 1595 @xref{Select Methods} for more information on the various select |
1860 methods. | 1596 methods. |
1861 | 1597 |
1862 @vindex gnus-activate-foreign-newsgroups | 1598 @vindex gnus-activate-foreign-newsgroups |
1863 If @code{gnus-activate-foreign-newsgroups} is a positive number, | 1599 If the @code{gnus-activate-foreign-newsgroups} is a positive number, |
1864 Gnus will check all foreign groups with this level or lower at startup. | 1600 Gnus will check all foreign groups with this level or lower at startup. |
1865 This might take quite a while, especially if you subscribe to lots of | 1601 This might take quite a while, especially if you subscribe to lots of |
1866 groups from different @sc{nntp} servers. | 1602 groups from different @sc{nntp} servers. |
1867 | 1603 |
1868 | 1604 |
1869 @node Group Parameters | 1605 @node Group Parameters |
1870 @section Group Parameters | 1606 @section Group Parameters |
1871 @cindex group parameters | 1607 @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. | |
1872 | 1629 |
1873 The group parameters store information local to a particular group: | 1630 The group parameters store information local to a particular group: |
1874 | 1631 |
1875 @table @code | 1632 @table @code |
1876 @item to-address | 1633 @item to-address |
1897 @code{(to-list . "some@@where.com")}, that address will be used when | 1654 @code{(to-list . "some@@where.com")}, that address will be used when |
1898 doing a @kbd{a} in any group. It is totally ignored when doing a | 1655 doing a @kbd{a} in any group. It is totally ignored when doing a |
1899 followup---except that if it is present in a news group, you'll get mail | 1656 followup---except that if it is present in a news group, you'll get mail |
1900 group semantics when doing @kbd{f}. | 1657 group semantics when doing @kbd{f}. |
1901 | 1658 |
1902 If you do an @kbd{a} command in a mail group and you don't have a | |
1903 @code{to-list} group parameter, one will be added automatically upon | |
1904 sending the message. | |
1905 | |
1906 @item broken-reply-to | 1659 @item broken-reply-to |
1907 @cindex broken-reply-to | 1660 @cindex broken-reply-to |
1908 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To} | 1661 Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To} |
1909 headers in this group are to be ignored. This can be useful if you're | 1662 headers in this group are to be ignored. This can be useful if you're |
1910 reading a mailing list group where the listserv has inserted | 1663 reading a mailing list group where the listserv has inserted |
1911 @code{Reply-To} headers that point back to the listserv itself. This is | 1664 @code{Reply-To} headers that point back to the listserv itself. This is |
1912 broken behavior. So there! | 1665 broken behavior. So there! |
1913 | 1666 |
1914 @item to-group | 1667 @item to-group |
1915 @cindex to-group | 1668 @cindex to-group |
1916 Elements like @code{(to-group . "some.group.name")} means that all | 1669 If the group parameter list contains an element like @code{(to-group |
1917 posts in that group will be sent to @code{some.group.name}. | 1670 . "some.group.name")}, all posts will be sent to that group. |
1918 | |
1919 @item newsgroup | |
1920 @cindex newsgroup | |
1921 If this symbol is present in the group parameter list, Gnus will treat | |
1922 all responses as if they were responses to news articles. This can be | |
1923 useful if you have a mail group that's really a mirror of a news group. | |
1924 | |
1925 @item gcc-self | |
1926 @cindex gcc-self | |
1927 If this symbol is present in the group parameter list and set to | |
1928 @code{t}, new composed messages will be @code{Gcc}'d to the current | |
1929 group. If it is present and set to @code{none}, no @code{Gcc:} header | |
1930 will be generated, if it is present and a string, this string will be | |
1931 inserted literally as a @code{gcc} header (this symbol takes precedence over | |
1932 any default @code{Gcc} rules as described later). | |
1933 | 1671 |
1934 @item auto-expire | 1672 @item auto-expire |
1935 @cindex auto-expire | 1673 @cindex auto-expire |
1936 If the group parameter has an element that looks like @code{(auto-expire | 1674 If this symbol is present in the group parameter list, all articles that |
1937 . t)}, , all articles that are read will be marked as expirable. For an | 1675 are read will be marked as expirable. For an alternative approach, |
1938 alternative approach, @pxref{Expiring Mail}. | 1676 @pxref{Expiring Mail}. |
1939 | 1677 |
1940 @item total-expire | 1678 @item total-expire |
1941 @cindex total-expire | 1679 @cindex total-expire |
1942 If the group parameter has an element that looks like | 1680 If this symbol is present, all read articles will be put through the |
1943 @code{(total-expire . t)}, all read articles will be put through the | |
1944 expiry process, even if they are not marked as expirable. Use with | 1681 expiry process, even if they are not marked as expirable. Use with |
1945 caution. | 1682 caution. |
1946 | 1683 |
1947 @item expiry-wait | 1684 @item expiry-wait |
1948 @cindex expiry-wait | 1685 @cindex expiry-wait |
1949 @vindex nnmail-expiry-wait-function | 1686 @vindex nnmail-expiry-wait-function |
1950 If the group parameter has an element that looks like @code{(expiry-wait | 1687 If the group parameter has an element that looks like @code{(expiry-wait |
1952 @code{nnmail-expiry-wait-function} when expiring expirable messages. | 1689 @code{nnmail-expiry-wait-function} when expiring expirable messages. |
1953 The value can either be a number of days (not necessarily an integer) or | 1690 The value can either be a number of days (not necessarily an integer) or |
1954 the symbols @code{never} or @code{immediate}. | 1691 the symbols @code{never} or @code{immediate}. |
1955 | 1692 |
1956 @item score-file | 1693 @item score-file |
1957 @cindex score file group parameter | |
1958 Elements that look like @code{(score-file . "file")} will make | 1694 Elements that look like @code{(score-file . "file")} will make |
1959 @file{file} into the current score file for the group in question. This | 1695 @samp{file} into the current score file for the group in question. This |
1960 means that all score commands you issue will end up in that file. | 1696 means that all score commands you issue will end up in that file. |
1961 | |
1962 @item adapt-file | |
1963 @cindex adapt file group parameter | |
1964 Elements that look like @code{(adapt-file . "file")} will make | |
1965 @file{file} into the current adaptive file for the group in question. | |
1966 All adaptive score entries will be put into this file. | |
1967 | 1697 |
1968 @item admin-address | 1698 @item admin-address |
1969 When unsubscribing to a mailing list you should never send the | 1699 When unsubscribing to a mailing list you should never send the |
1970 unsubscription notice to the mailing list itself. Instead, you'd send | 1700 unsubscription notice to the mailing list itself. Instead, you'd send |
1971 messages to the administrative address. This parameter allows you to | 1701 messages to the administrative address. This parameter allows you to |
1972 put the admin address somewhere convenient. | 1702 put the admin address somewhere convenient. |
1973 | 1703 |
1974 @item display | |
1975 Elements that look like @code{(display . MODE)} says which articles to | |
1976 display on entering the group. Legal values are: | |
1977 | |
1978 @table @code | |
1979 @item all | |
1980 Display all articles, both read and unread. | |
1981 | |
1982 @item default | |
1983 Display the default visible articles, which normally includes unread and | |
1984 ticked articles. | |
1985 @end table | |
1986 | |
1987 @item comment | 1704 @item comment |
1988 Elements that look like @code{(comment . "This is a comment")} | 1705 This parameter allows you to enter a arbitrary comment on the group. |
1989 are arbitrary comments on the group. They are currently ignored by | |
1990 Gnus, but provide a place for you to store information on particular | |
1991 groups. | |
1992 | 1706 |
1993 @item @var{(variable form)} | 1707 @item @var{(variable form)} |
1994 You can use the group parameters to set variables local to the group you | 1708 You can use the group parameters to set variables local to the group you |
1995 are entering. If you want to turn threading off in @samp{news.answers}, | 1709 are entering. Say you want to turn threading off in |
1996 you could put @code{(gnus-show-threads nil)} in the group parameters of | 1710 @samp{news.answers}. You'd then put @code{(gnus-show-threads nil)} in |
1997 that group. @code{gnus-show-threads} will be made into a local variable | 1711 the group parameters of that group. @code{gnus-show-threads} will be |
1998 in the summary buffer you enter, and the form @code{nil} will be | 1712 made into a local variable in the summary buffer you enter, and the form |
1999 @code{eval}ed there. | 1713 @code{nil} will be @code{eval}ed there. |
2000 | 1714 |
2001 This can also be used as a group-specific hook function, if you'd like. | 1715 This can also be used as a group-specific hook function, if you'd like. |
2002 If you want to hear a beep when you enter a group, you could put | 1716 If you want to hear a beep when you enter the group |
2003 something like @code{(dummy-variable (ding))} in the parameters of that | 1717 @samp{alt.binaries.pictures.furniture}, you could put something like |
2004 group. @code{dummy-variable} will be set to the result of the | 1718 @code{(dummy-variable (ding))} in the parameters of that group. |
2005 @code{(ding)} form, but who cares? | 1719 @code{dummy-variable} will be set to the result of the @code{(ding)} |
2006 | 1720 form, but who cares? |
2007 @end table | 1721 |
2008 | 1722 @end table |
2009 Use the @kbd{G p} command to edit group parameters of a group. | 1723 |
2010 | 1724 If you want to change the group info you can use the @kbd{G E} command |
2011 Also @pxref{Topic Parameters}. | 1725 to enter a buffer where you can edit it. |
2012 | 1726 |
2013 Here's an example group parameter list: | 1727 You usually don't want to edit the entire group info, so you'd be better |
2014 | 1728 off using the @kbd{G p} command to just edit the group parameters. |
2015 @example | |
2016 ((to-address . "ding@@ifi.uio.no") | |
2017 (auto-expiry . t)) | |
2018 @end example | |
2019 | 1729 |
2020 | 1730 |
2021 @node Listing Groups | 1731 @node Listing Groups |
2022 @section Listing Groups | 1732 @section Listing Groups |
2023 @cindex group listing | 1733 @cindex group listing |
2032 @kindex l (Group) | 1742 @kindex l (Group) |
2033 @findex gnus-group-list-groups | 1743 @findex gnus-group-list-groups |
2034 List all groups that have unread articles | 1744 List all groups that have unread articles |
2035 (@code{gnus-group-list-groups}). If the numeric prefix is used, this | 1745 (@code{gnus-group-list-groups}). If the numeric prefix is used, this |
2036 command will list only groups of level ARG and lower. By default, it | 1746 command will list only groups of level ARG and lower. By default, it |
2037 only lists groups of level five (i. e., | 1747 only lists groups of level five or lower (i.e., just subscribed groups). |
2038 @code{gnus-group-default-list-level}) or lower (i.e., just subscribed | |
2039 groups). | |
2040 | 1748 |
2041 @item L | 1749 @item L |
2042 @itemx A u | 1750 @itemx A u |
2043 @kindex A u (Group) | 1751 @kindex A u (Group) |
2044 @kindex L (Group) | 1752 @kindex L (Group) |
2084 @kindex A A (Group) | 1792 @kindex A A (Group) |
2085 @findex gnus-group-list-active | 1793 @findex gnus-group-list-active |
2086 List absolutely all groups that are in the active file(s) of the | 1794 List absolutely all groups that are in the active file(s) of the |
2087 server(s) you are connected to (@code{gnus-group-list-active}). This | 1795 server(s) you are connected to (@code{gnus-group-list-active}). This |
2088 might very well take quite a while. It might actually be a better idea | 1796 might very well take quite a while. It might actually be a better idea |
2089 to do a @kbd{A M} to list all matching, and just give @samp{.} as the | 1797 to do a @kbd{A m} to list all matching, and just give @samp{.} as the |
2090 thing to match on. Also note that this command may list group that | 1798 thing to match on. |
2091 don't exist (yet)---these will be listed as if they are killed groups. | |
2092 Take the output with some grains of salt. | |
2093 | 1799 |
2094 @item A a | 1800 @item A a |
2095 @kindex A a (Group) | 1801 @kindex A a (Group) |
2096 @findex gnus-group-apropos | 1802 @findex gnus-group-apropos |
2097 List all groups that have names that match a regexp | 1803 List all groups that have names that match a regexp |
2135 | 1841 |
2136 @item gnus-group-sort-by-alphabet | 1842 @item gnus-group-sort-by-alphabet |
2137 @findex gnus-group-sort-by-alphabet | 1843 @findex gnus-group-sort-by-alphabet |
2138 Sort the group names alphabetically. This is the default. | 1844 Sort the group names alphabetically. This is the default. |
2139 | 1845 |
2140 @item gnus-group-sort-by-real-name | |
2141 @findex gnus-group-sort-by-real-name | |
2142 Sort the group alphabetically on the real (unprefixed) group names. | |
2143 | |
2144 @item gnus-group-sort-by-level | 1846 @item gnus-group-sort-by-level |
2145 @findex gnus-group-sort-by-level | 1847 @findex gnus-group-sort-by-level |
2146 Sort by group level. | 1848 Sort by group level. |
2147 | 1849 |
2148 @item gnus-group-sort-by-score | 1850 @item gnus-group-sort-by-score |
2158 @findex gnus-group-sort-by-unread | 1860 @findex gnus-group-sort-by-unread |
2159 Sort by number of unread articles. | 1861 Sort by number of unread articles. |
2160 | 1862 |
2161 @item gnus-group-sort-by-method | 1863 @item gnus-group-sort-by-method |
2162 @findex gnus-group-sort-by-method | 1864 @findex gnus-group-sort-by-method |
2163 Sort alphabetically on the select method. | 1865 Sort by alphabetically on the select method. |
2164 | 1866 |
2165 | 1867 |
2166 @end table | 1868 @end table |
2167 | 1869 |
2168 @code{gnus-group-sort-function} can also be a list of sorting | 1870 @code{gnus-group-sort-function} can also be a list of sorting |
2199 (@code{gnus-group-sort-groups-by-score}). | 1901 (@code{gnus-group-sort-groups-by-score}). |
2200 | 1902 |
2201 @item G S r | 1903 @item G S r |
2202 @kindex G S r (Group) | 1904 @kindex G S r (Group) |
2203 @findex gnus-group-sort-groups-by-rank | 1905 @findex gnus-group-sort-groups-by-rank |
2204 Sort the group buffer by group rank | 1906 Sort the group buffer by group level |
2205 (@code{gnus-group-sort-groups-by-rank}). | 1907 (@code{gnus-group-sort-groups-by-rank}). |
2206 | 1908 |
2207 @item G S m | 1909 @item G S m |
2208 @kindex G S m (Group) | 1910 @kindex G S m (Group) |
2209 @findex gnus-group-sort-groups-by-method | 1911 @findex gnus-group-sort-groups-by-method |
2211 (@code{gnus-group-sort-groups-by-method}). | 1913 (@code{gnus-group-sort-groups-by-method}). |
2212 | 1914 |
2213 @end table | 1915 @end table |
2214 | 1916 |
2215 When given a prefix, all these commands will sort in reverse order. | 1917 When given a prefix, all these commands will sort in reverse order. |
2216 | |
2217 You can also sort a subset of the groups: | |
2218 | |
2219 @table @kbd | |
2220 @item G P a | |
2221 @kindex G P a (Group) | |
2222 @findex gnus-group-sort-selected-groups-by-alphabet | |
2223 Sort the process/prefixed groups in the group buffer alphabetically by | |
2224 group name (@code{gnus-group-sort-selected-groups-by-alphabet}). | |
2225 | |
2226 @item G P u | |
2227 @kindex G P u (Group) | |
2228 @findex gnus-group-sort-selected-groups-by-unread | |
2229 Sort the process/prefixed groups in the group buffer by the number of | |
2230 unread articles (@code{gnus-group-sort-selected-groups-by-unread}). | |
2231 | |
2232 @item G P l | |
2233 @kindex G P l (Group) | |
2234 @findex gnus-group-sort-selected-groups-by-level | |
2235 Sort the process/prefixed groups in the group buffer by group level | |
2236 (@code{gnus-group-sort-selected-groups-by-level}). | |
2237 | |
2238 @item G P v | |
2239 @kindex G P v (Group) | |
2240 @findex gnus-group-sort-selected-groups-by-score | |
2241 Sort the process/prefixed groups in the group buffer by group score | |
2242 (@code{gnus-group-sort-selected-groups-by-score}). | |
2243 | |
2244 @item G P r | |
2245 @kindex G P r (Group) | |
2246 @findex gnus-group-sort-selected-groups-by-rank | |
2247 Sort the process/prefixed groups in the group buffer by group rank | |
2248 (@code{gnus-group-sort-selected-groups-by-rank}). | |
2249 | |
2250 @item G P m | |
2251 @kindex G P m (Group) | |
2252 @findex gnus-group-sort-selected-groups-by-method | |
2253 Sort the process/prefixed groups in the group buffer alphabetically by | |
2254 backend name (@code{gnus-group-sort-selected-groups-by-method}). | |
2255 | |
2256 @end table | |
2257 | |
2258 | 1918 |
2259 | 1919 |
2260 @node Group Maintenance | 1920 @node Group Maintenance |
2261 @section Group Maintenance | 1921 @section Group Maintenance |
2262 @cindex bogus groups | 1922 @cindex bogus groups |
2304 (@code{gnus-group-browse-foreign-server}). | 1964 (@code{gnus-group-browse-foreign-server}). |
2305 @end table | 1965 @end table |
2306 | 1966 |
2307 @findex gnus-browse-mode | 1967 @findex gnus-browse-mode |
2308 A new buffer with a list of available groups will appear. This buffer | 1968 A new buffer with a list of available groups will appear. This buffer |
2309 will be use the @code{gnus-browse-mode}. This buffer looks a bit (well, | 1969 will be use the @code{gnus-browse-mode}. This buffer looks a bit |
2310 a lot) like a normal group buffer. | 1970 (well, a lot) like a normal group buffer, but with one major difference |
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. | |
2311 | 1979 |
2312 Here's a list of keystrokes available in the browse mode: | 1980 Here's a list of keystrokes available in the browse mode: |
2313 | 1981 |
2314 @table @kbd | 1982 @table @kbd |
2315 @item n | 1983 @item n |
2374 Quit Gnus (@code{gnus-group-exit}). | 2042 Quit Gnus (@code{gnus-group-exit}). |
2375 | 2043 |
2376 @item Q | 2044 @item Q |
2377 @kindex Q (Group) | 2045 @kindex Q (Group) |
2378 @findex gnus-group-quit | 2046 @findex gnus-group-quit |
2379 Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}). | 2047 Quit Gnus without saving any startup files (@code{gnus-group-quit}). |
2380 The dribble file will be saved, though (@pxref{Auto Save}). | |
2381 @end table | 2048 @end table |
2382 | 2049 |
2383 @vindex gnus-exit-gnus-hook | 2050 @vindex gnus-exit-gnus-hook |
2384 @vindex gnus-suspend-gnus-hook | 2051 @vindex gnus-suspend-gnus-hook |
2385 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and | 2052 @code{gnus-suspend-gnus-hook} is called when you suspend Gnus and |
2394 trying to customize meta-variables. | 2061 trying to customize meta-variables. |
2395 | 2062 |
2396 Note: | 2063 Note: |
2397 | 2064 |
2398 @quotation | 2065 @quotation |
2399 Miss Lisa Cannifax, while sitting in English class, felt her feet go | 2066 Miss Lisa Cannifax, while sitting in English class, feels her feet go |
2400 numbly heavy and herself fall into a hazy trance as the boy sitting | 2067 numbly heavy and herself fall into a hazy trance as the boy sitting |
2401 behind her drew repeated lines with his pencil across the back of her | 2068 behind her drew repeated lines with his pencil across the back of her |
2402 plastic chair. | 2069 plastic chair. |
2403 @end quotation | 2070 @end quotation |
2404 | 2071 |
2412 here, your sex groups over there, and the rest (what, two groups or so?) | 2079 here, your sex groups over there, and the rest (what, two groups or so?) |
2413 you put in some misc section that you never bother with anyway. You can | 2080 you put in some misc section that you never bother with anyway. You can |
2414 even group the Emacs sex groups as a sub-topic to either the Emacs | 2081 even group the Emacs sex groups as a sub-topic to either the Emacs |
2415 groups or the sex groups---or both! Go wild! | 2082 groups or the sex groups---or both! Go wild! |
2416 | 2083 |
2417 Here's an example: | |
2418 | |
2419 @example | |
2420 Gnus | |
2421 Emacs -- I wuw it! | |
2422 3: comp.emacs | |
2423 2: alt.religion.emacs | |
2424 Naughty Emacs | |
2425 452: alt.sex.emacs | |
2426 0: comp.talk.emacs.recovery | |
2427 Misc | |
2428 8: comp.binaries.fractals | |
2429 13: comp.sources.unix | |
2430 @end example | |
2431 | |
2432 @findex gnus-topic-mode | 2084 @findex gnus-topic-mode |
2433 @kindex t (Group) | 2085 @kindex t (Group) |
2434 To get this @emph{fab} functionality you simply turn on (ooh!) the | 2086 To get this @emph{fab} functionality you simply turn on (ooh!) the |
2435 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This | 2087 @code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This |
2436 is a toggling command.) | 2088 is a toggling command.) |
2449 @end lisp | 2101 @end lisp |
2450 | 2102 |
2451 @menu | 2103 @menu |
2452 * Topic Variables:: How to customize the topics the Lisp Way. | 2104 * Topic Variables:: How to customize the topics the Lisp Way. |
2453 * Topic Commands:: Interactive E-Z commands. | 2105 * Topic Commands:: Interactive E-Z commands. |
2454 * Topic Sorting:: Sorting each topic individually. | |
2455 * Topic Topology:: A map of the world. | 2106 * Topic Topology:: A map of the world. |
2456 * Topic Parameters:: Parameters that apply to all groups in a topic. | |
2457 @end menu | 2107 @end menu |
2458 | 2108 |
2459 | 2109 |
2460 @node Topic Variables | 2110 @node Topic Variables |
2461 @subsection Topic Variables | 2111 @subsection Topic Variables |
2464 Now, if you select a topic, if will fold/unfold that topic, which is | 2114 Now, if you select a topic, if will fold/unfold that topic, which is |
2465 really neat, I think. | 2115 really neat, I think. |
2466 | 2116 |
2467 @vindex gnus-topic-line-format | 2117 @vindex gnus-topic-line-format |
2468 The topic lines themselves are created according to the | 2118 The topic lines themselves are created according to the |
2469 @code{gnus-topic-line-format} variable (@pxref{Formatting Variables}). | 2119 @code{gnus-topic-line-format} variable. @xref{Formatting Variables}. |
2470 Legal elements are: | 2120 Elements allowed are: |
2471 | 2121 |
2472 @table @samp | 2122 @table @samp |
2473 @item i | 2123 @item i |
2474 Indentation. | 2124 Indentation. |
2475 @item n | 2125 @item n |
2487 @end table | 2137 @end table |
2488 | 2138 |
2489 @vindex gnus-topic-indent-level | 2139 @vindex gnus-topic-indent-level |
2490 Each sub-topic (and the groups in the sub-topics) will be indented with | 2140 Each sub-topic (and the groups in the sub-topics) will be indented with |
2491 @code{gnus-topic-indent-level} times the topic level number of spaces. | 2141 @code{gnus-topic-indent-level} times the topic level number of spaces. |
2492 The default is 2. | 2142 The default is @code{2}. |
2493 | 2143 |
2494 @vindex gnus-topic-mode-hook | 2144 @vindex gnus-topic-mode-hook |
2495 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. | 2145 @code{gnus-topic-mode-hook} is called in topic minor mode buffers. |
2496 | |
2497 @vindex gnus-topic-display-empty-topics | |
2498 The @code{gnus-topic-display-empty-topics} says whether to display even | |
2499 topics that have no unread articles in them. The default is @code{t}. | |
2500 | 2146 |
2501 | 2147 |
2502 @node Topic Commands | 2148 @node Topic Commands |
2503 @subsection Topic Commands | 2149 @subsection Topic Commands |
2504 @cindex topic commands | 2150 @cindex topic commands |
2508 definitions slightly. | 2154 definitions slightly. |
2509 | 2155 |
2510 @table @kbd | 2156 @table @kbd |
2511 | 2157 |
2512 @item T n | 2158 @item T n |
2513 @kindex T n (Topic) | 2159 @kindex T n (Group) |
2514 @findex gnus-topic-create-topic | 2160 @findex gnus-topic-create-topic |
2515 Prompt for a new topic name and create it | 2161 Prompt for a new topic name and create it |
2516 (@code{gnus-topic-create-topic}). | 2162 (@code{gnus-topic-create-topic}). |
2517 | 2163 |
2518 @item T m | 2164 @item T m |
2519 @kindex T m (Topic) | 2165 @kindex T m (Group) |
2520 @findex gnus-topic-move-group | 2166 @findex gnus-topic-move-group |
2521 Move the current group to some other topic | 2167 Move the current group to some other topic |
2522 (@code{gnus-topic-move-group}). This command uses the process/prefix | 2168 (@code{gnus-topic-move-group}). This command understands the |
2523 convention (@pxref{Process/Prefix}). | 2169 process/prefix convention (@pxref{Process/Prefix}). |
2524 | 2170 |
2525 @item T c | 2171 @item T c |
2526 @kindex T c (Topic) | 2172 @kindex T c (Group) |
2527 @findex gnus-topic-copy-group | 2173 @findex gnus-topic-copy-group |
2528 Copy the current group to some other topic | 2174 Copy the current group to some other topic |
2529 (@code{gnus-topic-copy-group}). This command uses the process/prefix | 2175 (@code{gnus-topic-copy-group}). This command understands the |
2530 convention (@pxref{Process/Prefix}). | 2176 process/prefix convention (@pxref{Process/Prefix}). |
2531 | 2177 |
2532 @item T D | 2178 @item T D |
2533 @kindex T D (Topic) | 2179 @kindex T D (Group) |
2534 @findex gnus-topic-remove-group | 2180 @findex gnus-topic-remove-group |
2535 Remove a group from the current topic (@code{gnus-topic-remove-group}). | 2181 Remove a group from the current topic (@code{gnus-topic-remove-group}). |
2536 This command uses the process/prefix convention | 2182 This command understands the process/prefix convention |
2537 (@pxref{Process/Prefix}). | 2183 (@pxref{Process/Prefix}). |
2538 | 2184 |
2539 @item T M | 2185 @item T M |
2540 @kindex T M (Topic) | 2186 @kindex T M (Group) |
2541 @findex gnus-topic-move-matching | 2187 @findex gnus-topic-move-matching |
2542 Move all groups that match some regular expression to a topic | 2188 Move all groups that match some regular expression to a topic |
2543 (@code{gnus-topic-move-matching}). | 2189 (@code{gnus-topic-move-matching}). |
2544 | 2190 |
2545 @item T C | 2191 @item T C |
2546 @kindex T C (Topic) | 2192 @kindex T C (Group) |
2547 @findex gnus-topic-copy-matching | 2193 @findex gnus-topic-copy-matching |
2548 Copy all groups that match some regular expression to a topic | 2194 Copy all groups that match some regular expression to a topic |
2549 (@code{gnus-topic-copy-matching}). | 2195 (@code{gnus-topic-copy-matching}). |
2550 | 2196 |
2551 @item T # | 2197 @item T # |
2552 @kindex T # (Topic) | 2198 @kindex T # (Group) |
2553 @findex gnus-topic-mark-topic | 2199 @findex gnus-topic-mark-topic |
2554 Mark all groups in the current topic with the process mark | 2200 Mark all groups in the current topic with the process mark |
2555 (@code{gnus-topic-mark-topic}). | 2201 (@code{gnus-topic-mark-topic}). |
2556 | 2202 |
2557 @item T M-# | 2203 @item T M-# |
2558 @kindex T M-# (Topic) | 2204 @kindex T M-# (Group) |
2559 @findex gnus-topic-unmark-topic | 2205 @findex gnus-topic-unmark-topic |
2560 Remove the process mark from all groups in the current topic | 2206 Remove the process mark from all groups in the current topic |
2561 (@code{gnus-topic-unmark-topic}). | 2207 (@code{gnus-topic-unmark-topic}). |
2562 | 2208 |
2563 @item RET | 2209 @item RET |
2564 @kindex RET (Topic) | 2210 @kindex RET (Group) |
2565 @findex gnus-topic-select-group | 2211 @findex gnus-topic-select-group |
2566 @itemx SPACE | 2212 @itemx SPACE |
2567 Either select a group or fold a topic (@code{gnus-topic-select-group}). | 2213 Either select a group or fold a topic (@code{gnus-topic-select-group}). |
2568 When you perform this command on a group, you'll enter the group, as | 2214 When you perform this command on a group, you'll enter the group, as |
2569 usual. When done on a topic line, the topic will be folded (if it was | 2215 usual. When done on a topic line, the topic will be folded (if it was |
2570 visible) or unfolded (if it was folded already). So it's basically a | 2216 visible) or unfolded (if it was folded already). So it's basically a |
2571 toggling command on topics. In addition, if you give a numerical | 2217 toggling command on topics. In addition, if you give a numerical |
2572 prefix, group on that level (and lower) will be displayed. | 2218 prefix, group on that level (and lower) will be displayed. |
2573 | 2219 |
2574 @item T TAB | 2220 @item T TAB |
2575 @kindex T TAB (Topic) | 2221 @kindex T TAB (Group) |
2576 @findex gnus-topic-indent | 2222 @findex gnus-topic-indent |
2577 ``Indent'' the current topic so that it becomes a sub-topic of the | 2223 ``Indent'' the current topic so that it becomes a sub-topic of the |
2578 previous topic (@code{gnus-topic-indent}). If given a prefix, | 2224 previous topic (@code{gnus-topic-indent}). If given a prefix, |
2579 ``un-indent'' the topic instead. | 2225 ``un-indent'' the topic instead. |
2580 | 2226 |
2581 @item C-k | 2227 @item C-k |
2582 @kindex C-k (Topic) | 2228 @kindex C-k (Group) |
2583 @findex gnus-topic-kill-group | 2229 @findex gnus-topic-kill-group |
2584 Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the | 2230 Kill a group or topic (@code{gnus-topic-kill-group}). |
2585 topic will be removed along with the topic. | |
2586 | 2231 |
2587 @item C-y | 2232 @item C-y |
2588 @kindex C-y (Topic) | 2233 @kindex C-y (Group) |
2589 @findex gnus-topic-yank-group | 2234 @findex gnus-topic-yank-group |
2590 Yank the previously killed group or topic | 2235 Yank the previously killed group or topic (@code{gnus-topic-yank-group}). |
2591 (@code{gnus-topic-yank-group}). Note that all topics will be yanked | 2236 Note that all topics will be yanked before all groups. |
2592 before all groups. | |
2593 | 2237 |
2594 @item T r | 2238 @item T r |
2595 @kindex T r (Topic) | 2239 @kindex T r (Group) |
2596 @findex gnus-topic-rename | 2240 @findex gnus-topic-rename |
2597 Rename a topic (@code{gnus-topic-rename}). | 2241 Rename a topic (@code{gnus-topic-rename}). |
2598 | 2242 |
2599 @item T DEL | 2243 @item T DEL |
2600 @kindex T DEL (Topic) | 2244 @kindex T DEL (Group) |
2601 @findex gnus-topic-delete | 2245 @findex gnus-topic-delete |
2602 Delete an empty topic (@code{gnus-topic-delete}). | 2246 Delete an empty topic (@code{gnus-topic-delete}). |
2603 | 2247 |
2604 @item A T | 2248 @item A T |
2605 @kindex A T (Topic) | 2249 @kindex A T (Group) |
2606 @findex gnus-topic-list-active | 2250 @findex gnus-topic-list-active |
2607 List all groups that Gnus knows about in a topics-ified way | 2251 List all groups that Gnus knows about in a topics-ified way |
2608 (@code{gnus-topic-list-active}). | 2252 (@code{gnus-topic-list-active}). |
2609 | 2253 |
2610 @item G p | 2254 @end table |
2611 @kindex G p (Topic) | |
2612 @findex gnus-topic-edit-parameters | |
2613 @cindex group parameters | |
2614 @cindex topic parameters | |
2615 @cindex parameters | |
2616 Edit the topic parameters (@code{gnus-topic-edit-parameters}). | |
2617 @xref{Topic Parameters}. | |
2618 | |
2619 @end table | |
2620 | |
2621 | |
2622 @node Topic Sorting | |
2623 @subsection Topic Sorting | |
2624 @cindex topic sorting | |
2625 | |
2626 You can sort the groups in each topic individually with the following | |
2627 commands: | |
2628 | |
2629 | |
2630 @table @kbd | |
2631 @item T S a | |
2632 @kindex T S a (Topic) | |
2633 @findex gnus-topic-sort-groups-by-alphabet | |
2634 Sort the current topic alphabetically by group name | |
2635 (@code{gnus-topic-sort-groups-by-alphabet}). | |
2636 | |
2637 @item T S u | |
2638 @kindex T S u (Topic) | |
2639 @findex gnus-topic-sort-groups-by-unread | |
2640 Sort the current topic by the number of unread articles | |
2641 (@code{gnus-topic-sort-groups-by-unread}). | |
2642 | |
2643 @item T S l | |
2644 @kindex T S l (Topic) | |
2645 @findex gnus-topic-sort-groups-by-level | |
2646 Sort the current topic by group level | |
2647 (@code{gnus-topic-sort-groups-by-level}). | |
2648 | |
2649 @item T S v | |
2650 @kindex T S v (Topic) | |
2651 @findex gnus-topic-sort-groups-by-score | |
2652 Sort the current topic by group score | |
2653 (@code{gnus-topic-sort-groups-by-score}). | |
2654 | |
2655 @item T S r | |
2656 @kindex T S r (Topic) | |
2657 @findex gnus-topic-sort-groups-by-rank | |
2658 Sort the current topic by group rank | |
2659 (@code{gnus-topic-sort-groups-by-rank}). | |
2660 | |
2661 @item T S m | |
2662 @kindex T S m (Topic) | |
2663 @findex gnus-topic-sort-groups-by-method | |
2664 Sort the current topic alphabetically by backend name | |
2665 (@code{gnus-topic-sort-groups-by-method}). | |
2666 | |
2667 @end table | |
2668 | |
2669 @xref{Sorting Groups} for more information about group sorting. | |
2670 | 2255 |
2671 | 2256 |
2672 @node Topic Topology | 2257 @node Topic Topology |
2673 @subsection Topic Topology | 2258 @subsection Topic Topology |
2674 @cindex topic topology | 2259 @cindex topic topology |
2677 So, let's have a look at an example group buffer: | 2262 So, let's have a look at an example group buffer: |
2678 | 2263 |
2679 @example | 2264 @example |
2680 Gnus | 2265 Gnus |
2681 Emacs -- I wuw it! | 2266 Emacs -- I wuw it! |
2682 3: comp.emacs | 2267 3: comp.emacs |
2683 2: alt.religion.emacs | 2268 2: alt.religion.emacs |
2684 Naughty Emacs | 2269 Naughty Emacs |
2685 452: alt.sex.emacs | 2270 452: alt.sex.emacs |
2686 0: comp.talk.emacs.recovery | 2271 0: comp.talk.emacs.recovery |
2687 Misc | 2272 Misc |
2688 8: comp.binaries.fractals | 2273 8: comp.binaries.fractals |
2689 13: comp.sources.unix | 2274 13: comp.sources.unix |
2690 @end example | 2275 @end example |
2691 | 2276 |
2692 So, here we have one top-level topic (@samp{Gnus}), two topics under | 2277 So, here we have one top-level topic, two topics under that, and one |
2693 that, and one sub-topic under one of the sub-topics. (There is always | 2278 sub-topic under one of the sub-topics. (There is always just one (1) |
2694 just one (1) top-level topic). This topology can be expressed as | 2279 top-level topic). This topology can be expressed as follows: |
2695 follows: | |
2696 | 2280 |
2697 @lisp | 2281 @lisp |
2698 (("Gnus" visible) | 2282 (("Gnus" visible) |
2699 (("Emacs -- I wuw it!" visible) | 2283 (("Emacs -- I wuw it!" visible) |
2700 (("Naughty Emacs" visible))) | 2284 (("Naughty Emacs" visible))) |
2711 This topology shows what topics are sub-topics of what topics (right), | 2295 This topology shows what topics are sub-topics of what topics (right), |
2712 and which topics are visible. Two settings are currently | 2296 and which topics are visible. Two settings are currently |
2713 allowed---@code{visible} and @code{invisible}. | 2297 allowed---@code{visible} and @code{invisible}. |
2714 | 2298 |
2715 | 2299 |
2716 @node Topic Parameters | |
2717 @subsection Topic Parameters | |
2718 @cindex topic parameters | |
2719 | |
2720 All groups in a topic will inherit group parameters from the parent (and | |
2721 ancestor) topic parameters. All legal group parameters are legal topic | |
2722 parameters (@pxref{Group Parameters}). | |
2723 | |
2724 Group parameters (of course) override topic parameters, and topic | |
2725 parameters in sub-topics override topic parameters in super-topics. You | |
2726 know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a | |
2727 verb, although you may feel free to disagree with me here.) | |
2728 | |
2729 @example | |
2730 Gnus | |
2731 Emacs | |
2732 3: comp.emacs | |
2733 2: alt.religion.emacs | |
2734 452: alt.sex.emacs | |
2735 Relief | |
2736 452: alt.sex.emacs | |
2737 0: comp.talk.emacs.recovery | |
2738 Misc | |
2739 8: comp.binaries.fractals | |
2740 13: comp.sources.unix | |
2741 452: alt.sex.emacs | |
2742 @end example | |
2743 | |
2744 The @samp{Emacs} topic has the topic parameter @code{(score-file | |
2745 . "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter | |
2746 @code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the | |
2747 topic parameter @code{(score-file . "emacs.SCORE")}. In addition, | |
2748 @samp{alt.religion.emacs} has the group parameter @code{(score-file | |
2749 . "religion.SCORE")}. | |
2750 | |
2751 Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you | |
2752 will get the @file{relief.SCORE} home score file. If you enter the same | |
2753 group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home | |
2754 score file. If you enter the group @samp{alt.religion.emacs}, you'll | |
2755 get the @file{religion.SCORE} home score file. | |
2756 | |
2757 This seems rather simple and self-evident, doesn't it? Well, yes. But | |
2758 there are some problems, especially with the @code{total-expiry} | |
2759 parameter. Say you have a mail group in two topics; one with | |
2760 @code{total-expiry} and one without. What happens when you do @kbd{M-x | |
2761 gnus-expire-all-expirable-groups}? Gnus has no way of telling which one | |
2762 of these topics you mean to expire articles from, so anything may | |
2763 happen. In fact, I hereby declare that it is @dfn{undefined} what | |
2764 happens. You just have to be careful if you do stuff like that. | |
2765 | |
2766 | |
2767 @node Misc Group Stuff | 2300 @node Misc Group Stuff |
2768 @section Misc Group Stuff | 2301 @section Misc Group Stuff |
2769 | 2302 |
2770 @menu | 2303 @menu |
2771 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived. | 2304 * Scanning New Messages:: Asking Gnus to see whether new messages have arrived. |
2772 * Group Information:: Information and help on groups and Gnus. | 2305 * Group Information:: Information and help on groups and Gnus. |
2773 * Group Timestamp:: Making Gnus keep track of when you last read a group. | |
2774 * File Commands:: Reading and writing the Gnus files. | 2306 * File Commands:: Reading and writing the Gnus files. |
2775 @end menu | 2307 @end menu |
2776 | 2308 |
2777 @table @kbd | 2309 @table @kbd |
2778 | 2310 |
2779 @item ^ | 2311 @item ^ |
2780 @kindex ^ (Group) | 2312 @kindex ^ (Group) |
2781 @findex gnus-group-enter-server-mode | 2313 @findex gnus-group-enter-server-mode |
2782 Enter the server buffer (@code{gnus-group-enter-server-mode}). | 2314 Enter the server buffer (@code{gnus-group-enter-server-mode}). @xref{The |
2783 @xref{The Server Buffer}. | 2315 Server Buffer}. |
2784 | 2316 |
2785 @item a | 2317 @item a |
2786 @kindex a (Group) | 2318 @kindex a (Group) |
2787 @findex gnus-group-post-news | 2319 @findex gnus-group-post-news |
2788 Post an article to a group (@code{gnus-group-post-news}). The current | 2320 Post an article to a group (@code{gnus-group-post-news}). The current |
2837 @item M-g | 2369 @item M-g |
2838 @kindex M-g (Group) | 2370 @kindex M-g (Group) |
2839 @findex gnus-group-get-new-news-this-group | 2371 @findex gnus-group-get-new-news-this-group |
2840 @vindex gnus-goto-next-group-when-activating | 2372 @vindex gnus-goto-next-group-when-activating |
2841 Check whether new articles have arrived in the current group | 2373 Check whether new articles have arrived in the current group |
2842 (@code{gnus-group-get-new-news-this-group}). | 2374 (@code{gnus-group-get-new-news-this-group}). The |
2843 @code{gnus-goto-next-group-when-activating} says whether this command is | 2375 @code{gnus-goto-next-group-when-activating} variable controls whether |
2844 to move point to the next group or not. It is @code{t} by default. | 2376 this command is to move point to the next group or not. It is @code{t} |
2377 by default. | |
2845 | 2378 |
2846 @findex gnus-activate-all-groups | 2379 @findex gnus-activate-all-groups |
2847 @cindex activating groups | 2380 @cindex activating groups |
2848 @item C-c M-g | 2381 @item C-c M-g |
2849 @kindex C-c M-g (Group) | 2382 @kindex C-c M-g (Group) |
2851 | 2384 |
2852 @item R | 2385 @item R |
2853 @kindex R (Group) | 2386 @kindex R (Group) |
2854 @cindex restarting | 2387 @cindex restarting |
2855 @findex gnus-group-restart | 2388 @findex gnus-group-restart |
2856 Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc} | 2389 Restart Gnus (@code{gnus-group-restart}). |
2857 file(s), closes the connection to all servers, clears up all run-time | |
2858 Gnus variables, and then starts Gnus all over again. | |
2859 | 2390 |
2860 @end table | 2391 @end table |
2861 | 2392 |
2862 @vindex gnus-get-new-news-hook | 2393 @vindex gnus-get-new-news-hook |
2863 @code{gnus-get-new-news-hook} is run just before checking for new news. | 2394 @code{gnus-get-new-news-hook} is run just before checking for new news. |
2872 @cindex group information | 2403 @cindex group information |
2873 @cindex information on groups | 2404 @cindex information on groups |
2874 | 2405 |
2875 @table @kbd | 2406 @table @kbd |
2876 | 2407 |
2877 | 2408 @item M-f |
2878 @item H f | 2409 @kindex M-f (Group) |
2879 @kindex H f (Group) | |
2880 @findex gnus-group-fetch-faq | 2410 @findex gnus-group-fetch-faq |
2881 @vindex gnus-group-faq-directory | |
2882 @cindex FAQ | 2411 @cindex FAQ |
2883 @cindex ange-ftp | 2412 @cindex ange-ftp |
2884 Try to fetch the FAQ for the current group | 2413 Try to fetch the FAQ for the current group |
2885 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from | 2414 (@code{gnus-group-fetch-faq}). Gnus will try to get the FAQ from |
2886 @code{gnus-group-faq-directory}, which is usually a directory on a | 2415 @code{gnus-group-faq-directory}, which is usually a directory on a |
2887 remote machine. This variable can also be a list of directories. In | 2416 remote machine. @code{ange-ftp} will be used for fetching the file. |
2888 that case, giving a prefix to this command will allow you to choose | 2417 |
2889 between the various sites. @code{ange-ftp} (or @code{efs}) will be used | 2418 @item D |
2890 for fetching the file. | 2419 @kindex D (Group) |
2891 | |
2892 If fetching from the first site is unsuccessful, Gnus will attempt to go | |
2893 through @code{gnus-group-faq-directory} and try to open them one by one. | |
2894 | |
2895 @item H d | |
2896 @itemx C-c C-d | |
2897 @kindex H d (Group) | |
2898 @kindex C-c C-d (Group) | |
2899 @cindex describing groups | 2420 @cindex describing groups |
2900 @cindex group description | 2421 @cindex group description |
2901 @findex gnus-group-describe-group | 2422 @findex gnus-group-describe-group |
2902 Describe the current group (@code{gnus-group-describe-group}). If given | 2423 Describe the current group (@code{gnus-group-describe-group}). If given |
2903 a prefix, force Gnus to re-read the description from the server. | 2424 a prefix, force Gnus to re-read the description from the server. |
2926 @findex gnus-info-find-node | 2447 @findex gnus-info-find-node |
2927 Go to the Gnus info node (@code{gnus-info-find-node}). | 2448 Go to the Gnus info node (@code{gnus-info-find-node}). |
2928 @end table | 2449 @end table |
2929 | 2450 |
2930 | 2451 |
2931 @node Group Timestamp | |
2932 @subsection Group Timestamp | |
2933 @cindex timestamps | |
2934 @cindex group timestamps | |
2935 | |
2936 It can be convenient to let Gnus keep track of when you last read a | |
2937 group. To set the ball rolling, you should add | |
2938 @code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}: | |
2939 | |
2940 @lisp | |
2941 (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp) | |
2942 @end lisp | |
2943 | |
2944 After doing this, each time you enter a group, it'll be recorded. | |
2945 | |
2946 This information can be displayed in various ways---the easiest is to | |
2947 use the @samp{%d} spec in the group line format: | |
2948 | |
2949 @lisp | |
2950 (setq gnus-group-line-format | |
2951 "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n") | |
2952 @end lisp | |
2953 | |
2954 This will result in lines looking like: | |
2955 | |
2956 @example | |
2957 * 0: mail.ding 19961002T012943 | |
2958 0: custom 19961002T012713 | |
2959 @end example | |
2960 | |
2961 As you can see, the date is displayed in compact ISO 8601 format. This | |
2962 may be a bit too much, so to just display the date, you could say | |
2963 something like: | |
2964 | |
2965 @lisp | |
2966 (setq gnus-group-line-format | |
2967 "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n") | |
2968 @end lisp | |
2969 | |
2970 | |
2971 @node File Commands | 2452 @node File Commands |
2972 @subsection File Commands | 2453 @subsection File Commands |
2973 @cindex file commands | 2454 @cindex file commands |
2974 | 2455 |
2975 @table @kbd | 2456 @table @kbd |
2977 @item r | 2458 @item r |
2978 @kindex r (Group) | 2459 @kindex r (Group) |
2979 @findex gnus-group-read-init-file | 2460 @findex gnus-group-read-init-file |
2980 @vindex gnus-init-file | 2461 @vindex gnus-init-file |
2981 @cindex reading init file | 2462 @cindex reading init file |
2982 Re-read the init file (@code{gnus-init-file}, which defaults to | 2463 Read the init file (@code{gnus-init-file}, which defaults to |
2983 @file{~/.gnus}) (@code{gnus-group-read-init-file}). | 2464 @file{~/.gnus}) (@code{gnus-group-read-init-file}). |
2984 | 2465 |
2985 @item s | 2466 @item s |
2986 @kindex s (Group) | 2467 @kindex s (Group) |
2987 @findex gnus-group-save-newsrc | 2468 @findex gnus-group-save-newsrc |
3002 @chapter The Summary Buffer | 2483 @chapter The Summary Buffer |
3003 @cindex summary buffer | 2484 @cindex summary buffer |
3004 | 2485 |
3005 A line for each article is displayed in the summary buffer. You can | 2486 A line for each article is displayed in the summary buffer. You can |
3006 move around, read articles, post articles and reply to articles. | 2487 move around, read articles, post articles and reply to articles. |
3007 | |
3008 The most common way to a summary buffer is to select a group from the | |
3009 group buffer (@pxref{Selecting a Group}). | |
3010 | |
3011 You can have as many summary buffers open as you wish. | |
3012 | 2488 |
3013 @menu | 2489 @menu |
3014 * Summary Buffer Format:: Deciding how the summary buffer is to look. | 2490 * Summary Buffer Format:: Deciding how the summary buffer is to look. |
3015 * Summary Maneuvering:: Moving around the summary buffer. | 2491 * Summary Maneuvering:: Moving around the summary buffer. |
3016 * Choosing Articles:: Reading articles. | 2492 * Choosing Articles:: Reading articles. |
3026 * Persistent Articles:: Making articles expiry-resistant. | 2502 * Persistent Articles:: Making articles expiry-resistant. |
3027 * Article Backlog:: Having already read articles hang around. | 2503 * Article Backlog:: Having already read articles hang around. |
3028 * Saving Articles:: Ways of customizing article saving. | 2504 * Saving Articles:: Ways of customizing article saving. |
3029 * Decoding Articles:: Gnus can treat series of (uu)encoded articles. | 2505 * Decoding Articles:: Gnus can treat series of (uu)encoded articles. |
3030 * Article Treatment:: The article buffer can be mangled at will. | 2506 * Article Treatment:: The article buffer can be mangled at will. |
3031 * Article Commands:: Doing various things with the article buffer. | |
3032 * Summary Sorting:: Sorting the summary buffer in various ways. | 2507 * Summary Sorting:: Sorting the summary buffer in various ways. |
3033 * Finding the Parent:: No child support? Get the parent. | 2508 * Finding the Parent:: No child support? Get the parent. |
3034 * Alternative Approaches:: Reading using non-default summaries. | 2509 * Alternative Approaches:: Reading using non-default summaries. |
3035 * Tree Display:: A more visual display of threads. | 2510 * Tree Display:: A more visual display of threads. |
3036 * Mail Group Commands:: Some commands can only be used in mail groups. | 2511 * Mail Group Commands:: Some commands can only be used in mail groups. |
3037 * Various Summary Stuff:: What didn't fit anywhere else. | 2512 * Various Summary Stuff:: What didn't fit anywhere else. |
3038 * Exiting the Summary Buffer:: Returning to the Group buffer. | 2513 * Exiting the Summary Buffer:: Returning to the Group buffer. |
3039 * Crosspost Handling:: How crossposted articles are dealt with. | |
3040 * Duplicate Suppression:: An alternative when crosspost handling fails. | |
3041 @end menu | 2514 @end menu |
3042 | 2515 |
3043 | 2516 |
3044 @node Summary Buffer Format | 2517 @node Summary Buffer Format |
3045 @section Summary Buffer Format | 2518 @section Summary Buffer Format |
3073 @subsection Summary Buffer Lines | 2546 @subsection Summary Buffer Lines |
3074 | 2547 |
3075 @vindex gnus-summary-line-format | 2548 @vindex gnus-summary-line-format |
3076 You can change the format of the lines in the summary buffer by changing | 2549 You can change the format of the lines in the summary buffer by changing |
3077 the @code{gnus-summary-line-format} variable. It works along the same | 2550 the @code{gnus-summary-line-format} variable. It works along the same |
3078 lines a a normal @code{format} string, with some extensions | 2551 lines a a normal @code{format} string, with some extensions. |
3079 (@pxref{Formatting Variables}). | |
3080 | 2552 |
3081 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. | 2553 The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. |
3082 | 2554 |
3083 The following format specification characters are understood: | 2555 The following format specification characters are understood: |
3084 | 2556 |
3086 @item N | 2558 @item N |
3087 Article number. | 2559 Article number. |
3088 @item S | 2560 @item S |
3089 Subject string. | 2561 Subject string. |
3090 @item s | 2562 @item s |
3091 Subject if the article is the root or the previous article had a | 2563 Subject if the article is the root, @code{gnus-summary-same-subject} |
3092 different subject, @code{gnus-summary-same-subject} otherwise. | 2564 otherwise. |
3093 (@code{gnus-summary-same-subject} defaults to @samp{}.) | |
3094 @item F | 2565 @item F |
3095 Full @code{From} header. | 2566 Full @code{From} line. |
3096 @item n | 2567 @item n |
3097 The name (from the @code{From} header). | 2568 The name (from the @code{From} header). |
3098 @item a | 2569 @item a |
3099 The name (from the @code{From} header). This differs from the @code{n} | 2570 The name (from the @code{From} header). This differs from the @code{n} |
3100 spec in that it uses the function designated by the | 2571 spec in that it uses @code{gnus-extract-address-components}, which is |
3101 @code{gnus-extract-address-components} variable, which is slower, but | 2572 slower, but may be more thorough. |
3102 may be more thorough. | |
3103 @item A | 2573 @item A |
3104 The address (from the @code{From} header). This works the same way as | 2574 The address (from the @code{From} header). This works the same way as |
3105 the @code{a} spec. | 2575 the @code{a} spec. |
3106 @item L | 2576 @item L |
3107 Number of lines in the article. | 2577 Number of lines in the article. |
3110 @item I | 2580 @item I |
3111 Indentation based on thread level (@pxref{Customizing Threading}). | 2581 Indentation based on thread level (@pxref{Customizing Threading}). |
3112 @item T | 2582 @item T |
3113 Nothing if the article is a root and lots of spaces if it isn't (it | 2583 Nothing if the article is a root and lots of spaces if it isn't (it |
3114 pushes everything after it off the screen). | 2584 pushes everything after it off the screen). |
3115 @item [ | 2585 @item \[ |
3116 Opening bracket, which is normally @samp{[}, but can also be @samp{<} | 2586 Opening bracket, which is normally @samp{\[}, but can also be @samp{<} |
3117 for adopted articles (@pxref{Customizing Threading}). | 2587 for adopted articles. |
3118 @item ] | 2588 @item \] |
3119 Closing bracket, which is normally @samp{]}, but can also be @samp{>} | 2589 Closing bracket, which is normally @samp{\]}, but can also be @samp{>} |
3120 for adopted articles. | 2590 for adopted articles. |
3121 @item > | 2591 @item > |
3122 One space for each thread level. | 2592 One space for each thread level. |
3123 @item < | 2593 @item < |
3124 Twenty minus thread level spaces. | 2594 Twenty minus thread level spaces. |
3138 Total thread score. | 2608 Total thread score. |
3139 @item x | 2609 @item x |
3140 @code{Xref}. | 2610 @code{Xref}. |
3141 @item D | 2611 @item D |
3142 @code{Date}. | 2612 @code{Date}. |
3143 @item d | |
3144 The @code{Date} in @code{DD-MMM} format. | |
3145 @item o | |
3146 The @code{Date} in @code{YYYYMMDDTHHMMSS} format. | |
3147 @item M | 2613 @item M |
3148 @code{Message-ID}. | 2614 @code{Message-ID}. |
3149 @item r | 2615 @item r |
3150 @code{References}. | 2616 @code{References}. |
3151 @item t | 2617 @item t |
3152 Number of articles in the current sub-thread. Using this spec will slow | 2618 Number of articles in the current sub-thread. Using this spec will slow |
3153 down summary buffer generation somewhat. | 2619 down summary buffer generation somewhat. |
3154 @item e | 2620 @item e |
3155 An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the | 2621 A single character will be displayed if the article has any children. |
3156 article has any children. | |
3157 @item P | |
3158 The line number. | |
3159 @item u | 2622 @item u |
3160 User defined specifier. The next character in the format string should | 2623 User defined specifier. The next character in the format string should |
3161 be a letter. @sc{gnus} will call the function | 2624 be a letter. @sc{gnus} will call the function |
3162 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter | 2625 @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter |
3163 following @samp{%u}. The function will be passed the current header as | 2626 following @samp{%u}. The function will be passed the current header as |
3181 @node Summary Buffer Mode Line | 2644 @node Summary Buffer Mode Line |
3182 @subsection Summary Buffer Mode Line | 2645 @subsection Summary Buffer Mode Line |
3183 | 2646 |
3184 @vindex gnus-summary-mode-line-format | 2647 @vindex gnus-summary-mode-line-format |
3185 You can also change the format of the summary mode bar. Set | 2648 You can also change the format of the summary mode bar. Set |
3186 @code{gnus-summary-mode-line-format} to whatever you like. The default | 2649 @code{gnus-summary-mode-line-format} to whatever you like. Here are the |
3187 is @samp{Gnus: %%b [%A] %Z}. | 2650 elements you can play with: |
3188 | |
3189 Here are the elements you can play with: | |
3190 | 2651 |
3191 @table @samp | 2652 @table @samp |
3192 @item G | 2653 @item G |
3193 Group name. | 2654 Group name. |
3194 @item p | 2655 @item p |
3201 Number of unread articles in this group. | 2662 Number of unread articles in this group. |
3202 @item e | 2663 @item e |
3203 Number of unselected articles in this group. | 2664 Number of unselected articles in this group. |
3204 @item Z | 2665 @item Z |
3205 A string with the number of unread and unselected articles represented | 2666 A string with the number of unread and unselected articles represented |
3206 either as @samp{<%U(+%e) more>} if there are both unread and unselected | 2667 either as @samp{<%U(+%u) more>} if there are both unread and unselected |
3207 articles, and just as @samp{<%U more>} if there are just unread articles | 2668 articles, and just as @samp{<%U more>} if there are just unread articles |
3208 and no unselected ones. | 2669 and no unselected ones. |
3209 @item g | 2670 @item g |
3210 Shortish group name. For instance, @samp{rec.arts.anime} will be | 2671 Shortish group name. For instance, @samp{rec.arts.anime} will be |
3211 shortened to @samp{r.a.anime}. | 2672 shortened to @samp{r.a.anime}. |
3212 @item S | 2673 @item S |
3213 Subject of the current article. | 2674 Subject of the current article. |
3214 @item u | 2675 @item u |
3215 User-defined spec. | 2676 Used-defined spec. |
3216 @item s | 2677 @item s |
3217 Name of the current score file. | 2678 Name of the current score file. |
3218 @item d | 2679 @item d |
3219 Number of dormant articles. | 2680 Number of dormant articles. |
3220 @item t | 2681 @item t |
3248 highlight the current article in the summary buffer. | 2709 highlight the current article in the summary buffer. |
3249 | 2710 |
3250 @item gnus-summary-highlight | 2711 @item gnus-summary-highlight |
3251 @vindex gnus-summary-highlight | 2712 @vindex gnus-summary-highlight |
3252 Summary lines are highlighted according to this variable, which is a | 2713 Summary lines are highlighted according to this variable, which is a |
3253 list where the elements are on the format @var{(FORM . FACE)}. If you | 2714 list where the elements are on the format @code{(FORM . FACE)}. If you |
3254 would, for instance, like ticked articles to be italic and high-scored | 2715 would, for instance, like ticked articles to be italic and high-scored |
3255 articles to be bold, you could set this variable to something like | 2716 articles to be bold, you could set this variable to something like |
3256 @lisp | 2717 @lisp |
3257 (((eq mark gnus-ticked-mark) . italic) | 2718 (((eq mark gnus-ticked-mark) . italic) |
3258 ((> score default) . bold)) | 2719 ((> score default) . bold)) |
3291 @item G j | 2752 @item G j |
3292 @itemx j | 2753 @itemx j |
3293 @kindex j (Summary) | 2754 @kindex j (Summary) |
3294 @kindex G j (Summary) | 2755 @kindex G j (Summary) |
3295 @findex gnus-summary-goto-article | 2756 @findex gnus-summary-goto-article |
3296 Ask for an article number and then go to that article | 2757 Ask for an article number and then go that article |
3297 (@code{gnus-summary-goto-article}). | 2758 (@code{gnus-summary-goto-article}). |
3298 | 2759 |
3299 @item G g | 2760 @item G g |
3300 @kindex G g (Summary) | 2761 @kindex G g (Summary) |
3301 @findex gnus-summary-goto-subject | 2762 @findex gnus-summary-goto-subject |
3302 Ask for an article number and then go the summary line of that article | 2763 Ask for an article number and then go the summary line of that article |
3303 without displaying the article (@code{gnus-summary-goto-subject}). | 2764 (@code{gnus-summary-goto-subject}). |
3304 @end table | 2765 @end table |
3305 | 2766 |
3306 If Gnus asks you to press a key to confirm going to the next group, you | 2767 If Gnus asks you to press a key to confirm going to the next group, you |
3307 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group | 2768 can use the @kbd{C-n} and @kbd{C-p} keys to move around the group |
3308 buffer, searching for the next group to read without actually returning | 2769 buffer, searching for the next group to read without actually returning |
3312 | 2773 |
3313 @table @code | 2774 @table @code |
3314 | 2775 |
3315 @vindex gnus-auto-select-next | 2776 @vindex gnus-auto-select-next |
3316 @item gnus-auto-select-next | 2777 @item gnus-auto-select-next |
3317 If you issue one of the movement commands (like @kbd{n}) and there are | 2778 If you are at the end of the group and issue one of the movement |
3318 no more unread articles after the current one, Gnus will offer to go to | 2779 commands, Gnus will offer to go to the next group. If this variable is |
3319 the next group. If this variable is @code{t} and the next group is | 2780 @code{t} and the next group is empty, Gnus will exit summary mode and |
3320 empty, Gnus will exit summary mode and return to the group buffer. If | 2781 return to the group buffer. If this variable is neither @code{t} nor |
3321 this variable is neither @code{t} nor @code{nil}, Gnus will select the | 2782 @code{nil}, Gnus will select the next group, no matter whether it has |
3322 next group, no matter whether it has any unread articles or not. As a | 2783 any unread articles or not. As a special case, if this variable is |
3323 special case, if this variable is @code{quietly}, Gnus will select the | 2784 @code{quietly}, Gnus will select the next group without asking for |
3324 next group without asking for confirmation. If this variable is | 2785 confirmation. If this variable is @code{almost-quietly}, the same will |
3325 @code{almost-quietly}, the same will happen only if you are located on | 2786 happen only if you are located on the last article in the group. |
3326 the last article in the group. Finally, if this variable is | 2787 Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n} |
3327 @code{slightly-quietly}, the @kbd{Z n} command will go to the next group | 2788 command will go to the next group without confirmation. Also |
3328 without confirmation. Also @pxref{Group Levels}. | 2789 @pxref{Group Levels}. |
3329 | 2790 |
3330 @item gnus-auto-select-same | 2791 @item gnus-auto-select-same |
3331 @vindex gnus-auto-select-same | 2792 @vindex gnus-auto-select-same |
3332 If non-@code{nil}, all the movement commands will try to go to the next | 2793 If non-@code{nil}, all the movement commands will try to go to the next |
3333 article with the same subject as the current. (@dfn{Same} here might | 2794 article with the same subject as the current. (@dfn{Same} here might |
3356 | 2817 |
3357 @node Choosing Articles | 2818 @node Choosing Articles |
3358 @section Choosing Articles | 2819 @section Choosing Articles |
3359 @cindex selecting articles | 2820 @cindex selecting articles |
3360 | 2821 |
3361 @menu | |
3362 * Choosing Commands:: Commands for choosing articles. | |
3363 * Choosing Variables:: Variables that influence these commands. | |
3364 @end menu | |
3365 | |
3366 | |
3367 @node Choosing Commands | |
3368 @subsection Choosing Commands | |
3369 | |
3370 None of the following movement commands understand the numeric prefix, | 2822 None of the following movement commands understand the numeric prefix, |
3371 and they all select and display an article. | 2823 and they all select and display an article. |
3372 | 2824 |
3373 @table @kbd | 2825 @table @kbd |
3374 @item SPACE | 2826 @item SPACE |
3445 Pop an article off the summary history and go to this article | 2897 Pop an article off the summary history and go to this article |
3446 (@code{gnus-summary-pop-article}). This command differs from the | 2898 (@code{gnus-summary-pop-article}). This command differs from the |
3447 command above in that you can pop as many previous articles off the | 2899 command above in that you can pop as many previous articles off the |
3448 history as you like. | 2900 history as you like. |
3449 @end table | 2901 @end table |
3450 | |
3451 | |
3452 @node Choosing Variables | |
3453 @subsection Choosing Variables | |
3454 | 2902 |
3455 Some variables that are relevant for moving and selecting articles: | 2903 Some variables that are relevant for moving and selecting articles: |
3456 | 2904 |
3457 @table @code | 2905 @table @code |
3458 @item gnus-auto-extend-newsgroup | 2906 @item gnus-auto-extend-newsgroup |
3533 @kindex A > (Summary) | 2981 @kindex A > (Summary) |
3534 @findex gnus-summary-end-of-article | 2982 @findex gnus-summary-end-of-article |
3535 Scroll to the end of the article (@code{gnus-summary-end-of-article}). | 2983 Scroll to the end of the article (@code{gnus-summary-end-of-article}). |
3536 | 2984 |
3537 @item A s | 2985 @item A s |
3538 @itemx s | |
3539 @kindex A s (Summary) | 2986 @kindex A s (Summary) |
3540 @kindex s (Summary) | |
3541 @findex gnus-summary-isearch-article | 2987 @findex gnus-summary-isearch-article |
3542 Perform an isearch in the article buffer | 2988 Perform an isearch in the article buffer |
3543 (@code{gnus-summary-isearch-article}). | 2989 (@code{gnus-summary-isearch-article}). |
3544 | 2990 |
3545 @end table | 2991 @end table |
3578 @findex gnus-summary-reply-with-original | 3024 @findex gnus-summary-reply-with-original |
3579 Mail a reply to the author of the current article and include the | 3025 Mail a reply to the author of the current article and include the |
3580 original message (@code{gnus-summary-reply-with-original}). This | 3026 original message (@code{gnus-summary-reply-with-original}). This |
3581 command uses the process/prefix convention. | 3027 command uses the process/prefix convention. |
3582 | 3028 |
3583 @item S w | |
3584 @kindex S w (Summary) | |
3585 @findex gnus-summary-wide-reply | |
3586 Mail a wide reply to the author of the current article | |
3587 (@code{gnus-summary-wide-reply}). | |
3588 | |
3589 @item S W | |
3590 @kindex S W (Summary) | |
3591 @findex gnus-summary-wide-reply-with-original | |
3592 Mail a wide reply to the current article and include the original | |
3593 message (@code{gnus-summary-reply-with-original}). This command uses | |
3594 the process/prefix convention. | |
3595 | |
3596 @item S o m | 3029 @item S o m |
3597 @kindex S o m (Summary) | 3030 @kindex S o m (Summary) |
3598 @findex gnus-summary-mail-forward | 3031 @findex gnus-summary-mail-forward |
3599 Forward the current article to some other person | 3032 Forward the current article to some other person |
3600 (@code{gnus-summary-mail-forward}). If given a prefix, include the full | 3033 (@code{gnus-summary-mail-forward}). |
3601 headers of the forwarded article. | 3034 |
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}). | |
3602 | 3040 |
3603 @item S m | 3041 @item S m |
3604 @itemx m | 3042 @itemx m |
3605 @kindex m (Summary) | 3043 @kindex m (Summary) |
3606 @kindex S m (Summary) | 3044 @kindex S m (Summary) |
3635 | 3073 |
3636 This command is mainly used if you have several accounts and want to | 3074 This command is mainly used if you have several accounts and want to |
3637 ship a mail to a different account of yours. (If you're both | 3075 ship a mail to a different account of yours. (If you're both |
3638 @code{root} and @code{postmaster} and get a mail for @code{postmaster} | 3076 @code{root} and @code{postmaster} and get a mail for @code{postmaster} |
3639 to the @code{root} account, you may want to resend it to | 3077 to the @code{root} account, you may want to resend it to |
3640 @code{postmaster}. Ordnung muß sein! | 3078 @code{postmaster}. Ordnung muss sein! |
3641 | |
3642 This command understands the process/prefix convention | |
3643 (@pxref{Process/Prefix}). | |
3644 | 3079 |
3645 @item S O m | 3080 @item S O m |
3646 @kindex S O m (Summary) | 3081 @kindex S O m (Summary) |
3647 @findex gnus-uu-digest-mail-forward | 3082 @findex gnus-uu-digest-mail-forward |
3648 Digest the current series and forward the result using mail | 3083 Digest the current series and forward the result using mail |
3649 (@code{gnus-uu-digest-mail-forward}). This command uses the | 3084 (@code{gnus-uu-digest-mail-forward}). This command uses the |
3650 process/prefix convention (@pxref{Process/Prefix}). | 3085 process/prefix convention (@pxref{Process/Prefix}). |
3651 | 3086 |
3652 @item S M-c | 3087 @item S O p |
3653 @kindex S M-c (Summary) | 3088 @kindex S O p (Summary) |
3654 @findex gnus-summary-mail-crosspost-complaint | 3089 @findex gnus-uu-digest-post-forward |
3655 @cindex crossposting | 3090 Digest the current series and forward the result to a newsgroup |
3656 @cindex excessive crossposting | 3091 (@code{gnus-uu-digest-mail-forward}). |
3657 Send a complaint about excessive crossposting to the author of the | |
3658 current article (@code{gnus-summary-mail-crosspost-complaint}). | |
3659 | |
3660 @findex gnus-crosspost-complaint | |
3661 This command is provided as a way to fight back agains the current | |
3662 crossposting pandemic that's sweeping Usenet. It will compose a reply | |
3663 using the @code{gnus-crosspost-complaint} variable as a preamble. This | |
3664 command understands the process/prefix convention | |
3665 (@pxref{Process/Prefix}) and will prompt you before sending each mail. | |
3666 | |
3667 @end table | 3092 @end table |
3668 | 3093 |
3669 | 3094 |
3670 @node Summary Post Commands | 3095 @node Summary Post Commands |
3671 @subsection Summary Post Commands | 3096 @subsection Summary Post Commands |
3672 @cindex post | 3097 @cindex post |
3673 @cindex composing news | 3098 @cindex composing news |
3674 | 3099 |
3675 Commands for posting a news article: | 3100 Commands for posting an article: |
3676 | 3101 |
3677 @table @kbd | 3102 @table @kbd |
3678 @item S p | 3103 @item S p |
3679 @itemx a | 3104 @itemx a |
3680 @kindex a (Summary) | 3105 @kindex a (Summary) |
3697 @findex gnus-summary-followup-with-original | 3122 @findex gnus-summary-followup-with-original |
3698 Post a followup to the current article and include the original message | 3123 Post a followup to the current article and include the original message |
3699 (@code{gnus-summary-followup-with-original}). This command uses the | 3124 (@code{gnus-summary-followup-with-original}). This command uses the |
3700 process/prefix convention. | 3125 process/prefix convention. |
3701 | 3126 |
3702 @item S n | |
3703 @kindex S n (Summary) | |
3704 @findex gnus-summary-followup-to-mail | |
3705 Post a followup to the current article via news, even if you got the | |
3706 message through mail (@code{gnus-summary-followup-to-mail}). | |
3707 | |
3708 @item S n | |
3709 @kindex S n (Summary) | |
3710 @findex gnus-summary-followup-to-mail | |
3711 Post a followup to the current article via news, even if you got the | |
3712 message through mail and include the original message | |
3713 (@code{gnus-summary-followup-to-mail-with-original}). This command uses | |
3714 the process/prefix convention. | |
3715 | |
3716 @item S o p | |
3717 @kindex S o p (Summary) | |
3718 @findex gnus-summary-post-forward | |
3719 Forward the current article to a newsgroup | |
3720 (@code{gnus-summary-post-forward}). If given a prefix, include the full | |
3721 headers of the forwarded article. | |
3722 | |
3723 @item S O p | |
3724 @kindex S O p (Summary) | |
3725 @findex gnus-uu-digest-post-forward | |
3726 Digest the current series and forward the result to a newsgroup | |
3727 (@code{gnus-uu-digest-mail-forward}). | |
3728 | |
3729 @item S u | 3127 @item S u |
3730 @kindex S u (Summary) | 3128 @kindex S u (Summary) |
3731 @findex gnus-uu-post-news | 3129 @findex gnus-uu-post-news |
3732 Uuencode a file, split it into parts, and post it as a series | 3130 Uuencode a file, split it into parts, and post it as a series |
3733 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). | 3131 (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). |
3771 have posted almost the same article twice. | 3169 have posted almost the same article twice. |
3772 | 3170 |
3773 If you have just posted the article, and change your mind right away, | 3171 If you have just posted the article, and change your mind right away, |
3774 there is a trick you can use to cancel/supersede the article without | 3172 there is a trick you can use to cancel/supersede the article without |
3775 waiting for the article to appear on your site first. You simply return | 3173 waiting for the article to appear on your site first. You simply return |
3776 to the post buffer (which is called @code{*sent ...*}). There you will | 3174 to the post buffer (which is called @code{*post-buf*}). There you will |
3777 find the article you just posted, with all the headers intact. Change | 3175 find the article you just posted, with all the headers intact. Change |
3778 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes} | 3176 the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes} |
3779 header by substituting one of those words for the word | 3177 header by substituting one of those words for @code{Message-ID}. Then |
3780 @code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as | 3178 just press @kbd{C-c C-c} to send the article as you would do normally. |
3781 you would do normally. The previous article will be | 3179 The previous article will be canceled/superseded. |
3782 canceled/superseded. | |
3783 | 3180 |
3784 Just remember, kids: There is no 'c' in 'supersede'. | 3181 Just remember, kids: There is no 'c' in 'supersede'. |
3785 | 3182 |
3786 | 3183 |
3787 @node Marking Articles | 3184 @node Marking Articles |
3815 | 3212 |
3816 | 3213 |
3817 @node Unread Articles | 3214 @node Unread Articles |
3818 @subsection Unread Articles | 3215 @subsection Unread Articles |
3819 | 3216 |
3820 The following marks mark articles as (kinda) unread, in one form or | 3217 The following marks mark articles as unread, in one form or other. |
3821 other. | 3218 |
3822 | 3219 @vindex gnus-dormant-mark |
3220 @vindex gnus-ticked-mark | |
3823 @table @samp | 3221 @table @samp |
3824 @item ! | 3222 @item ! |
3825 @vindex gnus-ticked-mark | |
3826 Marked as ticked (@code{gnus-ticked-mark}). | |
3827 | |
3828 @dfn{Ticked articles} are articles that will remain visible always. If | 3223 @dfn{Ticked articles} are articles that will remain visible always. If |
3829 you see an article that you find interesting, or you want to put off | 3224 you see an article that you find interesting, or you want to put off |
3830 reading it, or replying to it, until sometime later, you'd typically | 3225 reading it, or replying to it, until sometime later, you'd typically |
3831 tick it. However, articles can be expired, so if you want to keep an | 3226 tick it. However, articles can be expired, so if you want to keep an |
3832 article forever, you'll have to make it persistent (@pxref{Persistent | 3227 article forever, you'll have to save it. Ticked articles have a |
3833 Articles}). | 3228 @samp{!} (@code{gnus-ticked-mark}) in the first column. |
3834 | 3229 |
3835 @item ? | 3230 @item ? |
3836 @vindex gnus-dormant-mark | 3231 @vindex gnus-dormant-mark |
3837 Marked as dormant (@code{gnus-dormant-mark}). | 3232 A @dfn{dormant} article is marked with a @samp{?} |
3838 | 3233 (@code{gnus-dormant-mark}), and will only appear in the summary buffer |
3839 @dfn{Dormant articles} will only appear in the summary buffer if there | 3234 if there are followups to it. |
3840 are followups to it. | |
3841 | 3235 |
3842 @item SPACE | 3236 @item SPACE |
3843 @vindex gnus-unread-mark | 3237 @vindex gnus-unread-mark |
3844 Markes as unread (@code{gnus-unread-mark}). | 3238 An @dfn{unread} article is marked with a @samp{SPACE} |
3845 | 3239 (@code{gnus-unread-mark}). These are articles that haven't been read at |
3846 @dfn{Unread articles} are articles that haven't been read at all yet. | 3240 all yet. |
3847 @end table | 3241 @end table |
3848 | 3242 |
3849 | 3243 |
3850 @node Read Articles | 3244 @node Read Articles |
3851 @subsection Read Articles | 3245 @subsection Read Articles |
3855 | 3249 |
3856 @table @samp | 3250 @table @samp |
3857 | 3251 |
3858 @item r | 3252 @item r |
3859 @vindex gnus-del-mark | 3253 @vindex gnus-del-mark |
3860 These are articles that the user has marked as read with the @kbd{d} | 3254 Articles that are marked as read. They have a @samp{r} |
3861 command manually, more or less (@code{gnus-del-mark}). | 3255 (@code{gnus-del-mark}) in the first column. These are articles that the |
3256 user has marked as read more or less manually. | |
3862 | 3257 |
3863 @item R | 3258 @item R |
3864 @vindex gnus-read-mark | 3259 @vindex gnus-read-mark |
3865 Articles that have actually been read (@code{gnus-read-mark}). | 3260 Articles that are actually read are marked with @samp{R} |
3261 (@code{gnus-read-mark}). | |
3866 | 3262 |
3867 @item O | 3263 @item O |
3868 @vindex gnus-ancient-mark | 3264 @vindex gnus-ancient-mark |
3869 Articles that were marked as read in previous sessions and are now | 3265 Articles that were marked as read in previous sessions are now |
3870 @dfn{old} (@code{gnus-ancient-mark}). | 3266 @dfn{old} and marked with @samp{O} (@code{gnus-ancient-mark}). |
3871 | 3267 |
3872 @item K | 3268 @item K |
3873 @vindex gnus-killed-mark | 3269 @vindex gnus-killed-mark |
3874 Marked as killed (@code{gnus-killed-mark}). | 3270 Marked as killed (@code{gnus-killed-mark}). |
3875 | 3271 |
3889 @vindex gnus-canceled-mark | 3285 @vindex gnus-canceled-mark |
3890 Canceled article (@code{gnus-canceled-mark}) | 3286 Canceled article (@code{gnus-canceled-mark}) |
3891 | 3287 |
3892 @item F | 3288 @item F |
3893 @vindex gnus-souped-mark | 3289 @vindex gnus-souped-mark |
3894 @sc{SOUP}ed article (@code{gnus-souped-mark}). @xref{SOUP}. | 3290 @sc{SOUP}ed article (@code{gnus-souped-mark}). |
3895 | 3291 |
3896 @item Q | 3292 @item Q |
3897 @vindex gnus-sparse-mark | 3293 @vindex gnus-sparse-mark |
3898 Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing | 3294 Sparsely reffed article (@code{gnus-sparse-mark}). |
3899 Threading}. | |
3900 | |
3901 @item M | |
3902 @vindex gnus-duplicate-mark | |
3903 Article marked as read by duplicate suppression | |
3904 (@code{gnus-duplicated-mark}). @xref{Duplicate Suppression}. | |
3905 | |
3906 @end table | 3295 @end table |
3907 | 3296 |
3908 All these marks just mean that the article is marked as read, really. | 3297 All these marks just mean that the article is marked as read, really. |
3909 They are interpreted differently when doing adaptive scoring, though. | 3298 They are interpreted differently by the adaptive scoring scheme, |
3299 however. | |
3910 | 3300 |
3911 One more special mark, though: | 3301 One more special mark, though: |
3912 | 3302 |
3913 @table @samp | 3303 @table @samp |
3914 @item E | 3304 @item E |
3915 @vindex gnus-expirable-mark | 3305 @vindex gnus-expirable-mark |
3916 Marked as expirable (@code{gnus-expirable-mark}). | 3306 You can also mark articles as @dfn{expirable} (or have them marked as |
3917 | 3307 such automatically). That doesn't make much sense in normal groups, |
3918 Marking articles as @dfn{expirable} (or have them marked as such | 3308 because a user does not control the expiring of news articles, but in |
3919 automatically) doesn't make much sense in normal groups---a user doesn't | 3309 mail groups, for instance, articles that are marked as @dfn{expirable} |
3920 control the expiring of news articles, but in mail groups, for instance, | 3310 can be deleted by Gnus at any time. Expirable articles are marked with |
3921 articles that are marked as @dfn{expirable} can be deleted by Gnus at | 3311 @samp{E} (@code{gnus-expirable-mark}). |
3922 any time. | |
3923 @end table | 3312 @end table |
3924 | 3313 |
3925 | 3314 |
3926 @node Other Marks | 3315 @node Other Marks |
3927 @subsection Other Marks | 3316 @subsection Other Marks |
3936 @item | 3325 @item |
3937 You can set a bookmark in the current article. Say you are reading a | 3326 You can set a bookmark in the current article. Say you are reading a |
3938 long thesis on cats' urinary tracts, and have to go home for dinner | 3327 long thesis on cats' urinary tracts, and have to go home for dinner |
3939 before you've finished reading the thesis. You can then set a bookmark | 3328 before you've finished reading the thesis. You can then set a bookmark |
3940 in the article, and Gnus will jump to this bookmark the next time it | 3329 in the article, and Gnus will jump to this bookmark the next time it |
3941 encounters the article. @xref{Setting Marks} | 3330 encounters the article. |
3942 | 3331 |
3943 @item | 3332 @item |
3944 @vindex gnus-replied-mark | 3333 @vindex gnus-replied-mark |
3945 All articles that you have replied to or made a followup to (i.e., have | 3334 All articles that you have replied to or made a followup to (i.e., have |
3946 answered) will be marked with an @samp{A} in the second column | 3335 answered) will be marked with an @samp{A} in the second column |
4010 @kindex M d (Summary) | 3399 @kindex M d (Summary) |
4011 @kindex d (Summary) | 3400 @kindex d (Summary) |
4012 @findex gnus-summary-mark-as-read-forward | 3401 @findex gnus-summary-mark-as-read-forward |
4013 Mark the current article as read | 3402 Mark the current article as read |
4014 (@code{gnus-summary-mark-as-read-forward}). | 3403 (@code{gnus-summary-mark-as-read-forward}). |
4015 | |
4016 @item D | |
4017 @kindex D (Summary) | |
4018 @findex gnus-summary-mark-as-read-backward | |
4019 Mark the current article as read and move point to the previous line | |
4020 (@code{gnus-summary-mark-as-read-backward}). | |
4021 | 3404 |
4022 @item M k | 3405 @item M k |
4023 @itemx k | 3406 @itemx k |
4024 @kindex k (Summary) | 3407 @kindex k (Summary) |
4025 @kindex M k (Summary) | 3408 @kindex M k (Summary) |
4037 (@code{gnus-summary-kill-same-subject}). | 3420 (@code{gnus-summary-kill-same-subject}). |
4038 | 3421 |
4039 @item M C | 3422 @item M C |
4040 @kindex M C (Summary) | 3423 @kindex M C (Summary) |
4041 @findex gnus-summary-catchup | 3424 @findex gnus-summary-catchup |
4042 Mark all unread articles as read (@code{gnus-summary-catchup}). | 3425 Mark all unread articles in the group as read |
3426 (@code{gnus-summary-catchup}). | |
4043 | 3427 |
4044 @item M C-c | 3428 @item M C-c |
4045 @kindex M C-c (Summary) | 3429 @kindex M C-c (Summary) |
4046 @findex gnus-summary-catchup-all | 3430 @findex gnus-summary-catchup-all |
4047 Mark all articles in the group as read---even the ticked and dormant | 3431 Mark all articles in the group as read---even the ticked and dormant |
4149 @kindex M P U (Summary) | 3533 @kindex M P U (Summary) |
4150 @findex gnus-summary-unmark-all-processable | 3534 @findex gnus-summary-unmark-all-processable |
4151 Remove the process mark from all articles | 3535 Remove the process mark from all articles |
4152 (@code{gnus-summary-unmark-all-processable}). | 3536 (@code{gnus-summary-unmark-all-processable}). |
4153 | 3537 |
4154 @item M P i | |
4155 @kindex M P i (Summary) | |
4156 @findex gnus-uu-invert-processable | |
4157 Invert the list of process marked articles | |
4158 (@code{gnus-uu-invert-processable}). | |
4159 | |
4160 @item M P R | 3538 @item M P R |
4161 @kindex M P R (Summary) | 3539 @kindex M P R (Summary) |
4162 @findex gnus-uu-mark-by-regexp | 3540 @findex gnus-uu-mark-by-regexp |
4163 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). | 3541 Mark articles by a regular expression (@code{gnus-uu-mark-by-regexp}). |
4164 | 3542 |
4204 @item M P b | 3582 @item M P b |
4205 @kindex M P b (Summary) | 3583 @kindex M P b (Summary) |
4206 @findex gnus-uu-mark-buffer | 3584 @findex gnus-uu-mark-buffer |
4207 Mark all articles in the buffer in the order they appear | 3585 Mark all articles in the buffer in the order they appear |
4208 (@code{gnus-uu-mark-buffer}). | 3586 (@code{gnus-uu-mark-buffer}). |
4209 | |
4210 @item M P k | |
4211 @kindex M P k (Summary) | |
4212 @findex gnus-summary-kill-process-mark | |
4213 Push the current process mark set onto the stack and unmark all articles | |
4214 (@code{gnus-summary-kill-process-mark}). | |
4215 | |
4216 @item M P y | |
4217 @kindex M P y (Summary) | |
4218 @findex gnus-summary-yank-process-mark | |
4219 Pop the previous process mark set from the stack and restore it | |
4220 (@code{gnus-summary-yank-process-mark}). | |
4221 | |
4222 @item M P w | |
4223 @kindex M P w (Summary) | |
4224 @findex gnus-summary-save-process-mark | |
4225 Push the current process mark set onto the stack | |
4226 (@code{gnus-summary-save-process-mark}). | |
4227 | |
4228 @end table | 3587 @end table |
4229 | 3588 |
4230 | 3589 |
4231 @node Limiting | 3590 @node Limiting |
4232 @section Limiting | 3591 @section Limiting |
4266 @kindex / m (Summary) | 3625 @kindex / m (Summary) |
4267 @findex gnus-summary-limit-to-marks | 3626 @findex gnus-summary-limit-to-marks |
4268 Ask for a mark and then limit to all articles that have not been marked | 3627 Ask for a mark and then limit to all articles that have not been marked |
4269 with that mark (@code{gnus-summary-limit-to-marks}). | 3628 with that mark (@code{gnus-summary-limit-to-marks}). |
4270 | 3629 |
4271 @item / t | |
4272 @kindex / t (Summary) | |
4273 @findex gnus-summary-limit-to-age | |
4274 Ask for a number and then limit the summary buffer to articles that are | |
4275 older than (or equal to) that number of days | |
4276 (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to | |
4277 articles that are younger than that number of days. | |
4278 | |
4279 @item / n | 3630 @item / n |
4280 @kindex / n (Summary) | 3631 @kindex / n (Summary) |
4281 @findex gnus-summary-limit-to-articles | 3632 @findex gnus-summary-limit-to-articles |
4282 Limit the summary buffer to the current article | 3633 Limit the summary buffer to the current article |
4283 (@code{gnus-summary-limit-to-articles}). Uses the process/prefix | 3634 (@code{gnus-summary-limit-to-articles}). Uses the process/prefix |
4333 @node Threading | 3684 @node Threading |
4334 @section Threading | 3685 @section Threading |
4335 @cindex threading | 3686 @cindex threading |
4336 @cindex article threading | 3687 @cindex article threading |
4337 | 3688 |
4338 Gnus threads articles by default. @dfn{To thread} is to put responses | 3689 Gnus threads articles by default. @dfn{To thread} is to put replies to |
4339 to articles directly after the articles they respond to---in a | 3690 articles directly after the articles they reply to---in a hierarchical |
4340 hierarchical fashion. | 3691 fashion. |
4341 | 3692 |
4342 @menu | 3693 @menu |
4343 * Customizing Threading:: Variables you can change to affect the threading. | 3694 * Customizing Threading:: Variables you can change to affect the threading. |
4344 * Thread Commands:: Thread based commands in the summary buffer. | 3695 * Thread Commands:: Thread based commands in the summary buffer. |
4345 @end menu | 3696 @end menu |
4400 variable to a really low number, you'll find that Gnus will gather | 3751 variable to a really low number, you'll find that Gnus will gather |
4401 everything in sight into one thread, which isn't very helpful. | 3752 everything in sight into one thread, which isn't very helpful. |
4402 | 3753 |
4403 @cindex fuzzy article gathering | 3754 @cindex fuzzy article gathering |
4404 If you set this variable to the special value @code{fuzzy}, Gnus will | 3755 If you set this variable to the special value @code{fuzzy}, Gnus will |
4405 use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy | 3756 use a fuzzy string comparison algorithm on the subjects. |
4406 Matching}). | |
4407 | 3757 |
4408 @item gnus-simplify-subject-fuzzy-regexp | 3758 @item gnus-simplify-subject-fuzzy-regexp |
4409 @vindex gnus-simplify-subject-fuzzy-regexp | 3759 @vindex gnus-simplify-subject-fuzzy-regexp |
4410 This can either be a regular expression or list of regular expressions | 3760 This can either be a regular expression or list of regular expressions |
4411 that match strings that will be removed from subjects if fuzzy subject | 3761 that match strings that will be removed from subjects if fuzzy subject |
4419 @c Written by Michael Ernst <mernst@cs.rice.edu> | 3769 @c Written by Michael Ernst <mernst@cs.rice.edu> |
4420 @lisp | 3770 @lisp |
4421 (setq gnus-simplify-ignored-prefixes | 3771 (setq gnus-simplify-ignored-prefixes |
4422 (concat | 3772 (concat |
4423 "\\`\\[?\\(" | 3773 "\\`\\[?\\(" |
4424 (mapconcat | |
4425 'identity | |
4426 '("looking" | |
4427 "wanted" "followup" "summary\\( of\\)?" | |
4428 "help" "query" "problem" "question" | |
4429 "answer" "reference" "announce" | |
4430 "How can I" "How to" "Comparison of" | |
4431 ;; ... | |
4432 ) | |
4433 "\\|") | |
4434 "\\)\\s *\\(" | |
4435 (mapconcat 'identity | 3774 (mapconcat 'identity |
4436 '("for" "for reference" "with" "about") | 3775 '("looking" |
3776 "wanted" "followup" "summary\\( of\\)?" | |
3777 "help" "query" "problem" "question" | |
3778 "answer" "reference" "announce" | |
3779 "How can I" "How to" "Comparison of" | |
3780 ;; ... | |
3781 ) | |
4437 "\\|") | 3782 "\\|") |
4438 "\\)?\\]?:?[ \t]*")) | 3783 "\\)\\s *\\(" |
3784 (mapconcat 'identity | |
3785 '("for" "for reference" "with" "about") | |
3786 "\\|") | |
3787 "\\)?\\]?:?[ \t]*")) | |
4439 @end lisp | 3788 @end lisp |
4440 | 3789 |
4441 All words that match this regexp will be removed before comparing two | 3790 All words that match this regexp will be removed before comparing two |
4442 subjects. | 3791 subjects. |
4443 | 3792 |
4527 @item gnus-thread-hide-subtree | 3876 @item gnus-thread-hide-subtree |
4528 @vindex gnus-thread-hide-subtree | 3877 @vindex gnus-thread-hide-subtree |
4529 If non-@code{nil}, all threads will be hidden when the summary buffer is | 3878 If non-@code{nil}, all threads will be hidden when the summary buffer is |
4530 generated. | 3879 generated. |
4531 | 3880 |
4532 @item gnus-thread-expunge-below | |
4533 @vindex gnus-thread-expunge-below | |
4534 All threads that have a total score (as defined by | |
4535 @code{gnus-thread-score-function}) less than this number will be | |
4536 expunged. This variable is @code{nil} by default, which means that no | |
4537 threads are expunged. | |
4538 | |
4539 @item gnus-thread-hide-killed | 3881 @item gnus-thread-hide-killed |
4540 @vindex gnus-thread-hide-killed | 3882 @vindex gnus-thread-hide-killed |
4541 if you kill a thread and this variable is non-@code{nil}, the subtree | 3883 if you kill a thread and this variable is non-@code{nil}, the subtree |
4542 will be hidden. | 3884 will be hidden. |
4543 | 3885 |
4549 in a new thread. | 3891 in a new thread. |
4550 | 3892 |
4551 @item gnus-thread-indent-level | 3893 @item gnus-thread-indent-level |
4552 @vindex gnus-thread-indent-level | 3894 @vindex gnus-thread-indent-level |
4553 This is a number that says how much each sub-thread should be indented. | 3895 This is a number that says how much each sub-thread should be indented. |
4554 The default is 4. | 3896 The default is @code{4}. |
4555 | |
4556 @item gnus-parse-headers-hook | |
4557 @vindex gnus-parse-headers-hook | |
4558 Hook run before parsing any headers. The default value is | |
4559 @code{(gnus-decode-rfc1522)}, which means that QPized headers will be | |
4560 slightly decoded in a hackish way. This is likely to change in the | |
4561 future when Gnus becomes @sc{MIME}ified. | |
4562 | |
4563 @end table | 3897 @end table |
4564 | 3898 |
4565 | 3899 |
4566 @node Thread Commands | 3900 @node Thread Commands |
4567 @subsection Thread Commands | 3901 @subsection Thread Commands |
4572 @item T k | 3906 @item T k |
4573 @itemx M-C-k | 3907 @itemx M-C-k |
4574 @kindex T k (Summary) | 3908 @kindex T k (Summary) |
4575 @kindex M-C-k (Summary) | 3909 @kindex M-C-k (Summary) |
4576 @findex gnus-summary-kill-thread | 3910 @findex gnus-summary-kill-thread |
4577 Mark all articles in the current (sub-)thread as read | 3911 Mark all articles in the current sub-thread as read |
4578 (@code{gnus-summary-kill-thread}). If the prefix argument is positive, | 3912 (@code{gnus-summary-kill-thread}). If the prefix argument is positive, |
4579 remove all marks instead. If the prefix argument is negative, tick | 3913 remove all marks instead. If the prefix argument is negative, tick |
4580 articles instead. | 3914 articles instead. |
4581 | 3915 |
4582 @item T l | 3916 @item T l |
4583 @itemx M-C-l | 3917 @itemx M-C-l |
4584 @kindex T l (Summary) | 3918 @kindex T l (Summary) |
4585 @kindex M-C-l (Summary) | 3919 @kindex M-C-l (Summary) |
4586 @findex gnus-summary-lower-thread | 3920 @findex gnus-summary-lower-thread |
4587 Lower the score of the current (sub-)thread | 3921 Lower the score of the current thread |
4588 (@code{gnus-summary-lower-thread}). | 3922 (@code{gnus-summary-lower-thread}). |
4589 | 3923 |
4590 @item T i | 3924 @item T i |
4591 @kindex T i (Summary) | 3925 @kindex T i (Summary) |
4592 @findex gnus-summary-raise-thread | 3926 @findex gnus-summary-raise-thread |
4593 Increase the score of the current (sub-)thread | 3927 Increase the score of the current thread |
4594 (@code{gnus-summary-raise-thread}). | 3928 (@code{gnus-summary-raise-thread}). |
4595 | 3929 |
4596 @item T # | 3930 @item T # |
4597 @kindex T # (Summary) | 3931 @kindex T # (Summary) |
4598 @findex gnus-uu-mark-thread | 3932 @findex gnus-uu-mark-thread |
4599 Set the process mark on the current (sub-)thread | 3933 Set the process mark on the current thread |
4600 (@code{gnus-uu-mark-thread}). | 3934 (@code{gnus-uu-mark-thread}). |
4601 | 3935 |
4602 @item T M-# | 3936 @item T M-# |
4603 @kindex T M-# (Summary) | 3937 @kindex T M-# (Summary) |
4604 @findex gnus-uu-unmark-thread | 3938 @findex gnus-uu-unmark-thread |
4605 Remove the process mark from the current (sub-)thread | 3939 Remove the process mark from the current thread |
4606 (@code{gnus-uu-unmark-thread}). | 3940 (@code{gnus-uu-unmark-thread}). |
4607 | 3941 |
4608 @item T T | 3942 @item T T |
4609 @kindex T T (Summary) | 3943 @kindex T T (Summary) |
4610 @findex gnus-summary-toggle-threads | 3944 @findex gnus-summary-toggle-threads |
4611 Toggle threading (@code{gnus-summary-toggle-threads}). | 3945 Toggle threading (@code{gnus-summary-toggle-threads}). |
4612 | 3946 |
4613 @item T s | 3947 @item T s |
4614 @kindex T s (Summary) | 3948 @kindex T s (Summary) |
4615 @findex gnus-summary-show-thread | 3949 @findex gnus-summary-show-thread |
4616 Expose the (sub-)thread hidden under the current article, if any | 3950 Expose the thread hidden under the current article, if any |
4617 (@code{gnus-summary-show-thread}). | 3951 (@code{gnus-summary-show-thread}). |
4618 | 3952 |
4619 @item T h | 3953 @item T h |
4620 @kindex T h (Summary) | 3954 @kindex T h (Summary) |
4621 @findex gnus-summary-hide-thread | 3955 @findex gnus-summary-hide-thread |
4622 Hide the current (sub-)thread (@code{gnus-summary-hide-thread}). | 3956 Hide the current (sub)thread (@code{gnus-summary-hide-thread}). |
4623 | 3957 |
4624 @item T S | 3958 @item T S |
4625 @kindex T S (Summary) | 3959 @kindex T S (Summary) |
4626 @findex gnus-summary-show-all-threads | 3960 @findex gnus-summary-show-all-threads |
4627 Expose all hidden threads (@code{gnus-summary-show-all-threads}). | 3961 Expose all hidden threads (@code{gnus-summary-show-all-threads}). |
4686 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If is | 4020 you can fiddle with @code{gnus-thread-operation-ignore-subject}. If is |
4687 is non-@code{nil} (which it is by default), subjects will be ignored | 4021 is non-@code{nil} (which it is by default), subjects will be ignored |
4688 when doing thread commands. If this variable is @code{nil}, articles in | 4022 when doing thread commands. If this variable is @code{nil}, articles in |
4689 the same thread with different subjects will not be included in the | 4023 the same thread with different subjects will not be included in the |
4690 operation in question. If this variable is @code{fuzzy}, only articles | 4024 operation in question. If this variable is @code{fuzzy}, only articles |
4691 that have subjects that are fuzzily equal will be included (@pxref{Fuzzy | 4025 that have subjects that are fuzzily equal will be included. |
4692 Matching}). | |
4693 | 4026 |
4694 | 4027 |
4695 @node Sorting | 4028 @node Sorting |
4696 @section Sorting | 4029 @section Sorting |
4697 | 4030 |
4778 | 4111 |
4779 | 4112 |
4780 @node Asynchronous Fetching | 4113 @node Asynchronous Fetching |
4781 @section Asynchronous Article Fetching | 4114 @section Asynchronous Article Fetching |
4782 @cindex asynchronous article fetching | 4115 @cindex asynchronous article fetching |
4783 @cindex article pre-fetch | |
4784 @cindex pre-fetch | |
4785 | 4116 |
4786 If you read your news from an @sc{nntp} server that's far away, the | 4117 If you read your news from an @sc{nntp} server that's far away, the |
4787 network latencies may make reading articles a chore. You have to wait | 4118 network latencies may make reading articles a chore. You have to wait |
4788 for a while after pressing @kbd{n} to go to the next article before the | 4119 for a while after pressing @kbd{n} to go to the next article before the |
4789 article appears. Why can't Gnus just go ahead and fetch the article | 4120 article appears. Why can't Gnus just go ahead and fetch the article |
4790 while you are reading the previous one? Why not, indeed. | 4121 while you are reading the previous one? Why not, indeed. |
4791 | 4122 |
4792 First, some caveats. There are some pitfalls to using asynchronous | 4123 First, some caveats. There are some pitfalls to using asynchronous |
4793 article fetching, especially the way Gnus does it. | 4124 article fetching, especially the way Gnus does it. |
4794 | 4125 |
4795 Let's say you are reading article 1, which is short, and article 2 is | 4126 Let's say you are reading article 1, which is short, and article 2 is |
4814 | 4145 |
4815 @vindex gnus-asynchronous | 4146 @vindex gnus-asynchronous |
4816 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should | 4147 Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should |
4817 happen automatically. | 4148 happen automatically. |
4818 | 4149 |
4819 @vindex gnus-use-article-prefetch | 4150 @vindex nntp-async-number |
4820 You can control how many articles that are to be pre-fetched by setting | 4151 You can control how many articles that are to be pre-fetched by setting |
4821 @code{gnus-use-article-prefetch}. This is 30 by default, which means | 4152 @code{nntp-async-number}. This is five by default, which means that when |
4822 that when you read an article in the group, the backend will pre-fetch | 4153 you read an article in the group, @code{nntp} will pre-fetch the next |
4823 the next 30 articles. If this variable is @code{t}, the backend will | 4154 five articles. If this variable is @code{t}, @code{nntp} will pre-fetch |
4824 pre-fetch all the articles that it can without bound. If it is | 4155 all the articles that it can without bound. If it is @code{nil}, no |
4825 @code{nil}, no pre-fetching will be made. | 4156 pre-fetching will be made. |
4826 | 4157 |
4827 @vindex gnus-async-prefetch-article-p | 4158 @vindex gnus-asynchronous-article-function |
4828 @findex gnus-async-read-p | 4159 You may wish to create some sort of scheme for choosing which articles |
4829 There are probably some articles that you don't want to pre-fetch---read | 4160 that @code{nntp} should consider as candidates for pre-fetching. For |
4830 articles, for instance. Which articles to pre-fetch is controlled by | 4161 instance, you may wish to pre-fetch all articles with high scores, and |
4831 the @code{gnus-async-prefetch-article-p} variable. This function should | 4162 not pre-fetch low-scored articles. You can do that by setting the |
4832 return non-@code{nil} when the article in question is to be | 4163 @code{gnus-asynchronous-article-function}, which will be called with an |
4833 pre-fetched. The default is @code{gnus-async-read-p}, which returns | 4164 alist where the keys are the article numbers. Your function should |
4834 @code{nil} on read articles. The function is called with an article | 4165 return an alist where the articles you are not interested in have been |
4835 data structure as the only parameter. | 4166 removed. You could also do sorting on article score and the like. |
4836 | |
4837 If, for instance, you wish to pre-fetch only unread articles that are | |
4838 shorter than 100 lines, you could say something like: | |
4839 | |
4840 @lisp | |
4841 (defun my-async-short-unread-p (data) | |
4842 "Return non-nil for short, unread articles." | |
4843 (and (gnus-data-unread-p data) | |
4844 (< (mail-header-lines (gnus-data-header data)) | |
4845 100))) | |
4846 | |
4847 (setq gnus-async-prefetch-article-p 'my-async-short-unread-p) | |
4848 @end lisp | |
4849 | |
4850 These functions will be called many, many times, so they should | |
4851 preferrably be short and sweet to avoid slowing down Gnus too much. | |
4852 It's also probably a good idea to byte-compile things like this. | |
4853 | |
4854 @vindex gnus-prefetched-article-deletion-strategy | |
4855 Articles have to be removed from the asynch buffer sooner or later. The | |
4856 @code{gnus-prefetched-article-deletion-strategy} says when to remove | |
4857 articles. This is a list that may contain the following elements: | |
4858 | |
4859 @table @code | |
4860 @item read | |
4861 Remove articles when they are read. | |
4862 | |
4863 @item exit | |
4864 Remove articles when exiting the group. | |
4865 @end table | |
4866 | |
4867 The default value is @code{(read exit)}. | |
4868 | |
4869 @vindex gnus-use-header-prefetch | |
4870 If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles | |
4871 from the next group. | |
4872 | 4167 |
4873 | 4168 |
4874 @node Article Caching | 4169 @node Article Caching |
4875 @section Article Caching | 4170 @section Article Caching |
4876 @cindex article caching | 4171 @cindex article caching |
5055 @item O f | 4350 @item O f |
5056 @kindex O f (Summary) | 4351 @kindex O f (Summary) |
5057 @findex gnus-summary-save-article-file | 4352 @findex gnus-summary-save-article-file |
5058 Save the current article in plain file format | 4353 Save the current article in plain file format |
5059 (@code{gnus-summary-save-article-file}). | 4354 (@code{gnus-summary-save-article-file}). |
5060 | |
5061 @item O F | |
5062 @kindex O F (Summary) | |
5063 @findex gnus-summary-write-article-file | |
5064 Write the current article in plain file format, overwriting any previous | |
5065 file contents (@code{gnus-summary-write-article-file}). | |
5066 | 4355 |
5067 @item O b | 4356 @item O b |
5068 @kindex O b (Summary) | 4357 @kindex O b (Summary) |
5069 @findex gnus-summary-save-article-body-file | 4358 @findex gnus-summary-save-article-body-file |
5070 Save the current article body in plain file format | 4359 Save the current article body in plain file format |
5172 | 4461 |
5173 @table @code | 4462 @table @code |
5174 | 4463 |
5175 @item gnus-Numeric-save-name | 4464 @item gnus-Numeric-save-name |
5176 @findex gnus-Numeric-save-name | 4465 @findex gnus-Numeric-save-name |
5177 File names like @file{~/News/Alt.andrea-dworkin/45}. | 4466 Generates file names that look like @file{~/News/Alt.andrea-dworkin/45}. |
5178 | 4467 |
5179 @item gnus-numeric-save-name | 4468 @item gnus-numeric-save-name |
5180 @findex gnus-numeric-save-name | 4469 @findex gnus-numeric-save-name |
5181 File names like @file{~/News/alt.andrea-dworkin/45}. | 4470 Generates file names that look like @file{~/News/alt.andrea-dworkin/45}. |
5182 | 4471 |
5183 @item gnus-Plain-save-name | 4472 @item gnus-Plain-save-name |
5184 @findex gnus-Plain-save-name | 4473 @findex gnus-Plain-save-name |
5185 File names like @file{~/News/Alt.andrea-dworkin}. | 4474 Generates file names that look like @file{~/News/Alt.andrea-dworkin}. |
5186 | 4475 |
5187 @item gnus-plain-save-name | 4476 @item gnus-plain-save-name |
5188 @findex gnus-plain-save-name | 4477 @findex gnus-plain-save-name |
5189 File names like @file{~/News/alt.andrea-dworkin}. | 4478 Generates file names that look like @file{~/News/alt.andrea-dworkin}. |
5190 @end table | 4479 @end table |
5191 | 4480 |
5192 @vindex gnus-split-methods | 4481 @vindex gnus-split-methods |
5193 You can have Gnus suggest where to save articles by plonking a regexp into | 4482 You can have Gnus suggest where to save articles by plonking a regexp into |
5194 the @code{gnus-split-methods} alist. For instance, if you would like to | 4483 the @code{gnus-split-methods} alist. For instance, if you would like to |
5433 @cindex sox | 4722 @cindex sox |
5434 This variable is consulted first when viewing files. If you wish to use, | 4723 This variable is consulted first when viewing files. If you wish to use, |
5435 for instance, @code{sox} to convert an @samp{.au} sound file, you could | 4724 for instance, @code{sox} to convert an @samp{.au} sound file, you could |
5436 say something like: | 4725 say something like: |
5437 @lisp | 4726 @lisp |
5438 (setq gnus-uu-user-view-rules | 4727 (setq gnus-uu-user-view-rules |
5439 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\"))) | 4728 (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\"))) |
5440 @end lisp | 4729 @end lisp |
5441 | 4730 |
5442 @item gnus-uu-user-view-rules-end | 4731 @item gnus-uu-user-view-rules-end |
5443 @vindex gnus-uu-user-view-rules-end | 4732 @vindex gnus-uu-user-view-rules-end |
5444 This variable is consulted if Gnus couldn't make any matches from the | 4733 This variable is consulted if Gnus couldn't make any matches from the |
5471 | 4760 |
5472 @item gnus-uu-grab-move | 4761 @item gnus-uu-grab-move |
5473 @findex gnus-uu-grab-move | 4762 @findex gnus-uu-grab-move |
5474 Move the file (if you're using a saving function.) | 4763 Move the file (if you're using a saving function.) |
5475 @end table | 4764 @end table |
5476 | |
5477 @item gnus-uu-be-dangerous | |
5478 @vindex gnus-uu-be-dangerous | |
5479 Specifies what to do if unusual situations arise during decoding. If | |
5480 @code{nil}, be as conservative as possible. If @code{t}, ignore things | |
5481 that didn't work, and overwrite existing files. Otherwise, ask each | |
5482 time. | |
5483 | 4765 |
5484 @item gnus-uu-ignore-files-by-name | 4766 @item gnus-uu-ignore-files-by-name |
5485 @vindex gnus-uu-ignore-files-by-name | 4767 @vindex gnus-uu-ignore-files-by-name |
5486 Files with name matching this regular expression won't be viewed. | 4768 Files with name matching this regular expression won't be viewed. |
5487 | 4769 |
5639 writing, so there are tons of functions and variables to make reading | 4921 writing, so there are tons of functions and variables to make reading |
5640 these articles easier. | 4922 these articles easier. |
5641 | 4923 |
5642 @menu | 4924 @menu |
5643 * Article Highlighting:: You want to make the article look like fruit salad. | 4925 * Article Highlighting:: You want to make the article look like fruit salad. |
5644 * Article Fontisizing:: Making emphasized text look niced. | |
5645 * Article Hiding:: You also want to make certain info go away. | 4926 * Article Hiding:: You also want to make certain info go away. |
5646 * Article Washing:: Lots of way-neat functions to make life better. | 4927 * Article Washing:: Lots of way-neat functions to make life better. |
5647 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. | 4928 * Article Buttons:: Click on URLs, Message-IDs, addresses and the like. |
5648 * Article Date:: Grumble, UT! | 4929 * Article Date:: Grumble, UT! |
5649 * Article Signature:: What is a signature? | |
5650 @end menu | 4930 @end menu |
5651 | 4931 |
5652 | 4932 |
5653 @node Article Highlighting | 4933 @node Article Highlighting |
5654 @subsection Article Highlighting | 4934 @subsection Article Highlighting |
5739 @kindex W H s (Summary) | 5019 @kindex W H s (Summary) |
5740 @vindex gnus-signature-separator | 5020 @vindex gnus-signature-separator |
5741 @vindex gnus-signature-face | 5021 @vindex gnus-signature-face |
5742 @findex gnus-article-highlight-signature | 5022 @findex gnus-article-highlight-signature |
5743 Highlight the signature (@code{gnus-article-highlight-signature}). | 5023 Highlight the signature (@code{gnus-article-highlight-signature}). |
5744 Everything after @code{gnus-signature-separator} (@pxref{Article | 5024 Everything after @code{gnus-signature-separator} in an article will be |
5745 Signature}) in an article will be considered a signature and will be | 5025 considered a signature and will be highlighted with |
5746 highlighted with @code{gnus-signature-face}, which is @code{italic} by | 5026 @code{gnus-signature-face}, which is @code{italic} by default. |
5747 default. | 5027 |
5748 | 5028 @end table |
5749 @end table | |
5750 | |
5751 | |
5752 @node Article Fontisizing | |
5753 @subsection Article Fontisizing | |
5754 @cindex emphasis | |
5755 @cindex article emphasis | |
5756 | |
5757 @findex gnus-article-emphasize | |
5758 @kindex W e (Summary) | |
5759 People commonly add emphasis to words in news articles by writing things | |
5760 like @samp{_this_} or @samp{*this*}. Gnus can make this look nicer by | |
5761 running the article through the @kbd{W e} | |
5762 (@code{gnus-article-emphasize}) command. | |
5763 | |
5764 @vindex gnus-article-emphasis | |
5765 How the emphasis is computed is controlled by the | |
5766 @code{gnus-article-emphasis} variable. This is an alist where the first | |
5767 element is a regular expression to be matched. The second is a number | |
5768 that says what regular expression grouping used to find the entire | |
5769 emphasized word. The third is a number that says what regexp grouping | |
5770 should be displayed and highlighted. (The text between these two | |
5771 groupings will be hidden.) The fourth is the face used for | |
5772 highlighting. | |
5773 | |
5774 @lisp | |
5775 (setq gnus-article-emphasis | |
5776 '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline) | |
5777 ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold))) | |
5778 @end lisp | |
5779 | |
5780 @vindex gnus-emphasis-underline | |
5781 @vindex gnus-emphasis-bold | |
5782 @vindex gnus-emphasis-italic | |
5783 @vindex gnus-emphasis-underline-bold | |
5784 @vindex gnus-emphasis-underline-italic | |
5785 @vindex gnus-emphasis-bold-italic | |
5786 @vindex gnus-emphasis-underline-bold-italic | |
5787 By default, there are seven rules, and they use the following faces: | |
5788 @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, | |
5789 @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, | |
5790 @code{gnus-emphasis-underline-italic}, | |
5791 @code{gnus-emphasis-undeline-bold}, and | |
5792 @code{gnus-emphasis-underline-bold-italic}. | |
5793 | |
5794 If you want to change these faces, you can either use @kbd{M-x | |
5795 customize}, or you can use @code{copy-face}. For instance, if you want | |
5796 to make @code{gnus-emphasis-italic} use a red face instead, you could | |
5797 say something like: | |
5798 | |
5799 @lisp | |
5800 (copy-face 'red 'gnus-emphasis-italic) | |
5801 @end lisp | |
5802 | 5029 |
5803 | 5030 |
5804 @node Article Hiding | 5031 @node Article Hiding |
5805 @subsection Article Hiding | 5032 @subsection Article Hiding |
5806 @cindex article hiding | 5033 @cindex article hiding |
5828 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. | 5055 (@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. |
5829 | 5056 |
5830 @item W W s | 5057 @item W W s |
5831 @kindex W W s (Summary) | 5058 @kindex W W s (Summary) |
5832 @findex gnus-article-hide-signature | 5059 @findex gnus-article-hide-signature |
5833 Hide signature (@code{gnus-article-hide-signature}). @xref{Article | 5060 Hide signature (@code{gnus-article-hide-signature}). |
5834 Signature}. | |
5835 | 5061 |
5836 @item W W p | 5062 @item W W p |
5837 @kindex W W p (Summary) | 5063 @kindex W W p (Summary) |
5838 @findex gnus-article-hide-pgp | 5064 @findex gnus-article-hide-pgp |
5839 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). | 5065 Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). |
5840 | 5066 |
5841 @item W W P | 5067 @item W W P |
5842 @kindex W W P (Summary) | 5068 @kindex W W P (Summary) |
5843 @findex gnus-article-hide-pem | 5069 @findex gnus-article-hide-pem |
5844 Hide @sc{pem} (privacy enhanced messages) gruft | 5070 Hide @sc{pem} (privacy enhavnced hessages) gruft |
5845 (@code{gnus-article-hide-pem}). | 5071 (@code{gnus-article-hide-pem}). |
5846 | 5072 |
5847 @item W W c | 5073 @item W W c |
5848 @kindex W W c (Summary) | 5074 @kindex W W c (Summary) |
5849 @findex gnus-article-hide-citation | 5075 @findex gnus-article-hide-citation |
5864 | 5090 |
5865 @item gnus-cited-text-button-line-format | 5091 @item gnus-cited-text-button-line-format |
5866 @vindex gnus-cited-text-button-line-format | 5092 @vindex gnus-cited-text-button-line-format |
5867 Gnus adds buttons show where the cited text has been hidden, and to | 5093 Gnus adds buttons show where the cited text has been hidden, and to |
5868 allow toggle hiding the text. The format of the variable is specified | 5094 allow toggle hiding the text. The format of the variable is specified |
5869 by this format-like variable (@pxref{Formatting Variables}). These | 5095 by this format-like variable. These specs are legal: |
5870 specs are legal: | |
5871 | 5096 |
5872 @table @samp | 5097 @table @samp |
5873 @item b | 5098 @item b |
5874 Start point of the hidden text. | 5099 Start point of the hidden text. |
5875 @item e | 5100 @item e |
5899 hidden. If you give a positive prefix, they will always hide. | 5124 hidden. If you give a positive prefix, they will always hide. |
5900 | 5125 |
5901 Also @pxref{Article Highlighting} for further variables for | 5126 Also @pxref{Article Highlighting} for further variables for |
5902 citation customization. | 5127 citation customization. |
5903 | 5128 |
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 | |
5904 | 5137 |
5905 @node Article Washing | 5138 @node Article Washing |
5906 @subsection Article Washing | 5139 @subsection Article Washing |
5907 @cindex washing | 5140 @cindex washing |
5908 @cindex article washing | 5141 @cindex article washing |
5956 @findex gnus-article-fill-cited-article | 5189 @findex gnus-article-fill-cited-article |
5957 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this | 5190 Do word wrap (@code{gnus-article-fill-cited-article}). If you use this |
5958 function in @code{gnus-article-display-hook}, it should be run fairly | 5191 function in @code{gnus-article-display-hook}, it should be run fairly |
5959 late and certainly after any highlighting. | 5192 late and certainly after any highlighting. |
5960 | 5193 |
5961 You can give the command a numerical prefix to specify the width to use | |
5962 when filling. | |
5963 | |
5964 @item W c | 5194 @item W c |
5965 @kindex W c (Summary) | 5195 @kindex W c (Summary) |
5966 @findex gnus-article-remove-cr | 5196 @findex gnus-article-remove-cr |
5967 Remove CR (@code{gnus-article-remove-cr}). | 5197 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}). | |
5968 | 5204 |
5969 @item W q | 5205 @item W q |
5970 @kindex W q (Summary) | 5206 @kindex W q (Summary) |
5971 @findex gnus-article-de-quoted-unreadable | 5207 @findex gnus-article-de-quoted-unreadable |
5972 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). | 5208 Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). |
6003 @kindex W B (Summary) | 5239 @kindex W B (Summary) |
6004 @findex gnus-article-add-buttons-to-head | 5240 @findex gnus-article-add-buttons-to-head |
6005 Add clickable buttons to the article headers | 5241 Add clickable buttons to the article headers |
6006 (@code{gnus-article-add-buttons-to-head}). | 5242 (@code{gnus-article-add-buttons-to-head}). |
6007 | 5243 |
6008 @item W E l | |
6009 @kindex W E l (Summary) | |
6010 @findex gnus-article-strip-leading-blank-lines | |
6011 Remove all blank lines from the beginning of the article | |
6012 (@code{gnus-article-strip-leading-blank-lines}). | |
6013 | |
6014 @item W E m | |
6015 @kindex W E m (Summary) | |
6016 @findex gnus-article-strip-multiple-blank-lines | |
6017 Replace all blank lines with empty lines and then all multiple empty | |
6018 lines with a single empty line. | |
6019 (@code{gnus-article-strip-multiple-blank-lines}). | |
6020 | |
6021 @item W E t | |
6022 @kindex W E t (Summary) | |
6023 @findex gnus-article-remove-trailing-blank-lines | |
6024 Remove all blank lines at the end of the article | |
6025 (@code{gnus-article-remove-trailing-blank-lines}). | |
6026 | |
6027 @item W E a | |
6028 @kindex W E a (Summary) | |
6029 @findex gnus-article-strip-blank-lines | |
6030 Do all the three commands above | |
6031 (@code{gnus-article-strip-blank-lines}). | |
6032 | |
6033 @item W E s | |
6034 @kindex W E s (Summary) | |
6035 @findex gnus-article-strip-leading-space | |
6036 Remove all white space from the beginning of all lines of the article | |
6037 body (@code{gnus-article-strip-leading-space}). | |
6038 | |
6039 @end table | 5244 @end table |
6040 | 5245 |
6041 | 5246 |
6042 @node Article Buttons | 5247 @node Article Buttons |
6043 @subsection Article Buttons | 5248 @subsection Article Buttons |
6070 @samp{<URL:\\([^\n\r>]*\\)>}. | 5275 @samp{<URL:\\([^\n\r>]*\\)>}. |
6071 | 5276 |
6072 @item button-par | 5277 @item button-par |
6073 Gnus has to know which parts of the match is to be highlighted. This is | 5278 Gnus has to know which parts of the match is to be highlighted. This is |
6074 a number that says what sub-expression of the regexp that is to be | 5279 a number that says what sub-expression of the regexp that is to be |
6075 highlighted. If you want it all highlighted, you use 0 here. | 5280 highlighted. If you want it all highlighted, you use @code{0} here. |
6076 | 5281 |
6077 @item use-p | 5282 @item use-p |
6078 This form will be @code{eval}ed, and if the result is non-@code{nil}, | 5283 This form will be @code{eval}ed, and if the result is non-@code{nil}, |
6079 this is considered a match. This is useful if you want extra sifting to | 5284 this is considered a match. This is useful if you want extra sifting to |
6080 avoid false matches. | 5285 avoid false matches. |
6111 A regular expression that matches embedded URLs. It is used in the | 5316 A regular expression that matches embedded URLs. It is used in the |
6112 default values of the variables above. | 5317 default values of the variables above. |
6113 | 5318 |
6114 @item gnus-article-button-face | 5319 @item gnus-article-button-face |
6115 @vindex gnus-article-button-face | 5320 @vindex gnus-article-button-face |
6116 Face used on buttons. | 5321 Face used on bottons. |
6117 | 5322 |
6118 @item gnus-article-mouse-face | 5323 @item gnus-article-mouse-face |
6119 @vindex gnus-article-mouse-face | 5324 @vindex gnus-article-mouse-face |
6120 Face is used when the mouse cursor is over a button. | 5325 Face is used when the mouse cursor is over a button. |
6121 | 5326 |
6139 | 5344 |
6140 @item W T l | 5345 @item W T l |
6141 @kindex W T l (Summary) | 5346 @kindex W T l (Summary) |
6142 @findex gnus-article-date-local | 5347 @findex gnus-article-date-local |
6143 Display the date in the local timezone (@code{gnus-article-date-local}). | 5348 Display the date in the local timezone (@code{gnus-article-date-local}). |
6144 | |
6145 @item W T s | |
6146 @kindex W T s (Summary) | |
6147 @vindex gnus-article-time-format | |
6148 @findex gnus-article-date-user | |
6149 @findex format-time-string | |
6150 Display the date using a user-defined format | |
6151 (@code{gnus-article-date-user}). The format is specified by the | |
6152 @code{gnus-article-time-format} variable, and is a string that's passed | |
6153 to @code{format-time-string}. See the documentation of that variable | |
6154 for a list possible format specs. | |
6155 | 5349 |
6156 @item W T e | 5350 @item W T e |
6157 @kindex W T e (Summary) | 5351 @kindex W T e (Summary) |
6158 @findex gnus-article-date-lapsed | 5352 @findex gnus-article-date-lapsed |
6159 Say how much time has (e)lapsed between the article was posted and now | 5353 Say how much time has (e)lapsed between the article was posted and now |
6169 @emph{totally} impossible. Don't you trust me? *titter* | 5363 @emph{totally} impossible. Don't you trust me? *titter* |
6170 | 5364 |
6171 @end table | 5365 @end table |
6172 | 5366 |
6173 | 5367 |
6174 @node Article Signature | |
6175 @subsection Article Signature | |
6176 @cindex signatures | |
6177 @cindex article signature | |
6178 | |
6179 @vindex gnus-signature-separator | |
6180 Each article is divided into two parts---the head and the body. The | |
6181 body can be divided into a signature part and a text part. The variable | |
6182 that says what is to be considered a signature is | |
6183 @code{gnus-signature-separator}. This is normally the standard | |
6184 @samp{^-- $} as mandated by son-of-RFC 1036. However, many people use | |
6185 non-standard signature separators, so this variable can also be a list | |
6186 of regular expressions to be tested, one by one. (Searches are done | |
6187 from the end of the body towards the beginning.) One likely value is: | |
6188 | |
6189 @lisp | |
6190 (setq gnus-signature-separator | |
6191 '("^-- $" ; The standard | |
6192 "^-- *$" ; A common mangling | |
6193 "^-------*$" ; Many people just use a looong | |
6194 ; line of dashes. Shame! | |
6195 "^ *--------*$" ; Double-shame! | |
6196 "^________*$" ; Underscores are also popular | |
6197 "^========*$")) ; Pervert! | |
6198 @end lisp | |
6199 | |
6200 The more permissive you are, the more likely it is that you'll get false | |
6201 positives. | |
6202 | |
6203 @vindex gnus-signature-limit | |
6204 @code{gnus-signature-limit} provides a limit to what is considered a | |
6205 signature. | |
6206 | |
6207 @enumerate | |
6208 @item | |
6209 If it is an integer, no signature may be longer (in characters) than | |
6210 that integer. | |
6211 @item | |
6212 If it is a floating point number, no signature may be longer (in lines) | |
6213 than that number. | |
6214 @item | |
6215 If it is a function, the function will be called without any parameters, | |
6216 and if it returns @code{nil}, there is no signature in the buffer. | |
6217 @item | |
6218 If it is a string, it will be used as a regexp. If it matches, the text | |
6219 in question is not a signature. | |
6220 @end enumerate | |
6221 | |
6222 This variable can also be a list where the elements may be of the types | |
6223 listed above. | |
6224 | |
6225 | |
6226 @node Article Commands | |
6227 @section Article Commands | |
6228 | |
6229 @table @kbd | |
6230 | |
6231 @item A P | |
6232 @cindex PostScript | |
6233 @cindex printing | |
6234 @kindex A P (Summary) | |
6235 @vindex gnus-ps-print-hook | |
6236 @findex gnus-summary-print-article | |
6237 Generate and print a PostScript image of the article buffer | |
6238 (@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will be | |
6239 run just before printing the buffer. | |
6240 | |
6241 @end table | |
6242 | |
6243 | |
6244 @node Summary Sorting | 5368 @node Summary Sorting |
6245 @section Summary Sorting | 5369 @section Summary Sorting |
6246 @cindex summary sorting | 5370 @cindex summary sorting |
6247 | 5371 |
6248 You can have the summary buffer sorted in various ways, even though I | 5372 You can have the summary buffer sorted in various ways, even though I |
6267 | 5391 |
6268 @item C-c C-s C-d | 5392 @item C-c C-s C-d |
6269 @kindex C-c C-s C-d (Summary) | 5393 @kindex C-c C-s C-d (Summary) |
6270 @findex gnus-summary-sort-by-date | 5394 @findex gnus-summary-sort-by-date |
6271 Sort by date (@code{gnus-summary-sort-by-date}). | 5395 Sort by date (@code{gnus-summary-sort-by-date}). |
6272 | |
6273 @item C-c C-s C-l | |
6274 @kindex C-c C-s C-l (Summary) | |
6275 @findex gnus-summary-sort-by-lines | |
6276 Sort by lines (@code{gnus-summary-sort-by-lines}). | |
6277 | 5396 |
6278 @item C-c C-s C-i | 5397 @item C-c C-s C-i |
6279 @kindex C-c C-s C-i (Summary) | 5398 @kindex C-c C-s C-i (Summary) |
6280 @findex gnus-summary-sort-by-score | 5399 @findex gnus-summary-sort-by-score |
6281 Sort by score (@code{gnus-summary-sort-by-score}). | 5400 Sort by score (@code{gnus-summary-sort-by-score}). |
6303 can just press @kbd{^} or @kbd{A r} | 5422 can just press @kbd{^} or @kbd{A r} |
6304 (@code{gnus-summary-refer-parent-article}). If everything goes well, | 5423 (@code{gnus-summary-refer-parent-article}). If everything goes well, |
6305 you'll get the parent. If the parent is already displayed in the | 5424 you'll get the parent. If the parent is already displayed in the |
6306 summary buffer, point will just move to this article. | 5425 summary buffer, point will just move to this article. |
6307 | 5426 |
6308 If given a positive numerical prefix, fetch that many articles back into | |
6309 the ancestry. If given a negative numerical prefix, fetch just that | |
6310 ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the | |
6311 grandparent and the grandgrandparent of the current article. If you say | |
6312 @kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current | |
6313 article. | |
6314 | |
6315 @findex gnus-summary-refer-references | 5427 @findex gnus-summary-refer-references |
6316 @kindex A R (Summary) | 5428 @kindex A R (Summary) |
6317 You can have Gnus fetch all articles mentioned in the @code{References} | 5429 You can have Gnus fetch all articles mentioned in the @code{References} |
6318 header of the article by pushing @kbd{A R} | 5430 header of the article by pushing @kbd{A R} |
6319 (@code{gnus-summary-refer-references}). | 5431 (@code{gnus-summary-refer-references}). |
6320 | 5432 |
6321 @findex gnus-summary-refer-article | 5433 @findex gnus-summary-refer-article |
6322 @kindex M-^ (Summary) | 5434 @kindex M-^ (Summary) |
6323 @cindex Message-ID | |
6324 @cindex fetching by Message-ID | |
6325 You can also ask the @sc{nntp} server for an arbitrary article, no | 5435 You can also ask the @sc{nntp} server for an arbitrary article, no |
6326 matter what group it belongs to. @kbd{M-^} | 5436 matter what group it belongs to. @kbd{M-^} |
6327 (@code{gnus-summary-refer-article}) will ask you for a | 5437 (@code{gnus-summary-refer-article}) will ask you for a |
6328 @code{Message-ID}, which is one of those long, hard-to-read thingies | 5438 @code{Message-ID}, which is one of those long thingies that look |
6329 that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You | 5439 something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. You have to get |
6330 have to get it all exactly right. No fuzzy searches, I'm afraid. | 5440 it all exactly right. No fuzzy searches, I'm afraid. |
6331 | 5441 |
6332 @vindex gnus-refer-article-method | 5442 @vindex gnus-refer-article-method |
6333 If the group you are reading is located on a backend that does not | 5443 If the group you are reading is located on a backend that does not |
6334 support fetching by @code{Message-ID} very well (like @code{nnspool}), | 5444 support fetching by @code{Message-ID} very well (like @code{nnspool}), |
6335 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It | 5445 you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It |
6375 available. | 5485 available. |
6376 | 5486 |
6377 Here are the available keystrokes when using pick mode: | 5487 Here are the available keystrokes when using pick mode: |
6378 | 5488 |
6379 @table @kbd | 5489 @table @kbd |
6380 @item . | |
6381 @kindex . (Pick) | |
6382 @findex gnus-summary-mark-as-processable | |
6383 Pick the article on the current line | |
6384 (@code{gnus-summary-mark-as-processable}). If given a numerical prefix, | |
6385 go to the article on that line and pick that article. (The line number | |
6386 is normally displayed on the beginning of the summary pick lines.) | |
6387 | |
6388 @item SPACE | 5490 @item SPACE |
6389 @kindex SPACE (Pick) | 5491 @kindex SPACE (Pick) |
6390 @findex gnus-pick-next-page | 5492 @findex gnus-summary-mark-as-processable |
6391 Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If | 5493 Pick the article (@code{gnus-summary-mark-as-processable}). |
6392 at the end of the buffer, start reading the picked articles. | |
6393 | 5494 |
6394 @item u | 5495 @item u |
6395 @kindex u (Pick) | 5496 @kindex u (Pick) |
6396 @findex gnus-summary-unmark-as-processable | 5497 @findex gnus-summary-unmark-as-processable |
6397 Unpick the article (@code{gnus-summary-unmark-as-processable}). | 5498 Unpick the article (@code{gnus-summary-unmark-as-processable}). |
6458 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) | 5559 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) |
6459 @end lisp | 5560 @end lisp |
6460 | 5561 |
6461 @vindex gnus-pick-mode-hook | 5562 @vindex gnus-pick-mode-hook |
6462 @code{gnus-pick-mode-hook} is run in pick minor mode buffers. | 5563 @code{gnus-pick-mode-hook} is run in pick minor mode buffers. |
6463 | |
6464 @vindex gnus-mark-unpicked-articles-as-read | |
6465 If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark | |
6466 all unpicked articles as read. The default is @code{nil}. | |
6467 | |
6468 @vindex gnus-summary-pick-line-format | |
6469 The summary line format in pick mode is slightly different than the | |
6470 standard format. At the beginning of each line the line number is | |
6471 displayed. The pick mode line format is controlled by the | |
6472 @code{gnus-summary-pick-line-format} variable (@pxref{Formatting | |
6473 Variables}). It accepts the same format specs that | |
6474 @code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}). | |
6475 | 5564 |
6476 | 5565 |
6477 @node Binary Groups | 5566 @node Binary Groups |
6478 @subsection Binary Groups | 5567 @subsection Binary Groups |
6479 @cindex binary groups | 5568 @cindex binary groups |
6586 | 5675 |
6587 Here's and example from a horizontal tree buffer: | 5676 Here's and example from a horizontal tree buffer: |
6588 | 5677 |
6589 @example | 5678 @example |
6590 @{***@}-(***)-[odd]-[Gun] | 5679 @{***@}-(***)-[odd]-[Gun] |
6591 | \[Jan] | 5680 | \[Jan] |
6592 | \[odd]-[Eri] | 5681 | \[odd]-[Eri] |
6593 | \(***)-[Eri] | 5682 | \(***)-[Eri] |
6594 | \[odd]-[Paa] | 5683 | \[odd]-[Paa] |
6595 \[Bjo] | 5684 \[Bjo] |
6596 \[Gun] | 5685 \[Gun] |
6597 \[Gun]-[Jor] | 5686 \[Gun]-[Jor] |
6598 @end example | 5687 @end example |
6599 | 5688 |
6631 (@code{gnus-summary-expire-articles}). | 5720 (@code{gnus-summary-expire-articles}). |
6632 | 5721 |
6633 @item B M-C-e | 5722 @item B M-C-e |
6634 @kindex B M-C-e (Summary) | 5723 @kindex B M-C-e (Summary) |
6635 @findex gnus-summary-expire-articles-now | 5724 @findex gnus-summary-expire-articles-now |
6636 Delete all the expirable articles in the group | 5725 Expunge all the expirable articles in the group |
6637 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} | 5726 (@code{gnus-summary-expire-articles-now}). This means that @strong{all} |
6638 articles that are eligible for expiry in the current group will | 5727 articles that are eligible for expiry in the current group will |
6639 disappear forever into that big @file{/dev/null} in the sky. | 5728 disappear forever into that big @file{/dev/null} in the sky. |
6640 | 5729 |
6641 @item B DEL | 5730 @item B DEL |
6677 | 5766 |
6678 @item B r | 5767 @item B r |
6679 @kindex B r (Summary) | 5768 @kindex B r (Summary) |
6680 @findex gnus-summary-respool-article | 5769 @findex gnus-summary-respool-article |
6681 Respool the mail article (@code{gnus-summary-move-article}). | 5770 Respool the mail article (@code{gnus-summary-move-article}). |
6682 @code{gnus-summary-respool-default-method} will be used as the default | |
6683 select method when respooling. This variable is @code{nil} by default, | |
6684 which means that the current group select method will be used instead. | |
6685 | 5771 |
6686 @item B w | 5772 @item B w |
6687 @itemx e | 5773 @itemx e |
6688 @kindex B w (Summary) | 5774 @kindex B w (Summary) |
6689 @kindex e (Summary) | 5775 @kindex e (Summary) |
6697 @kindex B q (Summary) | 5783 @kindex B q (Summary) |
6698 @findex gnus-summary-respool-query | 5784 @findex gnus-summary-respool-query |
6699 If you want to re-spool an article, you might be curious as to what group | 5785 If you want to re-spool an article, you might be curious as to what group |
6700 the article will end up in before you do the re-spooling. This command | 5786 the article will end up in before you do the re-spooling. This command |
6701 will tell you (@code{gnus-summary-respool-query}). | 5787 will tell you (@code{gnus-summary-respool-query}). |
6702 | |
6703 @item B p | |
6704 @kindex B p (Summary) | |
6705 @findex gnus-summary-article-posted-p | |
6706 Some people have a tendency to send you "courtesy" copies when they | |
6707 follow up to articles you have posted. These usually have a | |
6708 @code{Newsgroups} header in them, but not always. This command | |
6709 (@code{gnus-summary-article-posted-p}) will try to fetch the current | |
6710 article from your news server (or rather, from | |
6711 @code{gnus-refer-article-method} or @code{gnus-select-method}) and will | |
6712 report back whether it found the article or not. Even if it says that | |
6713 it didn't find the article, it may have been posted anyway---mail | |
6714 propagation is much faster than news propagation, and the news copy may | |
6715 just not have arrived yet. | |
6716 | |
6717 @end table | 5788 @end table |
6718 | 5789 |
6719 @vindex gnus-move-split-methods | 5790 @vindex gnus-move-split-methods |
6720 @cindex moving articles | 5791 @cindex moving articles |
6721 If you move (or copy) articles regularly, you might wish to have Gnus | 5792 If you move (or copy) articles regularly, you might wish to have Gnus |
6722 suggest where to put the articles. @code{gnus-move-split-methods} is a | 5793 suggest where to put the articles. @code{gnus-move-split-methods} is a |
6723 variable that uses the same syntax as @code{gnus-split-methods} | 5794 variable that uses the same syntax as @code{gnus-split-methods} |
6724 (@pxref{Saving Articles}). You may customize that variable to create | 5795 (@pxref{Saving Articles}). You may customize that variable to create |
6725 suggestions you find reasonable. | 5796 suggestions you find reasonable. |
6726 | 5797 |
6727 @lisp | |
6728 (setq gnus-move-split-methods | |
6729 '(("^From:.*Lars Magne" "nnml:junk") | |
6730 ("^Subject:.*gnus" "nnfolder:important") | |
6731 (".*" "nnml:misc"))) | |
6732 @end lisp | |
6733 | |
6734 | 5798 |
6735 @node Various Summary Stuff | 5799 @node Various Summary Stuff |
6736 @section Various Summary Stuff | 5800 @section Various Summary Stuff |
6737 | 5801 |
6738 @menu | 5802 @menu |
6739 * Summary Group Information:: Information oriented commands. | 5803 * Summary Group Information:: Information oriented commands. |
6740 * Searching for Articles:: Multiple article commands. | 5804 * Searching for Articles:: Multiple article commands. |
6741 * Summary Generation Commands:: (Re)generating the summary buffer. | |
6742 * Really Various Summary Commands:: Those pesky non-conformant commands. | 5805 * Really Various Summary Commands:: Those pesky non-conformant commands. |
6743 @end menu | 5806 @end menu |
6744 | 5807 |
6745 @table @code | 5808 @table @code |
6746 @vindex gnus-summary-mode-hook | 5809 @vindex gnus-summary-mode-hook |
6758 @vindex gnus-summary-prepare-hook | 5821 @vindex gnus-summary-prepare-hook |
6759 @item gnus-summary-prepare-hook | 5822 @item gnus-summary-prepare-hook |
6760 Is is called after the summary buffer has been generated. You might use | 5823 Is is called after the summary buffer has been generated. You might use |
6761 it to, for instance, highlight lines or modify the look of the buffer in | 5824 it to, for instance, highlight lines or modify the look of the buffer in |
6762 some other ungodly manner. I don't care. | 5825 some other ungodly manner. I don't care. |
6763 | |
6764 @vindex gnus-summary-ignore-duplicates | |
6765 @item gnus-summary-ignore-duplicates | |
6766 When Gnus discovers two articles that have the same @code{Message-ID}, | |
6767 it has to do something drastic. No articles are allowed to have the | |
6768 same @code{Message-ID}, but this may happen when reading mail from some | |
6769 sources. Gnus allows you to customize what happens with this variable. | |
6770 If it is @code{nil} (which is the default), Gnus will rename the | |
6771 @code{Message-ID} (for display purposes only) and display the article as | |
6772 any other article. If this variable is @code{t}, it won't display the | |
6773 article---it'll be as if it never existed. | |
6774 | 5826 |
6775 @end table | 5827 @end table |
6776 | 5828 |
6777 | 5829 |
6778 @node Summary Group Information | 5830 @node Summary Group Information |
6800 rereading the description from the server. | 5852 rereading the description from the server. |
6801 | 5853 |
6802 @item H h | 5854 @item H h |
6803 @kindex H h (Summary) | 5855 @kindex H h (Summary) |
6804 @findex gnus-summary-describe-briefly | 5856 @findex gnus-summary-describe-briefly |
6805 Give an extremely brief description of the most important summary | 5857 Give a very brief description of the most important summary keystrokes |
6806 keystrokes (@code{gnus-summary-describe-briefly}). | 5858 (@code{gnus-summary-describe-briefly}). |
6807 | 5859 |
6808 @item H i | 5860 @item H i |
6809 @kindex H i (Summary) | 5861 @kindex H i (Summary) |
6810 @findex gnus-info-find-node | 5862 @findex gnus-info-find-node |
6811 Go to the Gnus info node (@code{gnus-info-find-node}). | 5863 Go to the Gnus info node (@code{gnus-info-find-node}). |
6841 @findex gnus-summary-universal-argument | 5893 @findex gnus-summary-universal-argument |
6842 Perform any operation on all articles that have been marked with | 5894 Perform any operation on all articles that have been marked with |
6843 the process mark (@code{gnus-summary-universal-argument}). | 5895 the process mark (@code{gnus-summary-universal-argument}). |
6844 @end table | 5896 @end table |
6845 | 5897 |
6846 @node Summary Generation Commands | |
6847 @subsection Summary Generation Commands | |
6848 | |
6849 @table @kbd | |
6850 | |
6851 @item Y g | |
6852 @kindex Y g (Summary) | |
6853 @findex gnus-summary-prepare | |
6854 Regenerate the current summary buffer (@code{gnus-summary-prepare}). | |
6855 | |
6856 @item Y c | |
6857 @kindex Y c (Summary) | |
6858 @findex gnus-summary-insert-cached-articles | |
6859 Pull all cached articles (for the current group) into the summary buffer | |
6860 (@code{gnus-summary-insert-cached-articles}). | |
6861 | |
6862 @end table | |
6863 | |
6864 | 5898 |
6865 @node Really Various Summary Commands | 5899 @node Really Various Summary Commands |
6866 @subsection Really Various Summary Commands | 5900 @subsection Really Various Summary Commands |
6867 | 5901 |
6868 @table @kbd | 5902 @table @kbd |
6869 | 5903 |
6870 @item C-d | 5904 @item A D |
6871 @kindex C-d (Summary) | 5905 @kindex A D (Summary) |
6872 @findex gnus-summary-enter-digest-group | 5906 @findex gnus-summary-enter-digest-group |
6873 If the current article is a collection of other articles (for instance, | 5907 If the current article is a collection of other articles (for instance, |
6874 a digest), you might use this command to enter a group based on the that | 5908 a digest), you might use this command to enter a group based on the that |
6875 article (@code{gnus-summary-enter-digest-group}). Gnus will try to | 5909 article (@code{gnus-summary-enter-digest-group}). Gnus will try to |
6876 guess what article type is currently displayed unless you give a prefix | 5910 guess what article type is currently displayed unless you give a prefix |
6877 to this command, which forces a ``digest'' interpretation. Basically, | 5911 to this command, which forces a ``digest'' interpretation. Basically, |
6878 whenever you see a message that is a collection of other messages on | 5912 whenever you see a message that is a collection of other messages on |
6879 some format, you @kbd{C-d} and read these messages in a more convenient | 5913 some format, you @kbd{A D} and read these messages in a more convenient |
6880 fashion. | 5914 fashion. |
6881 | |
6882 @item M-C-d | |
6883 @kindex M-C-d (Summary) | |
6884 @findex gnus-summary-read-document | |
6885 This command is very similar to the one above, but lets you gather | |
6886 several documents into one biiig group | |
6887 (@code{gnus-summary-read-document}). It does this by opening several | |
6888 @code{nndoc} groups for each document, and then opening an | |
6889 @code{nnvirtual} group on top of these @code{nndoc} groups. This | |
6890 command understands the process/prefix convention | |
6891 (@pxref{Process/Prefix}). | |
6892 | 5915 |
6893 @item C-t | 5916 @item C-t |
6894 @kindex C-t (Summary) | 5917 @kindex C-t (Summary) |
6895 @findex gnus-summary-toggle-truncation | 5918 @findex gnus-summary-toggle-truncation |
6896 Toggle truncation of summary lines | 5919 Toggle truncation of summary lines (@code{gnus-summary-toggle-truncation}). |
6897 (@code{gnus-summary-toggle-truncation}). This will probably confuse the | |
6898 line centering function in the summary buffer, so it's not a good idea | |
6899 to have truncation switched off while reading articles. | |
6900 | 5920 |
6901 @item = | 5921 @item = |
6902 @kindex = (Summary) | 5922 @kindex = (Summary) |
6903 @findex gnus-summary-expand-window | 5923 @findex gnus-summary-expand-window |
6904 Expand the summary buffer window (@code{gnus-summary-expand-window}). | 5924 Expand the summary buffer window (@code{gnus-summary-expand-window}). |
6905 If given a prefix, force an @code{article} window configuration. | 5925 If given a prefix, force an @code{article} window configuration. |
6906 | |
6907 @end table | 5926 @end table |
6908 | 5927 |
6909 | 5928 |
6910 @node Exiting the Summary Buffer | 5929 @node Exiting the Summary Buffer |
6911 @section Exiting the Summary Buffer | 5930 @section Exiting the Summary Buffer |
6927 Exit the current group and update all information on the group | 5946 Exit the current group and update all information on the group |
6928 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is | 5947 (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is |
6929 called before doing much of the exiting, and calls | 5948 called before doing much of the exiting, and calls |
6930 @code{gnus-summary-expire-articles} by default. | 5949 @code{gnus-summary-expire-articles} by default. |
6931 @code{gnus-summary-exit-hook} is called after finishing the exiting | 5950 @code{gnus-summary-exit-hook} is called after finishing the exiting |
6932 process. @code{gnus-group-no-more-groups-hook} is run when returning to | 5951 process. |
6933 group mode having no more (unread) groups. | |
6934 | 5952 |
6935 @item Z E | 5953 @item Z E |
6936 @itemx Q | 5954 @itemx Q |
6937 @kindex Z E (Summary) | 5955 @kindex Z E (Summary) |
6938 @kindex Q (Summary) | 5956 @kindex Q (Summary) |
6985 @item Z P | 6003 @item Z P |
6986 @kindex Z P (Summary) | 6004 @kindex Z P (Summary) |
6987 @findex gnus-summary-prev-group | 6005 @findex gnus-summary-prev-group |
6988 Exit the group and go to the previous group | 6006 Exit the group and go to the previous group |
6989 (@code{gnus-summary-prev-group}). | 6007 (@code{gnus-summary-prev-group}). |
6990 | |
6991 @item Z s | |
6992 @kindex Z s (Summary) | |
6993 @findex gnus-summary-save-newsrc | |
6994 Save the current number of read/marked articles in the dribble buffer | |
6995 and then save the dribble buffer (@code{gnus-summary-save-newsrc}). If | |
6996 given a prefix, also save the @file{.newsrc} file(s). Using this | |
6997 command will make exit without updating (the @kbd{Q} command) worthless. | |
6998 @end table | 6008 @end table |
6999 | 6009 |
7000 @vindex gnus-exit-group-hook | 6010 @vindex gnus-exit-group-hook |
7001 @code{gnus-exit-group-hook} is called when you exit the current | 6011 @code{gnus-exit-group-hook} is called when you exit the current |
7002 group. | 6012 group. |
7022 summary buffer. If the @code{gnus-use-cross-reference} variable is | 6032 summary buffer. If the @code{gnus-use-cross-reference} variable is |
7023 @code{t} (which is the default), articles that are cross-referenced to | 6033 @code{t} (which is the default), articles that are cross-referenced to |
7024 this group and are marked as read, will also be marked as read in the | 6034 this group and are marked as read, will also be marked as read in the |
7025 other subscribed groups they were cross-posted to. If this variable is | 6035 other subscribed groups they were cross-posted to. If this variable is |
7026 neither @code{nil} nor @code{t}, the article will be marked as read in | 6036 neither @code{nil} nor @code{t}, the article will be marked as read in |
7027 both subscribed and unsubscribed groups (@pxref{Crosspost Handling}). | 6037 both subscribed and unsubscribed groups. |
7028 | |
7029 | |
7030 @node Crosspost Handling | |
7031 @section Crosspost Handling | |
7032 | 6038 |
7033 @cindex velveeta | 6039 @cindex velveeta |
7034 @cindex spamming | 6040 @cindex spamming |
7035 Marking cross-posted articles as read ensures that you'll never have to | 6041 Marking cross-posted articles as read ensures that you'll never have to |
7036 read the same article more than once. Unless, of course, somebody has | 6042 read the same article more than once. Unless, of course, somebody has |
7037 posted it to several groups separately. Posting the same article to | 6043 posted it to several groups separately. Posting the same article to |
7038 several groups (not cross-posting) is called @dfn{spamming}, and you are | 6044 several groups (not cross-posting) is called @dfn{spamming}, and you are |
7039 by law required to send nasty-grams to anyone who perpetrates such a | 6045 by law required to send nasty-grams to anyone who perpetrates such a |
7040 heinous crime. You may want to try NoCeM handling to filter out spam | 6046 heinous crime. |
7041 (@pxref{NoCeM}). | |
7042 | 6047 |
7043 Remember: Cross-posting is kinda ok, but posting the same article | 6048 Remember: Cross-posting is kinda ok, but posting the same article |
7044 separately to several groups is not. Massive cross-posting (aka. | 6049 separately to several groups is not. Massive cross-posting (aka. |
7045 @dfn{velveeta}) is to be avoided at all costs, and you can even use the | 6050 @dfn{velveeta}) is to be avoided. |
7046 @code{gnus-summary-mail-crosspost-complaint} command to complain about | |
7047 excessive crossposting (@pxref{Summary Mail Commands}). | |
7048 | 6051 |
7049 @cindex cross-posting | 6052 @cindex cross-posting |
7050 @cindex Xref | 6053 @cindex Xref |
7051 @cindex @sc{nov} | 6054 @cindex @sc{nov} |
7052 One thing that may cause Gnus to not do the cross-posting thing | 6055 One thing that may cause Gnus to not do the cross-posting thing |
7075 set @code{gnus-nov-is-evil} to @code{t}, which slows things down | 6078 set @code{gnus-nov-is-evil} to @code{t}, which slows things down |
7076 considerably. | 6079 considerably. |
7077 | 6080 |
7078 C'est la vie. | 6081 C'est la vie. |
7079 | 6082 |
7080 For an alternative approach, @pxref{Duplicate Suppression}. | |
7081 | |
7082 | |
7083 @node Duplicate Suppression | |
7084 @section Duplicate Suppression | |
7085 | |
7086 By default, Gnus tries to make sure that you don't have to read the same | |
7087 article more than once by utilizing the crossposting mechanism | |
7088 (@pxref{Crosspost Handling}). However, that simple and efficient | |
7089 approach may not work satisfactorily for some users for various | |
7090 reasons. | |
7091 | |
7092 @enumerate | |
7093 @item | |
7094 The @sc{nntp} server may fail to generate the @code{Xref} header. This | |
7095 is evil and not very common. | |
7096 | |
7097 @item | |
7098 The @sc{nntp} server may fail to include the @code{Xref} header in the | |
7099 @file{.overview} data bases. This is evil and all too common, alas. | |
7100 | |
7101 @item | |
7102 You may be reading the same group (or several related groups) from | |
7103 different @sc{nntp} servers. | |
7104 | |
7105 @item | |
7106 You may be getting mail that duplicates articles posted to groups. | |
7107 @end enumerate | |
7108 | |
7109 I'm sure there are other situations that @code{Xref} handling fails as | |
7110 well, but these four are the most common situations. | |
7111 | |
7112 If, and only if, @code{Xref} handling fails for you, then you may | |
7113 consider switching on @dfn{duplicate suppression}. If you do so, Gnus | |
7114 will remember the @code{Message-ID}s of all articles you have read or | |
7115 otherwise marked as read, and then, as if by magic, mark them as read | |
7116 all subsequent times you see them---in @emph{all} groups. Using this | |
7117 mechanism is quite likely to be somewhat inefficient, but not overly | |
7118 so. It's certainly preferable to reading the same articles more than | |
7119 once. | |
7120 | |
7121 Duplicate suppression is not a very subtle instrument. It's more like a | |
7122 sledge hammer than anything else. It works in a very simple | |
7123 fashion---if you have marked an article as read, it adds this Message-ID | |
7124 to a cache. The next time it sees this Message-ID, it will mark the | |
7125 article as read the the @samp{M} mark. It doesn't care what group it | |
7126 saw the article in. | |
7127 | |
7128 @table @code | |
7129 @item gnus-suppress-duplicates | |
7130 @vindex gnus-suppress-duplicates | |
7131 If non-@code{nil}, suppress duplicates. | |
7132 | |
7133 @item gnus-save-duplicate-list | |
7134 @vindex gnus-save-duplicate-list | |
7135 If non-@code{nil}, save the list of duplicates to a file. This will | |
7136 make startup and shutdown take longer, so the default is @code{nil}. | |
7137 However, this means that only duplicate articles that is read in a | |
7138 single Gnus session are suppressed. | |
7139 | |
7140 @item gnus-duplicate-list-length | |
7141 @vindex gnus-duplicate-list-length | |
7142 This variables says how many @code{Message-ID}s to keep in the duplicate | |
7143 suppression list. The default is 10000. | |
7144 | |
7145 @item gnus-duplicate-file | |
7146 @vindex gnus-duplicate-file | |
7147 The name of the file to store the duplicate suppression list. The | |
7148 default is @file{~/News/suppression}. | |
7149 @end table | |
7150 | |
7151 If you have a tendency to stop and start Gnus often, setting | |
7152 @code{gnus-save-duplicate-list} to @code{t} is probably a good idea. If | |
7153 you leave Gnus running for weeks on end, you may have it @code{nil}. On | |
7154 the other hand, saving the list makes startup and shutdown much slower, | |
7155 so that means that if you stop and start Gnus often, you should set | |
7156 @code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up | |
7157 to you to figure out, I think. | |
7158 | |
7159 | 6083 |
7160 @node The Article Buffer | 6084 @node The Article Buffer |
7161 @chapter The Article Buffer | 6085 @chapter The Article Buffer |
7162 @cindex article buffer | 6086 @cindex article buffer |
7163 | 6087 |
7167 | 6091 |
7168 @menu | 6092 @menu |
7169 * Hiding Headers:: Deciding what headers should be displayed. | 6093 * Hiding Headers:: Deciding what headers should be displayed. |
7170 * Using MIME:: Pushing articles through @sc{mime} before reading them. | 6094 * Using MIME:: Pushing articles through @sc{mime} before reading them. |
7171 * Customizing Articles:: Tailoring the look of the articles. | 6095 * Customizing Articles:: Tailoring the look of the articles. |
7172 * Article Keymap:: Keystrokes available in the article buffer. | 6096 * Article Keymap:: Keystrokes available in the article buffer |
7173 * Misc Article:: Other stuff. | 6097 * Misc Article:: Other stuff. |
7174 @end menu | 6098 @end menu |
7175 | 6099 |
7176 | 6100 |
7177 @node Hiding Headers | 6101 @node Hiding Headers |
7305 | 6229 |
7306 @vindex gnus-show-mime | 6230 @vindex gnus-show-mime |
7307 @vindex gnus-show-mime-method | 6231 @vindex gnus-show-mime-method |
7308 @vindex gnus-strict-mime | 6232 @vindex gnus-strict-mime |
7309 @findex metamail-buffer | 6233 @findex metamail-buffer |
7310 Gnus handles @sc{mime} by pushing the articles through | 6234 Gnus handles @sc{mime} by shoving the articles through |
7311 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by | 6235 @code{gnus-show-mime-method}, which is @code{metamail-buffer} by |
7312 default. Set @code{gnus-show-mime} to @code{t} if you want to use | 6236 default. Set @code{gnus-show-mime} to @code{t} if you want to use |
7313 @sc{mime} all the time. However, if @code{gnus-strict-mime} is | 6237 @sc{mime} all the time. However, if @code{gnus-strict-mime} is |
7314 non-@code{nil}, the @sc{mime} method will only be used if there are | 6238 non-@code{nil}, the @sc{mime} method will only be used if there are |
7315 @sc{mime} headers in the article. If you have @code{gnus-show-mime} | 6239 @sc{mime} headers in the article. |
7316 set, then you'll see some unfortunate display glitches in the article | |
7317 buffer. These can't be avoided. | |
7318 | 6240 |
7319 It might be best to just use the toggling functions from the summary | 6241 It might be best to just use the toggling functions from the summary |
7320 buffer to avoid getting nasty surprises. (For instance, you enter the | 6242 buffer to avoid getting nasty surprises. (For instance, you enter the |
7321 group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has | 6243 group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has |
7322 decoded the sound file in the article and some horrible sing-a-long song | 6244 decoded the sound file in the article and some horrible sing-a-long song |
7337 The @code{gnus-article-display-hook} is called after the article has | 6259 The @code{gnus-article-display-hook} is called after the article has |
7338 been inserted into the article buffer. It is meant to handle all | 6260 been inserted into the article buffer. It is meant to handle all |
7339 treatment of the article before it is displayed. | 6261 treatment of the article before it is displayed. |
7340 | 6262 |
7341 @findex gnus-article-maybe-highlight | 6263 @findex gnus-article-maybe-highlight |
7342 By default this hook just contains @code{gnus-article-hide-headers}, | 6264 By default it contains @code{gnus-article-hide-headers}, |
7343 @code{gnus-article-treat-overstrike}, and | 6265 @code{gnus-article-treat-overstrike}, and |
7344 @code{gnus-article-maybe-highlight}, but there are thousands, nay | 6266 @code{gnus-article-maybe-highlight}, but there are thousands, nay |
7345 millions, of functions you can put in this hook. For an overview of | 6267 millions, of functions you can put in this hook. For an overview of |
7346 functions @pxref{Article Highlighting}, @pxref{Article Hiding}, | 6268 functions @pxref{Article Highlighting}, @pxref{Article Hiding}, |
7347 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article | 6269 @pxref{Article Washing}, @pxref{Article Buttons} and @pxref{Article |
7348 Date}. Note that the order of functions in this hook might affect | 6270 Date}. |
7349 things, so you may have to fiddle a bit to get the desired results. | |
7350 | 6271 |
7351 You can, of course, write your own functions. The functions are called | 6272 You can, of course, write your own functions. The functions are called |
7352 from the article buffer, and you can do anything you like, pretty much. | 6273 from the article buffer, and you can do anything you like, pretty much. |
7353 There is no information that you have to keep in the buffer---you can | 6274 There is no information that you have to keep in the buffer---you can |
7354 change everything. However, you shouldn't delete any headers. Instead | 6275 change everything. However, you shouldn't delete any headers. Instead |
7443 | 6364 |
7444 @item gnus-article-mode-hook | 6365 @item gnus-article-mode-hook |
7445 @vindex gnus-article-mode-hook | 6366 @vindex gnus-article-mode-hook |
7446 Hook called in article mode buffers. | 6367 Hook called in article mode buffers. |
7447 | 6368 |
7448 @item gnus-article-mode-syntax-table | |
7449 @vindex gnus-article-mode-syntax-table | |
7450 Syntax table used in article buffers. It is initialized from | |
7451 @code{text-mode-syntax-table}. | |
7452 | |
7453 @vindex gnus-article-mode-line-format | 6369 @vindex gnus-article-mode-line-format |
7454 @item gnus-article-mode-line-format | 6370 @item gnus-article-mode-line-format |
7455 This variable is a format string along the same lines as | 6371 This variable is a format string along the same lines as |
7456 @code{gnus-summary-mode-line-format}. It accepts the same | 6372 @code{gnus-summary-mode-line-format}. It accepts exactly the same |
7457 format specifications as that variable, with one extension: | 6373 format specifications as that variable. |
7458 | |
7459 @table @samp | |
7460 @item w | |
7461 The @dfn{wash status} of the article. This is a short string with one | |
7462 character for each possible article wash operation that may have been | |
7463 performed. | |
7464 @end table | |
7465 | |
7466 @vindex gnus-break-pages | 6374 @vindex gnus-break-pages |
7467 | 6375 |
7468 @item gnus-break-pages | 6376 @item gnus-break-pages |
7469 Controls whether @dfn{page breaking} is to take place. If this variable | 6377 Controls whether @dfn{page breaking} is to take place. If this variable |
7470 is non-@code{nil}, the articles will be divided into pages whenever a | 6378 is non-@code{nil}, the articles will be divided into pages whenever a |
7569 Now, if you've done this, and then this server rejects your article, or | 6477 Now, if you've done this, and then this server rejects your article, or |
7570 this server is down, what do you do then? To override this variable you | 6478 this server is down, what do you do then? To override this variable you |
7571 can use a non-zero prefix to the @kbd{C-c C-c} command to force using | 6479 can use a non-zero prefix to the @kbd{C-c C-c} command to force using |
7572 the ``current'' server for posting. | 6480 the ``current'' server for posting. |
7573 | 6481 |
7574 If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command, | 6482 If you give a zero prefix (i. e., @kbd{C-u 0 C-c C-c}) to that command, |
7575 Gnus will prompt you for what method to use for posting. | 6483 Gnus will prompt you for what method to use for posting. |
7576 | 6484 |
7577 You can also set @code{gnus-post-method} to a list of select methods. | 6485 You can also set @code{gnus-post-method} to a list of select methods. |
7578 If that's the case, Gnus will always prompt you for what method to use | 6486 If that's the case, Gnus will always prompt you for what method to use |
7579 for posting. | 6487 for posting. |
7616 @node Archived Messages | 6524 @node Archived Messages |
7617 @section Archived Messages | 6525 @section Archived Messages |
7618 @cindex archived messages | 6526 @cindex archived messages |
7619 @cindex sent messages | 6527 @cindex sent messages |
7620 | 6528 |
7621 Gnus provides a few different methods for storing the mail and news you | 6529 Gnus provides a few different methods for storing the mail you send. |
7622 send. The default method is to use the @dfn{archive virtual server} to | 6530 The default method is to use the @dfn{archive virtual server} to store |
7623 store the messages. If you want to disable this completely, the | 6531 the mail. If you want to disable this completely, you should set |
7624 @code{gnus-message-archive-group} variable should be @code{nil}, which | 6532 @code{gnus-message-archive-group} to @code{nil}. |
7625 is the default. | |
7626 | 6533 |
7627 @vindex gnus-message-archive-method | 6534 @vindex gnus-message-archive-method |
7628 @code{gnus-message-archive-method} says what virtual server Gnus is to | 6535 @code{gnus-message-archive-method} says what virtual server Gnus is to |
7629 use to store sent messages. The default is: | 6536 use to store sent messages. It is @code{(nnfolder "archive" |
7630 | 6537 (nnfolder-directory "~/Mail/archive/"))} by default, but you can use any |
7631 @lisp | 6538 mail select method (@code{nnml}, @code{nnmbox}, etc.). However, |
7632 (nnfolder "archive" | 6539 @code{nnfolder} is a quite likeable select method for doing this sort of |
7633 (nnfolder-directory "~/Mail/archive/")) | 6540 thing. If you don't like the default directory chosen, you could say |
7634 @end lisp | 6541 something like: |
7635 | |
7636 You can, however, use any mail select method (@code{nnml}, | |
7637 @code{nnmbox}, etc.). @code{nnfolder} is a quite likeable select method | |
7638 for doing this sort of thing, though. If you don't like the default | |
7639 directory chosen, you could say something like: | |
7640 | 6542 |
7641 @lisp | 6543 @lisp |
7642 (setq gnus-message-archive-method | 6544 (setq gnus-message-archive-method |
7643 '(nnfolder "archive" | 6545 '(nnfolder "archive" |
7644 (nnfolder-inhibit-expiry t) | 6546 (nnfolder-inhibit-expiry t) |
7713 group. If the group gets really big and annoying, you can simply rename | 6615 group. If the group gets really big and annoying, you can simply rename |
7714 if (using @kbd{G r} in the group buffer) to something | 6616 if (using @kbd{G r} in the group buffer) to something |
7715 nice---@samp{misc-mail-september-1995}, or whatever. New messages will | 6617 nice---@samp{misc-mail-september-1995}, or whatever. New messages will |
7716 continue to be stored in the old (now empty) group. | 6618 continue to be stored in the old (now empty) group. |
7717 | 6619 |
7718 That's the default method of archiving sent messages. Gnus also a | 6620 That's the default method of archiving sent mail. Gnus also offers two |
7719 different way for the people who don't like the default method. In that | 6621 other variables for the people who don't like the default method. In |
7720 case you should set @code{gnus-message-archive-group} to @code{nil}; | 6622 that case you should set @code{gnus-message-archive-group} to |
7721 this will disable archiving. | 6623 @code{nil}; this will disable archiving. |
7722 | 6624 |
7723 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to | 6625 XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to |
7724 use a different value for @code{gnus-message-archive-group} there. | 6626 use a different value for @code{gnus-message-archive-group} there. |
6627 | |
7725 | 6628 |
7726 @table @code | 6629 @table @code |
7727 @item gnus-outgoing-message-group | 6630 @item gnus-outgoing-message-group |
7728 @vindex gnus-outgoing-message-group | 6631 @vindex gnus-outgoing-message-group |
7729 All outgoing messages will be put in this group. If you want to store | 6632 All outgoing messages will be put in this group. If you want to store |
7733 | 6636 |
7734 If you want to have greater control over what group to put each | 6637 If you want to have greater control over what group to put each |
7735 message in, you can set this variable to a function that checks the | 6638 message in, you can set this variable to a function that checks the |
7736 current newsgroup name and then returns a suitable group name (or list | 6639 current newsgroup name and then returns a suitable group name (or list |
7737 of names). | 6640 of names). |
7738 | |
7739 This variable can be used instead of @code{gnus-message-archive-group}, | |
7740 but the latter is the preferred method. | |
7741 @end table | 6641 @end table |
7742 | 6642 |
7743 | 6643 |
7744 @c @node Posting Styles | 6644 @c @node Posting Styles |
7745 @c @section Posting Styles | 6645 @c @section Posting Styles |
7914 @sc{nntp} server, it could be a virtual group, or it could be your own | 6814 @sc{nntp} server, it could be a virtual group, or it could be your own |
7915 personal mail group. | 6815 personal mail group. |
7916 | 6816 |
7917 A foreign group (or any group, really) is specified by a @dfn{name} and | 6817 A foreign group (or any group, really) is specified by a @dfn{name} and |
7918 a @dfn{select method}. To take the latter first, a select method is a | 6818 a @dfn{select method}. To take the latter first, a select method is a |
7919 list where the first element says what backend to use (e.g. @code{nntp}, | 6819 list where the first element says what backend to use (eg. @code{nntp}, |
7920 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server | 6820 @code{nnspool}, @code{nnml}) and the second element is the @dfn{server |
7921 name}. There may be additional elements in the select method, where the | 6821 name}. There may be additional elements in the select method, where the |
7922 value may have special meaning for the backend in question. | 6822 value may have special meaning for the backend in question. |
7923 | 6823 |
7924 One could say that a select method defines a @dfn{virtual server}---so | 6824 One could say that a select method defines a @dfn{virtual server}---so |
7927 The @dfn{name} of the group is the name the backend will recognize the | 6827 The @dfn{name} of the group is the name the backend will recognize the |
7928 group as. | 6828 group as. |
7929 | 6829 |
7930 For instance, the group @samp{soc.motss} on the @sc{nntp} server | 6830 For instance, the group @samp{soc.motss} on the @sc{nntp} server |
7931 @samp{some.where.edu} will have the name @samp{soc.motss} and select | 6831 @samp{some.where.edu} will have the name @samp{soc.motss} and select |
7932 method @code{(nntp "some.where.edu")}. Gnus will call this group | 6832 method @code{(nntp "some.where.edu")}. Gnus will call this group, in |
7933 @samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp} | 6833 all circumstances, @samp{nntp+some.where.edu:soc.motss}, even though the |
7934 backend just knows this group as @samp{soc.motss}. | 6834 @code{nntp} backend just knows this group as @samp{soc.motss}. |
7935 | 6835 |
7936 The different methods all have their peculiarities, of course. | 6836 The different methods all have their peculiarities, of course. |
7937 | 6837 |
7938 @menu | 6838 @menu |
7939 * The Server Buffer:: Making and editing virtual servers. | 6839 * The Server Buffer:: Making and editing virtual servers. |
7959 on the same actual @sc{nntp} server. You tell Gnus which backend to | 6859 on the same actual @sc{nntp} server. You tell Gnus which backend to |
7960 use, and what parameters to set by specifying a @dfn{select method}. | 6860 use, and what parameters to set by specifying a @dfn{select method}. |
7961 | 6861 |
7962 These select methods specifications can sometimes become quite | 6862 These select methods specifications can sometimes become quite |
7963 complicated---say, for instance, that you want to read from the | 6863 complicated---say, for instance, that you want to read from the |
7964 @sc{nntp} server @samp{news.funet.fi} on port number 13, which | 6864 @sc{nntp} server @samp{news.funet.fi} on port number @code{13}, which |
7965 hangs if queried for @sc{nov} headers and has a buggy select. Ahem. | 6865 hangs if queried for @sc{nov} headers and has a buggy select. Ahem. |
7966 Anyways, if you had to specify that for each group that used this | 6866 Anyways, if you had to specify that for each group that used this |
7967 server, that would be too much work, so Gnus offers a way of naming | 6867 server, that would be too much work, so Gnus offers a way of naming |
7968 select methods, which is what you do in the server buffer. | 6868 select methods, which is what you do in the server buffer. |
7969 | 6869 |
7973 @menu | 6873 @menu |
7974 * Server Buffer Format:: You can customize the look of this buffer. | 6874 * Server Buffer Format:: You can customize the look of this buffer. |
7975 * Server Commands:: Commands to manipulate servers. | 6875 * Server Commands:: Commands to manipulate servers. |
7976 * Example Methods:: Examples server specifications. | 6876 * Example Methods:: Examples server specifications. |
7977 * Creating a Virtual Server:: An example session. | 6877 * Creating a Virtual Server:: An example session. |
7978 * Server Variables:: Which variables to set. | |
7979 * Servers and Methods:: You can use server names as select methods. | 6878 * Servers and Methods:: You can use server names as select methods. |
7980 * Unavailable Servers:: Some servers you try to contact may be down. | 6879 * Unavailable Servers:: Some servers you try to contact may be down. |
7981 @end menu | 6880 @end menu |
7982 | 6881 |
7983 @vindex gnus-server-mode-hook | 6882 @vindex gnus-server-mode-hook |
8068 @item l | 6967 @item l |
8069 @kindex l (Server) | 6968 @kindex l (Server) |
8070 @findex gnus-server-list-servers | 6969 @findex gnus-server-list-servers |
8071 List all servers (@code{gnus-server-list-servers}). | 6970 List all servers (@code{gnus-server-list-servers}). |
8072 | 6971 |
8073 @item s | |
8074 @kindex s (Server) | |
8075 @findex gnus-server-scan-server | |
8076 Request that the server scan its sources for new articles | |
8077 (@code{gnus-server-scan-server}). This is mainly sensible with mail | |
8078 servers. | |
8079 | |
8080 @item g | |
8081 @kindex g (Server) | |
8082 @findex gnus-server-regenerate-server | |
8083 Request that the server regenerate all its data structures | |
8084 (@code{gnus-server-regenerate-server}). This can be useful if you have | |
8085 a mail backend that has gotten out of synch. | |
8086 | |
8087 @end table | 6972 @end table |
8088 | 6973 |
8089 | 6974 |
8090 @node Example Methods | 6975 @node Example Methods |
8091 @subsection Example Methods | 6976 @subsection Example Methods |
8108 | 6993 |
8109 After these two elements, there may be a arbitrary number of | 6994 After these two elements, there may be a arbitrary number of |
8110 @var{(variable form)} pairs. | 6995 @var{(variable form)} pairs. |
8111 | 6996 |
8112 To go back to the first example---imagine that you want to read from | 6997 To go back to the first example---imagine that you want to read from |
8113 port 15 from that machine. This is what the select method should | 6998 port @code{15} from that machine. This is what the select method should |
8114 look like then: | 6999 look like then: |
8115 | 7000 |
8116 @lisp | 7001 @lisp |
8117 (nntp "news.funet.fi" (nntp-port-number 15)) | 7002 (nntp "news.funet.fi" (nntp-port-number 15)) |
8118 @end lisp | 7003 @end lisp |
8138 (nnmh "public" | 7023 (nnmh "public" |
8139 (nnmh-directory "/usr/information/spool/") | 7024 (nnmh-directory "/usr/information/spool/") |
8140 (nnmh-get-new-mail nil)) | 7025 (nnmh-get-new-mail nil)) |
8141 @end lisp | 7026 @end lisp |
8142 | 7027 |
8143 If you are behind a firewall and only have access to the @sc{nntp} | |
8144 server from the firewall machine, you can instruct Gnus to @code{rlogin} | |
8145 on the firewall machine and telnet from there to the @sc{nntp} server. | |
8146 Doing this can be rather fiddly, but your virtual server definition | |
8147 should probably look something like this: | |
8148 | |
8149 @lisp | |
8150 (nntp "firewall" | |
8151 (nntp-address "the.firewall.machine") | |
8152 (nntp-open-connection-function nntp-open-rlogin) | |
8153 (nntp-end-of-line "\n") | |
8154 (nntp-rlogin-parameters | |
8155 ("telnet" "the.real.nntp.host" "nntp"))) | |
8156 @end lisp | |
8157 | |
8158 | |
8159 | 7028 |
8160 @node Creating a Virtual Server | 7029 @node Creating a Virtual Server |
8161 @subsection Creating a Virtual Server | 7030 @subsection Creating a Virtual Server |
8162 | 7031 |
8163 If you're saving lots of articles in the cache by using persistent | 7032 If you're saving lots of articles in the cache by using persistent |
8180 | 7049 |
8181 Change that to: | 7050 Change that to: |
8182 | 7051 |
8183 @lisp | 7052 @lisp |
8184 (nnspool "cache" | 7053 (nnspool "cache" |
8185 (nnspool-spool-directory "~/News/cache/") | 7054 (nnspool-spool-directory "~/News/cache/") |
8186 (nnspool-nov-directory "~/News/cache/") | 7055 (nnspool-nov-directory "~/News/cache/") |
8187 (nnspool-active-file "~/News/cache/active")) | 7056 (nnspool-active-file "~/News/cache/active")) |
8188 @end lisp | 7057 @end lisp |
8189 | 7058 |
8190 Type @kbd{C-c C-c} to return to the server buffer. If you now press | 7059 Type @kbd{C-c C-c} to return to the server buffer. If you now press |
8191 @kbd{RET} over this virtual server, you should be entered into a browse | 7060 @kbd{RET} over this virtual server, you should be entered into a browse |
8192 buffer, and you should be able to enter any of the groups displayed. | 7061 buffer, and you should be able to enter any of the groups displayed. |
8193 | 7062 |
8194 | 7063 |
8195 @node Server Variables | |
8196 @subsection Server Variables | |
8197 | |
8198 One sticky point when defining variables (both on backends and in Emacs | |
8199 in general) is that some variables are typically initialized from other | |
8200 variables when the definition of the variables is being loaded. If you | |
8201 change the "base" variable after the variables have been loaded, you | |
8202 won't change the "derived" variables. | |
8203 | |
8204 This typically affects directory and file variables. For instance, | |
8205 @code{nnml-directory} is @file{~/Mail/} by default, and all @code{nnml} | |
8206 directory variables are initialized from that variable, so | |
8207 @code{nnml-active-file} will be @file{~/Mail/active}. If you define a | |
8208 new virtual @code{nnml} server, it will @emph{not} suffice to set just | |
8209 @code{nnml-directory}---you have to explicitly set all the file | |
8210 variables to be what you want them to be. For a complete list of | |
8211 variables for each backend, see each backend's section later in this | |
8212 manual, but here's an example @code{nnml} definition: | |
8213 | |
8214 @lisp | |
8215 (nnml "public" | |
8216 (nnml-directory "~/my-mail/") | |
8217 (nnml-active-file "~/my-mail/active") | |
8218 (nnml-newsgroups-file "~/my-mail/newsgroups")) | |
8219 @end lisp | |
8220 | |
8221 | |
8222 @node Servers and Methods | 7064 @node Servers and Methods |
8223 @subsection Servers and Methods | 7065 @subsection Servers and Methods |
8224 | 7066 |
8225 Wherever you would normally use a select method | 7067 Wherever you would normally use a select method |
8226 (e.g. @code{gnus-secondary-select-method}, in the group select method, | 7068 (eg. @code{gnus-secondary-select-method}, in the group select method, |
8227 when browsing a foreign server) you can use a virtual server name | 7069 when browsing a foreign server) you can use a virtual server name |
8228 instead. This could potentially save lots of typing. And it's nice all | 7070 instead. This could potentially save lots of typing. And it's nice all |
8229 over. | 7071 over. |
8230 | 7072 |
8231 | 7073 |
8238 will tell you, without making the least effort to see whether that is | 7080 will tell you, without making the least effort to see whether that is |
8239 actually the case or not. | 7081 actually the case or not. |
8240 | 7082 |
8241 That might seem quite naughty, but it does make sense most of the time. | 7083 That might seem quite naughty, but it does make sense most of the time. |
8242 Let's say you have 10 groups subscribed to the server | 7084 Let's say you have 10 groups subscribed to the server |
8243 @samp{nephelococcygia.com}. This server is located somewhere quite far | 7085 @samp{nepholococcygia.com}. This server is located somewhere quite far |
8244 away from you and the machine is quite slow, so it takes 1 minute just | 7086 away from you, the machine is quite, so it takes 1 minute just to find |
8245 to find out that it refuses connection from you today. If Gnus were to | 7087 out that it refuses connection from you today. If Gnus were to attempt |
8246 attempt to do that 10 times, you'd be quite annoyed, so Gnus won't | 7088 to do that 10 times, you'd be quite annoyed, so Gnus won't attempt to do |
8247 attempt to do that. Once it has gotten a single ``connection refused'', | 7089 that. Once it has gotten a single ``connection refused'', it will |
8248 it will regard that server as ``down''. | 7090 regard that server as ``down''. |
8249 | 7091 |
8250 So, what happens if the machine was only feeling unwell temporarily? | 7092 So, what happens if the machine was only feeling unwell temporarily? |
8251 How do you test to see whether the machine has come up again? | 7093 How do you test to see whether the machine has come up again? |
8252 | 7094 |
8253 You jump to the server buffer (@pxref{The Server Buffer}) and poke it | 7095 You jump to the server buffer (@pxref{The Server Buffer}) and poke it |
8270 @item D | 7112 @item D |
8271 @kindex D (Server) | 7113 @kindex D (Server) |
8272 @findex gnus-server-deny-server | 7114 @findex gnus-server-deny-server |
8273 Mark the current server as unreachable | 7115 Mark the current server as unreachable |
8274 (@code{gnus-server-deny-server}). | 7116 (@code{gnus-server-deny-server}). |
8275 | |
8276 @item M-o | |
8277 @kindex M-o (Server) | |
8278 @findex gnus-server-open-all-servers | |
8279 Open the connections to all servers in the buffer | |
8280 (@code{gnus-server-open-all-servers}). | |
8281 | |
8282 @item M-c | |
8283 @kindex M-c (Server) | |
8284 @findex gnus-server-close-all-servers | |
8285 Close the connections to all servers in the buffer | |
8286 (@code{gnus-server-close-all-servers}). | |
8287 | 7117 |
8288 @item R | 7118 @item R |
8289 @kindex R (Server) | 7119 @kindex R (Server) |
8290 @findex gnus-server-remove-denials | 7120 @findex gnus-server-remove-denials |
8291 Remove all marks to whether Gnus was denied connection from all servers | 7121 Remove all marks to whether Gnus was denied connection from all servers |
8340 @findex nntp-send-authinfo | 7170 @findex nntp-send-authinfo |
8341 @findex nntp-send-mode-reader | 7171 @findex nntp-send-mode-reader |
8342 @code{nntp-server-opened-hook} is run after a connection has been made. | 7172 @code{nntp-server-opened-hook} is run after a connection has been made. |
8343 It can be used to send commands to the @sc{nntp} server after it has | 7173 It can be used to send commands to the @sc{nntp} server after it has |
8344 been contacted. By default is sends the command @code{MODE READER} to | 7174 been contacted. By default is sends the command @code{MODE READER} to |
8345 the server with the @code{nntp-send-mode-reader} function. | 7175 the server with the @code{nntp-send-mode-reader} function. Another |
8346 | 7176 popular function is @code{nntp-send-authinfo}, which will prompt you for |
8347 @item nntp-authinfo-function | 7177 an @sc{nntp} password and stuff. |
8348 @vindex nntp-authinfo-function | |
8349 This function will be used to send @samp{AUTHINFO} to the @sc{nntp} | |
8350 server. Available functions include: | |
8351 | |
8352 @table @code | |
8353 @item nntp-send-authinfo | |
8354 @findex nntp-send-authinfo | |
8355 This function will used you current login name as the user name and will | |
8356 prompt you for the password. This is the default. | |
8357 | |
8358 @item nntp-send-nosy-authinfo | |
8359 @findex nntp-send-nosy-authinfo | |
8360 This function will prompt you for both user name and password. | |
8361 | |
8362 @item nntp-send-authinfo-from-file | |
8363 @findex nntp-send-authinfo-from-file | |
8364 This function will use your current login name as the user name and will | |
8365 read the @sc{nntp} password from @file{~/.nntp-authinfo}. | |
8366 @end table | |
8367 | 7178 |
8368 @item nntp-server-action-alist | 7179 @item nntp-server-action-alist |
8369 @vindex nntp-server-action-alist | 7180 @vindex nntp-server-action-alist |
8370 This is an list of regexps to match on server types and actions to be | 7181 This is an list of regexps to match on server types and actions to be |
8371 taken when matches are made. For instance, if you want Gnus to beep | 7182 taken when matches are made. For instance, if you want Gnus to beep |
8433 This hook is run as the last step when connecting to an @sc{nntp} | 7244 This hook is run as the last step when connecting to an @sc{nntp} |
8434 server. | 7245 server. |
8435 | 7246 |
8436 @findex nntp-open-rlogin | 7247 @findex nntp-open-rlogin |
8437 @findex nntp-open-network-stream | 7248 @findex nntp-open-network-stream |
8438 @item nntp-open-connection-function | 7249 @item nntp-open-server-function |
8439 @vindex nntp-open-connection-function | 7250 @vindex nntp-open-server-function |
8440 This function is used to connect to the remote system. Two pre-made | 7251 This function is used to connect to the remote system. Two pre-made |
8441 functions are @code{nntp-open-network-stream}, which is the default, and | 7252 functions are @code{nntp-open-network-stream}, which is the default, and |
8442 simply connects to some port or other on the remote system. The other | 7253 simply connects to some port or other on the remote system. The other |
8443 is @code{nntp-open-rlogin}, which does an rlogin on the remote system, | 7254 is @code{nntp-open-rlogin}, which does an rlogin on the remote system, |
8444 and then does a telnet to the @sc{nntp} server available there. | 7255 and then does a telnet to the @sc{nntp} server available there. |
8445 | 7256 |
8446 @item nntp-rlogin-parameters | 7257 @item nntp-rlogin-parameters |
8447 @vindex nntp-rlogin-parameters | 7258 @vindex nntp-rlogin-parameters |
8448 If you use @code{nntp-open-rlogin} as the | 7259 If you use @code{nntp-open-rlogin} as the |
8449 @code{nntp-open-connection-function}, this list will be used as the | 7260 @code{nntp-open-server-function}, this list will be used as the |
8450 parameter list given to @code{rsh}. | 7261 parameter list given to @code{rsh}. |
8451 | 7262 |
8452 @item nntp-end-of-line | 7263 @item nntp-end-of-line |
8453 @vindex nntp-end-of-line | 7264 @vindex nntp-end-of-line |
8454 String to use as end-of-line markers when talking to the @sc{nntp} | 7265 String to use as end-of-line markers when talking to the @sc{nntp} |
8502 | 7313 |
8503 @item nntp-prepare-server-hook | 7314 @item nntp-prepare-server-hook |
8504 @vindex nntp-prepare-server-hook | 7315 @vindex nntp-prepare-server-hook |
8505 A hook run before attempting to connect to an @sc{nntp} server. | 7316 A hook run before attempting to connect to an @sc{nntp} server. |
8506 | 7317 |
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 | |
8507 @item nntp-warn-about-losing-connection | 7325 @item nntp-warn-about-losing-connection |
8508 @vindex nntp-warn-about-losing-connection | 7326 @vindex nntp-warn-about-losing-connection |
8509 If this variable is non-@code{nil}, some noise will be made when a | 7327 If this variable is non-@code{nil}, some noise will be made when a |
8510 server closes connection. | 7328 server closes connection. |
8511 | 7329 |
8516 @subsection News Spool | 7334 @subsection News Spool |
8517 @cindex nnspool | 7335 @cindex nnspool |
8518 @cindex news spool | 7336 @cindex news spool |
8519 | 7337 |
8520 Subscribing to a foreign group from the local spool is extremely easy, | 7338 Subscribing to a foreign group from the local spool is extremely easy, |
8521 and might be useful, for instance, to speed up reading groups that | 7339 and might be useful, for instance, to speed up reading groups like |
8522 contain very big articles---@samp{alt.binaries.pictures.furniture}, for | 7340 @samp{alt.binaries.pictures.furniture}. |
8523 instance. | |
8524 | 7341 |
8525 Anyways, you just specify @code{nnspool} as the method and @samp{} (or | 7342 Anyways, you just specify @code{nnspool} as the method and @samp{} (or |
8526 anything else) as the address. | 7343 anything else) as the address. |
8527 | 7344 |
8528 If you have access to a local spool, you should probably use that as the | 7345 If you have access to a local spool, you should probably use that as the |
8599 * Mail Backend Variables:: Variables for customizing mail handling. | 7416 * Mail Backend Variables:: Variables for customizing mail handling. |
8600 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. | 7417 * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. |
8601 * Mail and Procmail:: Reading mail groups that procmail create. | 7418 * Mail and Procmail:: Reading mail groups that procmail create. |
8602 * Incorporating Old Mail:: What about the old mail you have? | 7419 * Incorporating Old Mail:: What about the old mail you have? |
8603 * Expiring Mail:: Getting rid of unwanted mail. | 7420 * Expiring Mail:: Getting rid of unwanted mail. |
8604 * Washing Mail:: Removing gruft from the mail you get. | |
8605 * Duplicates:: Dealing with duplicated mail. | 7421 * Duplicates:: Dealing with duplicated mail. |
8606 * Not Reading Mail:: Using mail backends for reading other files. | 7422 * Not Reading Mail:: Using mail backends for reading other files. |
8607 * Choosing a Mail Backend:: Gnus can read a variety of mail formats. | 7423 * Choosing a Mail Backend:: Gnus can read a variety of mail formats. |
8608 @end menu | 7424 @end menu |
8609 | 7425 |
8631 | 7447 |
8632 You will probably want to split the mail into several groups, though: | 7448 You will probably want to split the mail into several groups, though: |
8633 | 7449 |
8634 @lisp | 7450 @lisp |
8635 (setq nnmail-split-methods | 7451 (setq nnmail-split-methods |
8636 '(("junk" "^From:.*Lars Ingebrigtsen") | 7452 '(("junk" "^From:.*Lars Ingebrigtsen") |
8637 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") | 7453 ("crazy" "^Subject:.*die\\|^Organization:.*flabby") |
8638 ("other" ""))) | 7454 ("other" ""))) |
8639 @end lisp | 7455 @end lisp |
8640 | 7456 |
8641 This will result in three new @code{nnml} mail groups being created: | 7457 This will result in three new mail groups being created: |
8642 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the | 7458 @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the |
8643 mail that doesn't fit into the first two groups will be placed in the | 7459 mail that doesn't fit into the first two groups will be placed in the |
8644 latter group. | 7460 latter group. |
8645 | 7461 |
8646 This should be sufficient for reading mail with Gnus. You might want to | 7462 This should be sufficient for reading mail with Gnus. You might want to |
8668 these lists is the name of the mail group (they do not have to be called | 7484 these lists is the name of the mail group (they do not have to be called |
8669 something beginning with @samp{mail}, by the way), and the second | 7485 something beginning with @samp{mail}, by the way), and the second |
8670 element is a regular expression used on the header of each mail to | 7486 element is a regular expression used on the header of each mail to |
8671 determine if it belongs in this mail group. | 7487 determine if it belongs in this mail group. |
8672 | 7488 |
8673 If the first element is the special symbol @code{junk}, then messages | |
8674 that match the regexp will disappear into the aether. Use with | |
8675 extreme caution. | |
8676 | |
8677 The second element can also be a function. In that case, it will be | 7489 The second element can also be a function. In that case, it will be |
8678 called narrowed to the headers with the first element of the rule as the | 7490 called narrowed to the headers with the first element of the rule as the |
8679 argument. It should return a non-@code{nil} value if it thinks that the | 7491 argument. It should return a non-@code{nil} value if it thinks that the |
8680 mail belongs in that group. | 7492 mail belongs in that group. |
8681 | 7493 |
8682 The last of these groups should always be a general one, and the regular | 7494 The last of these groups should always be a general one, and the regular |
8683 expression should @emph{always} be @samp{} so that it matches any mails | 7495 expression should @emph{always} be @samp{} so that it matches any |
8684 that haven't been matched by any of the other regexps. (These rules are | 7496 mails that haven't been matched by any of the other regexps. |
8685 processed from the beginning of the alist toward the end. The first | |
8686 rule to make a match will "win", unless you have crossposting enabled. | |
8687 In that case, all matching rules will "win".) | |
8688 | 7497 |
8689 If you like to tinker with this yourself, you can set this variable to a | 7498 If you like to tinker with this yourself, you can set this variable to a |
8690 function of your choice. This function will be called without any | 7499 function of your choice. This function will be called without any |
8691 arguments in a buffer narrowed to the headers of an incoming mail | 7500 arguments in a buffer narrowed to the headers of an incoming mail |
8692 message. The function should return a list of groups names that it | 7501 message. The function should return a list of groups names that it |
8709 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to | 7518 @code{nnmh} and @code{nnml} makes crossposts by creating hard links to |
8710 the crossposted articles. However, not all files systems support hard | 7519 the crossposted articles. However, not all files systems support hard |
8711 links. If that's the case for you, set | 7520 links. If that's the case for you, set |
8712 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This | 7521 @code{nnmail-crosspost-link-function} to @code{copy-file}. (This |
8713 variable is @code{add-name-to-file} by default.) | 7522 variable is @code{add-name-to-file} by default.) |
8714 | |
8715 @kindex M-x nnmail-split-history | |
8716 @kindex nnmail-split-history | |
8717 If you wish to see where the previous mail split put the messages, you | |
8718 can use the @kbd{M-x nnmail-split-history} command. | |
8719 | 7523 |
8720 Gnus gives you all the opportunity you could possibly want for shooting | 7524 Gnus gives you all the opportunity you could possibly want for shooting |
8721 yourself in the foot. Let's say you create a group that will contain | 7525 yourself in the foot. Let's say you create a group that will contain |
8722 all the mail you get from your boss. And then you accidentally | 7526 all the mail you get from your boss. And then you accidentally |
8723 unsubscribe from the group. Gnus will still put all the mail from your | 7527 unsubscribe from the group. Gnus will still put all the mail from your |
8759 @code{MAILHOST} environment variable. If the POP server needs a | 7563 @code{MAILHOST} environment variable. If the POP server needs a |
8760 password, you can either set @code{nnmail-pop-password-required} to | 7564 password, you can either set @code{nnmail-pop-password-required} to |
8761 @code{t} and be prompted for the password, or set | 7565 @code{t} and be prompted for the password, or set |
8762 @code{nnmail-pop-password} to the password itself. | 7566 @code{nnmail-pop-password} to the password itself. |
8763 | 7567 |
8764 @code{nnmail-spool-file} can also be a list of mailboxes. | |
8765 | |
8766 Your Emacs has to have been configured with @samp{--with-pop} before | |
8767 compilation. This is the default, but some installations have it | |
8768 switched off. | |
8769 | |
8770 When you use a mail backend, Gnus will slurp all your mail from your | 7568 When you use a mail backend, Gnus will slurp all your mail from your |
8771 inbox and plonk it down in your home directory. Gnus doesn't move any | 7569 inbox and plonk it down in your home directory. Gnus doesn't move any |
8772 mail if you're not using a mail backend---you have to do a lot of magic | 7570 mail if you're not using a mail backend---you have to do a lot of magic |
8773 invocations first. At the time when you have finished drawing the | 7571 invocations first. At the time when you have finished drawing the |
8774 pentagram, lightened the candles, and sacrificed the goat, you really | 7572 pentagram, lightened the candles, and sacrificed the goat, you really |
8792 | 7590 |
8793 @vindex nnmail-prepare-incoming-hook | 7591 @vindex nnmail-prepare-incoming-hook |
8794 @item nnmail-prepare-incoming-hook | 7592 @item nnmail-prepare-incoming-hook |
8795 This is run in a buffer that holds all the new incoming mail, and can be | 7593 This is run in a buffer that holds all the new incoming mail, and can be |
8796 used for, well, anything, really. | 7594 used for, well, anything, really. |
8797 | |
8798 @vindex nnmail-split-hook | |
8799 @item nnmail-split-hook | |
8800 @findex article-decode-rfc1522 | |
8801 @findex RFC1522 decoding | |
8802 Hook run in the buffer where the mail headers of each message is kept | |
8803 just before the splitting based on these headers is done. The hook is | |
8804 free to modify the buffer contents in any way it sees fit---the buffer | |
8805 is discarded after the splitting has been done, and no changes performed | |
8806 in the buffer will show up in any files. @code{gnus-article-decode-rfc1522} | |
8807 is one likely function to add to this hook. | |
8808 | 7595 |
8809 @vindex nnmail-pre-get-new-mail-hook | 7596 @vindex nnmail-pre-get-new-mail-hook |
8810 @vindex nnmail-post-get-new-mail-hook | 7597 @vindex nnmail-post-get-new-mail-hook |
8811 @item nnmail-pre-get-new-mail-hook | 7598 @item nnmail-pre-get-new-mail-hook |
8812 @itemx nnmail-post-get-new-mail-hook | 7599 @itemx nnmail-post-get-new-mail-hook |
8835 @item nnmail-movemail-program | 7622 @item nnmail-movemail-program |
8836 @vindex nnmail-movemail-program | 7623 @vindex nnmail-movemail-program |
8837 This program is executed to move mail from the user's inbox to her home | 7624 This program is executed to move mail from the user's inbox to her home |
8838 directory. The default is @samp{movemail}. | 7625 directory. The default is @samp{movemail}. |
8839 | 7626 |
8840 This can also be a function. In that case, the function will be called | |
8841 with two parameters -- the name of the inbox, and the file to be moved | |
8842 to. | |
8843 | |
8844 @item nnmail-delete-incoming | 7627 @item nnmail-delete-incoming |
8845 @vindex nnmail-delete-incoming | 7628 @vindex nnmail-delete-incoming |
8846 @cindex incoming mail files | 7629 @cindex incoming mail files |
8847 @cindex deleting incoming files | 7630 @cindex deleting incoming files |
8848 If non-@code{nil}, the mail backends will delete the temporary incoming | 7631 If non-@code{nil}, the mail backends will delete the temporary incoming |
8849 file after splitting mail into the proper groups. This is @code{t} by | 7632 file after splitting mail into the proper groups. This is @code{nil} by |
8850 default. | 7633 default for reasons of security. |
8851 | |
8852 @c This is @code{nil} by | |
8853 @c default for reasons of security. | |
8854 | |
8855 @c Since Red Gnus is an alpha release, it is to be expected to lose mail. | |
8856 (No Gnus release since (ding) Gnus 0.10 (or something like that) have | |
8857 lost mail, I think, but that's not the point. (Except certain versions | |
8858 of Red Gnus.)) By not deleting the Incoming* files, one can be sure to | |
8859 not lose mail -- if Gnus totally whacks out, one can always recover what | |
8860 was lost. | |
8861 | |
8862 Delete the @file{Incoming*} files at will. | |
8863 | 7634 |
8864 @item nnmail-use-long-file-names | 7635 @item nnmail-use-long-file-names |
8865 @vindex nnmail-use-long-file-names | 7636 @vindex nnmail-use-long-file-names |
8866 If non-@code{nil}, the mail backends will use long file and directory | 7637 If non-@code{nil}, the mail backends will use long file and directory |
8867 names. Groups like @samp{mail.misc} will end up in directories like | 7638 names. Groups like @samp{mail.misc} will end up in directories like |
8871 @item nnmail-delete-file-function | 7642 @item nnmail-delete-file-function |
8872 @vindex nnmail-delete-file-function | 7643 @vindex nnmail-delete-file-function |
8873 @findex delete-file | 7644 @findex delete-file |
8874 Function called to delete files. It is @code{delete-file} by default. | 7645 Function called to delete files. It is @code{delete-file} by default. |
8875 | 7646 |
8876 @item nnmail-cache-accepted-message-ids | |
8877 @vindex nnmail-cache-accepted-message-ids | |
8878 If non-@code{nil}, put the @code{Message-ID}s of articles imported into | |
8879 the backend (via @code{Gcc}, for instance) into the mail duplication | |
8880 discovery cache. The default is @code{nil}. | |
8881 | |
8882 @end table | 7647 @end table |
8883 | 7648 |
8884 | 7649 |
8885 @node Fancy Mail Splitting | 7650 @node Fancy Mail Splitting |
8886 @subsection Fancy Mail Splitting | 7651 @subsection Fancy Mail Splitting |
8890 @vindex nnmail-split-fancy | 7655 @vindex nnmail-split-fancy |
8891 @findex nnmail-split-fancy | 7656 @findex nnmail-split-fancy |
8892 If the rather simple, standard method for specifying how to split mail | 7657 If the rather simple, standard method for specifying how to split mail |
8893 doesn't allow you to do what you want, you can set | 7658 doesn't allow you to do what you want, you can set |
8894 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can | 7659 @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can |
8895 play with the @code{nnmail-split-fancy} variable. | 7660 play with the @code{nnmail-split-fancy} variable. |
8896 | 7661 |
8897 Let's look at an example value of this variable first: | 7662 Let's look at an example value of this variable first: |
8898 | 7663 |
8899 @lisp | 7664 @lisp |
8900 ;; Messages from the mailer daemon are not crossposted to any of | 7665 ;; Messages from the mailer daemon are not crossposted to any of |
8909 ("subject" "ding" "ding.misc")) | 7674 ("subject" "ding" "ding.misc")) |
8910 ;; Other mailing lists... | 7675 ;; Other mailing lists... |
8911 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") | 7676 (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") |
8912 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") | 7677 (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") |
8913 ;; People... | 7678 ;; People... |
8914 (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen")) | 7679 (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen")) |
8915 ;; Unmatched mail goes to the catch all group. | 7680 ;; Unmatched mail goes to the catch all group. |
8916 "misc.misc") | 7681 "misc.misc"))") |
8917 @end lisp | 7682 @end lisp |
8918 | 7683 |
8919 This variable has the format of a @dfn{split}. A split is a (possibly) | 7684 This variable has the format of a @dfn{split}. A split is a (possibly) |
8920 recursive structure where each split may contain other splits. Here are | 7685 recursive structure where each split may contain other splits. Here are |
8921 the five possible split syntaxes: | 7686 the four possible split syntaxes: |
8922 | 7687 |
8923 @enumerate | 7688 @table @dfn |
8924 | 7689 |
8925 @item | 7690 @item GROUP |
8926 @samp{group}: If the split is a string, that will be taken as a group name. | 7691 If the split is a string, that will be taken as a group name. |
8927 | 7692 |
8928 @item | 7693 @item (FIELD VALUE SPLIT) |
8929 @var{(FIELD VALUE SPLIT)}: If the split is a list, and the first | 7694 If the split is a list, and the first element is a string, then that |
8930 element is a string, then that means that if header FIELD (a regexp) | 7695 means that if header FIELD (a regexp) contains VALUE (also a regexp), |
8931 contains VALUE (also a regexp), then store the message as specified by | 7696 then store the message as specified by SPLIT. |
8932 SPLIT. | 7697 |
8933 | 7698 @item (| SPLIT...) |
8934 @item | 7699 If the split is a list, and the first element is @code{|} (vertical |
8935 @var{(| SPLIT...)}: If the split is a list, and the first element is | 7700 bar), then process each SPLIT until one of them matches. A SPLIT is |
8936 @code{|} (vertical bar), then process each SPLIT until one of them | 7701 said to match if it will cause the mail message to be stored in one or |
8937 matches. A SPLIT is said to match if it will cause the mail message to | 7702 more groups. |
8938 be stored in one or more groups. | 7703 |
8939 | 7704 @item (& SPLIT...) |
8940 @item | 7705 If the split is a list, and the first element is @code{&}, then process |
8941 @var{(& SPLIT...)}: If the split is a list, and the first element is | 7706 all SPLITs in the list. |
8942 @code{&}, then process all SPLITs in the list. | 7707 @end table |
8943 | 7708 |
8944 @item | 7709 In these splits, FIELD must match a complete field name. VALUE must |
8945 @code{junk}: If the split is the symbol @code{junk}, then don't save | 7710 match a complete word according to the fundamental mode syntax table. |
8946 this message anywhere. | 7711 You can use @code{.*} in the regexps to match partial field names or |
8947 | 7712 words. |
8948 @item | |
8949 @var{(: function arg1 arg2 ...)}: If the split is a list, and the first | |
8950 element is @code{:}, then the second element will be called as a | |
8951 function with @var{args} given as arguments. The function should return | |
8952 a SPLIT. | |
8953 | |
8954 @end enumerate | |
8955 | |
8956 In these splits, @var{FIELD} must match a complete field name. | |
8957 @var{VALUE} must match a complete word according to the fundamental mode | |
8958 syntax table. You can use @code{.*} in the regexps to match partial | |
8959 field names or words. In other words, all @var{VALUE}'s are wrapped in | |
8960 @samp{\<} and @samp{\>} pairs. | |
8961 | 7713 |
8962 @vindex nnmail-split-abbrev-alist | 7714 @vindex nnmail-split-abbrev-alist |
8963 @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they | 7715 FIELD and VALUE can also be lisp symbols, in that case they are expanded |
8964 are expanded as specified by the variable | 7716 as specified by the variable @code{nnmail-split-abbrev-alist}. This is |
8965 @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where | 7717 an alist of cons cells, where the car of the cells contains the key, and |
8966 the car of the cells contains the key, and the cdr contains a string. | 7718 the cdr contains a string. |
8967 | 7719 |
8968 @vindex nnmail-split-fancy-syntax-table | 7720 @vindex nnmail-split-fancy-syntax-table |
8969 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect | 7721 @code{nnmail-split-fancy-syntax-table} is the syntax table in effect |
8970 when all this splitting is performed. | 7722 when all this splitting is performed. |
8971 | |
8972 If you want to have Gnus create groups dynamically based on some | |
8973 information in the headers, you can say things like: | |
8974 | |
8975 @example | |
8976 (any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1") | |
8977 @end example | |
8978 | |
8979 That is, do @code{replace-match}-like substitions in the group names. | |
8980 | 7723 |
8981 | 7724 |
8982 @node Mail and Procmail | 7725 @node Mail and Procmail |
8983 @subsection Mail and Procmail | 7726 @subsection Mail and Procmail |
8984 @cindex procmail | 7727 @cindex procmail |
9035 | 7778 |
9036 @vindex nnmail-keep-last-article | 7779 @vindex nnmail-keep-last-article |
9037 If you use @code{procmail} to split things directory into an @code{nnmh} | 7780 If you use @code{procmail} to split things directory into an @code{nnmh} |
9038 directory (which you shouldn't do), you should set | 7781 directory (which you shouldn't do), you should set |
9039 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from | 7782 @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from |
9040 ever expiring the final article (i. e., the article with the highest | 7783 ever expiring the final article in a mail newsgroup. This is quite, |
9041 article number) in a mail newsgroup. This is quite, quite important. | 7784 quite important. |
9042 | |
9043 Here's an example setup: The incoming spools are located in | |
9044 @file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming | |
9045 spool files have the same names as the equivalent groups). The | |
9046 @code{nnfolder} backend is to be used as the mail interface, and the | |
9047 @code{nnfolder} directory is @file{~/fMail/}. | |
9048 | |
9049 @lisp | |
9050 (setq nnfolder-directory "~/fMail/") | |
9051 (setq nnmail-spool-file 'procmail) | |
9052 (setq nnmail-procmail-directory "~/incoming/") | |
9053 (setq gnus-secondary-select-methods '((nnfolder ""))) | |
9054 (setq nnmail-procmail-suffix "") | |
9055 @end lisp | |
9056 | 7785 |
9057 | 7786 |
9058 @node Incorporating Old Mail | 7787 @node Incorporating Old Mail |
9059 @subsection Incorporating Old Mail | 7788 @subsection Incorporating Old Mail |
9060 | 7789 |
9134 match the regular expression @code{gnus-auto-expirable-newsgroups} will | 7863 match the regular expression @code{gnus-auto-expirable-newsgroups} will |
9135 have all articles that you read marked as expirable automatically. All | 7864 have all articles that you read marked as expirable automatically. All |
9136 articles that are marked as expirable have an @samp{E} in the first | 7865 articles that are marked as expirable have an @samp{E} in the first |
9137 column in the summary buffer. | 7866 column in the summary buffer. |
9138 | 7867 |
9139 Note that making a group auto-expirable don't mean that all read | |
9140 articles are expired---only the articles that are marked as expirable | |
9141 will be expired. Also note the using the @kbd{d} command won't make | |
9142 groups expirable---only semi-automatic marking of articles as read will | |
9143 mark the articles as expirable in auto-expirable groups. | |
9144 | |
9145 Let's say you subscribe to a couple of mailing lists, and you want the | 7868 Let's say you subscribe to a couple of mailing lists, and you want the |
9146 articles you have read to disappear after a while: | 7869 articles you have read to disappear after a while: |
9147 | 7870 |
9148 @lisp | 7871 @lisp |
9149 (setq gnus-auto-expirable-newsgroups | 7872 (setq gnus-auto-expirable-newsgroups |
9151 @end lisp | 7874 @end lisp |
9152 | 7875 |
9153 Another way to have auto-expiry happen is to have the element | 7876 Another way to have auto-expiry happen is to have the element |
9154 @code{auto-expire} in the group parameters of the group. | 7877 @code{auto-expire} in the group parameters of the group. |
9155 | 7878 |
9156 If you use adaptive scoring (@pxref{Adaptive Scoring}) and | |
9157 auto-expiring, you'll have problems. Auto-expiring and adaptive scoring | |
9158 doesn't really mix very well. | |
9159 | |
9160 @vindex nnmail-expiry-wait | 7879 @vindex nnmail-expiry-wait |
9161 The @code{nnmail-expiry-wait} variable supplies the default time an | 7880 The @code{nnmail-expiry-wait} variable supplies the default time an |
9162 expirable article has to live. Gnus starts counting days from when the | 7881 expirable article has to live. The default is seven days. |
9163 message @emph{arrived}, not from when it was sent. The default is seven | |
9164 days. | |
9165 | 7882 |
9166 Gnus also supplies a function that lets you fine-tune how long articles | 7883 Gnus also supplies a function that lets you fine-tune how long articles |
9167 are to live, based on what group they are in. Let's say you want to | 7884 are to live, based on what group they are in. Let's say you want to |
9168 have one month expiry period in the @samp{mail.private} group, a one day | 7885 have one month expiry period in the @samp{mail.private} group, a one day |
9169 expiry period in the @samp{mail.junk} group, and a six day expiry period | 7886 expiry period in the @samp{mail.junk} group, and a six day expiry period |
9212 crying to me when you discover that the regexp you used matched the | 7929 crying to me when you discover that the regexp you used matched the |
9213 wrong group and all your important mail has disappeared. Be a | 7930 wrong group and all your important mail has disappeared. Be a |
9214 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable | 7931 @emph{man}! Or a @emph{woman}! Whatever you feel more comfortable |
9215 with! So there! | 7932 with! So there! |
9216 | 7933 |
9217 Most people make most of their mail groups total-expirable, though. | |
9218 | |
9219 | |
9220 @node Washing Mail | |
9221 @subsection Washing Mail | |
9222 @cindex mail washing | |
9223 @cindex list server brain damage | |
9224 @cindex incoming mail treatment | |
9225 | |
9226 Mailers and list servers are notorious for doing all sorts of really, | |
9227 really stupid things with mail. ``Hey, RFC822 doesn't explicitly | |
9228 prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the | |
9229 end of all lines passing through our server, so let's do that!!!!1!'' | |
9230 Yes, but RFC822 wasn't designed to be read by morons. Things that were | |
9231 considered to be self-evident were not discussed. So. Here we are. | |
9232 | |
9233 Case in point: The German version of Microsoft Exchange adds @samp{AW: | |
9234 } to the subjects of replies instead of @samp{Re: }. I could pretend to | |
9235 be shocked and dismayed by this, but I haven't got the energy. It is to | |
9236 laugh. | |
9237 | |
9238 Gnus provides a plethora of functions for washing articles while | |
9239 displaying them, but it might be nicer to do the filtering before | |
9240 storing the mail to disc. For that purpose, we have three hooks and | |
9241 various functions that can be put in these hooks. | |
9242 | |
9243 @table @code | |
9244 @item nnmail-prepare-incoming-hook | |
9245 @vindex nnmail-prepare-incoming-hook | |
9246 This hook is called before doing anything with the mail and is meant for | |
9247 grand, sweeping gestures. Functions to be used include: | |
9248 | |
9249 @table @code | |
9250 @item nnheader-ms-strip-cr | |
9251 @findex nnheader-ms-strip-cr | |
9252 Remove trailing carriage returns from each line. This is default on | |
9253 Emacs running on MS machines. | |
9254 | |
9255 @end table | |
9256 | |
9257 @item nnmail-prepare-incoming-header-hook | |
9258 @vindex nnmail-prepare-incoming-header-hook | |
9259 This hook is called narrowed to each header. It can be used when | |
9260 cleaning up the headers. Functions that can be used include: | |
9261 | |
9262 @table @code | |
9263 @item nnmail-remove-leading-whitespace | |
9264 @findex nnmail-remove-leading-whitespace | |
9265 Clear leading white space that ``helpful'' listservs have added to the | |
9266 headers too make them look nice. Aaah. | |
9267 | |
9268 @item nnmail-remove-list-identifiers | |
9269 @findex nnmail-remove-list-identifiers | |
9270 Some list servers add an identifier---for example, @samp{(idm)}---to the | |
9271 beginning of all @code{Subject} headers. I'm sure that's nice for | |
9272 people who use stone age mail readers. This function will remove | |
9273 strings that match the @code{nnmail-list-identifiers} regexp, which can | |
9274 also be a list of regexp. | |
9275 | |
9276 For instance, if you want to remove the @samp{(idm)} and the | |
9277 @samp{nagnagnag} identifiers: | |
9278 | |
9279 @lisp | |
9280 (setq nnmail-list-identifiers | |
9281 '("(idm)" "nagnagnag")) | |
9282 @end lisp | |
9283 | |
9284 @item nnmail-remove-tabs | |
9285 @findex nnmail-remove-tabs | |
9286 Translate all @samp{TAB} characters into @samp{SPACE} characters. | |
9287 | |
9288 @end table | |
9289 | |
9290 @item nnmail-prepare-incoming-message-hook | |
9291 @vindex nnmail-prepare-incoming-message-hook | |
9292 This hook is called narrowed to each message. Functions to be used | |
9293 include: | |
9294 | |
9295 @table @code | |
9296 @item article-de-quoted-unreadable | |
9297 @findex article-de-quoted-unreadable | |
9298 Decode Quoted Readable encoding. | |
9299 | |
9300 @end table | |
9301 @end table | |
9302 | |
9303 | 7934 |
9304 @node Duplicates | 7935 @node Duplicates |
9305 @subsection Duplicates | 7936 @subsection Duplicates |
9306 | 7937 |
9307 @vindex nnmail-treat-duplicates | 7938 @vindex nnmail-treat-duplicates |
9309 @vindex nnmail-message-id-cache-file | 7940 @vindex nnmail-message-id-cache-file |
9310 @cindex duplicate mails | 7941 @cindex duplicate mails |
9311 If you are a member of a couple of mailing list, you will sometime | 7942 If you are a member of a couple of mailing list, you will sometime |
9312 receive two copies of the same mail. This can be quite annoying, so | 7943 receive two copies of the same mail. This can be quite annoying, so |
9313 @code{nnmail} checks for and treats any duplicates it might find. To do | 7944 @code{nnmail} checks for and treats any duplicates it might find. To do |
9314 this, it keeps a cache of old @code{Message-ID}s--- | 7945 this, it keeps a cache of old @code{Message-ID}s - |
9315 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by | 7946 @code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by |
9316 default. The approximate maximum number of @code{Message-ID}s stored | 7947 default. The approximate maximum number of @code{Message-ID}s stored |
9317 there is controlled by the @code{nnmail-message-id-cache-length} | 7948 there is controlled by the @code{nnmail-message-id-cache-length} |
9318 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be | 7949 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be |
9319 stored.) If all this sounds scary to you, you can set | 7950 stored.) If all this sounds scary to you, you can set |
9320 @code{nnmail-treat-duplicates} to @code{warn} (which is what it is by | 7951 @code{nnmail-treat-duplicates} to @code{warn} (which is what it is by |
9321 default), and @code{nnmail} won't delete duplicate mails. Instead it | 7952 default), and @code{nnmail} won't delete duplicate mails. Instead it |
9322 will insert a warning into the head of the mail saying that it thinks | 7953 will generate a brand new @code{Message-ID} for the mail and insert a |
9323 that this is a duplicate of a different message. | 7954 warning into the head of the mail saying that it thinks that this is a |
7955 duplicate of a different message. | |
9324 | 7956 |
9325 This variable can also be a function. If that's the case, the function | 7957 This variable can also be a function. If that's the case, the function |
9326 will be called from a buffer narrowed to the message in question with | 7958 will be called from a buffer narrowed to the message in question with |
9327 the @code{Message-ID} as a parameter. The function must return either | 7959 the @code{Message-ID} as a parameter. The function must return either |
9328 @code{nil}, @code{warn}, or @code{delete}. | 7960 @code{nil}, @code{warn}, or @code{delete}. |
9527 @findex nnml-generate-nov-databases | 8159 @findex nnml-generate-nov-databases |
9528 If your @code{nnml} groups and @sc{nov} files get totally out of whack, | 8160 If your @code{nnml} groups and @sc{nov} files get totally out of whack, |
9529 you can do a complete update by typing @kbd{M-x | 8161 you can do a complete update by typing @kbd{M-x |
9530 nnml-generate-nov-databases}. This command will trawl through the | 8162 nnml-generate-nov-databases}. This command will trawl through the |
9531 entire @code{nnml} hierarchy, looking at each and every article, so it | 8163 entire @code{nnml} hierarchy, looking at each and every article, so it |
9532 might take a while to complete. A better interface to this | 8164 might take a while to complete. |
9533 functionality can be found in the server buffer (@pxref{Server | |
9534 Commands}). | |
9535 | 8165 |
9536 | 8166 |
9537 @node MH Spool | 8167 @node MH Spool |
9538 @subsubsection MH Spool | 8168 @subsubsection MH Spool |
9539 @cindex nnmh | 8169 @cindex nnmh |
9611 Gnus can do more than just read news or mail. The methods described | 8241 Gnus can do more than just read news or mail. The methods described |
9612 below allow Gnus to view directories and files as if they were | 8242 below allow Gnus to view directories and files as if they were |
9613 newsgroups. | 8243 newsgroups. |
9614 | 8244 |
9615 @menu | 8245 @menu |
9616 * Directory Groups:: You can read a directory as if it was a newsgroup. | 8246 * Directory Groups:: You can read a directory as if it was a newsgroup. |
9617 * Anything Groups:: Dired? Who needs dired? | 8247 * Anything Groups:: Dired? Who needs dired? |
9618 * Document Groups:: Single files can be the basis of a group. | 8248 * Document Groups:: Single files can be the basis of a group. |
9619 * SOUP:: Reading @sc{SOUP} packets ``offline''. | 8249 * SOUP:: Reading @sc{SOUP} packets ``offline''. |
9620 * Web Searches:: Creating groups from articles that match a string. | |
9621 * Mail-To-News Gateways:: Posting articles via mail-to-news gateways. | |
9622 @end menu | 8250 @end menu |
9623 | 8251 |
9624 | 8252 |
9625 @node Directory Groups | 8253 @node Directory Groups |
9626 @subsection Directory Groups | 8254 @subsection Directory Groups |
9634 This might be an opportune moment to mention @code{ange-ftp}, that most | 8262 This might be an opportune moment to mention @code{ange-ftp}, that most |
9635 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I | 8263 wonderful of all wonderful Emacs packages. When I wrote @code{nndir}, I |
9636 didn't think much about it---a backend to read directories. Big deal. | 8264 didn't think much about it---a backend to read directories. Big deal. |
9637 | 8265 |
9638 @code{ange-ftp} changes that picture dramatically. For instance, if you | 8266 @code{ange-ftp} changes that picture dramatically. For instance, if you |
9639 enter the @code{ange-ftp} file name | 8267 enter @file{"/ftp.hpc.uh.edu:/pub/emacs/ding-list/"} as the the |
9640 @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the the directory name, | 8268 directory name, ange-ftp will actually allow you to read this directory |
9641 @code{ange-ftp} will actually allow you to read this directory over at | 8269 over at @samp{sina} as a newsgroup. Distributed news ahoy! |
9642 @samp{sina} as a newsgroup. Distributed news ahoy! | |
9643 | 8270 |
9644 @code{nndir} will use @sc{nov} files if they are present. | 8271 @code{nndir} will use @sc{nov} files if they are present. |
9645 | 8272 |
9646 @code{nndir} is a ``read-only'' backend---you can't delete or expire | 8273 @code{nndir} is a ``read-only'' backend---you can't delete or expire |
9647 articles with this method. You can use @code{nnmh} or @code{nnml} for | 8274 articles with this method. You can use @code{nnmh} or @code{nnml} for |
9663 a group, @code{nneething} must create ``headers'' that Gnus can use. | 8290 a group, @code{nneething} must create ``headers'' that Gnus can use. |
9664 After all, Gnus is a newsreader, in case you're | 8291 After all, Gnus is a newsreader, in case you're |
9665 forgetting. @code{nneething} does this in a two-step process. First, it | 8292 forgetting. @code{nneething} does this in a two-step process. First, it |
9666 snoops each file in question. If the file looks like an article (i.e., | 8293 snoops each file in question. If the file looks like an article (i.e., |
9667 the first few lines look like headers), it will use this as the head. | 8294 the first few lines look like headers), it will use this as the head. |
9668 If this is just some arbitrary file without a head (e.g. a C source | 8295 If this is just some arbitrary file without a head (eg. a C source |
9669 file), @code{nneething} will cobble up a header out of thin air. It | 8296 file), @code{nneething} will cobble up a header out of thin air. It |
9670 will use file ownership, name and date and do whatever it can with these | 8297 will use file ownership, name and date and do whatever it can with these |
9671 elements. | 8298 elements. |
9672 | 8299 |
9673 All this should happen automatically for you, and you will be presented | 8300 All this should happen automatically for you, and you will be presented |
9770 | 8397 |
9771 If you have some old archived articles that you want to insert into your | 8398 If you have some old archived articles that you want to insert into your |
9772 new & spiffy Gnus mail backend, @code{nndoc} can probably help you with | 8399 new & spiffy Gnus mail backend, @code{nndoc} can probably help you with |
9773 that. Say you have an old @file{RMAIL} file with mail that you now want | 8400 that. Say you have an old @file{RMAIL} file with mail that you now want |
9774 to split into your new @code{nnml} groups. You look at that file using | 8401 to split into your new @code{nnml} groups. You look at that file using |
9775 @code{nndoc} (using the @kbd{G f} command in the group buffer | 8402 @code{nndoc}, set the process mark on all the articles in the buffer |
9776 (@pxref{Foreign Groups})), set the process mark on all the articles in | 8403 (@kbd{M P b}, for instance), and then re-spool (@kbd{B r}) using |
9777 the buffer (@kbd{M P b}, for instance), and then re-spool (@kbd{B r}) | 8404 @code{nnml}. If all goes well, all the mail in the @file{RMAIL} file is |
9778 using @code{nnml}. If all goes well, all the mail in the @file{RMAIL} | 8405 now also stored in lots of @code{nnml} directories, and you can delete |
9779 file is now also stored in lots of @code{nnml} directories, and you can | 8406 that pesky @file{RMAIL} file. If you have the guts! |
9780 delete that pesky @file{RMAIL} file. If you have the guts! | |
9781 | 8407 |
9782 Virtual server variables: | 8408 Virtual server variables: |
9783 | 8409 |
9784 @table @code | 8410 @table @code |
9785 @item nndoc-article-type | 8411 @item nndoc-article-type |
9786 @vindex nndoc-article-type | 8412 @vindex nndoc-article-type |
9787 This should be one of @code{mbox}, @code{babyl}, @code{digest}, | 8413 This should be one of @code{mbox}, @code{babyl}, @code{digest}, |
9788 @code{mmdf}, @code{forward}, @code{rfc934}, @code{rfc822-forward}, | 8414 @code{mmdf}, @code{forward}, @code{news}, @code{rnews}, |
9789 @code{news}, @code{rnews}, @code{mime-digest}, @code{clari-briefs}, or | 8415 @code{mime-digest}, @code{clari-briefs}, or @code{guess}. |
9790 @code{guess}. | |
9791 | 8416 |
9792 @item nndoc-post-type | 8417 @item nndoc-post-type |
9793 @vindex nndoc-post-type | 8418 @vindex nndoc-post-type |
9794 This variable says whether Gnus is to consider the group a news group or | 8419 This variable says whether Gnus is to consider the group a news group or |
9795 a mail group. There are two legal values: @code{mail} (the default) | 8420 a mail group. There are two legal values: @code{mail} (the default) |
9796 and @code{news}. | 8421 and @code{news}. |
9797 @end table | 8422 @end table |
9798 | 8423 |
9799 @menu | |
9800 * Document Server Internals:: How to add your own document types. | |
9801 @end menu | |
9802 | |
9803 | |
9804 @node Document Server Internals | |
9805 @subsubsection Document Server Internals | |
9806 | |
9807 Adding new document types to be recognized by @code{nndoc} isn't | |
9808 difficult. You just have to whip up a definition of what the document | |
9809 looks like, write a predicate function to recognize that document type, | |
9810 and then hook into @code{nndoc}. | |
9811 | |
9812 First, here's an example document type definition: | |
9813 | |
9814 @example | |
9815 (mmdf | |
9816 (article-begin . "^\^A\^A\^A\^A\n") | |
9817 (body-end . "^\^A\^A\^A\^A\n")) | |
9818 @end example | |
9819 | |
9820 The definition is simply a unique @dfn{name} followed by a series of | |
9821 regexp pseudo-variable settings. Below are the possible | |
9822 variables---don't be daunted by the number of variables; most document | |
9823 types can be defined with very few settings: | |
9824 | |
9825 @table @code | |
9826 @item first-article | |
9827 If present, @code{nndoc} will skip past all text until it finds | |
9828 something that match this regexp. All text before this will be | |
9829 totally ignored. | |
9830 | |
9831 @item article-begin | |
9832 This setting has to be present in all document type definitions. It | |
9833 says what the beginning of each article looks like. | |
9834 | |
9835 @item head-begin-function | |
9836 If present, this should be a function that moves point to the head of | |
9837 the article. | |
9838 | |
9839 @item nndoc-head-begin | |
9840 If present, this should be a regexp that matches the head of the | |
9841 article. | |
9842 | |
9843 @item nndoc-head-end | |
9844 This should match the end of the head of the article. It defaults to | |
9845 @samp{^$}---the empty line. | |
9846 | |
9847 @item body-begin-function | |
9848 If present, this function should move point to the beginning of the body | |
9849 of the article. | |
9850 | |
9851 @item body-begin | |
9852 This should match the beginning of the body of the article. It defaults | |
9853 to @samp{^\n}. | |
9854 | |
9855 @item body-end-function | |
9856 If present, this function should move point to the end of the body of | |
9857 the article. | |
9858 | |
9859 @item body-end | |
9860 If present, this should match the end of the body of the article. | |
9861 | |
9862 @item nndoc-file-end | |
9863 If present, this should match the end of the file. All text after this | |
9864 regexp will be totally ignored. | |
9865 | |
9866 @end table | |
9867 | |
9868 So, using these variables @code{nndoc} is able to dissect a document | |
9869 file into a series of articles, each with a head and a body. However, a | |
9870 few more variables are needed since not all document types are all that | |
9871 news-like---variables needed to transform the head or the body into | |
9872 something that's palatable for Gnus: | |
9873 | |
9874 @table @code | |
9875 @item prepare-body-function | |
9876 If present, this function will be called when requesting an article. It | |
9877 will be called with point at the start of the body, and is useful if the | |
9878 document has encoded some parts of its contents. | |
9879 | |
9880 @item article-transform-function | |
9881 If present, this function is called when requesting an article. It's | |
9882 meant to be used how more wide-ranging transformation of both head and | |
9883 body of the article. | |
9884 | |
9885 @item generate-head-function | |
9886 If present, this function is called to generate a head that Gnus can | |
9887 understand. It is called with the article number as a parameter, and is | |
9888 expected to generate a nice head for the article in question. It is | |
9889 called when requesting the headers of all articles. | |
9890 | |
9891 @end table | |
9892 | |
9893 Let's look at the most complicated example I can come up with---standard | |
9894 digests: | |
9895 | |
9896 @example | |
9897 (standard-digest | |
9898 (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+")) | |
9899 (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+")) | |
9900 (prepare-body-function . nndoc-unquote-dashes) | |
9901 (body-end-function . nndoc-digest-body-end) | |
9902 (head-end . "^ ?$") | |
9903 (body-begin . "^ ?\n") | |
9904 (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$") | |
9905 (subtype digest guess)) | |
9906 @end example | |
9907 | |
9908 We see that all text before a 70-width line of dashes is ignored; all | |
9909 text after a line that starts with that @samp{^End of} is also ignored; | |
9910 each article begins with a 30-width line of dashes; the line separating | |
9911 the head from the body may contain a single space; and that the body is | |
9912 run through @code{nndoc-unquote-dashes} before being delivered. | |
9913 | |
9914 To hook your own document definition into @code{nndoc}, use the | |
9915 @code{nndoc-add-type} function. It takes two parameters---the first is | |
9916 the definition itself and the second (optional) parameter says where in | |
9917 the document type definition alist to put this definition. The alist is | |
9918 traversed sequentially, and @code{nndoc-TYPE-type-p} is called for each | |
9919 type. So @code{nndoc-mmdf-type-p} is called to see whether a document | |
9920 is of @code{mmdf} type, and so on. These type predicates should return | |
9921 @code{nil} if the document is not of the correct type; @code{t} if it is | |
9922 of the correct type; and a number if the document might be of the | |
9923 correct type. A high number means high probability; a low number means | |
9924 low probability with @samp{0} being the lowest legal number. | |
9925 | |
9926 | 8424 |
9927 @node SOUP | 8425 @node SOUP |
9928 @subsection SOUP | 8426 @subsection SOUP |
9929 @cindex SOUP | 8427 @cindex SOUP |
9930 @cindex offline | 8428 @cindex offline |
9944 | 8442 |
9945 A file format called @sc{soup} has been developed for transporting news | 8443 A file format called @sc{soup} has been developed for transporting news |
9946 and mail from servers to home machines and back again. It can be a bit | 8444 and mail from servers to home machines and back again. It can be a bit |
9947 fiddly. | 8445 fiddly. |
9948 | 8446 |
9949 First some terminology: | |
9950 | |
9951 @table @dfn | |
9952 | |
9953 @item server | |
9954 This is the machine that is connected to the outside world and where you | |
9955 get news and/or mail from. | |
9956 | |
9957 @item home machine | |
9958 This is the machine that you want to do the actual reading and responding | |
9959 on. It is typically not connected to the rest of the world in any way. | |
9960 | |
9961 @item packet | |
9962 Something that contains messages and/or commands. There are two kinds | |
9963 of packets: | |
9964 | |
9965 @table @dfn | |
9966 @item message packets | |
9967 These are packets made at the server, and typically contains lots of | |
9968 messages for you to read. These are called @file{SoupoutX.tgz} by | |
9969 default, where @var{X} is a number. | |
9970 | |
9971 @item response packets | |
9972 These are packets made at the home machine, and typically contains | |
9973 replies that you've written. These are called @file{SoupinX.tgz} by | |
9974 default, where @var{X} is a number. | |
9975 | |
9976 @end table | |
9977 | |
9978 @end table | |
9979 | |
9980 | |
9981 @enumerate | 8447 @enumerate |
9982 | 8448 |
9983 @item | 8449 @item |
9984 You log in on the server and create a @sc{soup} packet. You can either | 8450 You log in on the server and create a @sc{soup} packet. You can either |
9985 use a dedicated @sc{soup} thingie (like the @code{awk} program), or you | 8451 use a dedicated @sc{soup} thingie, or you can use Gnus to create the |
9986 can use Gnus to create the packet with its @sc{soup} commands (@kbd{O | 8452 packet with the @kbd{O s} command. |
9987 s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}). | |
9988 | 8453 |
9989 @item | 8454 @item |
9990 You transfer the packet home. Rail, boat, car or modem will do fine. | 8455 You transfer the packet home. Rail, boat, car or modem will do fine. |
9991 | 8456 |
9992 @item | 8457 @item |
9993 You put the packet in your home directory. | 8458 You put the packet in your home directory. |
9994 | 8459 |
9995 @item | 8460 @item |
9996 You fire up Gnus on your home machine using the @code{nnsoup} backend as | 8461 You fire up Gnus using the @code{nnsoup} backend as the native server. |
9997 the native or secondary server. | |
9998 | 8462 |
9999 @item | 8463 @item |
10000 You read articles and mail and answer and followup to the things you | 8464 You read articles and mail and answer and followup to the things you |
10001 want (@pxref{SOUP Replies}). | 8465 want. |
10002 | 8466 |
10003 @item | 8467 @item |
10004 You do the @kbd{G s r} command to pack these replies into a @sc{soup} | 8468 You do the @kbd{G s r} command to pack these replies into a @sc{soup} |
10005 packet. | 8469 packet. |
10006 | 8470 |
10025 @end menu | 8489 @end menu |
10026 | 8490 |
10027 | 8491 |
10028 @node SOUP Commands | 8492 @node SOUP Commands |
10029 @subsubsection SOUP Commands | 8493 @subsubsection SOUP Commands |
10030 | |
10031 These are commands for creating and manipulating @sc{soup} packets. | |
10032 | 8494 |
10033 @table @kbd | 8495 @table @kbd |
10034 @item G s b | 8496 @item G s b |
10035 @kindex G s b (Group) | 8497 @kindex G s b (Group) |
10036 @findex gnus-group-brew-soup | 8498 @findex gnus-group-brew-soup |
10039 process/prefix convention. | 8501 process/prefix convention. |
10040 | 8502 |
10041 @item G s w | 8503 @item G s w |
10042 @kindex G s w (Group) | 8504 @kindex G s w (Group) |
10043 @findex gnus-soup-save-areas | 8505 @findex gnus-soup-save-areas |
10044 Save all @sc{soup} data files (@code{gnus-soup-save-areas}). | 8506 Save all data files (@code{gnus-soup-save-areas}). |
10045 | 8507 |
10046 @item G s s | 8508 @item G s s |
10047 @kindex G s s (Group) | 8509 @kindex G s s (Group) |
10048 @findex gnus-soup-send-replies | 8510 @findex gnus-soup-send-replies |
10049 Send all replies from the replies packet | 8511 Send all replies from the replies packet |
10062 @item O s | 8524 @item O s |
10063 @kindex O s (Summary) | 8525 @kindex O s (Summary) |
10064 @findex gnus-soup-add-article | 8526 @findex gnus-soup-add-article |
10065 This summary-mode command adds the current article to a @sc{soup} packet | 8527 This summary-mode command adds the current article to a @sc{soup} packet |
10066 (@code{gnus-soup-add-article}). It understands the process/prefix | 8528 (@code{gnus-soup-add-article}). It understands the process/prefix |
10067 convention (@pxref{Process/Prefix}). | 8529 convention. |
10068 | 8530 |
10069 @end table | 8531 @end table |
10070 | 8532 |
10071 | 8533 |
10072 There are a few variables to customize where Gnus will put all these | 8534 There are a few variables to customize where Gnus will put all these |
10080 @sc{soup} packets. The default is @file{~/SoupBrew/}. | 8542 @sc{soup} packets. The default is @file{~/SoupBrew/}. |
10081 | 8543 |
10082 @item gnus-soup-replies-directory | 8544 @item gnus-soup-replies-directory |
10083 @vindex gnus-soup-replies-directory | 8545 @vindex gnus-soup-replies-directory |
10084 This is what Gnus will use as a temporary directory while sending our | 8546 This is what Gnus will use as a temporary directory while sending our |
10085 reply packets. @file{~/SoupBrew/SoupReplies/} is the default. | 8547 reply packets. The default is @file{~/SoupBrew/SoupReplies/}. |
10086 | 8548 |
10087 @item gnus-soup-prefix-file | 8549 @item gnus-soup-prefix-file |
10088 @vindex gnus-soup-prefix-file | 8550 @vindex gnus-soup-prefix-file |
10089 Name of the file where Gnus stores the last used prefix. The default is | 8551 Name of the file where Gnus stores the last used prefix. The default is |
10090 @samp{gnus-prefix}. | 8552 @samp{gnus-prefix}. |
10192 @sc{soup} system. | 8654 @sc{soup} system. |
10193 | 8655 |
10194 In specific, this is what it does: | 8656 In specific, this is what it does: |
10195 | 8657 |
10196 @lisp | 8658 @lisp |
10197 (setq message-send-news-function 'nnsoup-request-post) | 8659 (setq gnus-inews-article-function 'nnsoup-request-post) |
10198 (setq message-send-mail-function 'nnsoup-request-mail) | 8660 (setq send-mail-function 'nnsoup-request-mail) |
10199 @end lisp | 8661 @end lisp |
10200 | 8662 |
10201 And that's it, really. If you only want news to go into the @sc{soup} | 8663 And that's it, really. If you only want news to go into the @sc{soup} |
10202 system you just use the first line. If you only want mail to be | 8664 system you just use the first line. If you only want mail to be |
10203 @sc{soup}ed you use the second. | 8665 @sc{soup}ed you use the second. |
10204 | |
10205 | |
10206 @node Web Searches | |
10207 @subsection Web Searches | |
10208 @cindex nnweb | |
10209 @cindex DejaNews | |
10210 @cindex Alta Vista | |
10211 @cindex InReference | |
10212 @cindex Usenet searches | |
10213 @cindex searching the Usenet | |
10214 | |
10215 It's, like, too neat to search the Usenet for articles that match a | |
10216 string, but it, like, totally @emph{sucks}, like, totally, to use one of | |
10217 those, like, Web browsers, and you, like, have to, rilly, like, look at | |
10218 the commercials, so, like, with Gnus you can do @emph{rad}, rilly, | |
10219 searches without having to use a browser. | |
10220 | |
10221 The @code{nnweb} backend allows an easy interface to the mighty search | |
10222 engine. You create an @code{nnweb} group, enter a search pattern, and | |
10223 then enter the group and read the articles like you would any normal | |
10224 group. The @kbd{G w} command in the group buffer (@pxref{Foreign | |
10225 Groups}) will do this in an easy-to-use fashion. | |
10226 | |
10227 @code{nnweb} groups don't really lend themselves to being solid | |
10228 groups---they have a very fleeting idea of article numbers. In fact, | |
10229 each time you enter an @code{nnweb} group (not even changing the search | |
10230 pattern), you are likely to get the articles ordered in a different | |
10231 manner. Not even using duplicate suppression (@code{Duplicate | |
10232 Suppression}) will help, since @code{nnweb} doesn't even know the | |
10233 @code{Message-ID} of the articles before reading them using some search | |
10234 engines (DejaNews, for instance). The only possible way to keep track | |
10235 of which articles you've read is by scoring on the @code{Date} | |
10236 header---mark all articles that were posted before the last date you | |
10237 read the group as read. | |
10238 | |
10239 If the search engine changes its output substantially, @code{nnweb} | |
10240 won't be able to parse it and will fail. One could hardly fault the Web | |
10241 providers if they were to do this---their @emph{raison d'être} is to | |
10242 make money off of advertisements, not to provide services to the | |
10243 community. Since @code{nnweb} washes the ads off all the articles, one | |
10244 might think that the providers might be somewhat miffed. We'll see. | |
10245 | |
10246 You must have the @code{url} and @code{w3} package installed to be able | |
10247 to use @code{nnweb}. | |
10248 | |
10249 Virtual server variables: | |
10250 | |
10251 @table @code | |
10252 @item nnweb-type | |
10253 @vindex nnweb-type | |
10254 What search engine type is being used. The currently supported types | |
10255 are @code{dejanews}, @code{altavista} and @code{reference}. | |
10256 | |
10257 @item nnweb-search | |
10258 @vindex nnweb-search | |
10259 The search string to feed to the search engine. | |
10260 | |
10261 @item nnweb-max-hits | |
10262 @vindex nnweb-max-hits | |
10263 Advisory maximum number of hits per search to display. The default is | |
10264 100. | |
10265 | |
10266 @item nnweb-type-definition | |
10267 @vindex nnweb-type-definition | |
10268 Type-to-definition alist. This alist says what @code{nnweb} should do | |
10269 with the various search engine types. The following elements must be | |
10270 present: | |
10271 | |
10272 @table @code | |
10273 @item article | |
10274 Function to decode the article and provide something that Gnus | |
10275 understands. | |
10276 | |
10277 @item map | |
10278 Function to create an article number to message header and URL alist. | |
10279 | |
10280 @item search | |
10281 Function to send the search string to the search engine. | |
10282 | |
10283 @item address | |
10284 The address the aforementioned function should send the search string | |
10285 to. | |
10286 | |
10287 @item id | |
10288 Format string URL to fetch an article by @code{Message-ID}. | |
10289 @end table | |
10290 | |
10291 @end table | |
10292 | |
10293 | |
10294 | |
10295 @node Mail-To-News Gateways | |
10296 @subsection Mail-To-News Gateways | |
10297 @cindex mail-to-news gateways | |
10298 @cindex gateways | |
10299 | |
10300 If your local @code{nntp} server doesn't allow posting, for some reason | |
10301 or other, you can post using one of the numerous mail-to-news gateways. | |
10302 The @code{nngateway} backend provides the interface. | |
10303 | |
10304 Note that you can't read anything from this backend---it can only be | |
10305 used to post with. | |
10306 | |
10307 Server variables: | |
10308 | |
10309 @table @code | |
10310 @item nngateway-address | |
10311 @vindex nngateway-address | |
10312 This is the address of the mail-to-news gateway. | |
10313 | |
10314 @item nngateway-header-transformation | |
10315 @vindex nngateway-header-transformation | |
10316 News headers have often have to be transformed in some odd way or other | |
10317 for the mail-to-news gateway to accept it. This variable says what | |
10318 transformation should be called, and defaults to | |
10319 @code{nngateway-simple-header-transformation}. The function is called | |
10320 narrowed to the headers to be transformed and with one parameter---the | |
10321 gateway address. | |
10322 | |
10323 This default function just inserts a new @code{To} header based on the | |
10324 @code{Newsgroups} header and the gateway address---an article with this | |
10325 @code{Newsgroups} header: | |
10326 | |
10327 @example | |
10328 Newsgroups: alt.religion.emacs | |
10329 @end example | |
10330 | |
10331 will get this @code{From} header inserted: | |
10332 | |
10333 @example | |
10334 To: alt-religion-emacs@@GATEWAY | |
10335 @end example | |
10336 | |
10337 @end table | |
10338 | |
10339 So, to use this, simply say something like: | |
10340 | |
10341 @lisp | |
10342 (setq gnus-post-method '(nngateway "GATEWAY.ADDRESS")) | |
10343 @end lisp | |
10344 | 8666 |
10345 | 8667 |
10346 @node Combined Groups | 8668 @node Combined Groups |
10347 @section Combined Groups | 8669 @section Combined Groups |
10348 | 8670 |
10501 * Summary Score Commands:: Adding score entries for the current group. | 8823 * Summary Score Commands:: Adding score entries for the current group. |
10502 * Group Score Commands:: General score commands. | 8824 * Group Score Commands:: General score commands. |
10503 * Score Variables:: Customize your scoring. (My, what terminology). | 8825 * Score Variables:: Customize your scoring. (My, what terminology). |
10504 * Score File Format:: What a score file may contain. | 8826 * Score File Format:: What a score file may contain. |
10505 * Score File Editing:: You can edit score files by hand as well. | 8827 * Score File Editing:: You can edit score files by hand as well. |
10506 * Adaptive Scoring:: Big Sister Gnus knows what you read. | 8828 * Adaptive Scoring:: Big Sister Gnus @emph{knows} what you read. |
10507 * Home Score File:: How to say where new score entries are to go. | |
10508 * Followups To Yourself:: Having Gnus notice when people answer you. | 8829 * Followups To Yourself:: Having Gnus notice when people answer you. |
10509 * Scoring Tips:: How to score effectively. | 8830 * Scoring Tips:: How to score effectively. |
10510 * Reverse Scoring:: That problem child of old is not problem. | 8831 * Reverse Scoring:: That problem child of old is not problem. |
10511 * Global Score Files:: Earth-spanning, ear-splitting score files. | 8832 * Global Score Files:: Earth-spanning, ear-splitting score files. |
10512 * Kill Files:: They are still here, but they can be ignored. | 8833 * Kill Files:: They are still here, but they can be ignored. |
10513 * Converting Kill Files:: Translating kill files to score files. | |
10514 * GroupLens:: Getting predictions on what you like to read. | 8834 * GroupLens:: Getting predictions on what you like to read. |
10515 * Advanced Scoring:: Using logical expressions to build score rules. | |
10516 * Score Decays:: It can be useful to let scores wither away. | |
10517 @end menu | 8835 @end menu |
10518 | 8836 |
10519 | 8837 |
10520 @node Summary Score Commands | 8838 @node Summary Score Commands |
10521 @section Summary Score Commands | 8839 @section Summary Score Commands |
10527 @dfn{current score file alist}. The score commands simply insert | 8845 @dfn{current score file alist}. The score commands simply insert |
10528 entries into this list, and upon group exit, this list is saved. | 8846 entries into this list, and upon group exit, this list is saved. |
10529 | 8847 |
10530 The current score file is by default the group's local score file, even | 8848 The current score file is by default the group's local score file, even |
10531 if no such score file actually exists. To insert score commands into | 8849 if no such score file actually exists. To insert score commands into |
10532 some other score file (e.g. @file{all.SCORE}), you must first make this | 8850 some other score file (eg. @file{all.SCORE}), you must first make this |
10533 score file the current one. | 8851 score file the current one. |
10534 | 8852 |
10535 General score commands that don't actually change the score file: | 8853 General score commands that don't actually change the score file: |
10536 | 8854 |
10537 @table @kbd | 8855 @table @kbd |
10552 @findex gnus-score-find-trace | 8870 @findex gnus-score-find-trace |
10553 Display all score rules that have been used on the current article | 8871 Display all score rules that have been used on the current article |
10554 (@code{gnus-score-find-trace}). | 8872 (@code{gnus-score-find-trace}). |
10555 | 8873 |
10556 @item V R | 8874 @item V R |
10557 @kindex V R (Summary) | 8875 @cindex V R (Summary) |
10558 @findex gnus-summary-rescore | 8876 @findex gnus-summary-rescore |
10559 Run the current summary through the scoring process | 8877 Run the current summary through the scoring process |
10560 (@code{gnus-summary-rescore}). This might be useful if you're playing | 8878 (@code{gnus-summary-rescore}). This might be useful if you're playing |
10561 around with your score files behind Gnus' back and want to see the | 8879 around with your score files behind Gnus' back and want to see the |
10562 effect you're having. | 8880 effect you're having. |
10587 (@code{gnus-score-edit-file}). | 8905 (@code{gnus-score-edit-file}). |
10588 | 8906 |
10589 @item V F | 8907 @item V F |
10590 @kindex V F (Summary) | 8908 @kindex V F (Summary) |
10591 @findex gnus-score-flush-cache | 8909 @findex gnus-score-flush-cache |
10592 Flush the score cache (@code{gnus-score-flush-cache}). This is useful | 8910 Flush the score cahe (@code{gnus-score-flush-cache}). This is useful |
10593 after editing score files. | 8911 after editing score files. |
10594 | 8912 |
10595 @item V C | 8913 @item V C |
10596 @kindex V C (Summary) | 8914 @kindex V C (Summary) |
10597 @findex gnus-score-customize | 8915 @findex gnus-score-customize |
10688 | 9006 |
10689 @item s | 9007 @item s |
10690 Substring matching. | 9008 Substring matching. |
10691 | 9009 |
10692 @item f | 9010 @item f |
10693 Fuzzy matching (@pxref{Fuzzy Matching}). | 9011 Fuzzy matching. |
10694 | 9012 |
10695 @item r | 9013 @item r |
10696 Regexp matching | 9014 Regexp matching |
10697 @end table | 9015 @end table |
10698 | 9016 |
10834 | 9152 |
10835 @item gnus-summary-default-score | 9153 @item gnus-summary-default-score |
10836 @vindex gnus-summary-default-score | 9154 @vindex gnus-summary-default-score |
10837 Default score of an article, which is 0 by default. | 9155 Default score of an article, which is 0 by default. |
10838 | 9156 |
10839 @item gnus-summary-expunge-below | |
10840 @vindex gnus-summary-expunge-below | |
10841 Don't display the summary lines of articles that have scores lower than | |
10842 this variable. This is @code{nil} by default, which means that no | |
10843 articles will be hidden. | |
10844 | |
10845 @item gnus-score-over-mark | 9157 @item gnus-score-over-mark |
10846 @vindex gnus-score-over-mark | 9158 @vindex gnus-score-over-mark |
10847 Mark (in the third column) used for articles with a score over the | 9159 Mark (in the third column) used for articles with a score over the |
10848 default. Default is @samp{+}. | 9160 default. Default is @samp{+}. |
10849 | 9161 |
10865 Only apply the group's own score file. | 9177 Only apply the group's own score file. |
10866 | 9178 |
10867 @item gnus-score-find-bnews | 9179 @item gnus-score-find-bnews |
10868 @findex gnus-score-find-bnews | 9180 @findex gnus-score-find-bnews |
10869 Apply all score files that match, using bnews syntax. This is the | 9181 Apply all score files that match, using bnews syntax. This is the |
10870 default. If the current group is @samp{gnu.emacs.gnus}, for instance, | 9182 default. For instance, if the current group is @samp{gnu.emacs.gnus}, |
10871 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and | 9183 @file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and |
10872 @file{gnu.all.SCORE} would all apply. In short, the instances of | 9184 @file{gnu.all.SCORE} would all apply. In short, the instances of |
10873 @samp{all} in the score file names are translated into @samp{.*}, and | 9185 @samp{all} in the score file names are translated into @samp{.*}, and |
10874 then a regexp match is done. | 9186 then a regexp match is done. |
10875 | 9187 |
10876 This means that if you have some score entries that you want to apply to | 9188 This means that if you have some score entries that you want to apply to |
10877 all groups, then you put those entries in the @file{all.SCORE} file. | 9189 all groups, then you put those entries in the @file{all.SCORE} file. |
10878 | 9190 |
10879 The score files are applied in a semi-random order, although Gnus will | |
10880 try to apply the more general score files before the more specific score | |
10881 files. It does this by looking at the number of elements in the score | |
10882 file names---discarding the @samp{all} elements. | |
10883 | |
10884 @item gnus-score-find-hierarchical | 9191 @item gnus-score-find-hierarchical |
10885 @findex gnus-score-find-hierarchical | 9192 @findex gnus-score-find-hierarchical |
10886 Apply all score files from all the parent groups. This means that you | 9193 Apply all score files from all the parent groups. This means that you |
10887 can't have score files like @file{all.SCORE}, but you can have | 9194 can't have score files like @file{all.SCORE} or @file{all.emacs.SCORE}, |
10888 @file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE}. | 9195 but you can have @file{SCORE}, @file{comp.SCORE} and |
9196 @file{comp.emacs.SCORE}. | |
10889 | 9197 |
10890 @end table | 9198 @end table |
10891 This variable can also be a list of functions. In that case, all these | 9199 This variable can also be a list of functions. In that case, all these |
10892 functions will be called, and all the returned lists of score files will | 9200 functions will be called, and all the returned lists of score files will |
10893 be applied. These functions can also return lists of score alists | 9201 be applied. These functions can also return lists of score alists |
10997 @item | 9305 @item |
10998 If the third element is present, it should be a number---the @dfn{date | 9306 If the third element is present, it should be a number---the @dfn{date |
10999 element}. This date says when the last time this score entry matched, | 9307 element}. This date says when the last time this score entry matched, |
11000 which provides a mechanism for expiring the score entries. It this | 9308 which provides a mechanism for expiring the score entries. It this |
11001 element is not present, the score entry is permanent. The date is | 9309 element is not present, the score entry is permanent. The date is |
11002 represented by the number of days since December 31, 1 BCE. | 9310 represented by the number of days since December 31, 1 ce. |
11003 | 9311 |
11004 @item | 9312 @item |
11005 If the fourth element is present, it should be a symbol---the @dfn{type | 9313 If the fourth element is present, it should be a symbol---the @dfn{type |
11006 element}. This element specifies what function should be used to see | 9314 element}. This element specifies what function should be used to see |
11007 whether this score entry matches the article. What match types that can | 9315 whether this score entry matches the article. What match types that can |
11008 be used depends on what header you wish to perform the match on. | 9316 be used depends on what header you wish to perform the match on. |
11009 @table @dfn | 9317 @table @dfn |
11010 | 9318 |
11011 @item From, Subject, References, Xref, Message-ID | 9319 @item From, Subject, References, Xref, Message-ID |
11012 For most header types, there are the @code{r} and @code{R} (regexp), as | 9320 For most header types, there are the @code{r} and @code{R} (regexp) as |
11013 well as @code{s} and @code{S} (substring) types, and @code{e} and | 9321 well as @code{s} and @code{S} (substring) types and @code{e} and |
11014 @code{E} (exact match), and @code{w} (word match) types. If this | 9322 @code{E} (exact match) types. If this element is not present, Gnus will |
11015 element is not present, Gnus will assume that substring matching should | 9323 assume that substring matching should be used. @code{R} and @code{S} |
11016 be used. @code{R}, @code{S}, and @code{E} differ from the others in | 9324 differ from the other two in that the matches will be done in a |
11017 that the matches will be done in a case-sensitive manner. All these | 9325 case-sensitive manner. All these one-letter types are really just |
11018 one-letter types are really just abbreviations for the @code{regexp}, | 9326 abbreviations for the @code{regexp}, @code{string} and @code{exact} |
11019 @code{string}, @code{exact}, and @code{word} types, which you can use | 9327 types, which you can use instead, if you feel like. |
11020 instead, if you feel like. | |
11021 | 9328 |
11022 @item Lines, Chars | 9329 @item Lines, Chars |
11023 These two headers use different match types: @code{<}, @code{>}, | 9330 These two headers use different match types: @code{<}, @code{>}, |
11024 @code{=}, @code{>=} and @code{<=}. When matching on @code{Lines}, be | 9331 @code{=}, @code{>=} and @code{<=}. |
11025 careful because some backends (like @code{nndir}) do not generate | |
11026 @code{Lines} header, so every article ends up being marked as having 0 | |
11027 lines. This can lead to strange results if you happen to lower score of | |
11028 the articles with few lines. | |
11029 | 9332 |
11030 @item Date | 9333 @item Date |
11031 For the Date header we have three kinda silly match types: | 9334 For the Date header we have three match types: @code{before}, @code{at} |
11032 @code{before}, @code{at} and @code{after}. I can't really imagine this | 9335 and @code{after}. I can't really imagine this ever being useful, but, |
11033 ever being useful, but, like, it would feel kinda silly not to provide | 9336 like, it would feel kinda silly not to provide this function. Just in |
11034 this function. Just in case. You never know. Better safe than sorry. | 9337 case. You never know. Better safe than sorry. Once burnt, twice shy. |
11035 Once burnt, twice shy. Don't judge a book by its cover. Never not have | 9338 Don't judge a book by its cover. Never not have sex on a first date. |
11036 sex on a first date. (I have been told that at least one person, and I | 9339 (I have been told that at least one person, and I quote, ``found this |
11037 quote, ``found this function indispensable'', however.) | 9340 function indispensable'', however.) |
11038 | |
11039 @cindex ISO8601 | |
11040 @cindex date | |
11041 A more useful match type is @code{regexp}. With it, you can match the | |
11042 date string using a regular expression. The date is normalized to | |
11043 ISO8601 compact format first---@samp{YYYYMMDDTHHMMSS}. If you want to | |
11044 match all articles that have been posted on April 1st in every year, you | |
11045 could use @samp{....0401.........} as a match string, for instance. | |
11046 (Note that the date is kept in its original time zone, so this will | |
11047 match articles that were posted when it was April 1st where the article | |
11048 was posted from. Time zones are such wholesome fun for the whole | |
11049 family, eh?) | |
11050 | 9341 |
11051 @item Head, Body, All | 9342 @item Head, Body, All |
11052 These three match keys use the same match types as the @code{From} (etc) | 9343 These three match keys use the same match types as the @code{From} (etc) |
11053 header uses. | 9344 header uses. |
11054 | 9345 |
11055 @item Followup | 9346 @item Followup |
11056 This match key is somewhat special, in that it will match the | 9347 This match key will add a score entry on all articles that followup to |
11057 @code{From} header, and affect the score of not only the matching | 9348 some author. Uses the same match types as the @code{From} header uses. |
11058 articles, but also all followups to the matching articles. This allows | 9349 |
11059 you e.g. increase the score of followups to your own articles, or | 9350 @item Thread |
11060 decrease the score of followups to the articles of some known | 9351 This match key will add a score entry on all articles that are part of |
11061 trouble-maker. Uses the same match types as the @code{From} header | 9352 a thread. Uses the same match types as the @code{References} header |
11062 uses. | 9353 uses. |
11063 | |
11064 @item Thread | |
11065 This match key works along the same lines as the @code{Followup} match | |
11066 key. If you say that you want to score on a (sub-)thread that is | |
11067 started by an article with a @code{Message-ID} @var{X}, then you add a | |
11068 @samp{thread} match. This will add a new @samp{thread} match for each | |
11069 article that has @var{X} in its @code{References} header. (These new | |
11070 @samp{thread} matches will use the @code{Message-ID}s of these matching | |
11071 articles.) This will ensure that you can raise/lower the score of an | |
11072 entire thread, even though some articles in the thread may not have | |
11073 complete @code{References} headers. Note that using this may lead to | |
11074 undeterministic scores of the articles in the thread. | |
11075 @end table | 9354 @end table |
11076 @end enumerate | 9355 @end enumerate |
11077 | 9356 |
11078 @item mark | 9357 @item mark |
11079 The value of this entry should be a number. Any articles with a score | 9358 The value of this entry should be a number. Any articles with a score |
11098 The value of this entry should be any number of file names. These files | 9377 The value of this entry should be any number of file names. These files |
11099 are assumed to be score files as well, and will be loaded the same way | 9378 are assumed to be score files as well, and will be loaded the same way |
11100 this one was. | 9379 this one was. |
11101 | 9380 |
11102 @item exclude-files | 9381 @item exclude-files |
11103 The clue of this entry should be any number of files. These files will | 9382 The clue of this entry should be any number of files. This files will |
11104 not be loaded, even though they would normally be so, for some reason or | 9383 not be loaded, even though they would normally be so, for some reason or |
11105 other. | 9384 other. |
11106 | 9385 |
11107 @item eval | 9386 @item eval |
11108 The value of this entry will be @code{eval}el. This element will be | 9387 The value of this entry will be @code{eval}el. This element will be |
11119 will only follow a few of the threads, also want to see any new threads. | 9398 will only follow a few of the threads, also want to see any new threads. |
11120 | 9399 |
11121 You can do this with the following two score file entries: | 9400 You can do this with the following two score file entries: |
11122 | 9401 |
11123 @example | 9402 @example |
11124 (orphan -500) | 9403 (orphan -500) |
11125 (mark-and-expunge -100) | 9404 (mark-and-expunge -100) |
11126 @end example | 9405 @end example |
11127 | 9406 |
11128 When you enter the group the first time, you will only see the new | 9407 When you enter the group the first time, you will only see the new |
11129 threads. You then raise the score of the threads that you find | 9408 threads. You then raise the score of the threads that you find |
11130 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the | 9409 interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the |
11220 @vindex gnus-use-adaptive-scoring | 9499 @vindex gnus-use-adaptive-scoring |
11221 When you read an article, or mark an article as read, or kill an | 9500 When you read an article, or mark an article as read, or kill an |
11222 article, you leave marks behind. On exit from the group, Gnus can sniff | 9501 article, you leave marks behind. On exit from the group, Gnus can sniff |
11223 these marks and add score elements depending on what marks it finds. | 9502 these marks and add score elements depending on what marks it finds. |
11224 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to | 9503 You turn on this ability by setting @code{gnus-use-adaptive-scoring} to |
11225 @code{t} or @code{(line)}. If you want score adaptively on separate | 9504 @code{t}. |
11226 words appearing in the subjects, you should set this variable to | |
11227 @code{(word)}. If you want to use both adaptive methods, set this | |
11228 variable to @code{(word line)}. | |
11229 | 9505 |
11230 @vindex gnus-default-adaptive-score-alist | 9506 @vindex gnus-default-adaptive-score-alist |
11231 To give you complete control over the scoring process, you can customize | 9507 To give you complete control over the scoring process, you can customize |
11232 the @code{gnus-default-adaptive-score-alist} variable. For instance, it | 9508 the @code{gnus-default-adaptive-score-alist} variable. For instance, it |
11233 might look something like this: | 9509 might look something like this: |
11266 If you have marked 10 articles with the same subject with | 9542 If you have marked 10 articles with the same subject with |
11267 @code{gnus-del-mark}, the rule for that mark will be applied ten times. | 9543 @code{gnus-del-mark}, the rule for that mark will be applied ten times. |
11268 That means that that subject will get a score of ten times -1, which | 9544 That means that that subject will get a score of ten times -1, which |
11269 should be, unless I'm much mistaken, -10. | 9545 should be, unless I'm much mistaken, -10. |
11270 | 9546 |
11271 If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all | |
11272 the read articles will be marked with the @samp{E} mark. This'll | |
11273 probably make adaptive scoring slightly impossible, so auto-expiring and | |
11274 adaptive scoring doesn't really mix very well. | |
11275 | |
11276 The headers you can score on are @code{from}, @code{subject}, | 9547 The headers you can score on are @code{from}, @code{subject}, |
11277 @code{message-id}, @code{references}, @code{xref}, @code{lines}, | 9548 @code{message-id}, @code{references}, @code{xref}, @code{lines}, |
11278 @code{chars} and @code{date}. In addition, you can score on | 9549 @code{chars} and @code{date}. In addition, you can score on |
11279 @code{followup}, which will create an adaptive score entry that matches | 9550 @code{followup}, which will create an adaptive score entry that matches |
11280 on the @code{References} header using the @code{Message-ID} of the | 9551 on the @code{References} header using the @code{Message-ID} of the |
11311 the length of the match is less than | 9582 the length of the match is less than |
11312 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If | 9583 @code{gnus-score-exact-adapt-limit}, exact matching will be used. If |
11313 this variable is @code{nil}, exact matching will always be used to avoid | 9584 this variable is @code{nil}, exact matching will always be used to avoid |
11314 this problem. | 9585 this problem. |
11315 | 9586 |
11316 @vindex gnus-default-adaptive-word-score-alist | |
11317 As mentioned above, you can adapt either on individual words or entire | |
11318 headers. If you adapt on words, the | |
11319 @code{gnus-default-adaptive-word-score-alist} variable says what score | |
11320 each instance of a word should add given a mark. | |
11321 | |
11322 @lisp | |
11323 (setq gnus-default-adaptive-word-score-alist | |
11324 `((,gnus-read-mark . 30) | |
11325 (,gnus-catchup-mark . -10) | |
11326 (,gnus-killed-mark . -20) | |
11327 (,gnus-del-mark . -15))) | |
11328 @end lisp | |
11329 | |
11330 This is the default value. If you have adaption on words enabled, every | |
11331 word that appears in subjects of articles that are marked with | |
11332 @code{gnus-read-mark} will result in a score rule that increase the | |
11333 score with 30 points. | |
11334 | |
11335 @vindex gnus-default-ignored-adaptive-words | |
11336 @vindex gnus-ignored-adaptive-words | |
11337 Words that appear in the @code{gnus-default-ignored-adaptive-words} list | |
11338 will be ignored. If you wish to add more words to be ignored, use the | |
11339 @code{gnus-ignored-adaptive-words} list instead. | |
11340 | |
11341 @vindex gnus-adaptive-word-syntax-table | |
11342 When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the | |
11343 syntax table in effect. It is similar to the standard syntax table, but | |
11344 it considers numbers to be non-word-constituent characters. | |
11345 | |
11346 After using this scheme for a while, it might be nice to write a | |
11347 @code{gnus-psychoanalyze-user} command to go through the rules and see | |
11348 what words you like and what words you don't like. Or perhaps not. | |
11349 | |
11350 Note that the adaptive word scoring thing is highly experimental and is | |
11351 likely to change in the future. Initial impressions seem to indicate | |
11352 that it's totally useless as it stands. Some more work (involving more | |
11353 rigorous statistical methods) will have to be done to make this useful. | |
11354 | |
11355 | |
11356 @node Home Score File | |
11357 @section Home Score File | |
11358 | |
11359 The score file where new score file entries will go is called the | |
11360 @dfn{home score file}. This is normally (and by default) the score file | |
11361 for the group itself. For instance, the home score file for | |
11362 @samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}. | |
11363 | |
11364 However, this may not be what you want. It is often convenient to share | |
11365 a common home score file among many groups---all @samp{emacs} groups | |
11366 could perhaps use the same home score file. | |
11367 | |
11368 @vindex gnus-home-score-file | |
11369 The variable that controls this is @code{gnus-home-score-file}. It can | |
11370 be: | |
11371 | |
11372 @enumerate | |
11373 @item | |
11374 A string. Then this file will be used as the home score file for all | |
11375 groups. | |
11376 | |
11377 @item | |
11378 A function. The result of this function will be used as the home score | |
11379 file. The function will be called with the name of the group as the | |
11380 parameter. | |
11381 | |
11382 @item | |
11383 A list. The elements in this list can be: | |
11384 | |
11385 @enumerate | |
11386 @item | |
11387 @var{(regexp file-name)}. If the @var{regexp} matches the group name, | |
11388 the @var{file-name} will will be used as the home score file. | |
11389 | |
11390 @item | |
11391 A function. If the function returns non-nil, the result will be used as | |
11392 the home score file. | |
11393 | |
11394 @item | |
11395 A string. Use the string as the home score file. | |
11396 @end enumerate | |
11397 | |
11398 The list will be traversed from the beginning towards the end looking | |
11399 for matches. | |
11400 | |
11401 @end enumerate | |
11402 | |
11403 So, if you want to use just a single score file, you could say: | |
11404 | |
11405 @lisp | |
11406 (setq gnus-home-score-file | |
11407 "my-total-score-file.SCORE") | |
11408 @end lisp | |
11409 | |
11410 If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and | |
11411 @file{rec.SCORE} for all @samp{rec} groups (and so on), you can say: | |
11412 | |
11413 @lisp | |
11414 (setq gnus-home-score-file | |
11415 'gnus-hierarchial-home-score-file) | |
11416 @end lisp | |
11417 | |
11418 This is a ready-made function provided for your convenience. | |
11419 | |
11420 If you want to have one score file for the @samp{emacs} groups and | |
11421 another for the @samp{comp} groups, while letting all other groups use | |
11422 their own home score files: | |
11423 | |
11424 @lisp | |
11425 (setq gnus-home-score-file | |
11426 ;; All groups that match the regexp "\\.emacs" | |
11427 '("\\.emacs" "emacs.SCORE") | |
11428 ;; All the comp groups in one score file | |
11429 ("^comp" "comp.SCORE")) | |
11430 @end lisp | |
11431 | |
11432 @vindex gnus-home-adapt-file | |
11433 @code{gnus-home-adapt-file} works exactly the same way as | |
11434 @code{gnus-home-score-file}, but says what the home adaptive score file | |
11435 is instead. All new adaptive file entries will go into the file | |
11436 specified by this variable, and the same syntax is allowed. | |
11437 | |
11438 In addition to using @code{gnus-home-score-file} and | |
11439 @code{gnus-home-adapt-file}, you can also use group parameters | |
11440 (@pxref{Group Parameters}) and topic parameters (@pxref{Topic | |
11441 Parameters}) to achieve much the same. Group and topic parameters take | |
11442 precedence over this variable. | |
11443 | |
11444 | 9587 |
11445 @node Followups To Yourself | 9588 @node Followups To Yourself |
11446 @section Followups To Yourself | 9589 @section Followups To Yourself |
11447 | 9590 |
11448 Gnus offers two commands for picking out the @code{Message-ID} header in | 9591 Gnus offers two commands for picking out the @code{Message-ID} header in |
11463 @findex gnus-score-followup-thread | 9606 @findex gnus-score-followup-thread |
11464 This will add a score to all articles that appear in a thread ``below'' | 9607 This will add a score to all articles that appear in a thread ``below'' |
11465 your own article. | 9608 your own article. |
11466 @end table | 9609 @end table |
11467 | 9610 |
11468 @vindex message-sent-hook | 9611 @vindex gnus-inews-article-hook |
11469 These two functions are both primarily meant to be used in hooks like | 9612 These two functions are both primarily meant to be used in hooks like |
11470 @code{message-sent-hook}. | 9613 @code{message-send-hook}. |
11471 | |
11472 If you look closely at your own @code{Message-ID}, you'll notice that | |
11473 the first two or three characters are always the same. Here's two of | |
11474 mine: | |
11475 | |
11476 @example | |
11477 <x6u3u47icf.fsf@@eyesore.no> | |
11478 <x6sp9o7ibw.fsf@@eyesore.no> | |
11479 @end example | |
11480 | |
11481 So ``my'' ident on this machine is @samp{x6}. This can be | |
11482 exploited---the following rule will raise the score on all followups to | |
11483 myself: | |
11484 | |
11485 @lisp | |
11486 ("references" | |
11487 ("<x6[0-9a-z]+\\.fsf@@.*eyesore.no>" 1000 nil r)) | |
11488 @end lisp | |
11489 | |
11490 Whether it's the first two or first three characters that are ``yours'' | |
11491 is system-dependent. | |
11492 | |
11493 | 9614 |
11494 @node Scoring Tips | 9615 @node Scoring Tips |
11495 @section Scoring Tips | 9616 @section Scoring Tips |
11496 @cindex scoring tips | 9617 @cindex scoring tips |
11497 | 9618 |
11574 All you have to do to use other people's score files is to set the | 9695 All you have to do to use other people's score files is to set the |
11575 @code{gnus-global-score-files} variable. One entry for each score file, | 9696 @code{gnus-global-score-files} variable. One entry for each score file, |
11576 or each score file directory. Gnus will decide by itself what score | 9697 or each score file directory. Gnus will decide by itself what score |
11577 files are applicable to which group. | 9698 files are applicable to which group. |
11578 | 9699 |
11579 Say you want to use the score file | 9700 Say you want to use all score files in the |
11580 @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE} and | 9701 @file{/ftp@@ftp.some-where:/pub/score} directory and the single score |
11581 all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory: | 9702 file @file{/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE}: |
11582 | 9703 |
11583 @lisp | 9704 @lisp |
11584 (setq gnus-global-score-files | 9705 (setq gnus-global-score-files |
11585 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" | 9706 '("/ftp@@ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE" |
11586 "/ftp@@ftp.some-where:/pub/score/")) | 9707 "/ftp@@ftp.some-where:/pub/score/")) |
11647 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any | 9768 Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any |
11648 forms into this file, which means that you can use kill files as some | 9769 forms into this file, which means that you can use kill files as some |
11649 sort of primitive hook function to be run on group entry, even though | 9770 sort of primitive hook function to be run on group entry, even though |
11650 that isn't a very good idea. | 9771 that isn't a very good idea. |
11651 | 9772 |
11652 Normal kill files look like this: | 9773 XCNormal kill files look like this: |
11653 | 9774 |
11654 @lisp | 9775 @lisp |
11655 (gnus-kill "From" "Lars Ingebrigtsen") | 9776 (gnus-kill "From" "Lars Ingebrigtsen") |
11656 (gnus-kill "Subject" "ding") | 9777 (gnus-kill "Subject" "ding") |
11657 (gnus-expunge "X") | 9778 (gnus-expunge "X") |
11726 A hook called in kill-file mode buffers. | 9847 A hook called in kill-file mode buffers. |
11727 | 9848 |
11728 @end table | 9849 @end table |
11729 | 9850 |
11730 | 9851 |
11731 @node Converting Kill Files | |
11732 @section Converting Kill Files | |
11733 @cindex kill files | |
11734 @cindex converting kill files | |
11735 | |
11736 If you have loads of old kill files, you may want to convert them into | |
11737 score files. If they are ``regular'', you can use | |
11738 the @file{gnus-kill-to-score.el} package; if not, you'll have to do it | |
11739 by hand. | |
11740 | |
11741 The kill to score conversion package isn't included in Gnus by default. | |
11742 You can fetch it from | |
11743 @file{http://www.ifi.uio.no/~larsi/ding-other/gnus-kill-to-score}. | |
11744 | |
11745 If your old kill files are very complex---if they contain more | |
11746 non-@code{gnus-kill} forms than not, you'll have to convert them by | |
11747 hand. Or just let them be as they are. Gnus will still use them as | |
11748 before. | |
11749 | |
11750 | |
11751 @node GroupLens | 9852 @node GroupLens |
11752 @section GroupLens | 9853 @section GroupLens |
11753 @cindex GroupLens | 9854 @cindex GroupLens |
11754 | 9855 |
11755 GroupLens is a collaborative filtering system that helps you work | 9856 GroupLens is a collaborative filtering system that helps you work |
11776 | 9877 |
11777 @node Using GroupLens | 9878 @node Using GroupLens |
11778 @subsection Using GroupLens | 9879 @subsection Using GroupLens |
11779 | 9880 |
11780 To use GroupLens you must register a pseudonym with your local Better | 9881 To use GroupLens you must register a pseudonym with your local Better |
11781 Bit Bureau (BBB). | 9882 Bit Bureau (BBB). At the moment the only better bit in town is at |
11782 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only | 9883 @samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html}. |
11783 better bit in town is at the moment. | |
11784 | 9884 |
11785 Once you have registered you'll need to set a couple of variables. | 9885 Once you have registered you'll need to set a couple of variables. |
11786 | 9886 |
11787 @table @code | 9887 @table @code |
11788 | 9888 |
11791 Setting this variable to a non-@code{nil} value will make Gnus hook into | 9891 Setting this variable to a non-@code{nil} value will make Gnus hook into |
11792 all the relevant GroupLens functions. | 9892 all the relevant GroupLens functions. |
11793 | 9893 |
11794 @item grouplens-pseudonym | 9894 @item grouplens-pseudonym |
11795 @vindex grouplens-pseudonym | 9895 @vindex grouplens-pseudonym |
11796 This variable should be set to the pseudonym you got when registering | 9896 This variable should be set to the pseudonum you got when registering |
11797 with the Better Bit Bureau. | 9897 with the Better Bit Bureau. |
11798 | 9898 |
11799 @item grouplens-newsgroups | 9899 @item grouplens-newsgroups |
11800 @vindex grouplens-newsgroups | 9900 @vindex grouplens-newsgroups |
11801 A list of groups that you want to get GroupLens predictions for. | 9901 A list of groups that you want to get GroupLens predictions for. |
11924 enhanced. It accepts the same specs as the normal summary line format | 10024 enhanced. It accepts the same specs as the normal summary line format |
11925 (@pxref{Summary Buffer Lines}). The default is | 10025 (@pxref{Summary Buffer Lines}). The default is |
11926 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. | 10026 @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n}. |
11927 | 10027 |
11928 @item grouplens-bbb-host | 10028 @item grouplens-bbb-host |
11929 Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the | 10029 Host running the bbbd server. The default is |
11930 default. | 10030 @samp{grouplens.cs.umn.edu}. |
11931 | 10031 |
11932 @item grouplens-bbb-port | 10032 @item grouplens-bbb-port |
11933 Port of the host running the bbbd server. The default is 9000. | 10033 Port of the host running the bbbd server. The default is 9000. |
11934 | 10034 |
11935 @item grouplens-score-offset | 10035 @item grouplens-score-offset |
11941 This variable allows the user to magnify the effect of GroupLens scores. | 10041 This variable allows the user to magnify the effect of GroupLens scores. |
11942 The scale factor is applied after the offset. The default is 1. | 10042 The scale factor is applied after the offset. The default is 1. |
11943 | 10043 |
11944 @end table | 10044 @end table |
11945 | 10045 |
11946 | |
11947 @node Advanced Scoring | |
11948 @section Advanced Scoring | |
11949 | |
11950 Scoring on Subjects and From headers is nice enough, but what if you're | |
11951 really interested in what a person has to say only when she's talking | |
11952 about a particular subject? Or what about if you really don't want to | |
11953 read what person A has to say when she's following up to person B, but | |
11954 want to read what she says when she's following up to person C? | |
11955 | |
11956 By using advanced scoring rules you may create arbitrarily complex | |
11957 scoring patterns. | |
11958 | |
11959 @menu | |
11960 * Advanced Scoring Syntax:: A definition. | |
11961 * Advanced Scoring Examples:: What they look like. | |
11962 * Advanced Scoring Tips:: Getting the most out of it. | |
11963 @end menu | |
11964 | |
11965 | |
11966 @node Advanced Scoring Syntax | |
11967 @subsection Advanced Scoring Syntax | |
11968 | |
11969 Ordinary scoring rules have a string as the first element in the rule. | |
11970 Advanced scoring rules have a list as the first element. The second | |
11971 element is the score to be applied if the first element evaluated to a | |
11972 non-@code{nil} value. | |
11973 | |
11974 These lists may consist of three logical operators, one redirection | |
11975 operator, and various match operators. | |
11976 | |
11977 Logical operators: | |
11978 | |
11979 @table @code | |
11980 @item & | |
11981 @itemx and | |
11982 This logical operator will evaluate each of its arguments until it finds | |
11983 one that evaluates to @code{false}, and then it'll stop. If all arguments | |
11984 evaluate to @code{true} values, then this operator will return | |
11985 @code{true}. | |
11986 | |
11987 @item | | |
11988 @itemx or | |
11989 This logical operator will evaluate each of its arguments until it finds | |
11990 one that evaluates to @code{true}. If no arguments are @code{true}, | |
11991 then this operator will return @code{false}. | |
11992 | |
11993 @item ! | |
11994 @itemx not | |
11995 @itemx ¬ | |
11996 This logical operator only takes a single argument. It returns the | |
11997 inverse of the value of its argument. | |
11998 | |
11999 @end table | |
12000 | |
12001 There is an @dfn{indirection operator} that will make its arguments | |
12002 apply to the ancestors of the current article being scored. For | |
12003 instance, @code{1-} will make score rules apply to the parent of the | |
12004 current article. @code{2-} will make score fules apply to the | |
12005 grandparent of the current article. Alternatively, you can write | |
12006 @code{^^}, where the number of @code{^}s (carets) say how far back into | |
12007 the ancestry you want to go. | |
12008 | |
12009 Finally, we have the match operators. These are the ones that do the | |
12010 real work. Match operators are header name strings followed by a match | |
12011 and a match type. A typical match operator looks like @samp{("from" | |
12012 "Lars Ingebrigtsen" s)}. The header names are the same as when using | |
12013 simple scoring, and the match types are also the same. | |
12014 | |
12015 | |
12016 @node Advanced Scoring Examples | |
12017 @subsection Advanced Scoring Examples | |
12018 | |
12019 Let's say you want to increase the score of articles written by Lars | |
12020 when he's talking about Gnus: | |
12021 | |
12022 @example | |
12023 ((& | |
12024 ("from" "Lars Ingebrigtsen") | |
12025 ("subject" "Gnus")) | |
12026 1000) | |
12027 @end example | |
12028 | |
12029 Quite simple, huh? | |
12030 | |
12031 When he writes long articles, he sometimes has something nice to say: | |
12032 | |
12033 @example | |
12034 ((& | |
12035 ("from" "Lars Ingebrigtsen") | |
12036 (| | |
12037 ("subject" "Gnus") | |
12038 ("lines" 100 >))) | |
12039 1000) | |
12040 @end example | |
12041 | |
12042 However, when he responds to things written by Reig Eigil Logge, you | |
12043 really don't want to read what he's written: | |
12044 | |
12045 @example | |
12046 ((& | |
12047 ("from" "Lars Ingebrigtsen") | |
12048 (1- ("from" "Reig Eigir Logge"))) | |
12049 -100000) | |
12050 @end example | |
12051 | |
12052 Everybody that follows up Redmondo when he writes about disappearing | |
12053 socks should have their scores raised, but only when they talk about | |
12054 white socks. However, when Lars talks about socks, it's usually not | |
12055 very interesting: | |
12056 | |
12057 @example | |
12058 ((& | |
12059 (1- | |
12060 (& | |
12061 ("from" "redmondo@@.*no" r) | |
12062 ("body" "disappearing.*socks" t))) | |
12063 (! ("from" "Lars Ingebrigtsen")) | |
12064 ("body" "white.*socks")) | |
12065 1000) | |
12066 @end example | |
12067 | |
12068 The possibilities are endless. | |
12069 | |
12070 | |
12071 @node Advanced Scoring Tips | |
12072 @subsection Advanced Scoring Tips | |
12073 | |
12074 The @code{&} and @code{|} logical operators do short-circuit logic. | |
12075 That is, they stop processing their arguments when it's clear what the | |
12076 result of the operation will be. For instance, if one of the arguments | |
12077 of an @code{&} evaluates to @code{false}, there's no point in evaluating | |
12078 the rest of the arguments. This means that you should put slow matches | |
12079 (@samp{body}, @code{header}) last and quick matches (@samp{from}, | |
12080 @samp{subject}) first. | |
12081 | |
12082 The indirection arguments (@code{1-} and so on) will make their | |
12083 arguments work on previous generations of the thread. If you say | |
12084 something like: | |
12085 | |
12086 @example | |
12087 ... | |
12088 (1- | |
12089 (1- | |
12090 ("from" "lars"))) | |
12091 ... | |
12092 @end example | |
12093 | |
12094 Then that means "score on the from header of the grandparent of the | |
12095 current article". An indirection is quite fast, but it's better to say: | |
12096 | |
12097 @example | |
12098 (1- | |
12099 (& | |
12100 ("from" "Lars") | |
12101 ("subject" "Gnus"))) | |
12102 @end example | |
12103 | |
12104 than it is to say: | |
12105 | |
12106 @example | |
12107 (& | |
12108 (1- ("from" "Lars")) | |
12109 (1- ("subject" "Gnus"))) | |
12110 @end example | |
12111 | |
12112 | |
12113 @node Score Decays | |
12114 @section Score Decays | |
12115 @cindex score decays | |
12116 @cindex decays | |
12117 | |
12118 You may find that your scores have a tendency to grow without | |
12119 bounds, especially if you're using adaptive scoring. If scores get too | |
12120 big, they lose all meaning---they simply max out and it's difficult to | |
12121 use them in any sensible way. | |
12122 | |
12123 @vindex gnus-decay-scores | |
12124 @findex gnus-decay-score | |
12125 @vindex gnus-score-decay-function | |
12126 Gnus provides a mechanism for decaying scores to help with this problem. | |
12127 When score files are loaded and @code{gnus-decay-scores} is | |
12128 non-@code{nil}, Gnus will run the score files through the decaying | |
12129 mechanism thereby lowering the scores of all non-permanent score rules. | |
12130 The decay itself if performed by the @code{gnus-score-decay-function} | |
12131 function, which is @code{gnus-decay-score} by default. Here's the | |
12132 definition of that function: | |
12133 | |
12134 @lisp | |
12135 (defun gnus-decay-score (score) | |
12136 (floor | |
12137 (- score | |
12138 (* (if (< score 0) 1 -1) | |
12139 (min score | |
12140 (max gnus-score-decay-constant | |
12141 (* (abs score) | |
12142 gnus-score-decay-scale))))))) | |
12143 @end lisp | |
12144 | |
12145 @vindex gnus-score-decay-scale | |
12146 @vindex gnus-score-decay-constant | |
12147 @code{gnus-score-decay-constant} is 3 by default and | |
12148 @code{gnus-score-decay-scale} is 0.05. This should cause the following: | |
12149 | |
12150 @enumerate | |
12151 @item | |
12152 Scores between -3 and 3 will be set to 0 when this function is called. | |
12153 | |
12154 @item | |
12155 Scores with magnitudes between 3 and 60 will be shrunk by 3. | |
12156 | |
12157 @item | |
12158 Scores with magnitudes greater than 60 will be shrunk by 5% of the | |
12159 score. | |
12160 @end enumerate | |
12161 | |
12162 If you don't like this decay function, write your own. It is called | |
12163 with the score to be decayed as its only parameter, and it should return | |
12164 the new score, which should be an integer. | |
12165 | |
12166 Gnus will try to decay scores once a day. If you haven't run Gnus for | |
12167 four days, Gnus will decay the scores four times, for instance. | |
12168 | 10046 |
12169 | 10047 |
12170 @node Various | 10048 @node Various |
12171 @chapter Various | 10049 @chapter Various |
12172 | 10050 |
12180 * Highlighting and Menus:: Making buffers look all nice and cozy. | 10058 * Highlighting and Menus:: Making buffers look all nice and cozy. |
12181 * Buttons:: Get tendonitis in ten easy steps! | 10059 * Buttons:: Get tendonitis in ten easy steps! |
12182 * Daemons:: Gnus can do things behind your back. | 10060 * Daemons:: Gnus can do things behind your back. |
12183 * NoCeM:: How to avoid spam and other fatty foods. | 10061 * NoCeM:: How to avoid spam and other fatty foods. |
12184 * Picons:: How to display pictures of what your reading. | 10062 * Picons:: How to display pictures of what your reading. |
12185 * Undo:: Some actions can be undone. | |
12186 * Moderation:: What to do if you're a moderator. | |
12187 * XEmacs Enhancements:: There are more pictures and stuff under XEmacs. | |
12188 * Fuzzy Matching:: What's the big fuzz? | |
12189 * Thwarting Email Spam:: A how-to on avoiding unsolited commercial email. | |
12190 * Various Various:: Things that are really various. | 10063 * Various Various:: Things that are really various. |
12191 @end menu | 10064 @end menu |
12192 | 10065 |
12193 | 10066 |
12194 @node Process/Prefix | 10067 @node Process/Prefix |
12219 If there is neither a numeric prefix nor any articles marked with the | 10092 If there is neither a numeric prefix nor any articles marked with the |
12220 process mark, just perform the operation on the current article. | 10093 process mark, just perform the operation on the current article. |
12221 | 10094 |
12222 Quite simple, really, but it needs to be made clear so that surprises | 10095 Quite simple, really, but it needs to be made clear so that surprises |
12223 are avoided. | 10096 are avoided. |
12224 | |
12225 Commands that react to the process mark will push the current list of | |
12226 process marked articles onto a stack and will then clear all process | |
12227 marked articles. You can restore the previous configuration with the | |
12228 @kbd{M P y} command (@pxref{Setting Process Marks}). | |
12229 | 10097 |
12230 @vindex gnus-summary-goto-unread | 10098 @vindex gnus-summary-goto-unread |
12231 One thing that seems to shock & horrify lots of people is that, for | 10099 One thing that seems to shock & horrify lots of people is that, for |
12232 instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}. | 10100 instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}. |
12233 Since each @kbd{d} (which marks the current article as read) by default | 10101 Since each @kbd{d} (which marks the current article as read) by default |
12282 | 10150 |
12283 Here's an example format spec (from the group buffer): @samp{%M%S%5y: | 10151 Here's an example format spec (from the group buffer): @samp{%M%S%5y: |
12284 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are | 10152 %(%g%)\n}. We see that it is indeed extremely ugly, and that there are |
12285 lots of percentages everywhere. | 10153 lots of percentages everywhere. |
12286 | 10154 |
12287 @menu | |
12288 * Formatting Basics:: A formatting variable is basically a format string. | |
12289 * Advanced Formatting:: Modifying output in various ways. | |
12290 * User-Defined Specs:: Having Gnus call your own functions. | |
12291 * Formatting Fonts:: Making the formatting look colorful and nice. | |
12292 @end menu | |
12293 | |
12294 Currently Gnus uses the following formatting variables: | |
12295 @code{gnus-group-line-format}, @code{gnus-summary-line-format}, | |
12296 @code{gnus-server-line-format}, @code{gnus-topic-line-format}, | |
12297 @code{gnus-group-mode-line-format}, | |
12298 @code{gnus-summary-mode-line-format}, | |
12299 @code{gnus-article-mode-line-format}, | |
12300 @code{gnus-server-mode-line-format}, and | |
12301 @code{gnus-summary-pick-line-format}. | |
12302 | |
12303 All these format variables can also be arbitrary elisp forms. In that | |
12304 case, they will be @code{eval}ed to insert the required lines. | |
12305 | |
12306 @kindex M-x gnus-update-format | |
12307 @findex gnus-update-format | |
12308 Gnus includes a command to help you while creating your own format | |
12309 specs. @kbd{M-x gnus-update-format} will @code{eval} the current form, | |
12310 update the spec in question and pop you to a buffer where you can | |
12311 examine the resulting lisp code to be run to generate the line. | |
12312 | |
12313 | |
12314 | |
12315 @node Formatting Basics | |
12316 @subsection Formatting Basics | |
12317 | |
12318 Each @samp{%} element will be replaced by some string or other when the | 10155 Each @samp{%} element will be replaced by some string or other when the |
12319 buffer in question is generated. @samp{%5y} means ``insert the @samp{y} | 10156 buffer in question is generated. @samp{%5y} means ``insert the @samp{y} |
12320 spec, and pad with spaces to get a 5-character field''. | 10157 spec, and pad with spaces to get a 5-character field''. Just like a |
12321 | 10158 normal format spec, almost. |
12322 As with normal C and Emacs Lisp formatting strings, the numerical | 10159 |
12323 modifier between the @samp{%} and the formatting type character will | 10160 You can also say @samp{%6,4y}, which means that the field will never be |
12324 @dfn{pad} the output so that it is always at least that long. | 10161 more than 4 characters wide and never less than 6 characters wide. |
12325 @samp{%5y} will make the field always (at least) five characters wide by | 10162 |
12326 padding with spaces to the left. If you say @samp{%-5y}, it will pad to | 10163 There are also specs for highlighting, and these are shared by all the |
12327 the right instead. | 10164 format variables. Text inside the @samp{%(} and @samp{%)} specifiers |
12328 | 10165 will get the special @code{mouse-face} property set, which means that it |
12329 You may also wish to limit the length of the field to protect against | 10166 will be highlighted (with @code{gnus-mouse-face}) when you put the mouse |
12330 particularly wide values. For that you can say @samp{%4,6y}, which | 10167 pointer over it. |
12331 means that the field will never be more than 6 characters wide and never | |
12332 less than 4 characters wide. | |
12333 | |
12334 | |
12335 @node Advanced Formatting | |
12336 @subsection Advanced Formatting | |
12337 | |
12338 It is frequently useful to post-process the fields in some way. | |
12339 Padding, limiting, cutting off parts and suppressing certain values can | |
12340 be achieved by using @dfn{tilde modifiers}. A typical tilde spec might | |
12341 look like @samp{%~(cut 3)~(ignore "0")y}. | |
12342 | |
12343 These are the legal modifiers: | |
12344 | |
12345 @table @code | |
12346 @item pad | |
12347 @itemx pad-left | |
12348 Pad the field to the left with spaces until it reaches the required | |
12349 length. | |
12350 | |
12351 @item pad-right | |
12352 Pad the field to the right with spaces until it reaches the required | |
12353 length. | |
12354 | |
12355 @item max | |
12356 @itemx max-left | |
12357 Cut off characters from the left until it reaches the specified length. | |
12358 | |
12359 @item max-right | |
12360 Cut off characters from the right until it reaches the specified | |
12361 length. | |
12362 | |
12363 @item cut | |
12364 @itemx cut-left | |
12365 Cut off the specified number of characters from the left. | |
12366 | |
12367 @item cut-right | |
12368 Cut off the specified number of characters from the right. | |
12369 | |
12370 @item ignore | |
12371 Return an empty string if the field is equal to the specified value. | |
12372 | |
12373 @item form | |
12374 Use the specified form as the field value when the @samp{@@} spec is | |
12375 used. | |
12376 @end table | |
12377 | |
12378 Let's take an example. The @samp{%o} spec in the summary mode lines | |
12379 will return a date in compact ISO8601 format---@samp{19960809T230410}. | |
12380 This is quite a mouthful, so we want to shave off the century number and | |
12381 the time, leaving us with a six-character date. That would be | |
12382 @samp{%~(cut-left 2)~(max-right 6)~(pad 6)o}. (Cutting is done before | |
12383 maxing, and we need the padding to ensure that the date is never less | |
12384 than 6 characters to make it look nice in columns.) | |
12385 | |
12386 Ignoring is done first; then cutting; then maxing; and then as the very | |
12387 last operation, padding. | |
12388 | |
12389 If you use lots of these advanced thingies, you'll find that Gnus gets | |
12390 quite slow. This can be helped enormously by running @kbd{M-x | |
12391 gnus-compile} when you are satisfied with the look of your lines. | |
12392 @xref{Compilation}. | |
12393 | |
12394 | |
12395 @node User-Defined Specs | |
12396 @subsection User-Defined Specs | |
12397 | |
12398 All the specs allow for inserting user defined specifiers---@samp{u}. | |
12399 The next character in the format string should be a letter. Gnus | |
12400 will call the function @code{gnus-user-format-function-}@samp{X}, where | |
12401 @samp{X} is the letter following @samp{%u}. The function will be passed | |
12402 a single parameter---what the parameter means depends on what buffer | |
12403 it's being called from. The function should return a string, which will | |
12404 be inserted into the buffer just like information from any other | |
12405 specifier. This function may also be called with dummy values, so it | |
12406 should protect against that. | |
12407 | |
12408 You can also use tilde modifiers (@pxref{Advanced Formatting} to achieve | |
12409 much the same without defining new functions. Here's an example: | |
12410 @samp{%~(form (count-lines (point-min) (point)))@@}. The form | |
12411 given here will be evaluated to yield the current line number, and then | |
12412 inserted. | |
12413 | |
12414 | |
12415 @node Formatting Fonts | |
12416 @subsection Formatting Fonts | |
12417 | |
12418 There are specs for highlighting, and these are shared by all the format | |
12419 variables. Text inside the @samp{%(} and @samp{%)} specifiers will get | |
12420 the special @code{mouse-face} property set, which means that it will be | |
12421 highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer | |
12422 over it. | |
12423 | 10168 |
12424 Text inside the @samp{%[} and @samp{%]} specifiers will have their | 10169 Text inside the @samp{%[} and @samp{%]} specifiers will have their |
12425 normal faces set using @code{gnus-face-0}, which is @code{bold} by | 10170 normal faces set using @code{gnus-face-0}, which is @code{bold} by |
12426 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1} | 10171 default. If you say @samp{%1[} instead, you'll get @code{gnus-face-1} |
12427 instead, and so on. Create as many faces as you wish. The same goes | 10172 instead, and so on. Create as many faces as you wish. The same goes |
12449 @end lisp | 10194 @end lisp |
12450 | 10195 |
12451 I'm sure you'll be able to use this scheme to create totally unreadable | 10196 I'm sure you'll be able to use this scheme to create totally unreadable |
12452 and extremely vulgar displays. Have fun! | 10197 and extremely vulgar displays. Have fun! |
12453 | 10198 |
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 | |
12454 Note that the @samp{%(} specs (and friends) do not make any sense on the | 10207 Note that the @samp{%(} specs (and friends) do not make any sense on the |
12455 mode-line variables. | 10208 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. | |
12456 | 10219 |
12457 | 10220 |
12458 @node Windows Configuration | 10221 @node Windows Configuration |
12459 @section Windows Configuration | 10222 @section Windows Configuration |
12460 @cindex windows configuration | 10223 @cindex windows configuration |
12480 This is an alist. The @dfn{key} is a symbol that names some action or | 10243 This is an alist. The @dfn{key} is a symbol that names some action or |
12481 other. For instance, when displaying the group buffer, the window | 10244 other. For instance, when displaying the group buffer, the window |
12482 configuration function will use @code{group} as the key. A full list of | 10245 configuration function will use @code{group} as the key. A full list of |
12483 possible names is listed below. | 10246 possible names is listed below. |
12484 | 10247 |
12485 The @dfn{value} (i.e., the @dfn{split}) says how much space each buffer | 10248 The @dfn{value} (i. e., the @dfn{split}) says how much space each buffer |
12486 should occupy. To take the @code{article} split as an example - | 10249 should occupy. To take the @code{article} split as an example - |
12487 | 10250 |
12488 @lisp | 10251 @lisp |
12489 (article (vertical 1.0 (summary 0.25 point) | 10252 (article (vertical 1.0 (summary 0.25 point) |
12490 (article 1.0))) | 10253 (article 1.0))) |
12636 | 10399 |
12637 @code{group}, @code{summary}, @code{article}, @code{server}, | 10400 @code{group}, @code{summary}, @code{article}, @code{server}, |
12638 @code{browse}, @code{message}, @code{pick}, @code{info}, | 10401 @code{browse}, @code{message}, @code{pick}, @code{info}, |
12639 @code{summary-faq}, @code{edit-group}, @code{edit-server}, | 10402 @code{summary-faq}, @code{edit-group}, @code{edit-server}, |
12640 @code{edit-score}, @code{post}, @code{reply}, @code{forward}, | 10403 @code{edit-score}, @code{post}, @code{reply}, @code{forward}, |
12641 @code{reply-yank}, @code{mail-bounce}, @code{draft}, @code{pipe}, | 10404 @code{reply-yank}, @code{mail-bounce}, @code{draft}, |
12642 @code{bug}, @code{compose-bounce}. | 10405 @code{pipe}, @code{bug}, @code{compose-bounce}. |
12643 | 10406 |
12644 Note that the @code{message} key is used for both | 10407 Note that the @code{message} key is used for both |
12645 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If | 10408 @code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If |
12646 it is desirable to distinguish between the two, something like this | 10409 it is desireable to distinguish between the two, something like this |
12647 might be used: | 10410 might be used: |
12648 | 10411 |
12649 @lisp | 10412 @lisp |
12650 (message (horizontal 1.0 | 10413 (message (horizontal 1.0 |
12651 (vertical 1.0 (message 1.0 point)) | 10414 (vertical 1.0 (message 1.0 point)) |
12652 (vertical 0.24 | 10415 (vertical 0.24 |
12653 (if (buffer-live-p gnus-summary-buffer) | 10416 (if (buffer-live-p gnus-summary-buffer) |
12654 '(summary 0.5)) | 10417 '(summary 0.5)) |
12655 (group 1.0))))) | 10418 (group 1.0))))) |
12656 @end lisp | 10419 @end lisp |
12657 | 10420 |
12658 @findex gnus-add-configuration | 10421 @findex gnus-add-configuration |
12659 Since the @code{gnus-buffer-configuration} variable is so long and | 10422 Since the @code{gnus-buffer-configuration} variable is so long and |
12660 complicated, there's a function you can use to ease changing the config | 10423 complicated, there's a function you can use to ease changing the config |
12668 (summary .25 point) | 10431 (summary .25 point) |
12669 (article 1.0)))) | 10432 (article 1.0)))) |
12670 @end lisp | 10433 @end lisp |
12671 | 10434 |
12672 You'd typically stick these @code{gnus-add-configuration} calls in your | 10435 You'd typically stick these @code{gnus-add-configuration} calls in your |
12673 @file{.gnus.el} file or in some startup hook---they should be run after | 10436 @file{.gnus} file or in some startup hook---they should be run after |
12674 Gnus has been loaded. | 10437 Gnus has been loaded. |
12675 | 10438 |
12676 @vindex gnus-always-force-window-configuration | 10439 |
12677 If all windows mentioned in the configuration are already visible, Gnus | 10440 @node Compilation |
12678 won't change the window configuration. If you always want to force the | 10441 @section Compilation |
12679 ``right'' window configuration, you can set | |
12680 @code{gnus-always-force-window-configuration} to non-@code{nil}. | |
12681 | |
12682 | |
12683 @node Compilation | |
12684 @section Compilation | |
12685 @cindex compilation | 10442 @cindex compilation |
12686 @cindex byte-compilation | 10443 @cindex byte-compilation |
12687 | 10444 |
12688 @findex gnus-compile | 10445 @findex gnus-compile |
12689 | 10446 |
12696 course.) | 10453 course.) |
12697 | 10454 |
12698 To help with this, you can run @kbd{M-x gnus-compile} after you've | 10455 To help with this, you can run @kbd{M-x gnus-compile} after you've |
12699 fiddled around with the variables and feel that you're (kind of) | 10456 fiddled around with the variables and feel that you're (kind of) |
12700 satisfied. This will result in the new specs being byte-compiled, and | 10457 satisfied. This will result in the new specs being byte-compiled, and |
12701 you'll get top speed again. Gnus will save these compiled specs in the | 10458 you'll get top speed again. |
12702 @file{.newsrc.eld} file. (User-defined functions aren't compiled by | |
12703 this function, though---you should compile them yourself by sticking | |
12704 them into the @code{.gnus.el} file and byte-compiling that file.) | |
12705 | 10459 |
12706 | 10460 |
12707 @node Mode Lines | 10461 @node Mode Lines |
12708 @section Mode Lines | 10462 @section Mode Lines |
12709 @cindex mode lines | 10463 @cindex mode lines |
12720 @cindex display-time | 10474 @cindex display-time |
12721 | 10475 |
12722 @vindex gnus-mode-non-string-length | 10476 @vindex gnus-mode-non-string-length |
12723 By default, Gnus displays information on the current article in the mode | 10477 By default, Gnus displays information on the current article in the mode |
12724 lines of the summary and article buffers. The information Gnus wishes | 10478 lines of the summary and article buffers. The information Gnus wishes |
12725 to display (e.g. the subject of the article) is often longer than the | 10479 to display (eg. the subject of the article) is often longer than the |
12726 mode lines, and therefore have to be cut off at some point. The | 10480 mode lines, and therefore have to be cut off at some point. The |
12727 @code{gnus-mode-non-string-length} variable says how long the other | 10481 @code{gnus-mode-non-string-length} variable says how long the other |
12728 elements on the line is (i.e., the non-info part). If you put | 10482 elements on the line is (i.e., the non-info part). If you put |
12729 additional elements on the mode line (e.g. a clock), you should modify | 10483 additional elements on the mode line (eg. a clock), you should modify |
12730 this variable: | 10484 this variable: |
12731 | 10485 |
12732 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it> | 10486 @c Hook written by Francesco Potorti` <pot@cnuce.cnr.it> |
12733 @lisp | 10487 @lisp |
12734 (add-hook 'display-time-hook | 10488 (add-hook 'display-time-hook |
12739 (length display-time-string))))) | 10493 (length display-time-string))))) |
12740 @end lisp | 10494 @end lisp |
12741 | 10495 |
12742 If this variable is @code{nil} (which is the default), the mode line | 10496 If this variable is @code{nil} (which is the default), the mode line |
12743 strings won't be chopped off, and they won't be padded either. | 10497 strings won't be chopped off, and they won't be padded either. |
12744 Note that the default is unlikely to be desirable, as even the | |
12745 percentage complete in the buffer may be crowded off the mode line; | |
12746 the user should configure this variable appropriately for their | |
12747 configuration. | |
12748 | 10498 |
12749 | 10499 |
12750 @node Highlighting and Menus | 10500 @node Highlighting and Menus |
12751 @section Highlighting and Menus | 10501 @section Highlighting and Menus |
12752 @cindex visual | 10502 @cindex visual |
12809 @item gnus-mouse-face | 10559 @item gnus-mouse-face |
12810 @vindex gnus-mouse-face | 10560 @vindex gnus-mouse-face |
12811 This is the face (i.e., font) used for mouse highlighting in Gnus. No | 10561 This is the face (i.e., font) used for mouse highlighting in Gnus. No |
12812 mouse highlights will be done if @code{gnus-visual} is @code{nil}. | 10562 mouse highlights will be done if @code{gnus-visual} is @code{nil}. |
12813 | 10563 |
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'. | |
12814 @end table | 10579 @end table |
12815 | 10580 |
12816 There are hooks associated with the creation of all the different menus: | 10581 There are hooks associated with the creation of all the different menus: |
12817 | 10582 |
12818 @table @code | 10583 @table @code |
12950 the function will then be called once every day somewhere near that | 10715 the function will then be called once every day somewhere near that |
12951 time. Modified by the @var{idle} parameter, of course. | 10716 time. Modified by the @var{idle} parameter, of course. |
12952 | 10717 |
12953 @vindex gnus-demon-timestep | 10718 @vindex gnus-demon-timestep |
12954 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep} | 10719 (When I say ``minute'' here, I really mean @code{gnus-demon-timestep} |
12955 seconds. This is 60 by default. If you change that variable, | 10720 seconds. This is @code{60} by default. If you change that variable, |
12956 all the timings in the handlers will be affected.) | 10721 all the timings in the handlers will be affected.) |
12957 | 10722 |
12958 @vindex gnus-use-demon | 10723 @vindex gnus-use-demon |
12959 To set the whole thing in motion, though, you have to set | 10724 To set the whole thing in motion, though, you have to set |
12960 @code{gnus-use-demon} to @code{t}. | 10725 @code{gnus-use-demon} to @code{t}. |
12967 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) | 10732 (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) |
12968 @end lisp | 10733 @end lisp |
12969 | 10734 |
12970 @findex gnus-demon-add-nocem | 10735 @findex gnus-demon-add-nocem |
12971 @findex gnus-demon-add-scanmail | 10736 @findex gnus-demon-add-scanmail |
12972 @findex gnus-demon-add-rescan | |
12973 @findex gnus-demon-add-disconnection | 10737 @findex gnus-demon-add-disconnection |
12974 Some ready-made functions to do this has been created: | 10738 Some ready-made functions to do this has been created: |
12975 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, | 10739 @code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, and |
12976 @code{gnus-demon-add-rescan}, and @code{gnus-demon-add-scanmail}. Just | 10740 @code{gnus-demon-add-scanmail}. Just put those functions in your |
12977 put those functions in your @file{.gnus} if you want those abilities. | 10741 @file{.gnus} if you want those abilities. |
12978 | 10742 |
12979 @findex gnus-demon-init | 10743 @findex gnus-demon-init |
12980 @findex gnus-demon-cancel | 10744 @findex gnus-demon-cancel |
12981 @vindex gnus-demon-handlers | 10745 @vindex gnus-demon-handlers |
12982 If you add handlers to @code{gnus-demon-handlers} directly, you should | 10746 If you add handlers to @code{gnus-demon-handlers} directly, you should |
12984 daemons, you can use the @code{gnus-demon-cancel} function. | 10748 daemons, you can use the @code{gnus-demon-cancel} function. |
12985 | 10749 |
12986 Note that adding daemons can be pretty naughty if you overdo it. Adding | 10750 Note that adding daemons can be pretty naughty if you overdo it. Adding |
12987 functions that scan all news and mail from all servers every two seconds | 10751 functions that scan all news and mail from all servers every two seconds |
12988 is a sure-fire way of getting booted off any respectable system. So | 10752 is a sure-fire way of getting booted off any respectable system. So |
12989 behave. | 10753 behave. |
12990 | 10754 |
12991 | 10755 |
12992 @node NoCeM | 10756 @node NoCeM |
12993 @section NoCeM | 10757 @section NoCeM |
12994 @cindex nocem | 10758 @cindex nocem |
13020 by default. | 10784 by default. |
13021 | 10785 |
13022 @item gnus-nocem-groups | 10786 @item gnus-nocem-groups |
13023 @vindex gnus-nocem-groups | 10787 @vindex gnus-nocem-groups |
13024 Gnus will look for NoCeM messages in the groups in this list. The | 10788 Gnus will look for NoCeM messages in the groups in this list. The |
13025 default is @code{("news.lists.filters" "news.admin.net-abuse.bulletins" | 10789 default is @code{("alt.nocem.misc" "news.admin.net-abuse.announce")}. |
13026 "alt.nocem.misc" "news.admin.net-abuse.announce")}. | |
13027 | 10790 |
13028 @item gnus-nocem-issuers | 10791 @item gnus-nocem-issuers |
13029 @vindex gnus-nocem-issuers | 10792 @vindex gnus-nocem-issuers |
13030 There are many people issuing NoCeM messages. This list says what | 10793 There are many people issuing NoCeM messages. This list says what |
13031 people you want to listen to. The default is @code{("Automoose-1" | 10794 people you want to listen to. The default is @code{("Automoose-1" |
13045 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be | 10808 The CancelMoose[tm] on autopilot. The CancelMoose[tm] is reputed to be |
13046 Norwegian, and was the person(s) who invented NoCeM. | 10809 Norwegian, and was the person(s) who invented NoCeM. |
13047 | 10810 |
13048 @item jem@@xpat.com; | 10811 @item jem@@xpat.com; |
13049 @cindex Jem | 10812 @cindex Jem |
13050 John Milburn---despammer located in Korea who is getting very busy these | 10813 Jem---Korean despammer who is getting very busy these days. |
13051 days. | |
13052 | 10814 |
13053 @item red@@redpoll.mrfs.oh.us (Richard E. Depew) | 10815 @item red@@redpoll.mrfs.oh.us (Richard E. Depew) |
13054 Richard E. Depew---lone American despammer. He mostly cancels binary | 10816 Richard E. Depew---lone American despammer. He mostly cancels binary |
13055 postings to non-binary groups and removes spews (regurgitated articles). | 10817 postings to non-binary groups and removes spews (regurgitated articles). |
13056 @end table | 10818 @end table |
13057 | 10819 |
13058 You do not have to heed NoCeM messages from all these people---just the | 10820 You do not have to heed NoCeM messages from all these people---just the |
13059 ones you want to listen to. | 10821 ones you want to listen to. |
13060 | |
13061 @item gnus-nocem-verifyer | |
13062 @vindex gnus-nocem-verifyer | |
13063 @findex mc-verify | |
13064 This should be a function for verifying that the NoCeM issuer is who she | |
13065 says she is. The default is @code{mc-verify}, which is a Mailcrypt | |
13066 function. If this is too slow and you don't care for verification | |
13067 (which may be dangerous), you can set this variable to @code{nil}. | |
13068 | 10822 |
13069 @item gnus-nocem-directory | 10823 @item gnus-nocem-directory |
13070 @vindex gnus-nocem-directory | 10824 @vindex gnus-nocem-directory |
13071 This is where Gnus will store its NoCeM cache files. The default is | 10825 This is where Gnus will store its NoCeM cache files. The default is |
13072 @file{~/News/NoCeM/}. | 10826 @file{~/News/NoCeM/}. |
13097 | 10851 |
13098 | 10852 |
13099 @node Picon Basics | 10853 @node Picon Basics |
13100 @subsection Picon Basics | 10854 @subsection Picon Basics |
13101 | 10855 |
13102 What are Picons? To quote directly from the Picons Web site: | 10856 What are Picons? To quote directly from the Picons Web site |
10857 (@samp{http://www.cs.indiana.edu/picons/ftp/index.html}): | |
13103 | 10858 |
13104 @quotation | 10859 @quotation |
13105 @dfn{Picons} is short for ``personal icons''. They're small, | 10860 @dfn{Picons} is short for ``personal icons''. They're small, |
13106 constrained images used to represent users and domains on the net, | 10861 constrained images used to represent users and domains on the net, |
13107 organized into databases so that the appropriate image for a given | 10862 organized into databases so that the appropriate image for a given |
13109 databases for Usenet newsgroups and weather forecasts. The picons are | 10864 databases for Usenet newsgroups and weather forecasts. The picons are |
13110 in either monochrome @code{XBM} format or color @code{XPM} and | 10865 in either monochrome @code{XBM} format or color @code{XPM} and |
13111 @code{GIF} formats. | 10866 @code{GIF} formats. |
13112 @end quotation | 10867 @end quotation |
13113 | 10868 |
13114 For instructions on obtaining and installing the picons databases, point | 10869 Please see the above mentioned web site for instructions on obtaining |
13115 your Web browser at | 10870 and installing the picons databases, or the following ftp site: |
13116 @file{http://www.cs.indiana.edu/picons/ftp/index.html}. | 10871 @samp{http://www.cs.indiana.edu/picons/ftp/index.html}. |
13117 | 10872 |
13118 @vindex gnus-picons-database | 10873 @vindex gnus-picons-database |
13119 Gnus expects picons to be installed into a location pointed to by | 10874 Gnus expects picons to be installed into a location pointed to by |
13120 @code{gnus-picons-database}. | 10875 @code{gnus-picons-database}. |
13121 | 10876 |
13163 @item gnus-picons-display-where | 10918 @item gnus-picons-display-where |
13164 @vindex gnus-picons-display-where | 10919 @vindex gnus-picons-display-where |
13165 Where the picon images should be displayed. It is @code{picons} by | 10920 Where the picon images should be displayed. It is @code{picons} by |
13166 default (which by default maps to the buffer @samp{*Picons*}). Other | 10921 default (which by default maps to the buffer @samp{*Picons*}). Other |
13167 valid places could be @code{article}, @code{summary}, or | 10922 valid places could be @code{article}, @code{summary}, or |
13168 @samp{*scratch*} for all I care. Just make sure that you've made the | 10923 @samp{"*scratch*"} for all I care. Just make sure that you've made the |
13169 buffer visible using the standard Gnus window configuration | 10924 buffer visible using the standard Gnus window configuration |
13170 routines---@pxref{Windows Configuration}. | 10925 routines---@xref{Windows Configuration}. |
13171 | 10926 |
13172 @end table | 10927 @end table |
13173 | 10928 |
13174 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your | 10929 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your |
13175 window configuration for you to include the @code{picons} buffer. | 10930 window configuration for you to include the @code{picons} buffer. |
13229 newsgroups. | 10984 newsgroups. |
13230 | 10985 |
13231 @item gnus-picons-user-directories | 10986 @item gnus-picons-user-directories |
13232 @vindex gnus-picons-user-directories | 10987 @vindex gnus-picons-user-directories |
13233 List of subdirectories to search in @code{gnus-picons-database} for user | 10988 List of subdirectories to search in @code{gnus-picons-database} for user |
13234 faces. @code{("local" "users" "usenix" "misc/MISC")} is the default. | 10989 faces. Defaults to @code{("local" "users" "usenix" "misc/MISC")}. |
13235 | 10990 |
13236 @item gnus-picons-domain-directories | 10991 @item gnus-picons-domain-directories |
13237 @vindex gnus-picons-domain-directories | 10992 @vindex gnus-picons-domain-directories |
13238 List of subdirectories to search in @code{gnus-picons-database} for | 10993 List of subdirectories to search in @code{gnus-picons-database} for |
13239 domain name faces. Defaults to @code{("domains")}. Some people may | 10994 domain name faces. Defaults to @code{("domains")}. Some people may |
13257 @samp{*Icon Buffer*}. | 11012 @samp{*Icon Buffer*}. |
13258 | 11013 |
13259 @end table | 11014 @end table |
13260 | 11015 |
13261 | 11016 |
13262 @node Undo | |
13263 @section Undo | |
13264 @cindex undo | |
13265 | |
13266 It is very useful to be able to undo actions one has done. In normal | |
13267 Emacs buffers, it's easy enough---you just push the @code{undo} button. | |
13268 In Gnus buffers, however, it isn't that simple. | |
13269 | |
13270 The things Gnus displays in its buffer is of no value whatsoever to | |
13271 Gnus---it's all just data that is designed to look nice to the user. | |
13272 Killing a group in the group buffer with @kbd{C-k} makes the line | |
13273 disappear, but that's just a side-effect of the real action---the | |
13274 removal of the group in question from the internal Gnus structures. | |
13275 Undoing something like that can't be done by the normal Emacs | |
13276 @code{undo} function. | |
13277 | |
13278 Gnus tries to remedy this somewhat by keeping track of what the user | |
13279 does and coming up with actions that would reverse the actions the user | |
13280 takes. When the user then presses the @code{undo} key, Gnus will run | |
13281 the code to reverse the previous action, or the previous actions. | |
13282 However, not all actions are easily reversible, so Gnus currently offers | |
13283 a few key functions to be undoable. These include killing groups, | |
13284 yanking groups, and changing the list of read articles of groups. | |
13285 That's it, really. More functions may be added in the future, but each | |
13286 added function means an increase in data to be stored, so Gnus will | |
13287 never be totally undoable. | |
13288 | |
13289 @findex gnus-undo-mode | |
13290 @vindex gnus-use-undo | |
13291 @findex gnus-undo | |
13292 The undoability is provided by the @code{gnus-undo-mode} minor mode. It | |
13293 is used if @code{gnus-use-undo} is non-@code{nil}, which is the | |
13294 default. The @kbd{M-C-_} key performs the @code{gnus-undo} command | |
13295 command, which should feel kinda like the normal Emacs @code{undo} | |
13296 command. | |
13297 | |
13298 | |
13299 @node Moderation | |
13300 @section Moderation | |
13301 @cindex moderation | |
13302 | |
13303 If you are a moderator, you can use the @file{gnus-mdrtn.el} package. | |
13304 It is not included in the standard Gnus package. Write a mail to | |
13305 @samp{larsi@@ifi.uio.no} and state what group you moderate, and you'll | |
13306 get a copy. | |
13307 | |
13308 The moderation package is implemented as a minor mode for summary | |
13309 buffers. Put | |
13310 | |
13311 @lisp | |
13312 (add-hook 'gnus-summary-mode-hook 'gnus-moderate) | |
13313 @end lisp | |
13314 | |
13315 in your @file{.gnus.el} file. | |
13316 | |
13317 If you are the moderation of @samp{rec.zoofle}, this is how it's | |
13318 supposed to work: | |
13319 | |
13320 @enumerate | |
13321 @item | |
13322 You split your incoming mail by matching on | |
13323 @samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted | |
13324 articles in some mail group---for instance, @samp{nnml:rec.zoofle}. | |
13325 | |
13326 @item | |
13327 You enter that group once in a while and post articles using the @kbd{e} | |
13328 (edit-and-post) or @kbd{s} (just send unedited) commands. | |
13329 | |
13330 @item | |
13331 If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some | |
13332 articles that weren't approved by you, you can cancel them with the | |
13333 @kbd{c} command. | |
13334 @end enumerate | |
13335 | |
13336 To use moderation mode in these two groups, say: | |
13337 | |
13338 @lisp | |
13339 (setq gnus-moderated-list | |
13340 "^nnml:rec.zoofle$\\|^rec.zoofle$") | |
13341 @end lisp | |
13342 | |
13343 | |
13344 @node XEmacs Enhancements | |
13345 @section XEmacs Enhancements | |
13346 @cindex XEmacs | |
13347 | |
13348 XEmacs is able to display pictures and stuff, so Gnus has taken | |
13349 advantage of that. Relevant variables include: | |
13350 | |
13351 @table @code | |
13352 @item gnus-xmas-glyph-directory | |
13353 @vindex gnus-xmas-glyph-directory | |
13354 This is where Gnus will look for pictures. Gnus will normally | |
13355 auto-detect this directory, but you may set it manually if you have an | |
13356 unusual directory structure. | |
13357 | |
13358 @item gnus-xmas-logo-color-alist | |
13359 @vindex gnus-xmas-logo-color-alist | |
13360 This is an alist where the key is a type symbol and the values are the | |
13361 foreground and background color of the splash page glyph. | |
13362 | |
13363 @item gnus-xmas-logo-color-style | |
13364 @vindex gnus-xmas-logo-color-style | |
13365 This is the key used to look up the color in the alist described above. | |
13366 Legal values include @code{flame}, @code{pine}, @code{moss}, | |
13367 @code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape}, | |
13368 @code{labia}, @code{berry}, @code{neutral}, and @code{september}. | |
13369 | |
13370 @item gnus-use-toolbar | |
13371 @vindex gnus-use-toolbar | |
13372 If @code{nil}, don't display toolbars. If non-@code{nil}, it should be | |
13373 one of @code{default-toolbar}, @code{top-toolbar}, @code{bottom-toolbar}, | |
13374 @code{right-toolbar}, or @code{left-toolbar}. | |
13375 | |
13376 @item gnus-group-toolbar | |
13377 @vindex gnus-group-toolbar | |
13378 The toolbar in the group buffer. | |
13379 | |
13380 @item gnus-summary-toolbar | |
13381 @vindex gnus-summary-toolbar | |
13382 The toolbar in the summary buffer. | |
13383 | |
13384 @item gnus-summary-mail-toolbar | |
13385 @vindex gnus-summary-mail-toolbar | |
13386 The toolbar in the summary buffer of mail groups. | |
13387 | |
13388 @item gnus-xmas-modeline-glyph | |
13389 @vindex gnus-xmas-modeline-glyph | |
13390 A glyph displayed in all Gnus mode lines. It is a tiny gnu head by | |
13391 default. | |
13392 | |
13393 @end table | |
13394 | |
13395 | |
13396 @node Fuzzy Matching | |
13397 @section Fuzzy Matching | |
13398 @cindex fuzzy matching | |
13399 | |
13400 Gnus provides @dfn{fuzzy matching} of @code{Subject} lines when doing | |
13401 things like scoring, thread gathering and thread comparison. | |
13402 | |
13403 As opposed to regular expression matching, fuzzy matching is very fuzzy. | |
13404 It's so fuzzy that there's not even a definition of what @dfn{fuzziness} | |
13405 means, and the implementation has changed over time. | |
13406 | |
13407 Basically, it tries to remove all noise from lines before comparing. | |
13408 @samp{Re: }, parenthetical remarks, white space, and so on, are filtered | |
13409 out of the strings before comparing the results. This often leads to | |
13410 adequate results---even when faced with strings generated by text | |
13411 manglers masquerading as newsreaders. | |
13412 | |
13413 | |
13414 @node Thwarting Email Spam | |
13415 @section Thwarting Email Spam | |
13416 @cindex email spam | |
13417 @cindex spam | |
13418 @cindex UCE | |
13419 @cindex unsolicited commercial email | |
13420 | |
13421 In these last days of the Usenet, commercial vultures are hanging about | |
13422 and grepping through news like crazy to find email addresses they can | |
13423 foist off their scams and products to. As a reaction to this, many | |
13424 people have started putting nonsense addresses into their @code{From} | |
13425 lines. I think this is counterproductive---it makes it difficult for | |
13426 people to send you legitimate mail in response to things you write, as | |
13427 well as making it difficult to see who wrote what. This rewriting may | |
13428 perhaps be a bigger menace than the unsolicited commercial email itself | |
13429 in the end. | |
13430 | |
13431 The biggest problem I have with email spam is that it comes in under | |
13432 false pretenses. I press @kbd{g} and Gnus merrily informs me that I | |
13433 have 10 new emails. I say ``Golly gee! Happy is me!'' and selects the | |
13434 mail group, only to find two pyramid schemes, seven advertisements | |
13435 ``New! Miracle tonic for growing full, lustrouos hair on your toes!'' | |
13436 and one mail asking me to repent and find some god. | |
13437 | |
13438 This is annoying. | |
13439 | |
13440 The way to deal with this is having Gnus split out all spam into a | |
13441 @samp{spam} mail group (@pxref{Splitting Mail}). | |
13442 | |
13443 First, pick one (1) legal mail address that you can be reached at, and | |
13444 put it in your @code{From} header of all your news articles. (I've | |
13445 chosen @samp{larsi@@trym.ifi.uio.no}.) | |
13446 | |
13447 @lisp | |
13448 (setq message-default-news-headers | |
13449 "From: Lars Magne Ingebrigtsen <larsi@@trym.ifi.uio.no>\n") | |
13450 @end lisp | |
13451 | |
13452 Then put the following split rule in @code{nnmail-split-fancy} | |
13453 (@pxref{Fancy Mail Splitting}): | |
13454 | |
13455 @lisp | |
13456 ( | |
13457 ... | |
13458 (to "larsi@@trym.ifi.uio.no" | |
13459 (| ("subject" "re:.*" "misc") | |
13460 ("references" ".*@@.*" "misc") | |
13461 "spam")) | |
13462 ... | |
13463 ) | |
13464 @end lisp | |
13465 | |
13466 This says that all mail to this address is suspect, but if it has a | |
13467 @code{Subject} that starts with a @samp{Re:} or has a @code{References} | |
13468 header, it's probably ok. All the rest goes to the @samp{spam} group. | |
13469 (This idea probably comes from Tim Pierce.) | |
13470 | |
13471 In my experience, this will sort virtually everything into the right | |
13472 group. You still have to check the @samp{spam} group from time to time to | |
13473 check for legitimate mail, though. If you feel like being a good net | |
13474 citizen, you can even send off complaints to the proper authorities on | |
13475 each unsolicited commercial email---at your leisure. | |
13476 | |
13477 This works for me. It allows people an easy way to contact me (they can | |
13478 just press @kbd{r} in the usual way), and I'm not bothered at all with | |
13479 spam. It's a win-win situation. Forging @code{From} headers to point | |
13480 to non-existant domains is yucky, in my opinion. | |
13481 | |
13482 | |
13483 @node Various Various | 11017 @node Various Various |
13484 @section Various Various | 11018 @section Various Various |
13485 @cindex mode lines | 11019 @cindex mode lines |
13486 @cindex highlights | 11020 @cindex highlights |
13487 | 11021 |
13488 @table @code | 11022 @table @code |
13489 | |
13490 @item gnus-home-directory | |
13491 All Gnus path variables will be initialized from this variable, which | |
13492 defaults to @file{~/}. | |
13493 | |
13494 @item gnus-directory | |
13495 @vindex gnus-directory | |
13496 Most Gnus storage path variables will be initialized from this variable, | |
13497 which defaults to the @samp{SAVEDIR} environment variable, or | |
13498 @file{~/News/} if that variable isn't set. | |
13499 | |
13500 @item gnus-default-directory | |
13501 @vindex gnus-default-directory | |
13502 Not related to the above variable at all---this variable says what the | |
13503 default directory of all Gnus buffers should be. If you issue commands | |
13504 like @kbd{C-x C-f}, the prompt you'll get starts in the current buffer's | |
13505 default directory. If this variable is @code{nil} (which is the | |
13506 default), the default directory will be the default directory of the | |
13507 buffer you were in when you started Gnus. | |
13508 | 11023 |
13509 @item gnus-verbose | 11024 @item gnus-verbose |
13510 @vindex gnus-verbose | 11025 @vindex gnus-verbose |
13511 This variable is an integer between zero and ten. The higher the value, | 11026 This variable is an integer between zero and ten. The higher the value, |
13512 the more messages will be displayed. If this variable is zero, Gnus | 11027 the more messages will be displayed. If this variable is zero, Gnus |
13520 to the Gnus backends instead of Gnus proper. | 11035 to the Gnus backends instead of Gnus proper. |
13521 | 11036 |
13522 @item nnheader-max-head-length | 11037 @item nnheader-max-head-length |
13523 @vindex nnheader-max-head-length | 11038 @vindex nnheader-max-head-length |
13524 When the backends read straight heads of articles, they all try to read | 11039 When the backends read straight heads of articles, they all try to read |
13525 as little as possible. This variable (default 4096) specifies | 11040 as little as possible. This variable (default @code{4096}) specifies |
13526 the absolute max length the backends will try to read before giving up | 11041 the absolute max length the backends will try to read before giving up |
13527 on finding a separator line between the head and the body. If this | 11042 on finding a separator line between the head and the body. If this |
13528 variable is @code{nil}, there is no upper read bound. If it is | 11043 variable is @code{nil}, there is no upper read bound. If it is |
13529 @code{t}, the backends won't try to read the articles piece by piece, | 11044 @code{t}, the backends won't try to read the articles piece by piece, |
13530 but read the entire articles. This makes sense with some versions of | 11045 but read the entire articles. This makes sense with some versions of |
13531 @code{ange-ftp}. | 11046 @code{ange-ftp}. |
13532 | |
13533 @item nnheader-head-chop-length | |
13534 @vindex nnheader-head-chop-length | |
13535 This variable says how big a piece of each article to read when doing | |
13536 the operation described above. | |
13537 | 11047 |
13538 @item nnheader-file-name-translation-alist | 11048 @item nnheader-file-name-translation-alist |
13539 @vindex nnheader-file-name-translation-alist | 11049 @vindex nnheader-file-name-translation-alist |
13540 @cindex file names | 11050 @cindex file names |
13541 @cindex illegal characters in file names | 11051 @cindex illegal characters in file names |
13582 | 11092 |
13583 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: | 11093 Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: |
13584 | 11094 |
13585 @quotation | 11095 @quotation |
13586 @strong{Te Deum} | 11096 @strong{Te Deum} |
13587 | |
13588 @sp 1 | 11097 @sp 1 |
13589 Not because of victories @* | 11098 Not because of victories @* |
13590 I sing,@* | 11099 I sing,@* |
13591 having none,@* | 11100 having none,@* |
13592 but for the common sunshine,@* | 11101 but for the common sunshine,@* |
13593 the breeze,@* | 11102 the breeze,@* |
13594 the largess of the spring. | 11103 the largess of the spring. |
13595 | |
13596 @sp 1 | 11104 @sp 1 |
13597 Not for victory@* | 11105 Not for victory@* |
13598 but for the day's work done@* | 11106 but for the day's work done@* |
13599 as well as I was able;@* | 11107 as well as I was able;@* |
13600 not for a seat upon the dais@* | 11108 not for a seat upon the dais@* |
13628 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary | 11136 @file{http://www.ifi.uio.no/~larsi/}. This is also the primary |
13629 distribution point for the new and spiffy versions of Gnus, and is known | 11137 distribution point for the new and spiffy versions of Gnus, and is known |
13630 as The Site That Destroys Newsrcs And Drives People Mad. | 11138 as The Site That Destroys Newsrcs And Drives People Mad. |
13631 | 11139 |
13632 During the first extended alpha period of development, the new Gnus was | 11140 During the first extended alpha period of development, the new Gnus was |
13633 called ``(ding) Gnus''. @dfn{(ding)} is, of course, short for | 11141 called ``(ding) Gnus''. @dfn{(ding)}, is, of course, short for |
13634 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares? | 11142 @dfn{ding is not Gnus}, which is a total and utter lie, but who cares? |
13635 (Besides, the ``Gnus'' in this abbreviation should probably be | 11143 (Besides, the ``Gnus'' in this abbreviation should probably be |
13636 pronounced ``news'' as @sc{Umeda} intended, which makes it a more | 11144 pronounced ``news'' as @sc{Umeda} intended, which makes it a more |
13637 appropriate name, don't you think?) | 11145 appropriate name, don't you think?) |
13638 | 11146 |
13640 spunky name, we decided that the name was @emph{too} spunky, so we | 11148 spunky name, we decided that the name was @emph{too} spunky, so we |
13641 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. | 11149 renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. |
13642 ``@sc{gnus}''. New vs. old. | 11150 ``@sc{gnus}''. New vs. old. |
13643 | 11151 |
13644 The first ``proper'' release of Gnus 5 was done in November 1995 when it | 11152 The first ``proper'' release of Gnus 5 was done in November 1995 when it |
13645 was included in the Emacs 19.30 distribution (132 (ding) Gnus releases | 11153 was included in the Emacs 19.30 distribution. |
13646 plus 15 Gnus 5.0 releases). | 11154 |
13647 | 11155 In May 1996 the next Gnus generation (aka. ``September Gnus'') was |
13648 In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99 | 11156 released under the name ``Gnus 5.2''. |
13649 releases)) was released under the name ``Gnus 5.2'' (40 releases). | |
13650 | |
13651 On July 28th 1996 work on Red Gnus was begun, and it was released on | |
13652 January 25th 1997 (after 84 releases) as ``Gnus 5.4''. | |
13653 | |
13654 If you happen upon a version of Gnus that has a name that is prefixed -- | |
13655 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' -- | |
13656 don't panic. Don't let it know that you're frightened. Back away. | |
13657 Slowly. Whatever you do, don't run. Walk away, calmly, until you're | |
13658 out of its reach. Find a proper released version of Gnus and snuggle up | |
13659 to that instead. | |
13660 | 11157 |
13661 @menu | 11158 @menu |
13662 * Why?:: What's the point of Gnus? | 11159 * Why?:: What's the point of Gnus? |
13663 * Compatibility:: Just how compatible is Gnus with @sc{gnus}? | 11160 * Compatibility:: Just how compatible is Gnus with @sc{gnus}? |
13664 * Conformity:: Gnus tries to conform to all standards. | 11161 * Conformity:: Gnus tries to conform to all standards. |
13798 This is considered to be a ``vanity header'', while I consider it to be | 11295 This is considered to be a ``vanity header'', while I consider it to be |
13799 consumer information. After seeing so many badly formatted articles | 11296 consumer information. After seeing so many badly formatted articles |
13800 coming from @code{tin} and @code{Netscape} I know not to use either of | 11297 coming from @code{tin} and @code{Netscape} I know not to use either of |
13801 those for posting articles. I would not have known that if it wasn't | 11298 those for posting articles. I would not have known that if it wasn't |
13802 for the @code{X-Newsreader} header. | 11299 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. | |
13803 @end table | 11308 @end table |
13804 | 11309 |
13805 @end table | 11310 @end table |
13806 | 11311 |
13807 If you ever notice Gnus acting non-compliantly with regards to the texts | 11312 If you ever notice Gnus acting non-compliantly with regards to the texts |
13819 Gnus should work on : | 11324 Gnus should work on : |
13820 | 11325 |
13821 @itemize @bullet | 11326 @itemize @bullet |
13822 | 11327 |
13823 @item | 11328 @item |
13824 Emacs 19.32 and up. | 11329 Emacs 19.30 and up. |
13825 | 11330 |
13826 @item | 11331 @item |
13827 XEmacs 19.14 and up. | 11332 XEmacs 19.13 and up. |
13828 | 11333 |
13829 @item | 11334 @item |
13830 Mule versions based on Emacs 19.32 and up. | 11335 Mule versions based on Emacs 19.30 and up. |
13831 | 11336 |
13832 @end itemize | 11337 @end itemize |
13833 | 11338 |
13834 Gnus will absolutely not work on any Emacsen older than that. Not | 11339 Gnus will absolutely not work on any Emacsen older than that. Not |
13835 reliably, at least. | 11340 reliably, at least. |
13836 | 11341 |
13837 There are some vague differences between Gnus on the various | 11342 There are some vague differences between Gnus on the various platforms: |
13838 platforms---XEmacs features more graphics (a logo and a toolbar)---but | 11343 |
13839 other than that, things should look pretty much the same under all | 11344 @itemize @bullet |
13840 Emacsen. | 11345 |
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 | |
13841 | 11366 |
13842 | 11367 |
13843 @node Contributors | 11368 @node Contributors |
13844 @subsection Contributors | 11369 @subsection Contributors |
13845 @cindex contributors | 11370 @cindex contributors |
13858 I would like to take this opportunity to thank the Academy for... oops, | 11383 I would like to take this opportunity to thank the Academy for... oops, |
13859 wrong show. | 11384 wrong show. |
13860 | 11385 |
13861 @itemize @bullet | 11386 @itemize @bullet |
13862 | 11387 |
13863 @item | 11388 @item Masanobu @sc{Umeda} |
13864 Masanobu @sc{Umeda}---the writer of the original @sc{gnus}. | 11389 The writer of the original @sc{gnus}. |
13865 | 11390 |
13866 @item | 11391 @item Per Abrahamsen |
13867 Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as | 11392 Custom, scoring, highlighting and @sc{soup} code (as well as numerous |
13868 well as numerous other things). | 11393 other things). |
13869 | 11394 |
13870 @item | 11395 @item Luis Fernandes |
13871 Luis Fernandes---design and graphics. | 11396 Design and graphics. |
13872 | 11397 |
13873 @item | 11398 @item Wes Hardaker |
13874 Erik Naggum---help, ideas, support, code and stuff. | 11399 @file{gnus-picon.el} and the manual section on @dfn{picons} |
13875 | 11400 (@pxref{Picons}). |
13876 @item | 11401 |
13877 Wes Hardaker---@file{gnus-picon.el} and the manual section on | 11402 @item Brad Miller |
13878 @dfn{picons} (@pxref{Picons}). | 11403 @file{gnus-gl.el} and the GroupLens manual section (@pxref{GroupLens}). |
13879 | 11404 |
13880 @item | 11405 @item Sudish Joseph |
13881 Brad Miller---@file{gnus-gl.el} and the GroupLens manual section | 11406 Innumerable bug fixes. |
13882 (@pxref{GroupLens}). | 11407 |
13883 | 11408 @item Ilja Weis |
13884 @item | 11409 @file{gnus-topic.el}. |
13885 Sudish Joseph---innumerable bug fixes. | 11410 |
13886 | 11411 @item Steven L. Baur |
13887 @item | 11412 Lots and lots of bugs detections and fixes. |
13888 Ilja Weis---@file{gnus-topic.el}. | 11413 |
13889 | 11414 @item Vladimir Alexiev |
13890 @item | 11415 The refcard and reference booklets. |
13891 Steven L. Baur---lots and lots and lots of bugs detections and fixes. | 11416 |
13892 | 11417 @item Felix Lee & JWZ |
13893 @item | 11418 I stole some pieces from the XGnus distribution by Felix Lee and JWZ. |
13894 Vladimir Alexiev---the refcard and reference booklets. | 11419 |
13895 | 11420 @item Scott Byer |
13896 @item | 11421 @file{nnfolder.el} enhancements & rewrite. |
13897 Felix Lee & Jamie Zawinsky---I stole some pieces from the XGnus | 11422 |
13898 distribution by Felix Lee and JWZ. | 11423 @item Peter Mutsaers |
13899 | 11424 Orphan article scoring code. |
13900 @item | 11425 |
13901 Scott Byer---@file{nnfolder.el} enhancements & rewrite. | 11426 @item Ken Raeburn |
13902 | 11427 POP mail support. |
13903 @item | 11428 |
13904 Peter Mutsaers---orphan article scoring code. | 11429 @item Hallvard B Furuseth |
13905 | 11430 Various bits and pieces, especially dealing with .newsrc files. |
13906 @item | 11431 |
13907 Ken Raeburn---POP mail support. | 11432 @item Brian Edmonds |
13908 | 11433 @file{gnus-bbdb.el}. |
13909 @item | 11434 |
13910 Hallvard B Furuseth---various bits and pieces, especially dealing with | 11435 @item Ricardo Nassif and Mark Borges |
13911 .newsrc files. | 11436 Proof-reading. |
13912 | 11437 |
13913 @item | 11438 @item Kevin Davidson |
13914 Brian Edmonds---@file{gnus-bbdb.el}. | 11439 Came up with the name @dfn{ding}, so blame him. |
13915 | |
13916 @item | |
13917 David Moore---rewrite of @file{nnvirtual.el} and many other things. | |
13918 | |
13919 @item | |
13920 Ricardo Nassif, Mark Borges, and Jost Krieger---proof-reading. | |
13921 | |
13922 @item | |
13923 Kevin Davidson---came up with the name @dfn{ding}, so blame him. | |
13924 | |
13925 @item | |
13926 François Pinard---many, many interesting and thorough bug reports. | |
13927 | 11440 |
13928 @end itemize | 11441 @end itemize |
13929 | 11442 |
13930 The following people have contributed many patches and suggestions: | 11443 Peter Arius, Stainless Steel Rat, Ulrik Dickow, Jack Vinson, Daniel |
13931 | 11444 Quinlan, Frank D. Cringle, Geoffrey T. Dairiki, Fabrice Popineau and |
13932 Christopher Davis, | 11445 Andrew Eskilsson have all contributed code and suggestions. |
13933 Andrew Eskilsson, | |
13934 Kai Grossjohann, | |
13935 David Kågedal, | |
13936 Richard Pieri, | |
13937 Fabrice Popineau, | |
13938 Daniel Quinlan, | |
13939 Jason L. Tibbitts, III, | |
13940 and | |
13941 Jack Vinson. | |
13942 | |
13943 Also thanks to the following for patches and stuff: | |
13944 | |
13945 Adrian Aichner, | |
13946 Peter Arius, | |
13947 Matt Armstrong, | |
13948 Marc Auslander, | |
13949 Chris Bone, | |
13950 Mark Borges, | |
13951 Lance A. Brown, | |
13952 Kees de Bruin, | |
13953 Martin Buchholz, | |
13954 Kevin Buhr, | |
13955 Alastair Burt, | |
13956 Joao Cachopo, | |
13957 Zlatko Calusic, | |
13958 Massimo Campostrini, | |
13959 Michael R. Cook, | |
13960 Glenn Coombs, | |
13961 Frank D. Cringle, | |
13962 Geoffrey T. Dairiki, | |
13963 Andre Deparade, | |
13964 Ulrik Dickow, | |
13965 Dave Disser, | |
13966 Joev Dubach, | |
13967 Paul Eggert, | |
13968 Michael Ernst, | |
13969 Luc Van Eycken, | |
13970 Sam Falkner, | |
13971 Paul Franklin, | |
13972 David S. Goldberg, | |
13973 D. Hall, | |
13974 Magnus Hammerin, | |
13975 Raja R. Harinath, | |
13976 Hisashige Kenji, @c Hisashige | |
13977 Marc Horowitz, | |
13978 François Felix Ingrand, | |
13979 Ishikawa Ichiro, @c Ishikawa | |
13980 Lee Iverson, | |
13981 Rajappa Iyer, | |
13982 Randell Jesup, | |
13983 Fred Johansen, | |
13984 Greg Klanderman, | |
13985 Karl Kleinpaste, | |
13986 Peter Skov Knudsen, | |
13987 Shuhei Kobayashi, @c Kobayashi | |
13988 Thor Kristoffersen, | |
13989 Jens Lautenbacher, | |
13990 Carsten Leonhardt, | |
13991 James LewisMoss, | |
13992 Christian Limpach, | |
13993 Markus Linnala, | |
13994 Dave Love, | |
13995 Tonny Madsen, | |
13996 Shlomo Mahlab, | |
13997 Nat Makarevitch, | |
13998 David Martin, | |
13999 Gordon Matzigkeit, | |
14000 Timo Metzemakers, | |
14001 Richard Mlynarik, | |
14002 Lantz Moore, | |
14003 Morioka Tomohiko, @c Morioka | |
14004 Erik Toubro Nielsen, | |
14005 Hrvoje Niksic, | |
14006 Andy Norman, | |
14007 C. R. Oldham, | |
14008 Alexandre Oliva, | |
14009 Ken Olstad, | |
14010 Masaharu Onishi, @c Onishi | |
14011 Hideki Ono, @c Ono | |
14012 William Perry, | |
14013 Stephen Peters, | |
14014 Ulrich Pfeifer, | |
14015 John McClary Prevost, | |
14016 Colin Rafferty, | |
14017 Bart Robinson, | |
14018 Jason Rumney, | |
14019 Loren Schall, | |
14020 Dan Schmidt, | |
14021 Ralph Schleicher, | |
14022 Philippe Schnoebelen, | |
14023 Randal L. Schwartz, | |
14024 Danny Siu, | |
14025 Paul D. Smith, | |
14026 Jeff Sparkes, | |
14027 Michael Sperber, | |
14028 Richard Stallman, | |
14029 Greg Stark, | |
14030 Paul Stodghill, | |
14031 Kurt Swanson, | |
14032 Samuel Tardieu, | |
14033 Teddy, | |
14034 Chuck Thompson, | |
14035 Philippe Troin, | |
14036 Jan Vroonhof, | |
14037 Barry A. Warsaw, | |
14038 Christoph Wedler, | |
14039 Joe Wells, | |
14040 and | |
14041 Katsumi Yamaoka. @c Yamaoka | |
14042 | |
14043 For a full overview of what each person has done, the ChangeLogs | |
14044 included in the Gnus alpha distributions should give ample reading | |
14045 (550kB and counting). | |
14046 | |
14047 Apologies to everybody that I've forgotten, of which there are many, I'm | |
14048 sure. | |
14049 | |
14050 Gee, that's quite a list of people. I guess that must mean that there | |
14051 actually are people who are using Gnus. Who'd'a thunk it! | |
14052 | 11446 |
14053 | 11447 |
14054 @node New Features | 11448 @node New Features |
14055 @subsection New Features | 11449 @subsection New Features |
14056 @cindex new features | 11450 @cindex new features |
14057 | |
14058 @menu | |
14059 * ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. | |
14060 * September Gnus:: The Thing Formally Known As Gnus 5.3/5.3. | |
14061 * Red Gnus:: Third time best---Gnus 5.4/5.5. | |
14062 @end menu | |
14063 | |
14064 These lists are, of course, just @emph{short} overviews of the | |
14065 @emph{most} important new features. No, really. There are tons more. | |
14066 Yes, we have feeping creaturism in full effect. | |
14067 | |
14068 | |
14069 @node ding Gnus | |
14070 @subsubsection (ding) Gnus | |
14071 | |
14072 New features in Gnus 5.0/5.1: | |
14073 | 11451 |
14074 @itemize @bullet | 11452 @itemize @bullet |
14075 | 11453 |
14076 @item | 11454 @item |
14077 The look of all buffers can be changed by setting format-like variables | 11455 The look of all buffers can be changed by setting format-like variables |
14178 | 11556 |
14179 @item | 11557 @item |
14180 You can click on buttons instead of using the keyboard | 11558 You can click on buttons instead of using the keyboard |
14181 (@pxref{Buttons}). | 11559 (@pxref{Buttons}). |
14182 | 11560 |
11561 @item | |
11562 Gnus can use NoCeM files to weed out spam (@pxref{NoCeM}). | |
11563 | |
14183 @end itemize | 11564 @end itemize |
14184 | 11565 |
14185 | 11566 This is, of course, just a @emph{short} overview of the @emph{most} |
14186 @node September Gnus | 11567 important new features. No, really. There are tons more. Yes, we have |
14187 @subsubsection September Gnus | 11568 feeping creaturism in full effect, but nothing too gratuitous, I would |
14188 | 11569 hope. |
14189 New features in Gnus 5.2/5.3: | |
14190 | |
14191 @itemize @bullet | |
14192 | |
14193 @item | |
14194 A new message composition mode is used. All old customization variables | |
14195 for @code{mail-mode}, @code{rnews-reply-mode} and @code{gnus-msg} are | |
14196 now obsolete. | |
14197 | |
14198 @item | |
14199 Gnus is now able to generate @dfn{sparse} threads---threads where | |
14200 missing articles are represented by empty nodes (@pxref{Customizing | |
14201 Threading}). | |
14202 | |
14203 @lisp | |
14204 (setq gnus-build-sparse-threads 'some) | |
14205 @end lisp | |
14206 | |
14207 @item | |
14208 Outgoing articles are stored on a special archive server | |
14209 (@pxref{Archived Messages}). | |
14210 | |
14211 @item | |
14212 Partial thread regeneration now happens when articles are | |
14213 referred. | |
14214 | |
14215 @item | |
14216 Gnus can make use of GroupLens predictions (@pxref{GroupLens}). | |
14217 | |
14218 @item | |
14219 Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). | |
14220 | |
14221 @item | |
14222 A @code{trn}-line tree buffer can be displayed (@pxref{Tree Display}). | |
14223 | |
14224 @lisp | |
14225 (setq gnus-use-trees t) | |
14226 @end lisp | |
14227 | |
14228 @item | |
14229 An @code{nn}-like pick-and-read minor mode is available for the summary | |
14230 buffers (@pxref{Pick and Read}). | |
14231 | |
14232 @lisp | |
14233 (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) | |
14234 @end lisp | |
14235 | |
14236 @item | |
14237 In binary groups you can use a special binary minor mode (@pxref{Binary | |
14238 Groups}). | |
14239 | |
14240 @item | |
14241 Groups can be grouped in a folding topic hierarchy (@pxref{Group | |
14242 Topics}). | |
14243 | |
14244 @lisp | |
14245 (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) | |
14246 @end lisp | |
14247 | |
14248 @item | |
14249 Gnus can re-send and bounce mail (@pxref{Summary Mail Commands}). | |
14250 | |
14251 @item | |
14252 Groups can now have a score, and bubbling based on entry frequency | |
14253 is possible (@pxref{Group Score}). | |
14254 | |
14255 @lisp | |
14256 (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) | |
14257 @end lisp | |
14258 | |
14259 @item | |
14260 Groups can be process-marked, and commands can be performed on | |
14261 groups of groups (@pxref{Marking Groups}). | |
14262 | |
14263 @item | |
14264 Caching is possible in virtual groups. | |
14265 | |
14266 @item | |
14267 @code{nndoc} now understands all kinds of digests, mail boxes, rnews | |
14268 news batches, ClariNet briefs collections, and just about everything | |
14269 else (@pxref{Document Groups}). | |
14270 | |
14271 @item | |
14272 Gnus has a new backend (@code{nnsoup}) to create/read SOUP packets | |
14273 (@pxref{SOUP}). | |
14274 | |
14275 @item | |
14276 The Gnus cache is much faster. | |
14277 | |
14278 @item | |
14279 Groups can be sorted according to many criteria (@pxref{Sorting | |
14280 Groups}). | |
14281 | |
14282 @item | |
14283 New group parameters have been introduced to set list-address and | |
14284 expiry times (@pxref{Group Parameters}). | |
14285 | |
14286 @item | |
14287 All formatting specs allow specifying faces to be used | |
14288 (@pxref{Formatting Fonts}). | |
14289 | |
14290 @item | |
14291 There are several more commands for setting/removing/acting on process | |
14292 marked articles on the @kbd{M P} submap (@pxref{Setting Process Marks}). | |
14293 | |
14294 @item | |
14295 The summary buffer can be limited to show parts of the available | |
14296 articles based on a wide range of criteria. These commands have been | |
14297 bound to keys on the @kbd{/} submap (@pxref{Limiting}). | |
14298 | |
14299 @item | |
14300 Articles can be made persistent with the @kbd{*} command | |
14301 (@pxref{Persistent Articles}). | |
14302 | |
14303 @item | |
14304 All functions for hiding article elements are now toggles. | |
14305 | |
14306 @item | |
14307 Article headers can be buttonized (@pxref{Article Washing}). | |
14308 | |
14309 @lisp | |
14310 (add-hook 'gnus-article-display-hook | |
14311 'gnus-article-add-buttons-to-head) | |
14312 @end lisp | |
14313 | |
14314 @item | |
14315 All mail backends support fetching articles by @code{Message-ID}. | |
14316 | |
14317 @item | |
14318 Duplicate mail can now be treated properly (@pxref{Duplicates}). | |
14319 | |
14320 @item | |
14321 All summary mode commands are available directly from the article | |
14322 buffer (@pxref{Article Keymap}). | |
14323 | |
14324 @item | |
14325 Frames can be part of @code{gnus-buffer-configuration} (@pxref{Windows | |
14326 Configuration}). | |
14327 | |
14328 @item | |
14329 Mail can be re-scanned by a daemonic process (@pxref{Daemons}). | |
14330 | |
14331 @item | |
14332 Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}). | |
14333 | |
14334 @lisp | |
14335 (setq gnus-use-nocem t) | |
14336 @end lisp | |
14337 | |
14338 @item | |
14339 Groups can be made permanently visible (@pxref{Listing Groups}). | |
14340 | |
14341 @lisp | |
14342 (setq gnus-permanently-visible-groups "^nnml:") | |
14343 @end lisp | |
14344 | |
14345 @item | |
14346 Many new hooks have been introduced to make customizing easier. | |
14347 | |
14348 @item | |
14349 Gnus respects the @code{Mail-Copies-To} header. | |
14350 | |
14351 @item | |
14352 Threads can be gathered by looking at the @code{References} header | |
14353 (@pxref{Customizing Threading}). | |
14354 | |
14355 @lisp | |
14356 (setq gnus-summary-thread-gathering-function | |
14357 'gnus-gather-threads-by-references) | |
14358 @end lisp | |
14359 | |
14360 @item | |
14361 Read articles can be stored in a special backlog buffer to avoid | |
14362 refetching (@pxref{Article Backlog}). | |
14363 | |
14364 @lisp | |
14365 (setq gnus-keep-backlog 50) | |
14366 @end lisp | |
14367 | |
14368 @item | |
14369 A clean copy of the current article is always stored in a separate | |
14370 buffer to allow easier treatment. | |
14371 | |
14372 @item | |
14373 Gnus can suggest where to save articles (@pxref{Saving Articles}). | |
14374 | |
14375 @item | |
14376 Gnus doesn't have to do as much prompting when saving (@pxref{Saving | |
14377 Articles}). | |
14378 | |
14379 @lisp | |
14380 (setq gnus-prompt-before-saving t) | |
14381 @end lisp | |
14382 | |
14383 @item | |
14384 @code{gnus-uu} can view decoded files asynchronously while fetching | |
14385 articles (@pxref{Other Decode Variables}). | |
14386 | |
14387 @lisp | |
14388 (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view) | |
14389 @end lisp | |
14390 | |
14391 @item | |
14392 Filling in the article buffer now works properly on cited text | |
14393 (@pxref{Article Washing}). | |
14394 | |
14395 @item | |
14396 Hiding cited text adds buttons to toggle hiding, and how much | |
14397 cited text to hide is now customizable (@pxref{Article Hiding}). | |
14398 | |
14399 @lisp | |
14400 (setq gnus-cited-lines-visible 2) | |
14401 @end lisp | |
14402 | |
14403 @item | |
14404 Boring headers can be hidden (@pxref{Article Hiding}). | |
14405 | |
14406 @lisp | |
14407 (add-hook 'gnus-article-display-hook | |
14408 'gnus-article-hide-boring-headers t) | |
14409 @end lisp | |
14410 | |
14411 @item | |
14412 Default scoring values can now be set from the menu bar. | |
14413 | |
14414 @item | |
14415 Further syntax checking of outgoing articles have been added. | |
14416 | |
14417 @end itemize | |
14418 | |
14419 | |
14420 @node Red Gnus | |
14421 @subsubsection Red Gnus | |
14422 | |
14423 New features in Gnus 5.4/5.5: | |
14424 | |
14425 @itemize @bullet | |
14426 | |
14427 @item | |
14428 @file{nntp.el} has been totally rewritten in an asynchronous fashion. | |
14429 | |
14430 @item | |
14431 Article prefetching functionality has been moved up into | |
14432 Gnus (@pxref{Asynchronous Fetching}). | |
14433 | |
14434 @item | |
14435 Scoring can now be performed with logical operators like @code{and}, | |
14436 @code{or}, @code{not}, and parent redirection (@pxref{Advanced | |
14437 Scoring}). | |
14438 | |
14439 @item | |
14440 Article washing status can be displayed in the | |
14441 article mode line (@pxref{Misc Article}). | |
14442 | |
14443 @item | |
14444 @file{gnus.el} has been split into many smaller files. | |
14445 | |
14446 @item | |
14447 Suppression of duplicate articles based on Message-ID can be done | |
14448 (@pxref{Duplicate Suppression}). | |
14449 | |
14450 @lisp | |
14451 (setq gnus-suppress-duplicates t) | |
14452 @end lisp | |
14453 | |
14454 @item | |
14455 New variables for specifying what score and adapt files are to be | |
14456 considered home score and adapt files (@pxref{Home Score File}). | |
14457 | |
14458 @item | |
14459 @code{nndoc} was rewritten to be easily extendable (@pxref{Document | |
14460 Server Internals}). | |
14461 | |
14462 @item | |
14463 Groups can inherit group parameters from parent topics (@pxref{Topic | |
14464 Parameters}). | |
14465 | |
14466 @item | |
14467 Article editing has been revamped and is now actually usable. | |
14468 | |
14469 @item | |
14470 Signatures can be recognized in more intelligent fashions | |
14471 (@pxref{Article Signature}). | |
14472 | |
14473 @item | |
14474 Summary pick mode has been made to look more @code{nn}-like. Line | |
14475 numbers are displayed and the @kbd{.} command can be used to pick | |
14476 articles (@code{Pick and Read}). | |
14477 | |
14478 @item | |
14479 Commands for moving the @file{.newsrc.eld} from one server to | |
14480 another have been added (@pxref{Changing Servers}). | |
14481 | |
14482 @item | |
14483 A way to specify that ``uninteresting'' fields be suppressed when | |
14484 generating lines in buffers (@pxref{Advanced Formatting}). | |
14485 | |
14486 @item | |
14487 Several commands in the group buffer can be undone with @kbd{M-C-_} | |
14488 (@pxref{Undo}). | |
14489 | |
14490 @item | |
14491 Scoring can be done on words using the new score type @code{w} | |
14492 (@pxref{Score File Format}). | |
14493 | |
14494 @item | |
14495 Adaptive scoring can be done on a Subject word-by-word basis | |
14496 (@pxref{Adaptive Scoring}). | |
14497 | |
14498 @lisp | |
14499 (setq gnus-use-adaptive-scoring '(word)) | |
14500 @end lisp | |
14501 | |
14502 @item | |
14503 Scores can be decayed (@pxref{Score Decays}). | |
14504 | |
14505 @lisp | |
14506 (setq gnus-decay-scores t) | |
14507 @end lisp | |
14508 | |
14509 @item | |
14510 Scoring can be performed using a regexp on the Date header. The Date is | |
14511 normalized to compact ISO 8601 format first (@pxref{Score File Format}). | |
14512 | |
14513 @item | |
14514 A new command has been added to remove all data on articles from | |
14515 the native server (@pxref{Changing Servers}). | |
14516 | |
14517 @item | |
14518 A new command for reading collections of documents | |
14519 (@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{M-C-d} | |
14520 (@pxref{Really Various Summary Commands}). | |
14521 | |
14522 @item | |
14523 Process mark sets can be pushed and popped (@pxref{Setting Process | |
14524 Marks}). | |
14525 | |
14526 @item | |
14527 A new mail-to-news backend makes it possible to post even when the NNTP | |
14528 server doesn't allow posting (@pxref{Mail-To-News Gateways}). | |
14529 | |
14530 @item | |
14531 A new backend for reading searches from Web search engines | |
14532 (@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added | |
14533 (@pxref{Web Searches}). | |
14534 | |
14535 @item | |
14536 Groups inside topics can now be sorted using the standard sorting | |
14537 functions, and each topic can be sorted independently (@pxref{Topic | |
14538 Sorting}). | |
14539 | |
14540 @item | |
14541 Subsets of the groups can be sorted independently (@code{Sorting | |
14542 Groups}). | |
14543 | |
14544 @item | |
14545 Cached articles can be pulled into the groups (@pxref{Summary Generation | |
14546 Commands}). | |
14547 | |
14548 @item | |
14549 Score files are now applied in a more reliable order (@pxref{Score | |
14550 Variables}). | |
14551 | |
14552 @item | |
14553 Reports on where mail messages end up can be generated (@pxref{Splitting | |
14554 Mail}). | |
14555 | |
14556 @item | |
14557 More hooks and functions have been added to remove junk from incoming | |
14558 mail before saving the mail (@pxref{Washing Mail}). | |
14559 | |
14560 @item | |
14561 Emphasized text can be properly fontisized: | |
14562 | |
14563 @lisp | |
14564 (add-hook 'gnus-article-display-hook 'gnus-article-emphasize) | |
14565 @end lisp | |
14566 | |
14567 @end itemize | |
14568 | 11570 |
14569 | 11571 |
14570 @node Newest Features | 11572 @node Newest Features |
14571 @subsection Newest Features | 11573 @subsection Newest Features |
14572 @cindex todo | 11574 @cindex todo |
14578 | 11580 |
14579 @itemize @bullet | 11581 @itemize @bullet |
14580 @item | 11582 @item |
14581 Native @sc{mime} support is something that should be done. | 11583 Native @sc{mime} support is something that should be done. |
14582 @item | 11584 @item |
11585 A better and simpler method for specifying mail composing methods. | |
11586 @item | |
11587 Allow posting through mail-to-news gateways. | |
11588 @item | |
14583 Really do unbinhexing. | 11589 Really do unbinhexing. |
14584 @end itemize | 11590 @end itemize |
14585 | 11591 |
14586 And much, much, much more. There is more to come than has already been | 11592 And much, much, much more. There is more to come than has already been |
14587 implemented. (But that's always true, isn't it?) | 11593 implemented. (But that's always true, isn't it?) |
14588 | 11594 |
14589 @file{<URL:http://www.ifi.uio.no/~larsi/rgnus/todo>} is where the actual | 11595 @code{<URL:http://www.ifi.uio.no/~larsi/sgnus/todo>} is where the actual |
14590 up-to-the-second todo list is located, so if you're really curious, you | 11596 up-to-the-second todo list is located, so if you're really curious, you |
14591 could point your Web browser over that-a-way. | 11597 could point your Web browser over that-a-way. |
14592 | |
14593 @iftex | |
14594 | |
14595 @node The Manual | |
14596 @section The Manual | |
14597 @cindex colophon | |
14598 @cindex manual | |
14599 | |
14600 This manual was generated from a TeXinfo file and then run through | |
14601 either @code{texi2dvi} | |
14602 @iflatex | |
14603 or my own home-brewed TeXinfo to \LaTeX\ transformer, | |
14604 and then run through @code{latex} and @code{dvips} | |
14605 @end iflatex | |
14606 to get what you hold in your hands now. | |
14607 | |
14608 The following conventions have been used: | |
14609 | |
14610 @enumerate | |
14611 | |
14612 @item | |
14613 This is a @samp{string} | |
14614 | |
14615 @item | |
14616 This is a @kbd{keystroke} | |
14617 | |
14618 @item | |
14619 This is a @file{file} | |
14620 | |
14621 @item | |
14622 This is a @code{symbol} | |
14623 | |
14624 @end enumerate | |
14625 | |
14626 So if I were to say ``set @code{flargnoze} to @samp{yes}'', that would | |
14627 mean: | |
14628 | |
14629 @lisp | |
14630 (setq flargnoze "yes") | |
14631 @end lisp | |
14632 | |
14633 If I say ``set @code{flumphel} to @code{yes}'', that would mean: | |
14634 | |
14635 @lisp | |
14636 (setq flumphel 'yes) | |
14637 @end lisp | |
14638 | |
14639 @samp{yes} and @code{yes} are two @emph{very} different things---don't | |
14640 ever get them confused. | |
14641 | |
14642 @iflatex | |
14643 @c @head | |
14644 Of course, everything in this manual is of vital interest, so you should | |
14645 read it all. Several times. However, if you feel like skimming the | |
14646 manual, look for that gnu head you should see in the margin over | |
14647 there---it means that what's being discussed is of more importance than | |
14648 the rest of the stuff. (On the other hand, if everything is infinitely | |
14649 important, how can anything be more important than that? Just one more | |
14650 of the mysteries of this world, I guess.) | |
14651 @end iflatex | |
14652 | |
14653 @end iftex | |
14654 | 11598 |
14655 | 11599 |
14656 @node Terminology | 11600 @node Terminology |
14657 @section Terminology | 11601 @section Terminology |
14658 | 11602 |
14704 Secondary backends are somewhere half-way between being native and being | 11648 Secondary backends are somewhere half-way between being native and being |
14705 foreign, but they mostly act like they are native. | 11649 foreign, but they mostly act like they are native. |
14706 | 11650 |
14707 @item article | 11651 @item article |
14708 @cindex article | 11652 @cindex article |
14709 A message that has been posted as news. | 11653 A nessage that has been posted as news. |
14710 | 11654 |
14711 @item mail message | 11655 @item mail message |
14712 @cindex mail message | 11656 @cindex mail message |
14713 A message that has been mailed. | 11657 A message that has been mailed. |
14714 | 11658 |
14767 is rather large, as you might surmise. | 11711 is rather large, as you might surmise. |
14768 | 11712 |
14769 @item bogus groups | 11713 @item bogus groups |
14770 @cindex bogus groups | 11714 @cindex bogus groups |
14771 A group that exists in the @file{.newsrc} file, but isn't known to the | 11715 A group that exists in the @file{.newsrc} file, but isn't known to the |
14772 server (i.e., it isn't in the active file), is a @emph{bogus group}. | 11716 server (i. e., it isn't in the active file), is a @emph{bogus group}. |
14773 This means that the group probably doesn't exist (any more). | 11717 This means that the group probably doesn't exist (any more). |
14774 | 11718 |
14775 @item server | 11719 @item server |
14776 @cindex server | 11720 @cindex server |
14777 A machine than one can connect to and get news (or mail) from. | 11721 A machine than one can connect to and get news (or mail) from. |
14782 server parameters. | 11726 server parameters. |
14783 | 11727 |
14784 @item virtual server | 11728 @item virtual server |
14785 @cindex virtual server | 11729 @cindex virtual server |
14786 A named select method. Since a select methods defines all there is to | 11730 A named select method. Since a select methods defines all there is to |
14787 know about connecting to a (physical) server, taking the things as a | 11731 know about connecting to a (physical) server, taking the who things as a |
14788 whole is a virtual server. | 11732 whole is a virtual server. |
14789 | |
14790 @item washing | |
14791 @cindex washing | |
14792 Taking a buffer and running it through a filter of some sort. The | |
14793 result will (more often than not) be cleaner and more pleasing than the | |
14794 original. | |
14795 | |
14796 @item ephemeral groups | |
14797 @cindex ephemeral groups | |
14798 Most groups store data on what articles you have read. @dfn{Ephemeral} | |
14799 groups are groups that will have no data stored---when you exit the | |
14800 group, it'll disappear into the aether. | |
14801 | |
14802 @item solid groups | |
14803 @cindex solid groups | |
14804 This is the opposite of ephemeral groups. All groups listed in the | |
14805 group buffer are solid groups. | |
14806 | |
14807 @item sparse articles | |
14808 @cindex sparse articles | |
14809 These are article placeholders shown in the summary buffer when | |
14810 @code{gnus-build-sparse-threads} has been switched on. | |
14811 | 11733 |
14812 @end table | 11734 @end table |
14813 | 11735 |
14814 | 11736 |
14815 @node Customization | 11737 @node Customization |
14838 @table @code | 11760 @table @code |
14839 | 11761 |
14840 @item gnus-read-active-file | 11762 @item gnus-read-active-file |
14841 Set this to @code{nil}, which will inhibit Gnus from requesting the | 11763 Set this to @code{nil}, which will inhibit Gnus from requesting the |
14842 entire active file from the server. This file is often v. large. You | 11764 entire active file from the server. This file is often v. large. You |
14843 also have to set @code{gnus-check-new-newsgroups} and | 11765 also have to set @code{gnus-check-new-news} and |
14844 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus | 11766 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus |
14845 doesn't suddenly decide to fetch the active file anyway. | 11767 doesn't suddenly decide to fetch the active file anyway. |
14846 | 11768 |
14847 @item gnus-nov-is-evil | 11769 @item gnus-nov-is-evil |
14848 This one has to be @code{nil}. If not, grabbing article headers from | 11770 This one has to be @code{nil}. If not, grabbing article headers from |
14964 flee}, you have some old @file{.el} files lying around. Delete these. | 11886 flee}, you have some old @file{.el} files lying around. Delete these. |
14965 | 11887 |
14966 @item | 11888 @item |
14967 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a | 11889 Read the help group (@kbd{G h} in the group buffer) for a FAQ and a |
14968 how-to. | 11890 how-to. |
14969 | |
14970 @item | |
14971 @vindex max-lisp-eval-depth | |
14972 Gnus works on many recursive structures, and in some extreme (and very | |
14973 rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at | |
14974 you. If this happens to you, set @code{max-lisp-eval-depth} to 500 or | |
14975 something like that. | |
14976 @end enumerate | 11891 @end enumerate |
14977 | 11892 |
14978 If all else fails, report the problem as a bug. | 11893 If all else fails, report the problem as a bug. |
14979 | 11894 |
14980 @cindex bugs | 11895 @cindex bugs |
15001 mail you and ask for more info, and everything takes more time. | 11916 mail you and ask for more info, and everything takes more time. |
15002 | 11917 |
15003 If the problem you're seeing is very visual, and you can't quite explain | 11918 If the problem you're seeing is very visual, and you can't quite explain |
15004 it, copy the Emacs window to a file (with @code{xwd}, for instance), put | 11919 it, copy the Emacs window to a file (with @code{xwd}, for instance), put |
15005 it somewhere it can be reached, and include the URL of the picture in | 11920 it somewhere it can be reached, and include the URL of the picture in |
15006 the bug report. | 11921 the bug report.a |
15007 | 11922 |
15008 If you just need help, you are better off asking on | 11923 If you just need help, you are better off asking on |
15009 @samp{gnu.emacs.gnus}. I'm not very helpful. | 11924 @samp{gnu.emacs.gnus}. I'm not very helpful. |
15010 | 11925 |
15011 @cindex gnu.emacs.gnus | 11926 @cindex gnu.emacs.gnus |
15013 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. | 11928 You can also ask on the ding mailing list---@samp{ding@@ifi.uio.no}. |
15014 Write to @samp{ding-request@@ifi.uio.no} to subscribe. | 11929 Write to @samp{ding-request@@ifi.uio.no} to subscribe. |
15015 | 11930 |
15016 | 11931 |
15017 @node A Programmers Guide to Gnus | 11932 @node A Programmers Guide to Gnus |
15018 @section A Programmer@'s Guide to Gnus | 11933 @section A Programmer's Guide to Gnus |
15019 | 11934 |
15020 It is my hope that other people will figure out smart stuff that Gnus | 11935 It is my hope that other people will figure out smart stuff that Gnus |
15021 can do, and that other people will write those smart things as well. To | 11936 can do, and that other people will write those smart things as well. To |
15022 facilitate that I thought it would be a good idea to describe the inner | 11937 facilitate that I thought it would be a good idea to describe the inner |
15023 workings of Gnus. And some of the not-so-inner workings, while I'm at | 11938 workings of Gnus. And some of the not-so-inner workings, while I'm at |
15078 always check whether are present before attempting to call. | 11993 always check whether are present before attempting to call. |
15079 | 11994 |
15080 All these functions are expected to return data in the buffer | 11995 All these functions are expected to return data in the buffer |
15081 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat | 11996 @code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat |
15082 unfortunately named, but we'll have to live with it. When I talk about | 11997 unfortunately named, but we'll have to live with it. When I talk about |
15083 @dfn{resulting data}, I always refer to the data in that buffer. When I | 11998 ``resulting data'', I always refer to the data in that buffer. When I |
15084 talk about @dfn{return value}, I talk about the function value returned by | 11999 talk about ``return value'', I talk about the function value returned by |
15085 the function call. Functions that fail should return @code{nil} as the | 12000 the function call. |
15086 return value. | |
15087 | 12001 |
15088 Some backends could be said to be @dfn{server-forming} backends, and | 12002 Some backends could be said to be @dfn{server-forming} backends, and |
15089 some might be said to not be. The latter are backends that generally | 12003 some might be said to not be. The latter are backends that generally |
15090 only operate on one group at a time, and have no concept of ``server'' | 12004 only operate on one group at a time, and have no concept of ``server'' |
15091 -- they have a group, and they deliver info on that group and nothing | 12005 -- they have a group, and they deliver info on that group and nothing |
15097 @cindex @code{nnchoke} | 12011 @cindex @code{nnchoke} |
15098 | 12012 |
15099 @menu | 12013 @menu |
15100 * Required Backend Functions:: Functions that must be implemented. | 12014 * Required Backend Functions:: Functions that must be implemented. |
15101 * Optional Backend Functions:: Functions that need not be implemented. | 12015 * Optional Backend Functions:: Functions that need not be implemented. |
15102 * Error Messaging:: How to get messages and report errors. | |
15103 * Writing New Backends:: Extending old backends. | 12016 * Writing New Backends:: Extending old backends. |
15104 * Hooking New Backends Into Gnus:: What has to be done on the Gnus end. | |
15105 * Mail-like Backends:: Some tips on mail backends. | |
15106 @end menu | 12017 @end menu |
15107 | 12018 |
15108 | 12019 |
15109 @node Required Backend Functions | 12020 @node Required Backend Functions |
15110 @subsubsection Required Backend Functions | 12021 @subsubsection Required Backend Functions |
15244 group and article numbers are when fetching articles by | 12155 group and article numbers are when fetching articles by |
15245 @code{Message-ID}. If this isn't possible, @code{t} should be returned | 12156 @code{Message-ID}. If this isn't possible, @code{t} should be returned |
15246 on successful article retrievement. | 12157 on successful article retrievement. |
15247 | 12158 |
15248 | 12159 |
15249 @item (nnchoke-request-group GROUP &optional SERVER FAST) | 12160 @item (nnchoke-open-group GROUP &optional SERVER) |
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) | |
15250 | 12168 |
15251 Get data on @var{group}. This function also has the side effect of | 12169 Get data on @var{group}. This function also has the side effect of |
15252 making @var{group} the current group. | 12170 making @var{group} the current group. |
15253 | |
15254 If @var{FAST}, don't bother to return useful data, just make @var{group} | |
15255 the current group. | |
15256 | 12171 |
15257 Here's an example of some result data and a definition of the same: | 12172 Here's an example of some result data and a definition of the same: |
15258 | 12173 |
15259 @example | 12174 @example |
15260 211 56 1000 1059 ifi.discussion | 12175 211 56 1000 1059 ifi.discussion |
15261 @end example | 12176 @end example |
15262 | 12177 |
15263 The first number is the status, which should be 211. Next is the | 12178 The first number is the status, which should be @code{211}. Next is the |
15264 total number of articles in the group, the lowest article number, the | 12179 total number of articles in the group, the lowest article number, the |
15265 highest article number, and finally the group name. Note that the total | 12180 highest article number, and finally the group name. Note that the total |
15266 number of articles may be less than one might think while just | 12181 number of articles may be less than one might think while just |
15267 considering the highest and lowest article numbers, but some articles | 12182 considering the highest and lowest article numbers, but some articles |
15268 may have been canceled. Gnus just discards the total-number, so | 12183 may have been canceled. Gnus just discards the total-number, so |
15349 | 12264 |
15350 @item (nnchoke-request-update-info GROUP INFO &optional SERVER) | 12265 @item (nnchoke-request-update-info GROUP INFO &optional SERVER) |
15351 | 12266 |
15352 A Gnus group info (@pxref{Group Info}) is handed to the backend for | 12267 A Gnus group info (@pxref{Group Info}) is handed to the backend for |
15353 alterations. This comes in handy if the backend really carries all the | 12268 alterations. This comes in handy if the backend really carries all the |
15354 information (as is the case with virtual and imap groups). This | 12269 information (as is the case with virtual an imap groups). This function |
15355 function should destructively alter the info to suit its needs, and | 12270 may alter the info in any manner it sees fit, and should return the |
15356 should return the (altered) group info. | 12271 (altered) group info. This function may alter the group info |
12272 destructively, so no copying is needed before boogeying. | |
15357 | 12273 |
15358 There should be no result data from this function. | 12274 There should be no result data from this function. |
15359 | 12275 |
15360 | 12276 |
15361 @item (nnchoke-request-type GROUP &optional ARTICLE) | 12277 @item (nnchoke-request-type GROUP &optional ARTICLE) |
15364 summary buffer, for instance), Gnus has to know whether the article the | 12280 summary buffer, for instance), Gnus has to know whether the article the |
15365 user is following up is news or mail. This function should return | 12281 user is following up is news or mail. This function should return |
15366 @code{news} if @var{article} in @var{group} is news, @code{mail} if it | 12282 @code{news} if @var{article} in @var{group} is news, @code{mail} if it |
15367 is mail and @code{unknown} if the type can't be decided. (The | 12283 is mail and @code{unknown} if the type can't be decided. (The |
15368 @var{article} parameter is necessary in @code{nnvirtual} groups which | 12284 @var{article} parameter is necessary in @code{nnvirtual} groups which |
15369 might very well combine mail groups and news groups.) Both @var{group} | 12285 might very well combine mail groups and news groups.) |
15370 and @var{article} may be @code{nil}. | |
15371 | 12286 |
15372 There should be no result data from this function. | 12287 There should be no result data from this function. |
15373 | 12288 |
15374 | 12289 |
15375 @item (nnchoke-request-update-mark GROUP ARTICLE MARK) | 12290 @item (nnchoke-request-update-mark GROUP ARTICLE MARK) |
15399 would be nice, however, to keep things local if that's practical. | 12314 would be nice, however, to keep things local if that's practical. |
15400 | 12315 |
15401 There should be no result data from this function. | 12316 There should be no result data from this function. |
15402 | 12317 |
15403 | 12318 |
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 | |
15404 @item (nnchoke-request-group-description GROUP &optional SERVER) | 12332 @item (nnchoke-request-group-description GROUP &optional SERVER) |
15405 | 12333 |
15406 The result data from this function should be a description of | 12334 The result data from this function should be a description of |
15407 @var{group}. | 12335 @var{group}. |
15408 | 12336 |
15511 There should be no data returned. | 12439 There should be no data returned. |
15512 | 12440 |
15513 @end table | 12441 @end table |
15514 | 12442 |
15515 | 12443 |
15516 @node Error Messaging | |
15517 @subsubsection Error Messaging | |
15518 | |
15519 @findex nnheader-report | |
15520 @findex nnheader-get-report | |
15521 The backends should use the function @code{nnheader-report} to report | |
15522 error conditions---they should not raise errors when they aren't able to | |
15523 perform a request. The first argument to this function is the backend | |
15524 symbol, and the rest are interpreted as arguments to @code{format} if | |
15525 there are many of them, or just a string if there is one of them. | |
15526 This function always returns @code{nil}. | |
15527 | |
15528 @lisp | |
15529 (nnheader-report 'nnchoke "You did something totally bogus") | |
15530 | |
15531 (nnheader-report 'nnchoke "Could not request group %s" group) | |
15532 @end lisp | |
15533 | |
15534 Gnus, in turn, will call @code{nnheader-get-report} when it gets a | |
15535 @code{nil} back from a server, and this function returns the most | |
15536 recently reported message for the backend in question. This function | |
15537 takes one argument---the server symbol. | |
15538 | |
15539 Internally, these function access @var{backend}@code{-status-string}, so | |
15540 the @code{nnchoke} backend will have its error message stored in | |
15541 @code{nnchoke-status-string}. | |
15542 | |
15543 | |
15544 @node Writing New Backends | 12444 @node Writing New Backends |
15545 @subsubsection Writing New Backends | 12445 @subsubsection Writing New Backends |
15546 | 12446 |
15547 Many backends are quite similar. @code{nnml} is just like | 12447 The various backends share many similarities. @code{nnml} is just like |
15548 @code{nnspool}, but it allows you to edit the articles on the server. | 12448 @code{nnspool}, but it allows you to edit the articles on the server. |
15549 @code{nnmh} is just like @code{nnml}, but it doesn't use an active file, | 12449 @code{nnmh} is just like @code{nnml}, but it doesn't use an active file, |
15550 and it doesn't maintain overview databases. @code{nndir} is just like | 12450 and it doesn't maintain overview databases. @code{nndir} is just like |
15551 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow | 12451 @code{nnml}, but it has no concept of ``groups'', and it doesn't allow |
15552 editing articles. | 12452 editing articles. |
15680 | 12580 |
15681 (nnoo-define-basics nndir) | 12581 (nnoo-define-basics nndir) |
15682 | 12582 |
15683 (deffoo nndir-open-server (server &optional defs) | 12583 (deffoo nndir-open-server (server &optional defs) |
15684 (setq nndir-directory | 12584 (setq nndir-directory |
15685 (or (cadr (assq 'nndir-directory defs)) | 12585 (or (cadr (assq 'nndir-directory defs)) |
15686 server)) | 12586 server)) |
15687 (unless (assq 'nndir-directory defs) | 12587 (unless (assq 'nndir-directory defs) |
15688 (push `(nndir-directory ,server) defs)) | 12588 (push `(nndir-directory ,server) defs)) |
15689 (push `(nndir-current-group | 12589 (push `(nndir-current-group |
15690 ,(file-name-nondirectory (directory-file-name nndir-directory))) | 12590 ,(file-name-nondirectory (directory-file-name nndir-directory))) |
15691 defs) | 12591 defs) |
15692 (push `(nndir-top-directory | 12592 (push `(nndir-top-directory |
15693 ,(file-name-directory (directory-file-name nndir-directory))) | 12593 ,(file-name-directory (directory-file-name nndir-directory))) |
15694 defs) | 12594 defs) |
15695 (nnoo-change-server 'nndir server defs)) | 12595 (nnoo-change-server 'nndir server defs)) |
15696 | 12596 |
15697 (nnoo-map-functions nndir | 12597 (nnoo-map-functions nndir |
15698 (nnml-retrieve-headers 0 nndir-current-group 0 0) | 12598 (nnml-retrieve-headers 0 nndir-current-group 0 0) |
15699 (nnmh-request-article 0 nndir-current-group 0 0) | 12599 (nnmh-request-article 0 nndir-current-group 0 0) |
15707 nnmh-request-newgroups)) | 12607 nnmh-request-newgroups)) |
15708 | 12608 |
15709 (provide 'nndir) | 12609 (provide 'nndir) |
15710 @end lisp | 12610 @end lisp |
15711 | 12611 |
15712 | |
15713 @node Hooking New Backends Into Gnus | |
15714 @subsubsection Hooking New Backends Into Gnus | |
15715 | |
15716 @vindex gnus-valid-select-methods | |
15717 Having Gnus start using your new backend is rather easy---you just | |
15718 declare it with the @code{gnus-declare-backend} functions. This will | |
15719 enter the backend into the @code{gnus-valid-select-methods} variable. | |
15720 | |
15721 @code{gnus-declare-backend} takes two parameters---the backend name and | |
15722 an arbitrary number of @dfn{abilities}. | |
15723 | |
15724 Here's an example: | |
15725 | |
15726 @lisp | |
15727 (gnus-declare-backend "nnchoke" 'mail 'respool 'address) | |
15728 @end lisp | |
15729 | |
15730 The abilities can be: | |
15731 | |
15732 @table @code | |
15733 @item mail | |
15734 This is a mailish backend---followups should (probably) go via mail. | |
15735 @item post | |
15736 This is a newsish backend---followups should (probably) go via news. | |
15737 @item post-mail | |
15738 This backend supports both mail and news. | |
15739 @item none | |
15740 This is neither a post or mail backend---it's something completely | |
15741 different. | |
15742 @item respool | |
15743 It supports respooling---or rather, it is able to modify its source | |
15744 articles and groups. | |
15745 @item address | |
15746 The name of the server should be in the virtual server name. This is | |
15747 true for almost all backends. | |
15748 @item prompt-address | |
15749 The user should be prompted for an address when doing commands like | |
15750 @kbd{B} in the group buffer. This is true for backends like | |
15751 @code{nntp}, but not @code{nnmbox}, for instance. | |
15752 @end table | |
15753 | |
15754 | |
15755 @node Mail-like Backends | |
15756 @subsubsection Mail-like Backends | |
15757 | |
15758 One of the things that separate the mail backends from the rest of the | |
15759 backends is the heavy dependence by the mail backends on common | |
15760 functions in @file{nnmail.el}. For instance, here's the definition of | |
15761 @code{nnml-request-scan}: | |
15762 | |
15763 @lisp | |
15764 (deffoo nnml-request-scan (&optional group server) | |
15765 (setq nnml-article-file-alist nil) | |
15766 (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group)) | |
15767 @end lisp | |
15768 | |
15769 It simply just calls @code{nnmail-get-new-mail} will a few parameters, | |
15770 and @code{nnmail} takes care of all the moving and splitting of the | |
15771 mail. | |
15772 | |
15773 This function takes four parameters. | |
15774 | |
15775 @table @var | |
15776 @item method | |
15777 This should be a symbol to designate which backend is responsible for | |
15778 the call. | |
15779 | |
15780 @item exit-function | |
15781 This function should be called after the splitting has been performed. | |
15782 | |
15783 @item temp-directory | |
15784 Where the temporary files should be stored. | |
15785 | |
15786 @item group | |
15787 This optional argument should be a group name if the splitting is to be | |
15788 performed for one group only. | |
15789 @end table | |
15790 | |
15791 @code{nnmail-get-new-mail} will call @var{backend}@code{-save-mail} to | |
15792 save each article. @var{backend}@code{-active-number} will be called to | |
15793 find the article number assigned to this article. | |
15794 | |
15795 The function also uses the following variables: | |
15796 @var{backend}@code{-get-new-mail} (to see whether to get new mail for | |
15797 this backend); and @var{backend}@code{-group-alist} and | |
15798 @var{backend}@code{-active-file} to generate the new active file. | |
15799 @var{backend}@code{-group-alist} should be a group-active alist, like | |
15800 this: | |
15801 | |
15802 @example | |
15803 (("a-group" (1 . 10)) | |
15804 ("some-group" (34 . 39))) | |
15805 @end example | |
15806 | 12612 |
15807 | 12613 |
15808 @node Score File Syntax | 12614 @node Score File Syntax |
15809 @subsection Score File Syntax | 12615 @subsection Score File Syntax |
15810 | 12616 |
15888 corresponds to the @sc{nov} format in a mysterious fashion. One could | 12694 corresponds to the @sc{nov} format in a mysterious fashion. One could |
15889 almost suspect that the author looked at the @sc{nov} specification and | 12695 almost suspect that the author looked at the @sc{nov} specification and |
15890 just shamelessly @emph{stole} the entire thing, and one would be right. | 12696 just shamelessly @emph{stole} the entire thing, and one would be right. |
15891 | 12697 |
15892 @dfn{Header} is a severely overloaded term. ``Header'' is used in | 12698 @dfn{Header} is a severely overloaded term. ``Header'' is used in |
15893 RFC1036 to talk about lines in the head of an article (e.g., | 12699 RFC1036 to talk about lines in the head of an article (eg., |
15894 @code{From}). It is used by many people as a synonym for | 12700 @code{From}). It is used by many people as a synonym for |
15895 ``head''---``the header and the body''. (That should be avoided, in my | 12701 ``head''---``the header and the body''. (That should be avoided, in my |
15896 opinion.) And Gnus uses a format internally that it calls ``header'', | 12702 opinion.) And Gnus uses a format internally that it calls ``header'', |
15897 which is what I'm talking about here. This is a 9-element vector, | 12703 which is what I'm talking about here. This is a 9-element vector, |
15898 basically, with each header (ouch) having one slot. | 12704 basically, with each header (ouch) having one slot. |
15913 @sc{gnus} introduced a concept that I found so useful that I've started | 12719 @sc{gnus} introduced a concept that I found so useful that I've started |
15914 using it a lot and have elaborated on it greatly. | 12720 using it a lot and have elaborated on it greatly. |
15915 | 12721 |
15916 The question is simple: If you have a large amount of objects that are | 12722 The question is simple: If you have a large amount of objects that are |
15917 identified by numbers (say, articles, to take a @emph{wild} example) | 12723 identified by numbers (say, articles, to take a @emph{wild} example) |
15918 that you want to qualify as being ``included'', a normal sequence isn't | 12724 that you want to callify as being ``included'', a normal sequence isn't |
15919 very useful. (A 200,000 length sequence is a bit long-winded.) | 12725 very useful. (A 200,000 length sequence is a bit long-winded.) |
15920 | 12726 |
15921 The solution is as simple as the question: You just collapse the | 12727 The solution is as simple as the question: You just collapse the |
15922 sequence. | 12728 sequence. |
15923 | 12729 |
16004 ((tick (15 . 19)) (replied 3 6 (19 . 3))) | 12810 ((tick (15 . 19)) (replied 3 6 (19 . 3))) |
16005 (nnml "") | 12811 (nnml "") |
16006 (auto-expire (to-address "ding@@ifi.uio.no"))) | 12812 (auto-expire (to-address "ding@@ifi.uio.no"))) |
16007 @end example | 12813 @end example |
16008 | 12814 |
16009 The first element is the @dfn{group name}---as Gnus knows the group, | 12815 The first element is the group name as Gnus knows the group; the second |
16010 anyway. The second element is the @dfn{subscription level}, which | 12816 is the group level; the third is the read articles in range format; the |
16011 normally is a small integer. The third element is a list of ranges of | 12817 fourth is a list of article marks lists; the fifth is the select method; |
16012 read articles. The fourth element is a list of lists of article marks | 12818 and the sixth contains the group parameters. |
16013 of various kinds. The fifth element is the select method (or virtual | |
16014 server, if you like). The sixth element is a list of @dfn{group | |
16015 parameters}, which is what this section is about. | |
16016 | |
16017 Any of the last three elements may be missing if they are not required. | |
16018 In fact, the vast majority of groups will normally only have the first | |
16019 three elements, which saves quite a lot of cons cells. | |
16020 | 12819 |
16021 Here's a BNF definition of the group info format: | 12820 Here's a BNF definition of the group info format: |
16022 | 12821 |
16023 @example | 12822 @example |
16024 info = "(" group space level space read | 12823 info = "(" group space level space read |