aboutsummaryrefslogtreecommitdiffstats
path: root/doc/misc
diff options
context:
space:
mode:
authorMiles Bader2007-10-28 09:18:39 +0000
committerMiles Bader2007-10-28 09:18:39 +0000
commit01c52d3165ffec363014bd9033ea2c317d32d6d6 (patch)
tree5d90be562d45a88f172483b9a33ab4ada197d772 /doc/misc
parentccae01a639d69bc215e4af2835131cda3141e498 (diff)
downloademacs-01c52d3165ffec363014bd9033ea2c317d32d6d6.tar.gz
emacs-01c52d3165ffec363014bd9033ea2c317d32d6d6.zip
Update Gnus to No Gnus 0.7 from the Gnus CVS trunk
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-911
Diffstat (limited to 'doc/misc')
-rw-r--r--doc/misc/ChangeLog453
-rw-r--r--doc/misc/emacs-mime.texi55
-rw-r--r--doc/misc/gnus-coding.texi381
-rw-r--r--doc/misc/gnus-faq.texi24
-rw-r--r--doc/misc/gnus-news.el121
-rw-r--r--doc/misc/gnus-news.texi264
-rw-r--r--doc/misc/gnus.texi1513
-rw-r--r--doc/misc/message.texi112
-rw-r--r--doc/misc/pgg.texi14
-rw-r--r--doc/misc/sasl.texi270
-rw-r--r--doc/misc/sieve.texi6
11 files changed, 2708 insertions, 505 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 6c7b4b60715..f3d8feaf251 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,456 @@
12007-10-28 Miles Bader <miles@gnu.org>
2
3 * gnus-news.texi, gnus-coding.texi, sasl.texi: New files.
4
52007-10-28 Emanuele Giaquinta <e.giaquinta@glauco.it> (tiny change)
6
7 * gnus-faq.texi ([5.12]): Remove reference to discontinued service.
8
92007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
10
11 * gnus.texi (Sorting the Summary Buffer): Remove
12 gnus-article-sort-by-date-reverse.
13
142007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
15
16 * gnus.texi (Non-ASCII Group Names): New node.
17 (Misc Group Stuff): Move gnus-group-name-charset-method-alist and
18 gnus-group-name-charset-group-alist to Non-ASCII Group Names node.
19
202007-10-28 Micha,Ak(Bl Cadilhac <michael@cadilhac.name>
21
22 * gnus.texi (Mail Source Specifiers, IMAP): Add a notice on the need to
23 clean the output of the program `imap-shell-program'.
24
252007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
26
27 * gnus.texi (IMAP): Mention nnimap-logout-timeout.
28
292007-10-28 Tassilo Horn <tassilo@member.fsf.org>
30
31 * gnus.texi (Sticky Articles): Documentation for sticky article
32 buffers.
33
342007-10-28 Micha,Ak(Bl Cadilhac <michael@cadilhac.name>
35
36 * gnus.texi (RSS): Document nnrss-ignore-article-fields.
37
382007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
39
40 * gnus.texi (Various Various): Mention gnus-add-timestamp-to-message.
41
422007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
43
44 * gnus.texi (Archived Messages): Document
45 gnus-update-message-archive-method.
46
472007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
48
49 * gnus.texi (Limiting): Document gnus-summary-limit-to-address.
50
512007-10-28 Micha,Ak(Bl Cadilhac <michael@cadilhac.name>
52
53 * gnus.texi (Group Maneuvering): Document
54 `gnus-summary-next-group-on-exit'.
55
562007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
57
58 * gnus.texi (Really Various Summary Commands): Mention
59 gnus-auto-select-on-ephemeral-exit.
60
612007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
62
63 * gnus.texi, message.texi: Bump version number.
64
652007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
66
67 * gnus.texi (Group Line Specification, Misc Group Stuff)
68 (Server Commands): Parenthesize @pxref{Mail Spool}.
69
702007-10-28 Didier Verna <didier@xemacs.org>
71
72 New user option: message-signature-directory.
73 * message.texi (Insertion Variables): Document it.
74 * gnus.texi (Posting Styles): Ditto.
75
762007-10-28 Didier Verna <didier@xemacs.org>
77
78 * gnus.texi (Group Line Specification):
79 * gnus.texi (Misc Group Stuff):
80 * gnus.texi (Server Commands): Document the group compaction feature.
81
822007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
83
84 * gnus-faq.texi ([5.2]): Adjust for message-fill-column.
85
86 * message.texi (Various Message Variables): Add message-fill-column.
87
882007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
89
90 * gnus.texi: Untabify.
91
922007-10-28 Didier Verna <didier@xemacs.org>
93
94 * gnus.texi (Group Parameters): Document the posting-style merging
95 process in topic-mode.
96
972007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
98
99 * gnus.texi (Scoring On Other Headers): Add gnus-inhibit-slow-scoring.
100
1012007-10-28 Romain Francoise <romain@orebokech.com>
102
103 * gnus.texi (Mail Spool): Fix typo.
104 Update copyright.
105
1062007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
107
108 * gnus.texi (Limiting): Add gnus-summary-limit-to-singletons.
109
1102007-10-28 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
111
112 * gnus.texi (Summary Generation Commands):
113 Add gnus-summary-insert-ticked-articles.
114
1152007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
116
117 * gnus.texi
118 (SpamAssassin back end): Rename spam-spamassassin-path to
119 spam-spamassassin-program.
120
1212007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
122
123 * gnus.texi (Mail and Post): Add gnus-message-highlight-citation.
124
1252007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
126
127 * gnus.texi (Limiting): Add gnus-summary-limit-to-headers.
128
1292007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
130
131 * message.texi (Mail Headers): Document `opportunistic'.
132
1332007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
134
135 * emacs-mime.texi (Encoding Customization): Explain how to set
136 mm-coding-system-priorities per hierarchy.
137
1382007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
139
140 * gnus.texi (Washing Mail): Add nnmail-ignore-broken-references and
141 nnmail-broken-references-mailers instead of nnmail-fix-eudora-headers.
142
1432007-10-28 Didier Verna <didier@xemacs.org>
144
145 * message.texi (Wide Reply): Update documentation of
146 message-dont-reply-to-names (now allowing a list of regexps).
147
1482007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
149
150 * gnus.texi (Spam Package Introduction): Fix spam menu and links.
151
1522007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
153
154 * gnus.texi (SpamAssassin back end): Fix typo.
155
156 * sieve.texi (Examples): Fix grammar.
157
1582007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
159
160 * gnus.texi (Searching for Articles): Document M-S and M-R.
161 (Limiting): Document / b.
162
1632007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
164
165 * gnus.texi (Thread Commands): T M-^.
166
1672007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
168
169 * message.texi (Mail Aliases): Document ecomplete.
170 (Mail Aliases): Fix typo.
171
1722007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
173
174 * gnus.texi (Face): Restore xref to gnus-face-properties-alist;
175 fix typo.
176
1772007-10-28 Romain Francoise <romain@orebokech.com>
178
179 * gnus.texi (Mail Spool): Grammar fix.
180
1812007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
182
183 * gnus.texi (Mail Spool): nnml-use-compressed-files can be a
184 string.
185
1862007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
187
188 * gnus.texi (Group Parameters): Fix description.
189
1902007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
191
192 * gnus.texi (Gmane Spam Reporting): Fix
193 spam-report-gmane-use-article-number. Add
194 spam-report-user-mail-address.
195
1962007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
197
198 * emacs-mime.texi (Non-MIME): x-gnus-verbatim -> x-verbatim.
199
2002007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
201
202 * gnus.texi (Group Parameters): Add simplified sorting example based on
203 example for `Sorting the Summary Buffer' from Jari Aalto
204 <jari.aalto@cante.net>.
205 (Example Methods): Add example for an indirect connection.
206
2072007-10-28 Kevin Greiner <kevin.greiner@compsol.cc>
208
209 * gnus.texi (nntp-open-via-telnet-and-telnet): Fixed grammar.
210 (Agent Parameters): Updated parameter names to match code.
211 (Group Agent Commands): Corrected 'gnus-agent-fetch-series' as
212 'gnus-agent-summary-fetch-series'.
213 (Agent and flags): New section providing a generalized discussion
214 of flag handling.
215 (Agent and IMAP): Removed flag discussion.
216 (Agent Variables): Added 'gnus-agent-synchronize-flags'
217
2182007-10-28 Romain Francoise <romain@orebokech.com>
219
220 * gnus.texi (Exiting the Summary Buffer): Add new function
221 `gnus-summary-catchup-and-goto-prev-group', bound to `Z p'.
222
2232007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
224
225 * gnus.texi (Conformity): Fix typo.
226 (Customizing Articles): Document `first'.
227
2282007-10-28 Jari Aalto <jari.aalto@cante.net>
229
230 * gnus.texi (Sorting the Summary Buffer):
231 Add `gnus-thread-sort-by-date-reverse'. Add example
232 host to different sorting in NNTP and RSS groups.
233
2342007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
235
236 * message.texi (Insertion): Describe prefix for
237 message-mark-inserted-region and message-mark-insert-file.
238
2392007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
240
241 * emacs-mime.texi (Non-MIME): Add Slrn-style verbatim marks and
242 LaTeX documents. Describe "text/x-gnus-verbatim".
243
2442007-10-28 Teodor Zlatanov <tzz@lifelogs.com>
245
246 * gnus.texi (Blacklists and Whitelists)
247 (Blacklists and Whitelists, BBDB Whitelists)
248 (Gmane Spam Reporting, Bogofilter, spam-stat spam filtering)
249 (spam-stat spam filtering, SpamOracle)
250 (Extending the Spam ELisp package): Removed extra quote symbol for
251 clarity.
252
2532007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
254
255 * gnus.texi (MIME Commands): Add gnus-article-save-part-and-strip,
256 gnus-article-delete-part and gnus-article-replace-part.
257 (Using MIME): Add gnus-mime-replace-part.
258
2592007-10-28 Romain Francoise <romain@orebokech.com>
260
261 * gnus.texi (Mail Spool): Mention that `nnml-use-compressed-files'
262 requires `auto-compression-mode' to be enabled. Add new nnml
263 variable `nnml-compressed-files-size-threshold'.
264
2652007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
266
267 * gnus.texi (Sorting the Summary Buffer): Added
268 gnus-thread-sort-by-recipient.
269
2702007-10-28 Romain Francoise <romain@orebokech.com>
271
272 * message.texi (Insertion Variables): Mention new variable
273 `message-yank-empty-prefix'. Change `message-yank-cited-prefix'
274 documentation accordingly.
275
2762007-10-28 Romain Francoise <romain@orebokech.com>
277
278 * gnus.texi (To From Newsgroups): Mention new variables
279 `gnus-summary-to-prefix' and `gnus-summary-newsgroup-prefix'.
280
2812007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
282
283 * gnus.texi (Using MIME): gnus-mime-copy-part supports the charset
284 stuff; gnus-mime-inline-part does the automatic decompression.
285
2862007-10-28 Teodor Zlatanov <tzz@lifelogs.com>
287
288 * gnus.texi (Spam ELisp Package Configuration Examples):
289 "training.ham" should be "training.spam"
290
2912007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
292
293 * message.texi (Mail Variables): Fix the default value for
294 message-send-mail-function.
295
2962007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
297
298 * gnus.texi (Optional Back End Functions): nntp-request-update-info
299 always returns nil exceptionally.
300
3012007-10-28 Simon Josefsson <jas@extundo.com>
302
303 * gnus.texi (Article Washing): Add libidn URL. Suggested by
304 Michael Cook <michael@waxrat.com>.
305
3062007-10-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
307
308 * gnus.texi (Topic Commands): Fix next/previous.
309
3102007-10-28 Simon Josefsson <jas@extundo.com>
311
312 * gnus.texi (Article Washing): Mention `W i'.
313
3142007-10-28 Jochen K,A|(Bpper <jochen@fhi-berlin.mpg.de>
315
316 * gnus.texi (Group Parameters): Slight extension of sieve
317 parameter description.
318
3192007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
320
321 * gnus.texi (Score Decays): `gnus-decay-scores' can be a regexp
322 matching score files as well.
323 (Picons): Describe `gnus-picon-style'.
324
3252007-10-28 Romain Francoise <romain@orebokech.com>
326
327 * message.texi (Message Headers): Mention that headers are hidden
328 using narrowing, and how to expose them.
329 Update copyright.
330
3312007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
332
333 * gnusref.tex: Mention `gnus-summary-limit-to-recipient' and
334 `gnus-summary-sort-by-recipient'.
335
3362007-10-28 Romain Francoise <romain@orebokech.com>
337
338 * gnus.texi (NNTP marks): New node.
339 (NNTP): Move NNTP marks variables to the new node.
340
3412007-10-28 Jesper Harder <harder@ifa.au.dk>
342
343 * gnus.texi, gnus-news.texi, pgg.texi, sasl.texi: backend -> back
344 end.
345
346 * gnus.texi (MIME Commands, Hashcash): Markup fix.
347
3482007-10-28 Teodor Zlatanov <tzz@lifelogs.com>
349
350 * gnus.texi: replaced @file{spam.el} with @code{spam.el}
351 everywhere for consistency.
352 (Filtering Spam Using The Spam ELisp Package): admonish again.
353 (Spam ELisp Package Sequence of Events): this is Gnus, say so.
354 Say "regular expression" instead of "regex." Admonish. Pick
355 other words to sound better (s/so/thus/).
356 (Spam ELisp Package Filtering of Incoming Mail): mention
357 statistical filters. Remove old TODO.
358 (Spam ELisp Package Sorting and Score Display in Summary Buffer):
359 new section on sorting and displaying the spam score
360 (BBDB Whitelists): mention spam-use-BBDB-exclusive is not a
361 backend but an alias to spam-use-BBDB
362 (Extending the Spam ELisp package): rewrite the example using the
363 new backend functionality.
364
3652007-10-28 Simon Josefsson <jas@extundo.com>
366
367 * gnus.texi (NNTP): Mention nntp-marks-is-evil and
368 nntp-marks-directory, from Romain Francoise
369 <romain@orebokech.com>.
370
3712007-10-28 Magnus Henoch <mange@freemail.hu>
372
373 * gnus.texi (Hashcash): New default value of
374 hashcash-default-payment.
375
3762007-10-28 Simon Josefsson <jas@extundo.com>
377
378 * gnus.texi (Hashcash): Fix URL. Add pref to spam section.
379 (Anti-spam Hashcash Payments): No need to load hashcash.el now.
380
3812007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
382
383 * gnus.texi (Adaptive Scoring): Added gnus-adaptive-pretty-print.
384
3852007-10-28 Simon Josefsson <jas@extundo.com>
386
387 * gnus.texi (documentencoding): Add, to avoid warnings.
388
3892007-10-28 Simon Josefsson <jas@extundo.com>
390
391 * message.texi (Mail Headers): Add.
392
393 * gnus.texi (Hashcash): Fix.
394
3952007-10-28 Teodor Zlatanov <tzz@lifelogs.com>
396
397 * gnus.texi (Hashcash): changed location of library, also mention
398 that payments can be verified and fix the name of the
399 hashcash-path variable
400
4012007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
402
403 * gnus.texi
404 (Article Display): Add `gnus-picon-style'.
405
4062007-10-28 Katsumi Yamaoka <yamaoka@jpl.org>
407
408 * gnus.texi (SpamAssassin backend): Add it to the detailmenu.
409
4102007-10-28 Teodor Zlatanov <tzz@lifelogs.com>
411
412 * gnus.texi (Blacklists and Whitelists, BBDB Whitelists)
413 (Bogofilter, spam-stat spam filtering, SpamOracle): old incorrect
414 warning about ham processors in spam groups removed
415
4162007-10-28 Teodor Zlatanov <tzz@lifelogs.com>
417 From Hubert Chan <hubert@uhoreg.ca>
418
419 * gnus.texi (SpamAssassin backend): added new node about SpamAssassin
420
4212007-10-28 Jesper Harder <harder@ifa.au.dk>
422
423 * gnus.texi (Spam ELisp Package Sequence of Events): Index.
424 (Mailing List): Typo.
425 (Customizing Articles): Add gnus-treat-ansi-sequences.
426 (Article Washing): Index.
427
428 * message.texi: Use m-dash consistently.
429
4302007-10-28 Jesper Harder <harder@ifa.au.dk>
431
432 * gnus.texi (GroupLens): Remove.
433
4342007-10-28 Kevin Greiner <kgreiner@xpediantsolutions.com>
435
436 * gnus.texi (Outgoing Messages, Agent Variables): Add
437 gnus-agent-queue-mail and gnus-agent-prompt-send-queue.
438 Suggested by Gaute Strokkenes <gs234@srcf.ucam.org>
439
4402007-10-28 Jesper Harder <harder@ifa.au.dk>
441
442 * gnus.texi (Limiting): Add gnus-summary-limit-to-replied.
443
4442007-10-28 Reiner Steib <Reiner.Steib@gmx.de>
445
446 * gnus.texi (Article Washing): Add `gnus-article-treat-ansi-sequences'.
447
448 * gnus.texi (No Gnus): New node. Includes `gnus-news.texi'.
449
4502007-10-28 Simon Josefsson <jas@extundo.com>
451
452 * gnus.texi (Top): Add SASL.
453
12007-10-27 Jay Belanger <jay.p.belanger@gmail.com> 4542007-10-27 Jay Belanger <jay.p.belanger@gmail.com>
2 455
3 * calc.texi (Formulas, Composition Basics): Lower the 456 * calc.texi (Formulas, Composition Basics): Lower the
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 7490c9b6bc2..d4cbf8380b6 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -180,8 +180,27 @@ Patches. This is intended for groups where diffs of committed files
180are automatically sent to. It only works in groups matching 180are automatically sent to. It only works in groups matching
181@code{mm-uu-diff-groups-regexp}. 181@code{mm-uu-diff-groups-regexp}.
182 182
183@item verbatim-marks
184@cindex verbatim-marks
185Slrn-style verbatim marks.
186
187@item LaTeX
188@cindex LaTeX
189LaTeX documents. It only works in groups matching
190@code{mm-uu-tex-groups-regexp}.
191
183@end table 192@end table
184 193
194@cindex text/x-verbatim
195@c Is @vindex suitable for a face?
196@vindex mm-uu-extract
197Some inlined non-@acronym{MIME} attachments are displayed using the face
198@code{mm-uu-extract}. By default, no @acronym{MIME} button for these
199parts is displayed. You can force displaying a button using @kbd{K b}
200(@code{gnus-summary-display-buttonized}) or add @code{text/x-verbatim}
201to @code{gnus-buttonized-mime-types}, @xref{MIME Commands, ,MIME
202Commands, gnus, Gnus Manual}.
203
185@node Handles 204@node Handles
186@section Handles 205@section Handles
187 206
@@ -849,6 +868,36 @@ ISO-8859-1 if possible, you can set this variable to
849@code{(iso-8859-1)}. You can override this setting on a per-message 868@code{(iso-8859-1)}. You can override this setting on a per-message
850basis by using the @code{charset} @acronym{MML} tag (@pxref{MML Definition}). 869basis by using the @code{charset} @acronym{MML} tag (@pxref{MML Definition}).
851 870
871As different hierarchies prefer different charsets, you may want to set
872@code{mm-coding-system-priorities} according to the hierarchy in Gnus.
873Here's an example:
874
875@c Corrections about preferred charsets are welcome. de, fr and fj
876@c should be correct, I don't know about the rest (so these are only
877@c examples):
878@lisp
879(add-to-list 'gnus-newsgroup-variables 'mm-coding-system-priorities)
880(setq gnus-parameters
881 (nconc
882 ;; Some charsets are just examples!
883 '(("^cn\\." ;; Chinese
884 (mm-coding-system-priorities
885 '(iso-8859-1 cn-big5 chinese-iso-7bit utf-8)))
886 ("^cz\\.\\|^pl\\." ;; Central and Eastern European
887 (mm-coding-system-priorities '(iso-8859-2 utf-8)))
888 ("^de\\." ;; German language
889 (mm-coding-system-priorities '(iso-8859-1 iso-8859-15 utf-8)))
890 ("^fr\\." ;; French
891 (mm-coding-system-priorities '(iso-8859-15 iso-8859-1 utf-8)))
892 ("^fj\\." ;; Japanese
893 (mm-coding-system-priorities
894 '(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8)))
895 ("^ru\\." ;; Cyrillic
896 (mm-coding-system-priorities
897 '(koi8-r iso-8859-5 iso-8859-1 utf-8))))
898 gnus-parameters))
899@end lisp
900
852@item mm-content-transfer-encoding-defaults 901@item mm-content-transfer-encoding-defaults
853@vindex mm-content-transfer-encoding-defaults 902@vindex mm-content-transfer-encoding-defaults
854Mapping from @acronym{MIME} types to encoding to use. This variable is usually 903Mapping from @acronym{MIME} types to encoding to use. This variable is usually
@@ -1155,7 +1204,7 @@ Return the value of the field under point.
1155@item mail-encode-encoded-word-region 1204@item mail-encode-encoded-word-region
1156@findex mail-encode-encoded-word-region 1205@findex mail-encode-encoded-word-region
1157Encode the non-@acronym{ASCII} words in the region. For instance, 1206Encode the non-@acronym{ASCII} words in the region. For instance,
1158@samp{Naïve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}. 1207@samp{Na@"{@dotless{i}}ve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}.
1159 1208
1160@item mail-encode-encoded-word-buffer 1209@item mail-encode-encoded-word-buffer
1161@findex mail-encode-encoded-word-buffer 1210@findex mail-encode-encoded-word-buffer
@@ -1168,7 +1217,7 @@ Encode the words that need encoding in a string, and return the result.
1168 1217
1169@example 1218@example
1170(mail-encode-encoded-word-string 1219(mail-encode-encoded-word-string
1171 "This is naïve, baby") 1220 "This is na@"{@dotless{i}}ve, baby")
1172@result{} "This is =?iso-8859-1?q?na=EFve,?= baby" 1221@result{} "This is =?iso-8859-1?q?na=EFve,?= baby"
1173@end example 1222@end example
1174 1223
@@ -1183,7 +1232,7 @@ Decode the encoded words in the string and return the result.
1183@example 1232@example
1184(mail-decode-encoded-word-string 1233(mail-decode-encoded-word-string
1185 "This is =?iso-8859-1?q?na=EFve,?= baby") 1234 "This is =?iso-8859-1?q?na=EFve,?= baby")
1186@result{} "This is naïve, baby" 1235@result{} "This is na@"{@dotless{i}}ve, baby"
1187@end example 1236@end example
1188 1237
1189@end table 1238@end table
diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi
new file mode 100644
index 00000000000..1fead8c9b80
--- /dev/null
+++ b/doc/misc/gnus-coding.texi
@@ -0,0 +1,381 @@
1\input texinfo
2
3@setfilename gnus-coding
4@settitle Gnus Coding Style and Maintainance Guide
5@syncodeindex fn cp
6@syncodeindex vr cp
7@syncodeindex pg cp
8
9@copying
10Copyright (c) 2004, 2005, 2007 Free Software Foundation, Inc.
11
12@quotation
13Permission is granted to copy, distribute and/or modify this document
14under the terms of the GNU Free Documentation License, Version 1.1 or
15any later version published by the Free Software Foundation; with no
16Invariant Sections, with the Front-Cover texts being ``A GNU
17Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
18license is included in the section entitled ``GNU Free Documentation
19License'' in the Emacs manual.
20
21(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
22this GNU Manual, like GNU software. Copies published by the Free
23Software Foundation raise funds for GNU development.''
24
25This document is part of a collection distributed under the GNU Free
26Documentation License. If you want to distribute this document
27separately from the collection, you can do so by adding a copy of the
28license to the document, as described in section 6 of the license.
29@end quotation
30@end copying
31
32
33@titlepage
34@title Gnus Coding Style and Maintainance Guide
35
36@author by Reiner Steib <Reiner.Steib@@gmx.de>
37
38@insertcopying
39@end titlepage
40
41@c Obviously this is only a very rudimentary draft. We put it in CVS
42@c anyway hoping that it might annoy someone enough to fix it. ;-)
43@c Fixing only a paragraph also is appreciated.
44
45@node Top
46@top Gnus Coding Style and Maintainance Guide
47This manual describes @dots{}
48@menu
49* Gnus Coding Style:: Gnus Coding Style
50* Gnus Maintainance Guide:: Gnus Maintainance Guide
51@end menu
52
53@c @ref{Gnus Reference Guide, ,Gnus Reference Guide, gnus, The Gnus Newsreader}
54
55@node Gnus Coding Style
56@chapter Gnus Coding Style
57@section Dependencies
58
59The Gnus distribution contains a lot of libraries that have been written
60for Gnus and used intensively for Gnus. But many of those libraries are
61useful on their own. E.g. other Emacs Lisp packages might use the
62@acronym{MIME} library @xref{Top, ,Top, emacs-mime, The Emacs MIME
63Manual}.
64
65@subsection General purpose libraries
66
67@table @file
68
69@item netrc.el
70@file{.netrc} parsing functionality.
71@c As of 2005-10-21...
72There are no Gnus dependencies in this file.
73
74@item format-spec.el
75Functions for formatting arbitrary formatting strings.
76@c As of 2005-10-21...
77There are no Gnus dependencies in this file.
78
79@item hex-util.el
80Functions to encode/decode hexadecimal string.
81@c As of 2007-08-25...
82There are no Gnus dependencies in these files.
83@end table
84
85@subsection Encryption and security
86
87@table @file
88@item encrypt.el
89File encryption routines
90@c As of 2005-10-25...
91There are no Gnus dependencies in this file.
92
93@item password.el
94Read passwords from user, possibly using a password cache.
95@c As of 2005-10-21...
96There are no Gnus dependencies in this file.
97
98@item tls.el
99TLS/SSL support via wrapper around GnuTLS
100@c As of 2005-10-21...
101There are no Gnus dependencies in this file.
102
103@item pgg*.el
104Glue for the various PGP implementations.
105@c As of 2005-10-21...
106There are no Gnus dependencies in these files.
107
108@item sha1.el
109SHA1 Secure Hash Algorithm.
110@c As of 2007-08-25...
111There are no Gnus dependencies in these files.
112@end table
113
114@subsection Networking
115
116@table @file
117@item dig.el
118Domain Name System dig interface.
119@c As of 2005-10-21...
120There are no serious Gnus dependencies in this file. Uses
121@code{gnus-run-mode-hooks} (a wrapper function).
122
123@item dns.el, dns-mode.el
124Domain Name Service lookups.
125@c As of 2005-10-21...
126There are no Gnus dependencies in these files.
127@end table
128
129@subsection Mail and News related RFCs
130
131@table @file
132@item pop3.el
133Post Office Protocol (RFC 1460) interface.
134@c As of 2005-10-21...
135There are no Gnus dependencies in this file.
136
137@item imap.el
138@acronym{IMAP} library.
139@c As of 2005-10-21...
140There are no Gnus dependencies in this file.
141
142@item ietf-drums.el
143Functions for parsing RFC822bis headers.
144@c As of 2005-10-21...
145There are no Gnus dependencies in this file.
146
147@item rfc1843.el
148HZ (rfc1843) decoding. HZ is a data format for exchanging files of
149arbitrarily mixed Chinese and @acronym{ASCII} characters.
150@c As of 2005-10-21...
151@code{rfc1843-gnus-setup} seem to be useful only for Gnus. Maybe this
152function should be relocated to remove dependencies on Gnus. Other
153minor dependencies: @code{gnus-newsgroup-name} could be eliminated by
154using an optional argument to @code{rfc1843-decode-article-body}.
155
156@item rfc2045.el
157Functions for decoding rfc2045 headers
158@c As of 2007-08-25...
159There are no Gnus dependencies in these files.
160
161@item rfc2047.el
162Functions for encoding and decoding rfc2047 messages
163@c As of 2007-08-25...
164There are no Gnus dependencies in these files.
165@c
166Only a couple of tests for gnusy symbols.
167
168@item rfc2104.el
169RFC2104 Hashed Message Authentication Codes
170@c As of 2007-08-25...
171There are no Gnus dependencies in these files.
172
173@item rfc2231.el
174Functions for decoding rfc2231 headers
175@c As of 2007-08-25...
176There are no Gnus dependencies in these files.
177
178@item flow-fill.el
179Interpret RFC2646 "flowed" text.
180@c As of 2005-10-27...
181There are no Gnus dependencies in this file.
182
183@item uudecode.el
184Elisp native uudecode.
185@c As of 2005-12-06...
186There are no Gnus dependencies in this file.
187@c ... but the custom group is gnus-extract.
188
189@item canlock.el
190Functions for Cancel-Lock feature
191@c Cf. draft-ietf-usefor-cancel-lock-01.txt
192@c Although this draft has expired, Canlock-Lock revived in 2007 when
193@c major news providers (e.g. news.individual.org) started to use it.
194@c As of 2007-08-25...
195There are no Gnus dependencies in these files.
196
197@end table
198
199@subsection message
200
201All message composition from Gnus (both mail and news) takes place in
202Message mode buffers. Message mode is intended to be a replacement for
203Emacs mail mode. There should be no Gnus dependencies in
204@file{message.el}. Alas it is not anymore. Patches and suggestions to
205remove the dependencies are welcome.
206
207@c message.el requires nnheader which requires gnus-util.
208
209@subsection Emacs @acronym{MIME}
210
211The files @file{mml*.el} and @file{mm-*.el} provide @acronym{MIME}
212functionality for Emacs.
213
214@acronym{MML} (@acronym{MIME} Meta Language) is supposed to be
215independent from Gnus. Alas it is not anymore. Patches and suggestions
216to remove the dependencies are welcome.
217
218@subsection Gnus backends
219
220The files @file{nn*.el} provide functionality for accessing NNTP
221(@file{nntp.el}), IMAP (@file{nnimap.el}) and several other Mail back
222ends (probably @file{nnml.el}, @file{nnfolder.el} and
223@file{nnmaildir.el} are the most widely used mail back ends).
224
225@c mm-uu requires nnheader which requires gnus-util. message.el also
226@c requires nnheader.
227
228
229@section Compatibility
230
231No Gnus and Gnus 5.10.10 and up should work on:
232@itemize @bullet
233@item
234Emacs 21.1 and up.
235@item
236XEmacs 21.4 and up.
237@end itemize
238
239Gnus 5.10.8 and below should work on:
240@itemize @bullet
241@item
242Emacs 20.7 and up.
243@item
244XEmacs 21.1 and up.
245@end itemize
246
247@node Gnus Maintainance Guide
248@chapter Gnus Maintainance Guide
249
250@section Stable and development versions
251
252The development of Gnus normally is done on the CVS trunk, i.e. there
253are no separate branches to develop and test new features. Most of the
254time, the trunk is developed quite actively with more or less daily
255changes. Only after a new major release, e.g. 5.10.1, there's usually a
256feature period of several months. After the release of Gnus 5.10.6 the
257development of new features started again on the trunk while the 5.10
258series is continued on the stable branch (v5-10) from which more stable
259releases will be done when needed (5.10.7, @dots{}).
260@ref{Gnus Development, ,Gnus Development, gnus, The Gnus Newsreader}
261
262Stable releases of Gnus finally become part of Emacs. E.g. Gnus 5.8
263became a part of Emacs 21 (relabeled to Gnus 5.9). The 5.10 series
264became part of Emacs 22 as Gnus 5.11.
265
266@section Syncing
267
268@c Some MIDs related to this follow. Use http://thread.gmane.org/MID
269@c (and click on the subject) to get the thread on Gmane.
270
271@c Some quotes from Miles Bader follow...
272
273@c <v9eklyke6b.fsf@marauder.physik.uni-ulm.de>
274@c <buovfd71nkk.fsf@mctpc71.ucom.lsi.nec.co.jp>
275
276In the past, the inclusion of Gnus into Emacs was quite cumbersome. For
277each change made to Gnus in Emacs repository, it had to be checked that
278it was applied to the new Gnus version, too. Else, bug fixes done in
279Emacs repository might have been lost.
280
281With the inclusion of Gnus 5.10, Miles Bader has set up an Emacs-Gnus
282gateway to ensure the bug fixes from Emacs CVS are propagated to Gnus
283CVS semi-automatically. These bug fixes are installed on the stable
284branch and on the trunk. Basically the idea is that the gateway will
285cause all common files in Emacs and Gnus v5-10 to be identical except
286when there's a very good reason (e.g., the Gnus version string in Emacs
287says @samp{5.11}, but the v5-10 version string remains @samp{5.10.x}).
288Furthermore, all changes in these files in either Emacs or the v5-10
289branch will be installed into the Gnus CVS trunk, again except where
290there's a good reason.
291@c (typically so far the only exception has been that the changes
292@c already exist in the trunk in modified form).
293Because of this, when the next major version of Gnus will be included in
294Emacs, it should be very easy -- just plonk in the files from the Gnus
295trunk without worrying about lost changes from the Emacs tree.
296
297The effect of this is that as hacker, you should generally only have to
298make changes in one place:
299
300@itemize
301@item
302If it's a file which is thought of as being outside of Gnus (e.g., the
303new @file{encrypt.el}), you should probably make the change in the Emacs
304tree, and it will show up in the Gnus tree a few days later.
305
306If you don't have Emacs CVS access (or it's inconvenient), you can
307change such a file in the v5-10 branch, and it should propagate to Emacs
308CVS -- however, it will get some extra scrutiny (by Miles) to see if the
309changes are possibly controversial and need discussion on the mailing
310list. Many changes are obvious bug-fixes however, so often there won't
311be any problem.
312
313@item
314If it's to a Gnus file, and it's important enough that it should be part
315of Emacs and the v5-10 branch, then you can make the change on the v5-10
316branch, and it will go into Emacs CVS and the Gnus CVS trunk (a few days
317later). The most prominent examples for such changes are bug-fixed
318including improvements on the documentation.
319
320If you know that there will be conflicts (perhaps because the affected
321source code is different in v5-10 and the Gnus CVS trunk), then you can
322install your change in both places, and when I try to sync them, there
323will be a conflict -- however, since in most such cases there would be a
324conflict @emph{anyway}, it's often easier for me to resolve it simply if
325I see two @samp{identical} changes, and can just choose the proper one,
326rather than having to actually fix the code.
327
328@item
329For general Gnus development changes, of course you just make the
330change on the Gnus CVS trunk and it goes into Emacs a few years
331later... :-)
332@end itemize
333
334Of course in any case, if you just can't wait for me to sync your
335change, you can commit it in more than one place and probably there will
336be no problem; usually the changes are textually identical anyway, so
337can be easily resolved automatically (sometimes I notice silly things in
338such multiple commits, like whitespace differences, and unify those ;-).
339
340
341@c I do Emacs->Gnus less often (than Gnus->Emacs) because it tends to
342@c require more manual work.
343
344@c By default I sync about once a week. I also try to follow any Gnus
345@c threads on the mailing lists and make sure any changes being discussed
346@c are kept more up-to-date (so say 1-2 days delay for "topical" changes).
347
348@c <buovfd71nkk.fsf@mctpc71.ucom.lsi.nec.co.jp>
349
350@c BTW, just to add even more verbose explanation about the syncing thing:
351
352@section Miscellanea
353
354@heading @file{GNUS-NEWS}
355
356Starting from No Gnus, the @file{GNUS-NEWS} is created from
357@file{texi/gnus-news.texi}. Don't edit @file{GNUS-NEWS}. Edit
358@file{texi/gnus-news.texi}, type @command{make GNUS-NEWS} in the
359@file{texi} directory and commit @file{GNUS-NEWS} and
360@file{texi/gnus-news.texi}.
361
362@heading Conventions for version information in defcustoms
363
364For new customizable variables introduced in Oort Gnus (including the
365v5-10 branch) use @code{:version "22.1" ;; Oort Gnus} (including the
366comment) or e.g. @code{:version "22.2" ;; Gnus 5.10.10} if the feature
367was added for Emacs 22.2 and Gnus 5.10.10.
368@c
369If the variable is new in No Gnus use @code{:version "23.0" ;; No Gnus}.
370
371The same applies for customizable variables when its default value was
372changed.
373
374@c Local Variables:
375@c mode: texinfo
376@c coding: iso-8859-1
377@c End:
378
379@ignore
380 arch-tag: ab15234c-2c8a-4cbd-8111-1811bcc6f931
381@end ignore
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 6bfb3477627..53a14254aad 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1286,18 +1286,23 @@ How to enable automatic word-wrap when composing messages?
1286 1286
1287@subsubheading Answer 1287@subsubheading Answer
1288 1288
1289Say 1289Starting from No Gnus, automatic word-wrap is already enabled by
1290default, see the variable message-fill-column.
1291
1292For other versions of Gnus, say
1290 1293
1291@example 1294@example
1292(add-hook 'message-mode-hook 1295(unless (boundp 'message-fill-column)
1293 (lambda () 1296 (add-hook 'message-mode-hook
1294 (setq fill-column 72) 1297 (lambda ()
1295 (turn-on-auto-fill))) 1298 (setq fill-column 72)
1299 (turn-on-auto-fill))))
1296@end example 1300@end example
1297@noindent 1301@noindent
1298 1302
1299in ~/.gnus.el. You can reformat a paragraph by hitting 1303in ~/.gnus.el.
1300@samp{M-q} (as usual) 1304
1305You can reformat a paragraph by hitting @samp{M-q} (as usual).
1301 1306
1302@node [5.3] 1307@node [5.3]
1303@subsubheading Question 5.3 1308@subsubheading Question 5.3
@@ -1676,10 +1681,7 @@ you to use something like
1676yourUserName.userfqdn.provider.net, or you can use 1681yourUserName.userfqdn.provider.net, or you can use
1677somethingUnique.yourdomain.tld if you own the domain 1682somethingUnique.yourdomain.tld if you own the domain
1678yourdomain.tld, or you can register at a service which 1683yourdomain.tld, or you can register at a service which
1679gives private users a FQDN for free, e.g. 1684gives private users a FQDN for free.
1680@uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}.
1681(Sorry but this website is in German, if you know of an
1682English one offering the same, drop me a note).
1683 1685
1684Finally you can tell Gnus not to generate a Message-ID 1686Finally you can tell Gnus not to generate a Message-ID
1685for News at all (and letting the server do the job) by saying 1687for News at all (and letting the server do the job) by saying
diff --git a/doc/misc/gnus-news.el b/doc/misc/gnus-news.el
new file mode 100644
index 00000000000..9f31513e435
--- /dev/null
+++ b/doc/misc/gnus-news.el
@@ -0,0 +1,121 @@
1;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source
2;; Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
3
4;; Author: Reiner Steib <Reiner.Steib@gmx.de>
5;; Keywords: tools
6
7;; This file is part of GNU Emacs.
8
9;; GNU Emacs is free software; you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation; either version 3, or (at your option)
12;; any later version.
13
14;; GNU Emacs is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;; GNU General Public License for more details.
18
19;; You should have received a copy of the GNU General Public License
20;; along with GNU Emacs; see the file COPYING. If not, write to the
21;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22;; Boston, MA 02110-1301, USA.
23
24;;; Commentary:
25
26;;; Code:
27
28(defvar gnus-news-header-disclaimer
29"GNUS NEWS -- history of user-visible changes.
30
31Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
32 2006, 2007 Free Software Foundation, Inc.
33See the end of the file for license conditions.
34
35Please send Gnus bug reports to bugs@gnus.org.
36For older news, see Gnus info node \"New Features\".\n\n")
37
38(defvar gnus-news-trailer
39"
40* For older news, see Gnus info node \"New Features\".
41
42----------------------------------------------------------------------
43
44This file is part of GNU Emacs.
45
46GNU Emacs is free software; you can redistribute it and/or modify
47it under the terms of the GNU General Public License as published by
48the Free Software Foundation; either version 3, or (at your option)
49any later version.
50
51GNU Emacs is distributed in the hope that it will be useful,
52but WITHOUT ANY WARRANTY; without even the implied warranty of
53MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
54GNU General Public License for more details.
55
56You should have received a copy of the GNU General Public License
57along with GNU Emacs; see the file COPYING. If not, write to the
58Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
59Boston, MA 02110-1301, USA.
60
61 \nLocal variables:\nmode: outline
62paragraph-separate: \"[ ]*$\"\nend:\n")
63
64(defvar gnus-news-makeinfo-command "makeinfo")
65
66(defvar gnus-news-fill-column 80)
67
68(defvar gnus-news-makeinfo-switches
69 (concat " --no-headers --paragraph-indent=0"
70 " --no-validate" ;; Allow unresolved references.
71 " --fill-column=" (number-to-string
72 (+ 3 ;; will strip leading spaces later
73 (or gnus-news-fill-column 80)))))
74
75(defun batch-gnus-news ()
76 "Make GNUS-NEWS in batch mode."
77 (let (infile outfile)
78 (setq infile (car command-line-args-left)
79 command-line-args-left (cdr command-line-args-left)
80 outfile (car command-line-args-left)
81 command-line-args-left nil)
82 (if (and infile outfile)
83 (message "Creating `%s' from `%s'..." outfile infile)
84 (error "Not enough files given."))
85 (gnus-news-translate-file infile outfile)))
86
87(defun gnus-news-translate-file (infile outfile)
88 "Translate INFILE (texinfo) to OUTFILE (GNUS-NEWS)."
89 (let* ((dir (concat (or (getenv "srcdir") ".") "/"))
90 (infile (concat dir infile))
91 (buffer (find-file-noselect (concat dir outfile))))
92 (with-temp-buffer
93 ;; Could be done using `texinfmt' stuff as in `infohack.el'.
94 (insert
95 (shell-command-to-string
96 (concat gnus-news-makeinfo-command " "
97 gnus-news-makeinfo-switches " " infile)))
98 (goto-char (point-max))
99 (delete-char -1)
100 (goto-char (point-min))
101 (save-excursion
102 (while (re-search-forward "^ \\* " nil t)
103 (replace-match "\f\n* ")))
104 (save-excursion
105 (while (re-search-forward "^ \\* " nil t)
106 (replace-match "** ")))
107 (save-excursion
108 (while (re-search-forward "^ " nil t)
109 (replace-match "")))
110 ;; Avoid `*' from @ref at beginning of line:
111 (save-excursion
112 (while (re-search-forward "^\\*Note" nil t)
113 (replace-match " \\&")))
114 (goto-char (point-min))
115 (insert gnus-news-header-disclaimer)
116 (goto-char (point-max))
117 (insert gnus-news-trailer)
118 (write-region (point-min) (point-max) outfile))))
119
120;;; arch-tag: e23cdd27-eafd-4ba0-816f-98f5edb0dc29
121;;; gnus-news.el ends here
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
new file mode 100644
index 00000000000..821354717e2
--- /dev/null
+++ b/doc/misc/gnus-news.texi
@@ -0,0 +1,264 @@
1@c -*-texinfo-*-
2
3@c Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
4
5@c Permission is granted to anyone to make or distribute verbatim copies
6@c of this document as received, in any medium, provided that the
7@c copyright notice and this permission notice are preserved,
8@c thus giving the recipient permission to redistribute in turn.
9
10@c Permission is granted to distribute modified versions
11@c of this document, or of portions of it,
12@c under the above conditions, provided also that they
13@c carry prominent notices stating who last changed them.
14
15@c This file contains a list of news features Gnus. It is supposed to be
16@c included in `gnus.texi'. `GNUS-NEWS' is automatically generated from
17@c this file (see `gnus-news.el').
18
19@itemize @bullet
20
21@item Installation changes
22
23@itemize @bullet
24@item Upgrading from previous (stable) version if you have used No Gnus.
25
26If you have tried No Gnus (the unstable Gnus branch leading to this
27release) but went back to a stable version, be careful when upgrading
28to this version. In particular, you will probably want to remove the
29@file{~/News/marks} directory (perhaps selectively), so that flags are
30read from your @file{~/.newsrc.eld} instead of from the stale marks
31file, where this release will store flags for nntp. See a later entry
32for more information about nntp marks. Note that downgrading isn't
33safe in general.
34
35@item Lisp files are now installed in @file{.../site-lisp/gnus/} by default.
36It defaulted to @file{.../site-lisp/} formerly. In addition to this,
37the new installer issues a warning if other Gnus installations which
38will shadow the latest one are detected. You can then remove those
39shadows manually or remove them using @code{make
40remove-installed-shadows}.
41@end itemize
42
43@item New packages and libraries within Gnus
44
45@itemize @bullet
46
47@item Gnus includes the Emacs Lisp @acronym{SASL} library.
48
49This provides a clean @acronym{API} to @acronym{SASL} mechanisms from
50within Emacs. The user visible aspects of this, compared to the earlier
51situation, include support for @acronym{DIGEST}-@acronym{MD5} and
52@acronym{NTLM}. @xref{Top, ,Emacs SASL, sasl, Emacs SASL}.
53
54@item ManageSieve connections uses the @acronym{SASL} library by default.
55
56The primary change this brings is support for @acronym{DIGEST-MD5} and
57@acronym{NTLM}, when the server supports it.
58
59@item Gnus includes a password cache mechanism in password.el.
60
61It is enabled by default (see @code{password-cache}), with a short
62timeout of 16 seconds (see @code{password-cache-expiry}). If
63@acronym{PGG} is used as the @acronym{PGP} back end, the @acronym{PGP}
64passphrase is managed by this mechanism. Passwords for ManageSieve
65connections are managed by this mechanism, after querying the user
66about whether to do so.
67@end itemize
68
69@item Changes in summary and article mode
70
71@itemize @bullet
72
73@item Gnus now supports sticky article buffers. Those are article buffers
74that are not reused when you select another article. @xref{Sticky
75Articles}.
76
77@item International host names (@acronym{IDNA}) can now be decoded
78inside article bodies using @kbd{W i}
79(@code{gnus-summary-idna-message}). This requires that GNU Libidn
80(@url{http://www.gnu.org/software/libidn/}) has been installed.
81@c FIXME: Also mention @code{message-use-idna}?
82
83@item The non-@acronym{ASCII} group names handling has been much
84improved. The back ends that fully support non-@acronym{ASCII} group
85names are now @code{nntp}, @code{nnml}, and @code{nnrss}. Also the
86agent, the cache, and the marks features work with those back ends.
87@xref{Non-ASCII Group Names}.
88
89@item Gnus now displays @acronym{DNS} master files sent as text/dns
90using dns-mode.
91
92@item Gnus supports new limiting commands in the Summary buffer:
93@kbd{/ r} (@code{gnus-summary-limit-to-replied}) and @kbd{/ R}
94(@code{gnus-summary-limit-to-recipient}). @xref{Limiting}.
95
96@item You can now fetch all ticked articles from the server using
97@kbd{Y t} (@code{gnus-summary-insert-ticked-articles}). @xref{Summary
98Generation Commands}.
99
100@item Gnus supports a new sort command in the Summary buffer:
101@kbd{C-c C-s C-t} (@code{gnus-summary-sort-by-recipient}). @xref{Summary
102Sorting}.
103
104@item @acronym{S/MIME} now features @acronym{LDAP} user certificate searches.
105You need to configure the server in @code{smime-ldap-host-list}.
106
107@item URLs inside Open@acronym{PGP} headers are retrieved and imported
108to your PGP key ring when you click on them.
109
110@item
111Picons can be displayed right from the textual address, see
112@code{gnus-picon-style}. @xref{Picons}.
113
114@item @acronym{ANSI} @acronym{SGR} control sequences can be transformed
115using @kbd{W A}.
116
117@acronym{ANSI} sequences are used in some Chinese hierarchies for
118highlighting articles (@code{gnus-article-treat-ansi-sequences}).
119
120@item Gnus now MIME decodes articles even when they lack "MIME-Version" header.
121This changes the default of @code{gnus-article-loose-mime}.
122
123@item @code{gnus-decay-scores} can be a regexp matching score files.
124For example, set it to @samp{\\.ADAPT\\'} and only adaptive score files
125will be decayed. @xref{Score Decays}.
126
127@item Strings prefixing to the @code{To} and @code{Newsgroup} headers in
128summary lines when using @code{gnus-ignored-from-addresses} can be
129customized with @code{gnus-summary-to-prefix} and
130@code{gnus-summary-newsgroup-prefix}. @xref{To From Newsgroups}.
131
132@item You can replace @acronym{MIME} parts with external bodies.
133See @code{gnus-mime-replace-part} and @code{gnus-article-replace-part}.
134@xref{MIME Commands}, @ref{Using MIME}.
135
136@item
137The option @code{mm-fill-flowed} can be used to disable treatment of
138format=flowed messages. Also, flowed text is disabled when sending
139inline @acronym{PGP} signed messages. @xref{Flowed text, ,Flowed text,
140emacs-mime, The Emacs MIME Manual}. (New in Gnus 5.10.7)
141@c This entry is also present in the node "Oort Gnus".
142
143@end itemize
144
145@item Changes in Message mode
146
147@itemize @bullet
148@item Gnus now supports the ``hashcash'' client puzzle anti-spam mechanism.
149Use @code{(setq message-generate-hashcash t)} to enable.
150@xref{Hashcash}.
151
152@item You can now drag and drop attachments to the Message buffer.
153See @code{mml-dnd-protocol-alist} and @code{mml-dnd-attach-options}.
154@xref{MIME, ,MIME, message, Message Manual}.
155
156@item The option @code{message-yank-empty-prefix} now controls how
157empty lines are prefixed in cited text. @xref{Insertion Variables,
158,Insertion Variables, message, Message Manual}.
159
160@item Gnus uses narrowing to hide headers in Message buffers.
161The @code{References} header is hidden by default. To make all
162headers visible, use @code{(setq message-hidden-headers nil)}.
163@xref{Message Headers, ,Message Headers, message, Message Manual}.
164
165@item You can highlight different levels of citations like in the
166article buffer. See @code{gnus-message-highlight-citation}.
167
168@item @code{auto-fill-mode} is enabled by default in Message mode.
169See @code{message-fill-column}. @xref{Various Message Variables, ,
170Message Headers, message, Message Manual}.
171
172@item You can now store signature files in a special directory
173named @code{message-signature-directory}.
174
175@item The option @code{message-citation-line-format} controls the format
176of the "Whomever writes:" line. You need to set
177@code{message-citation-line-function} to
178@code{message-insert-formated-citation-line} as well.
179@end itemize
180
181@item Changes in back ends
182
183@itemize @bullet
184@item The nntp back end stores article marks in @file{~/News/marks}.
185
186The directory can be changed using the (customizable) variable
187@code{nntp-marks-directory}, and marks can be disabled using the
188(back end) variable @code{nntp-marks-is-evil}. The advantage of this
189is that you can copy @file{~/News/marks} (using rsync, scp or
190whatever) to another Gnus installation, and it will realize what
191articles you have read and marked. The data in @file{~/News/marks}
192has priority over the same data in @file{~/.newsrc.eld}.
193
194@item
195You can import and export your @acronym{RSS} subscriptions from
196@acronym{OPML} files. @xref{RSS}.
197
198@item @acronym{IMAP} identity (@acronym{RFC} 2971) is supported.
199
200By default, Gnus does not send any information about itself, but you can
201customize it using the variable @code{nnimap-id}.
202
203@item The @code{nnrss} back end now supports multilingual text.
204Non-@acronym{ASCII} group names for the @code{nnrss} groups are also
205supported. @xref{RSS}.
206
207@item Retrieving mail with @acronym{POP3} is supported over @acronym{SSL}/@acronym{TLS} and with StartTLS.
208
209@item The nnml back end allows other compression programs beside @file{gzip}
210for compressed message files. @xref{Mail Spool}.
211
212@item The nnml back end supports group compaction.
213
214This feature, accessible via the functions
215@code{gnus-group-compact-group} (@kbd{G z} in the group buffer) and
216@code{gnus-server-compact-server} (@kbd{z} in the server buffer)
217renumbers all articles in a group, starting from 1 and removing gaps.
218As a consequence, you get a correct total article count (until
219messages are deleted again).
220@end itemize
221
222@item Appearance
223@c Maybe it's not worth to separate this from "Miscellaneous"?
224
225@itemize @bullet
226
227@item The tool bar has been updated to use GNOME icons.
228You can also customize the tool bar. There's no documentation in the
229manual yet, but @kbd{M-x customize-apropos RET -tool-bar$} should get
230you started. (Only for Emacs, not in XEmacs.)
231@c FIXME: Document this in the manual
232
233@item The tool bar icons are now (de)activated correctly
234in the group buffer, see the variable @code{gnus-group-update-tool-bar}.
235Its default value depends on your Emacs version.
236@c FIXME: Document this in the manual
237
238@item You can change the location of XEmacs' toolbars in Gnus buffers.
239See @code{gnus-use-toolbar} and @code{message-use-toolbar}.
240
241@end itemize
242
243@item Miscellaneous changes
244
245@itemize @bullet
246@item Having edited the select-method for the foreign server in the
247server buffer is immediately reflected to the subscription of the groups
248which use the server in question. For instance, if you change
249@code{nntp-via-address} into @samp{bar.example.com} from
250@samp{foo.example.com}, Gnus will connect to the news host by way of the
251intermediate host @samp{bar.example.com} from next time.
252
253@item The @file{all.SCORE} file can be edited from the group buffer
254using @kbd{W e}.
255
256@end itemize
257
258@end itemize
259
260@c gnus-news.texi ends here.
261
262@ignore
263 arch-tag: 872c7569-4340-4d73-9d1d-7826d9f94a51
264@end ignore
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 4093b061f74..2be85ab9b30 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -6,6 +6,8 @@
6@syncodeindex vr cp 6@syncodeindex vr cp
7@syncodeindex pg cp 7@syncodeindex pg cp
8 8
9@documentencoding ISO-8859-1
10
9@copying 11@copying
10Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 12Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
112002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 132002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -50,7 +52,7 @@ license to the document, as described in section 6 of the license.
50\begin{document} 52\begin{document}
51 53
52% Adjust ../Makefile.in if you change the following line: 54% Adjust ../Makefile.in if you change the following line:
53\newcommand{\gnusversionname}{Gnus v5.11} 55\newcommand{\gnusversionname}{No Gnus v0.7}
54\newcommand{\gnuschaptername}{} 56\newcommand{\gnuschaptername}{}
55\newcommand{\gnussectionname}{} 57\newcommand{\gnussectionname}{}
56 58
@@ -360,7 +362,7 @@ spool or your mbox file. All at the same time, if you want to push your
360luck. 362luck.
361 363
362@c Adjust ../Makefile.in if you change the following line: 364@c Adjust ../Makefile.in if you change the following line:
363This manual corresponds to Gnus v5.11. 365This manual corresponds to No Gnus v0.7.
364 366
365@end ifinfo 367@end ifinfo
366 368
@@ -412,6 +414,7 @@ Other related manuals
412* Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts. 414* Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts.
413* Sieve:(sieve). Managing Sieve scripts in Emacs. 415* Sieve:(sieve). Managing Sieve scripts in Emacs.
414* PGG:(pgg). @acronym{PGP/MIME} with Gnus. 416* PGG:(pgg). @acronym{PGP/MIME} with Gnus.
417* SASL:(sasl). @acronym{SASL} authentication in Emacs.
415 418
416@detailmenu 419@detailmenu
417 --- The Detailed Node Listing --- 420 --- The Detailed Node Listing ---
@@ -454,6 +457,7 @@ Group Buffer
454* Browse Foreign Server:: You can browse a server. See what it has to offer. 457* Browse Foreign Server:: You can browse a server. See what it has to offer.
455* Exiting Gnus:: Stop reading news and get some work done. 458* Exiting Gnus:: Stop reading news and get some work done.
456* Group Topics:: A folding group mode divided into topics. 459* Group Topics:: A folding group mode divided into topics.
460* Non-ASCII Group Names:: Accessing groups of non-English names.
457* Misc Group Stuff:: Other stuff that you can to do. 461* Misc Group Stuff:: Other stuff that you can to do.
458 462
459Group Buffer Format 463Group Buffer Format
@@ -493,6 +497,7 @@ Summary Buffer
493* Asynchronous Fetching:: Gnus might be able to pre-fetch articles. 497* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
494* Article Caching:: You may store articles in a cache. 498* Article Caching:: You may store articles in a cache.
495* Persistent Articles:: Making articles expiry-resistant. 499* Persistent Articles:: Making articles expiry-resistant.
500* Sticky Articles:: Article buffers that are not reused.
496* Article Backlog:: Having already read articles hang around. 501* Article Backlog:: Having already read articles hang around.
497* Saving Articles:: Ways of customizing article saving. 502* Saving Articles:: Ways of customizing article saving.
498* Decoding Articles:: Gnus can treat series of (uu)encoded articles. 503* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
@@ -646,6 +651,7 @@ Getting News
646* Direct Functions:: Connecting directly to the server. 651* Direct Functions:: Connecting directly to the server.
647* Indirect Functions:: Connecting indirectly to the server. 652* Indirect Functions:: Connecting indirectly to the server.
648* Common Variables:: Understood by several connection functions. 653* Common Variables:: Understood by several connection functions.
654* NNTP marks:: Storing marks for @acronym{NNTP} servers.
649 655
650Getting Mail 656Getting Mail
651 657
@@ -749,6 +755,7 @@ Gnus Unplugged
749* Agent as Cache:: The Agent is a big cache too. 755* Agent as Cache:: The Agent is a big cache too.
750* Agent Expiry:: How to make old articles go away. 756* Agent Expiry:: How to make old articles go away.
751* Agent Regeneration:: How to recover from lost connections and other accidents. 757* Agent Regeneration:: How to recover from lost connections and other accidents.
758* Agent and flags:: How the Agent maintains flags.
752* Agent and IMAP:: How to use the Agent with @acronym{IMAP}. 759* Agent and IMAP:: How to use the Agent with @acronym{IMAP}.
753* Outgoing Messages:: What happens when you post/mail something? 760* Outgoing Messages:: What happens when you post/mail something?
754* Agent Variables:: Customizing is fun. 761* Agent Variables:: Customizing is fun.
@@ -784,17 +791,9 @@ Scoring
784* Global Score Files:: Earth-spanning, ear-splitting score files. 791* Global Score Files:: Earth-spanning, ear-splitting score files.
785* Kill Files:: They are still here, but they can be ignored. 792* Kill Files:: They are still here, but they can be ignored.
786* Converting Kill Files:: Translating kill files to score files. 793* Converting Kill Files:: Translating kill files to score files.
787* GroupLens:: Getting predictions on what you like to read.
788* Advanced Scoring:: Using logical expressions to build score rules. 794* Advanced Scoring:: Using logical expressions to build score rules.
789* Score Decays:: It can be useful to let scores wither away. 795* Score Decays:: It can be useful to let scores wither away.
790 796
791GroupLens
792
793* Using GroupLens:: How to make Gnus use GroupLens.
794* Rating Articles:: Letting GroupLens know how you rate articles.
795* Displaying Predictions:: Displaying predictions given by GroupLens.
796* GroupLens Variables:: Customizing GroupLens.
797
798Advanced Scoring 797Advanced Scoring
799 798
800* Advanced Scoring Syntax:: A definition. 799* Advanced Scoring Syntax:: A definition.
@@ -901,6 +900,7 @@ New Features
901* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. 900* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
902* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. 901* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
903* Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11. 902* Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11.
903* No Gnus:: Very punny.
904 904
905Customization 905Customization
906 906
@@ -1067,6 +1067,11 @@ you would typically set this variable to
1067(setq gnus-secondary-select-methods '((nnmbox ""))) 1067(setq gnus-secondary-select-methods '((nnmbox "")))
1068@end lisp 1068@end lisp
1069 1069
1070Note: the @acronym{NNTP} back end stores marks in marks files
1071(@pxref{NNTP marks}). This feature makes it easy to share marks between
1072several Gnus installations, but may slow down things a bit when fetching
1073new articles. @xref{NNTP marks}, for more information.
1074
1070 1075
1071@node The First Time 1076@node The First Time
1072@section The First Time 1077@section The First Time
@@ -1718,6 +1723,7 @@ long as Gnus is active.
1718* Browse Foreign Server:: You can browse a server. See what it has to offer. 1723* Browse Foreign Server:: You can browse a server. See what it has to offer.
1719* Exiting Gnus:: Stop reading news and get some work done. 1724* Exiting Gnus:: Stop reading news and get some work done.
1720* Group Topics:: A folding group mode divided into topics. 1725* Group Topics:: A folding group mode divided into topics.
1726* Non-ASCII Group Names:: Accessing groups of non-English names.
1721* Misc Group Stuff:: Other stuff that you can to do. 1727* Misc Group Stuff:: Other stuff that you can to do.
1722@end menu 1728@end menu
1723 1729
@@ -1819,8 +1825,15 @@ the true unread message count is not possible efficiently. For
1819hysterical raisins, even the mail back ends, where the true number of 1825hysterical raisins, even the mail back ends, where the true number of
1820unread messages might be available efficiently, use the same limited 1826unread messages might be available efficiently, use the same limited
1821interface. To remove this restriction from Gnus means that the back 1827interface. To remove this restriction from Gnus means that the back
1822end interface has to be changed, which is not an easy job. If you 1828end interface has to be changed, which is not an easy job.
1823want to work on this, please contact the Gnus mailing list. 1829
1830The nnml backend (@pxref{Mail Spool}) has a feature called ``group
1831compaction'' which circumvents this deficiency: the idea is to
1832renumber all articles from 1, removing all gaps between numbers, hence
1833getting a correct total count. Other backends may support this in the
1834future. In order to keep your total article count relatively up to
1835date, you might want to compact your groups (or even directly your
1836server) from time to time. @xref{Misc Group Stuff}, @xref{Server Commands}.
1824 1837
1825@item y 1838@item y
1826Number of unread, unticked, non-dormant articles. 1839Number of unread, unticked, non-dormant articles.
@@ -1886,6 +1899,12 @@ the group lately.
1886A string that says when you last read the group (@pxref{Group 1899A string that says when you last read the group (@pxref{Group
1887Timestamp}). 1900Timestamp}).
1888 1901
1902@item F
1903The disk space used by the articles fetched by both the cache and
1904agent. The value is automatically scaled to bytes(B), kilobytes(K),
1905megabytes(M), or gigabytes(G) to minimize the column width. A format
1906of %7F is sufficient for a fixed-width column.
1907
1889@item u 1908@item u
1890User defined specifier. The next character in the format string should 1909User defined specifier. The next character in the format string should
1891be a letter. Gnus will call the function 1910be a letter. Gnus will call the function
@@ -2071,6 +2090,11 @@ commands will move to the next group, not the next unread group. Even
2071the commands that say they move to the next unread group. The default 2090the commands that say they move to the next unread group. The default
2072is @code{t}. 2091is @code{t}.
2073 2092
2093@vindex gnus-summary-next-group-on-exit
2094If @code{gnus-summary-next-group-on-exit} is @code{t}, when a summary is
2095exited, the point in the group buffer is moved to the next unread group.
2096Otherwise, the point is set to the group just exited. The default is
2097@code{t}.
2074 2098
2075@node Selecting a Group 2099@node Selecting a Group
2076@section Selecting a Group 2100@section Selecting a Group
@@ -2988,6 +3012,15 @@ like this in the group parameters:
2988 (signature "Funky Signature")) 3012 (signature "Funky Signature"))
2989@end example 3013@end example
2990 3014
3015If you're using topics to organize your group buffer
3016(@pxref{Group Topics}), note that posting styles can also be set in
3017the topics parameters. Posting styles in topic parameters apply to all
3018groups in this topic. More precisely, the posting-style settings for a
3019group result from the hierarchical merging of all posting-style
3020entries in the parameters of this group and all the topics it belongs
3021to.
3022
3023
2991@item post-method 3024@item post-method
2992@cindex post-method 3025@cindex post-method
2993If it is set, the value is used as the method for posting message 3026If it is set, the value is used as the method for posting message
@@ -3014,11 +3047,25 @@ translating the group parameter into a Sieve script (@pxref{Sieve
3014Commands}) the following Sieve code is generated: 3047Commands}) the following Sieve code is generated:
3015 3048
3016@example 3049@example
3017if address \"sender\" \"sieve-admin@@extundo.com\" @{ 3050if address "sender" "sieve-admin@@extundo.com" @{
3018 fileinto \"INBOX.list.sieve\"; 3051 fileinto "INBOX.list.sieve";
3052@}
3053@end example
3054
3055To generate tests for multiple email-addresses use a group parameter
3056like @code{(sieve address "sender" ("name@@one.org" else@@two.org"))}.
3057When generating a sieve script (@pxref{Sieve Commands}) Sieve code
3058like the following is generated:
3059
3060@example
3061if address "sender" ["name@@one.org", "else@@two.org"] @{
3062 fileinto "INBOX.list.sieve";
3019@} 3063@}
3020@end example 3064@end example
3021 3065
3066See @pxref{Sieve Commands} for commands and variables that might be of
3067interest in relation to the sieve parameter.
3068
3022The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve, 3069The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve,
3023Top, sieve, Emacs Sieve}. 3070Top, sieve, Emacs Sieve}.
3024 3071
@@ -3132,6 +3179,33 @@ value of the @code{gnus-parameters-case-fold-search} variable to
3132@code{nil}. Otherwise, set it to @code{t} if you want to compare them 3179@code{nil}. Otherwise, set it to @code{t} if you want to compare them
3133always in a case-insensitive manner. 3180always in a case-insensitive manner.
3134 3181
3182You can define different sorting to different groups via
3183@code{gnus-parameters}. Here is an example to sort an @acronym{NNTP}
3184group by reverse date to see the latest news at the top and an
3185@acronym{RSS} group by subject. In this example, the first group is the
3186Debian daily news group @code{gmane.linux.debian.user.news} from
3187news.gmane.org. The @acronym{RSS} group corresponds to the Debian
3188weekly news RSS feed
3189@url{http://packages.debian.org/unstable/newpkg_main.en.rdf},
3190@xref{RSS}.
3191
3192@lisp
3193(setq
3194 gnus-parameters
3195 '(("nntp.*gmane\\.debian\\.user\\.news"
3196 (gnus-show-threads nil)
3197 (gnus-article-sort-functions '((not gnus-article-sort-by-date)))
3198 (gnus-use-adaptive-scoring nil)
3199 (gnus-use-scoring nil))
3200 ("nnrss.*debian"
3201 (gnus-show-threads nil)
3202 (gnus-article-sort-functions 'gnus-article-sort-by-subject)
3203 (gnus-use-adaptive-scoring nil)
3204 (gnus-use-scoring t)
3205 (gnus-score-find-score-files-function 'gnus-score-find-single)
3206 (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
3207@end lisp
3208
3135 3209
3136@node Listing Groups 3210@node Listing Groups
3137@section Listing Groups 3211@section Listing Groups
@@ -3847,7 +3921,7 @@ Go to the next topic (@code{gnus-topic-goto-next-topic}).
3847@item T M-p 3921@item T M-p
3848@kindex T M-p (Topic) 3922@kindex T M-p (Topic)
3849@findex gnus-topic-goto-previous-topic 3923@findex gnus-topic-goto-previous-topic
3850Go to the next topic (@code{gnus-topic-goto-previous-topic}). 3924Go to the previous topic (@code{gnus-topic-goto-previous-topic}).
3851 3925
3852@item G p 3926@item G p
3853@kindex G p (Topic) 3927@kindex G p (Topic)
@@ -4086,6 +4160,132 @@ happen. In fact, I hereby declare that it is @dfn{undefined} what
4086happens. You just have to be careful if you do stuff like that. 4160happens. You just have to be careful if you do stuff like that.
4087 4161
4088 4162
4163@node Non-ASCII Group Names
4164@section Accessing groups of non-English names
4165@cindex non-ascii group names
4166
4167There are some news servers that provide groups of which the names are
4168expressed with their native languages in the world. For instance, in a
4169certain news server there are some newsgroups of which the names are
4170spelled in Chinese, where people are talking in Chinese. You can, of
4171course, subscribe to such news groups using Gnus. Currently Gnus
4172supports non-@acronym{ASCII} group names not only with the @code{nntp}
4173back end but also with the @code{nnml} back end and the @code{nnrss}
4174back end.
4175
4176Every such group name is encoded by a certain charset in the server
4177side (in an @acronym{NNTP} server its administrator determines the
4178charset, but for groups in the other back ends it is determined by you).
4179Gnus has to display the decoded ones for you in the group buffer and the
4180article buffer, and needs to use the encoded ones when communicating
4181with servers. However, Gnus doesn't know what charset is used for each
4182non-@acronym{ASCII} group name. The following two variables are just
4183the ones for telling Gnus what charset should be used for each group:
4184
4185@table @code
4186@item gnus-group-name-charset-method-alist
4187@vindex gnus-group-name-charset-method-alist
4188An alist of select methods and charsets. The default value is
4189@code{nil}. The names of groups in the server specified by that select
4190method are all supposed to use the corresponding charset. For example:
4191
4192@lisp
4193(setq gnus-group-name-charset-method-alist
4194 '(((nntp "news.com.cn") . cn-gb-2312)))
4195@end lisp
4196
4197Charsets specified for groups with this variable are preferred to the
4198ones specified for the same groups with the
4199@code{gnus-group-name-charset-group-alist} variable (see below).
4200
4201A select method can be very long, like:
4202
4203@lisp
4204(nntp "gmane"
4205 (nntp-address "news.gmane.org")
4206 (nntp-end-of-line "\n")
4207 (nntp-open-connection-function
4208 nntp-open-via-rlogin-and-telnet)
4209 (nntp-via-rlogin-command "ssh")
4210 (nntp-via-rlogin-command-switches
4211 ("-C" "-t" "-e" "none"))
4212 (nntp-via-address @dots{}))
4213@end lisp
4214
4215In that case, you can truncate it into @code{(nntp "gmane")} in this
4216variable. That is, it is enough to contain only the back end name and
4217the server name.
4218
4219@item gnus-group-name-charset-group-alist
4220@cindex UTF-8 group names
4221@vindex gnus-group-name-charset-group-alist
4222An alist of regexp of group name and the charset for group names.
4223@code{((".*" . utf-8))} is the default value if UTF-8 is supported,
4224otherwise the default is @code{nil}. For example:
4225
4226@lisp
4227(setq gnus-group-name-charset-group-alist
4228 '(("\\.com\\.cn:" . cn-gb-2312)
4229 (".*" . utf-8)))
4230@end lisp
4231
4232Note that this variable is ignored if the match is made with
4233@code{gnus-group-name-charset-method-alist}.
4234@end table
4235
4236Those two variables are used also to determine the charset for encoding
4237and decoding non-@acronym{ASCII} group names that are in the back ends
4238other than @code{nntp}. It means that it is you who determine it. If
4239you do nothing, the charset used for group names in those back ends will
4240all be @code{utf-8} because of the last element of
4241@code{gnus-group-name-charset-group-alist}.
4242
4243There is one more important variable for non-@acronym{ASCII} group
4244names. @emph{XEmacs users must set this}. Emacs users necessarily need
4245not do:
4246
4247@table @code
4248@item nnmail-pathname-coding-system
4249The value of this variable should be a coding system or @code{nil}
4250(which is the default). The @code{nnml} back end, the @code{nnrss} back
4251end, the @acronym{NNTP} marks feature (@pxref{NNTP marks}), the agent,
4252and the cache use non-@acronym{ASCII} group names in those files and
4253directories. This variable overrides the value of
4254@code{file-name-coding-system} which specifies the coding system used
4255when encoding and decoding those file names and directory names.
4256
4257In XEmacs (with the @code{mule} feature), @code{file-name-coding-system}
4258is the only means to specify the coding system used to encode and decode
4259file names. Therefore, @emph{you, XEmacs users, have to set it} to the
4260coding system that is suitable to encode and decode non-@acronym{ASCII}
4261group names. On the other hand, Emacs uses the value of
4262@code{default-file-name-coding-system} if @code{file-name-coding-system}
4263is @code{nil}. Normally the value of
4264@code{default-file-name-coding-system} is initialized according to the
4265locale, so you will need to do nothing if the value is suitable to
4266encode and decode non-@acronym{ASCII} group names.
4267
4268The value of this variable (or @code{default-file-name-coding-system})
4269does not necessarily need to be the same value that is determined by
4270@code{gnus-group-name-charset-method-alist} and
4271@code{gnus-group-name-charset-group-alist}.
4272
4273If you want to subscribe to the groups spelled in Chinese but
4274@code{default-file-name-coding-system} is initialized by default to
4275@code{iso-latin-1} for example, that is the most typical case where you
4276have to set @code{nnmail-pathname-coding-system} even if you are an
4277Emacs user. The @code{utf-8} coding system is a good candidate for it.
4278Otherwise, you may change the locale in your system so that
4279@code{default-file-name-coding-system} may be initialized to an
4280appropriate value, instead of specifying this variable.
4281@end table
4282
4283Note that when you copy or move articles from a non-@acronym{ASCII}
4284group to another group, the charset used to encode and decode group
4285names should be the same in both groups. Otherwise the Newsgroups
4286header will be displayed incorrectly in the article buffer.
4287
4288
4089@node Misc Group Stuff 4289@node Misc Group Stuff
4090@section Misc Group Stuff 4290@section Misc Group Stuff
4091 4291
@@ -4152,6 +4352,15 @@ sending them over the network: they're just saved directly to the group
4152in question. The corresponding back end must have a request-post method 4352in question. The corresponding back end must have a request-post method
4153for this to work though. 4353for this to work though.
4154 4354
4355@item G z
4356@kindex G z (Group)
4357@findex gnus-group-compact-group
4358
4359Compact the group under point (@code{gnus-group-compact-group}).
4360Currently implemented only in nnml (@pxref{Mail Spool}). This removes
4361gaps between article numbers, hence getting a correct total article
4362count.
4363
4155@end table 4364@end table
4156 4365
4157Variables for the group buffer: 4366Variables for the group buffer:
@@ -4179,31 +4388,6 @@ generated. It may be used to move point around, for instance.
4179Groups matching this regexp will always be listed in the group buffer, 4388Groups matching this regexp will always be listed in the group buffer,
4180whether they are empty or not. 4389whether they are empty or not.
4181 4390
4182@item gnus-group-name-charset-method-alist
4183@vindex gnus-group-name-charset-method-alist
4184An alist of method and the charset for group names. It is used to show
4185non-@acronym{ASCII} group names.
4186
4187For example:
4188@lisp
4189(setq gnus-group-name-charset-method-alist
4190 '(((nntp "news.com.cn") . cn-gb-2312)))
4191@end lisp
4192
4193@item gnus-group-name-charset-group-alist
4194@cindex UTF-8 group names
4195@vindex gnus-group-name-charset-group-alist
4196An alist of regexp of group name and the charset for group names. It
4197is used to show non-@acronym{ASCII} group names. @code{((".*"
4198utf-8))} is the default value if UTF-8 is supported, otherwise the
4199default is @code{nil}.
4200
4201For example:
4202@lisp
4203(setq gnus-group-name-charset-group-alist
4204 '(("\\.com\\.cn:" . cn-gb-2312)))
4205@end lisp
4206
4207@end table 4391@end table
4208 4392
4209@node Scanning New Messages 4393@node Scanning New Messages
@@ -4536,6 +4720,7 @@ command or better use it as a prefix key. For example:
4536* Asynchronous Fetching:: Gnus might be able to pre-fetch articles. 4720* Asynchronous Fetching:: Gnus might be able to pre-fetch articles.
4537* Article Caching:: You may store articles in a cache. 4721* Article Caching:: You may store articles in a cache.
4538* Persistent Articles:: Making articles expiry-resistant. 4722* Persistent Articles:: Making articles expiry-resistant.
4723* Sticky Articles:: Article buffers that are not reused.
4539* Article Backlog:: Having already read articles hang around. 4724* Article Backlog:: Having already read articles hang around.
4540* Saving Articles:: Ways of customizing article saving. 4725* Saving Articles:: Ways of customizing article saving.
4541* Decoding Articles:: Gnus can treat series of (uu)encoded articles. 4726* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
@@ -4838,6 +5023,13 @@ summary line spec returns the @code{To}, @code{Newsreader} or
4838@code{From} header, the value of the @code{To} or @code{Newsreader} 5023@code{From} header, the value of the @code{To} or @code{Newsreader}
4839headers are used instead. 5024headers are used instead.
4840 5025
5026To distinguish regular articles from those where the @code{From} field
5027has been swapped, a string is prefixed to the @code{To} or
5028@code{Newsgroups} header in the summary line. By default the string is
5029@samp{-> } for @code{To} and @samp{=> } for @code{Newsgroups}, you can
5030customize these strings with @code{gnus-summary-to-prefix} and
5031@code{gnus-summary-newsgroup-prefix}.
5032
4841@end enumerate 5033@end enumerate
4842 5034
4843@vindex nnmail-extra-headers 5035@vindex nnmail-extra-headers
@@ -6362,6 +6554,27 @@ Limit the summary buffer to articles that match some author
6362(@code{gnus-summary-limit-to-author}). If given a prefix, exclude 6554(@code{gnus-summary-limit-to-author}). If given a prefix, exclude
6363matching articles. 6555matching articles.
6364 6556
6557@item / R
6558@kindex / R (Summary)
6559@findex gnus-summary-limit-to-recipient
6560Limit the summary buffer to articles that match some recipient
6561(@code{gnus-summary-limit-to-recipient}). If given a prefix, exclude
6562matching articles.
6563
6564@item / A
6565@kindex / A (Summary)
6566@findex gnus-summary-limit-to-address
6567Limit the summary buffer to articles in which contents of From, To or Cc
6568header match a given address (@code{gnus-summary-limit-to-address}). If
6569given a prefix, exclude matching articles.
6570
6571@item / S
6572@kindex / S (Summary)
6573@findex gnus-summary-limit-to-singletons
6574Limit the summary buffer to articles that aren't part of any displayed
6575threads (@code{gnus-summary-limit-to-singletons}). If given a prefix,
6576limit to articles that are part of displayed threads.
6577
6365@item / x 6578@item / x
6366@kindex / x (Summary) 6579@kindex / x (Summary)
6367@findex gnus-summary-limit-to-extra 6580@findex gnus-summary-limit-to-extra
@@ -6427,6 +6640,13 @@ group parameter predicate
6427(@code{gnus-summary-limit-to-display-predicate}). @xref{Group 6640(@code{gnus-summary-limit-to-display-predicate}). @xref{Group
6428Parameters}, for more on this predicate. 6641Parameters}, for more on this predicate.
6429 6642
6643@item / r
6644@kindex / r (Summary)
6645@findex gnus-summary-limit-to-replied
6646Limit the summary buffer to replied articles
6647(@code{gnus-summary-limit-to-replied}). If given a prefix, exclude
6648replied articles.
6649
6430@item / E 6650@item / E
6431@itemx M S 6651@itemx M S
6432@kindex M S (Summary) 6652@kindex M S (Summary)
@@ -6488,6 +6708,20 @@ if @var{back-end}@code{-get-new-mail} is non-@code{nil}.
6488Insert all old articles in the summary buffer. If given a numbered 6708Insert all old articles in the summary buffer. If given a numbered
6489prefix, fetch this number of articles. 6709prefix, fetch this number of articles.
6490 6710
6711@item / b
6712@kindex / b (Summary)
6713@findex gnus-summary-limit-to-bodies
6714Limit the summary buffer to articles that have bodies that match a
6715certain regexp (@code{gnus-summary-limit-to-bodies}). If given a
6716prefix, reverse the limit. This command is quite slow since it
6717requires selecting each article to find the matches.
6718
6719@item / h
6720@kindex / h (Summary)
6721@findex gnus-summary-limit-to-headers
6722Like the previous command, only limit to headers instead
6723(@code{gnus-summary-limit-to-headers}).
6724
6491@end table 6725@end table
6492 6726
6493 6727
@@ -6988,6 +7222,12 @@ summary buffer is otherwise unthreaded.
6988Make the current article the child of the marked (or previous) article 7222Make the current article the child of the marked (or previous) article
6989(@code{gnus-summary-reparent-thread}). 7223(@code{gnus-summary-reparent-thread}).
6990 7224
7225@item T M-^
7226@kindex T M-^ (Summary)
7227@findex gnus-summary-reparent-children
7228Make the current article the parent of the marked articles
7229(@code{gnus-summary-reparent-children}).
7230
6991@end table 7231@end table
6992 7232
6993The following commands are thread movement commands. They all 7233The following commands are thread movement commands. They all
@@ -7052,6 +7292,7 @@ Matching}).
7052@findex gnus-thread-sort-by-score 7292@findex gnus-thread-sort-by-score
7053@findex gnus-thread-sort-by-subject 7293@findex gnus-thread-sort-by-subject
7054@findex gnus-thread-sort-by-author 7294@findex gnus-thread-sort-by-author
7295@findex gnus-thread-sort-by-recipient
7055@findex gnus-thread-sort-by-number 7296@findex gnus-thread-sort-by-number
7056@findex gnus-thread-sort-by-random 7297@findex gnus-thread-sort-by-random
7057@vindex gnus-thread-sort-functions 7298@vindex gnus-thread-sort-functions
@@ -7064,8 +7305,10 @@ function, a list of functions, or a list containing functions and
7064 7305
7065By default, sorting is done on article numbers. Ready-made sorting 7306By default, sorting is done on article numbers. Ready-made sorting
7066predicate functions include @code{gnus-thread-sort-by-number}, 7307predicate functions include @code{gnus-thread-sort-by-number},
7067@code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject}, 7308@code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-recipient},
7068@code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, 7309@code{gnus-thread-sort-by-subject},
7310@code{gnus-thread-sort-by-date},
7311@code{gnus-thread-sort-by-score},
7069@code{gnus-thread-sort-by-most-recent-number}, 7312@code{gnus-thread-sort-by-most-recent-number},
7070@code{gnus-thread-sort-by-most-recent-date}, 7313@code{gnus-thread-sort-by-most-recent-date},
7071@code{gnus-thread-sort-by-random} and 7314@code{gnus-thread-sort-by-random} and
@@ -7103,8 +7346,7 @@ say something like:
7103 7346
7104@lisp 7347@lisp
7105(setq gnus-thread-sort-functions 7348(setq gnus-thread-sort-functions
7106 '((lambda (t1 t2) 7349 '((not gnus-thread-sort-by-number)
7107 (not (gnus-thread-sort-by-number t1 t2)))
7108 gnus-thread-sort-by-score)) 7350 gnus-thread-sort-by-score))
7109@end lisp 7351@end lisp
7110 7352
@@ -7141,6 +7383,8 @@ say something like:
7141 gnus-article-sort-by-subject)) 7383 gnus-article-sort-by-subject))
7142@end lisp 7384@end lisp
7143 7385
7386You can define group specific sorting via @code{gnus-parameters},
7387@xref{Group Parameters}.
7144 7388
7145 7389
7146@node Asynchronous Fetching 7390@node Asynchronous Fetching
@@ -7362,6 +7606,53 @@ interested in persistent articles:
7362(setq gnus-use-cache 'passive) 7606(setq gnus-use-cache 'passive)
7363@end lisp 7607@end lisp
7364 7608
7609@node Sticky Articles
7610@section Sticky Articles
7611@cindex sticky articles
7612
7613When you select an article the current article buffer will be reused
7614according to the value of the variable
7615@code{gnus-single-article-buffer}. If its value is non-@code{nil} (the
7616default) all articles reuse the same article buffer. Else each group
7617has its own article buffer.
7618
7619This implies that it's not possible to have more than one article buffer
7620in a group at a time. But sometimes you might want to display all the
7621latest emails from your mother, your father, your aunt, your uncle and
7622your 17 cousins to coordinate the next christmas party.
7623
7624That's where sticky articles come in handy. A sticky article buffer
7625basically is a normal article buffer, but it won't be reused when you
7626select another article. You can make an article sticky with:
7627
7628@table @kbd
7629@item A S
7630@kindex A S (Summary)
7631@findex gnus-sticky-article
7632Make the current article sticky. If a prefix arg is given, ask for a
7633name for this sticky article buffer.
7634@end table
7635
7636To close a sticky article buffer you can use these commands:
7637
7638@table @kbd
7639@item q
7640@kindex q (Article)
7641@findex bury-buffer
7642Puts this sticky article buffer at the end of the list of all buffers.
7643
7644@item k
7645@kindex k (Article)
7646@findex gnus-kill-sticky-article-buffer
7647Kills this sticky article buffer.
7648@end table
7649
7650To kill all sticky article buffers you can use:
7651
7652@defun gnus-kill-sticky-article-buffers ARG
7653Kill all sticky article buffers.
7654If a prefix ARG is given, ask for confirmation.
7655@end defun
7365 7656
7366@node Article Backlog 7657@node Article Backlog
7367@section Article Backlog 7658@section Article Backlog
@@ -8555,6 +8846,16 @@ is rumored to have employed this form of, uh, somewhat weak encryption.
8555@findex gnus-summary-morse-message 8846@findex gnus-summary-morse-message
8556Morse decode the article buffer (@code{gnus-summary-morse-message}). 8847Morse decode the article buffer (@code{gnus-summary-morse-message}).
8557 8848
8849@item W i
8850@kindex W i (Summary)
8851@findex gnus-summary-idna-message
8852Decode IDNA encoded domain names in the current articles. IDNA
8853encoded domain names looks like @samp{xn--bar}. If a string remain
8854unencoded after running invoking this, it is likely an invalid IDNA
8855string (@samp{xn--bar} is invalid). You must have GNU Libidn
8856(@url{http://www.gnu.org/software/libidn/}) installed for this command
8857to work.
8858
8558@item W t 8859@item W t
8559@item t 8860@item t
8560@kindex W t (Summary) 8861@kindex W t (Summary)
@@ -8657,9 +8958,9 @@ CRs into LF (this takes care of Mac line endings)
8657Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). 8958Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
8658Quoted-Printable is one common @acronym{MIME} encoding employed when 8959Quoted-Printable is one common @acronym{MIME} encoding employed when
8659sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically 8960sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically
8660makes strings like @samp{déjà vu} look like @samp{d=E9j=E0 vu}, which 8961makes strings like @samp{d@'ej@`a vu} look like @samp{d=E9j=E0 vu},
8661doesn't look very readable to me. Note that this is usually done 8962which doesn't look very readable to me. Note that this is usually
8662automatically by Gnus if the message in question has a 8963done automatically by Gnus if the message in question has a
8663@code{Content-Transfer-Encoding} header that says that this encoding 8964@code{Content-Transfer-Encoding} header that says that this encoding
8664has been done. If a prefix is given, a charset will be asked for. 8965has been done. If a prefix is given, a charset will be asked for.
8665 8966
@@ -8680,6 +8981,14 @@ Treat HZ or HZP (@code{gnus-article-decode-HZ}). HZ (or HZP) is one
8680common encoding employed when sending Chinese articles. It typically 8981common encoding employed when sending Chinese articles. It typically
8681makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}. 8982makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}.
8682 8983
8984@item W A
8985@kindex W A (Summary)
8986@findex gnus-article-treat-ansi-sequences
8987@cindex @acronym{ANSI} control sequences
8988Translate @acronym{ANSI} SGR control sequences into overlays or
8989extents (@code{gnus-article-treat-ansi-sequences}). @acronym{ANSI}
8990sequences are used in some Chinese hierarchies for highlighting.
8991
8683@item W u 8992@item W u
8684@kindex W u (Summary) 8993@kindex W u (Summary)
8685@findex gnus-article-unsplit-urls 8994@findex gnus-article-unsplit-urls
@@ -9307,7 +9616,7 @@ Translate the article from one language to another
9307@cindex viewing attachments 9616@cindex viewing attachments
9308 9617
9309The following commands all understand the numerical prefix. For 9618The following commands all understand the numerical prefix. For
9310instance, @kbd{3 b} means ``view the third @acronym{MIME} part''. 9619instance, @kbd{3 K v} means ``view the third @acronym{MIME} part''.
9311 9620
9312@table @kbd 9621@table @kbd
9313@item b 9622@item b
@@ -9320,6 +9629,21 @@ View the @acronym{MIME} part.
9320@kindex K o (Summary) 9629@kindex K o (Summary)
9321Save the @acronym{MIME} part. 9630Save the @acronym{MIME} part.
9322 9631
9632@item K O
9633@kindex K O (Summary)
9634Prompt for a file name, then save the @acronym{MIME} part and strip it
9635from the article. The stripped @acronym{MIME} object will be referred
9636via the message/external-body @acronym{MIME} type.
9637
9638@item K r
9639@kindex K r (Summary)
9640Replace the @acronym{MIME} part with an external body.
9641
9642@item K d
9643@kindex K d (Summary)
9644Delete the @acronym{MIME} part and add some information about the
9645removed part.
9646
9323@item K c 9647@item K c
9324@kindex K c (Summary) 9648@kindex K c (Summary)
9325Copy the @acronym{MIME} part. 9649Copy the @acronym{MIME} part.
@@ -9677,6 +10001,11 @@ Sort by article number (@code{gnus-summary-sort-by-number}).
9677@findex gnus-summary-sort-by-author 10001@findex gnus-summary-sort-by-author
9678Sort by author (@code{gnus-summary-sort-by-author}). 10002Sort by author (@code{gnus-summary-sort-by-author}).
9679 10003
10004@item C-c C-s C-t
10005@kindex C-c C-s C-t (Summary)
10006@findex gnus-summary-sort-by-recipient
10007Sort by recipient (@code{gnus-summary-sort-by-recipient}).
10008
9680@item C-c C-s C-s 10009@item C-c C-s C-s
9681@kindex C-c C-s C-s (Summary) 10010@kindex C-c C-s C-s (Summary)
9682@findex gnus-summary-sort-by-subject 10011@findex gnus-summary-sort-by-subject
@@ -10401,6 +10730,18 @@ Search through all subsequent (raw) articles for a regexp
10401Search through all previous (raw) articles for a regexp 10730Search through all previous (raw) articles for a regexp
10402(@code{gnus-summary-search-article-backward}). 10731(@code{gnus-summary-search-article-backward}).
10403 10732
10733@item M-S
10734@kindex M-S (Summary)
10735@findex gnus-summary-repeat-search-article-forward
10736Repeat the previous search forwards
10737(@code{gnus-summary-repeat-search-article-forward}).
10738
10739@item M-R
10740@kindex M-R (Summary)
10741@findex gnus-summary-repeat-search-article-backward
10742Repeat the previous search backwards
10743(@code{gnus-summary-repeat-search-article-backward}).
10744
10404@item & 10745@item &
10405@kindex & (Summary) 10746@kindex & (Summary)
10406@findex gnus-summary-execute-command 10747@findex gnus-summary-execute-command
@@ -10442,6 +10783,12 @@ Pull all cached articles (for the current group) into the summary buffer
10442Pull all dormant articles (for the current group) into the summary buffer 10783Pull all dormant articles (for the current group) into the summary buffer
10443(@code{gnus-summary-insert-dormant-articles}). 10784(@code{gnus-summary-insert-dormant-articles}).
10444 10785
10786@item Y t
10787@kindex Y t (Summary)
10788@findex gnus-summary-insert-ticked-articles
10789Pull all ticked articles (for the current group) into the summary buffer
10790(@code{gnus-summary-insert-ticked-articles}).
10791
10445@end table 10792@end table
10446 10793
10447 10794
@@ -10464,6 +10811,28 @@ whenever you see a message that is a collection of other messages of
10464some format, you @kbd{C-d} and read these messages in a more convenient 10811some format, you @kbd{C-d} and read these messages in a more convenient
10465fashion. 10812fashion.
10466 10813
10814@vindex gnus-auto-select-on-ephemeral-exit
10815The variable @code{gnus-auto-select-on-ephemeral-exit} controls what
10816article should be selected after exiting a digest group. Valid values
10817include:
10818
10819@table @code
10820@item next
10821Select the next article.
10822
10823@item next-unread
10824Select the next unread article.
10825
10826@item next-noselect
10827Move the cursor to the next article. This is the default.
10828
10829@item next-unread-noselect
10830Move the cursor to the next unread article.
10831@end table
10832
10833If it has any other value or there is no next (unread) article, the
10834article selected before entering to the digest group will appear.
10835
10467@item C-M-d 10836@item C-M-d
10468@kindex C-M-d (Summary) 10837@kindex C-M-d (Summary)
10469@findex gnus-summary-read-document 10838@findex gnus-summary-read-document
@@ -10562,6 +10931,12 @@ Mark all articles, even the ticked ones, as read and then exit
10562Mark all articles as read and go to the next group 10931Mark all articles as read and go to the next group
10563(@code{gnus-summary-catchup-and-goto-next-group}). 10932(@code{gnus-summary-catchup-and-goto-next-group}).
10564 10933
10934@item Z p
10935@kindex Z p (Summary)
10936@findex gnus-summary-catchup-and-goto-prev-group
10937Mark all articles as read and go to the previous group
10938(@code{gnus-summary-catchup-and-goto-prev-group}).
10939
10565@item Z R 10940@item Z R
10566@itemx C-x C-s 10941@itemx C-x C-s
10567@kindex Z R (Summary) 10942@kindex Z R (Summary)
@@ -10891,7 +11266,7 @@ Send a message to the mailing list owner, if List-Owner field exists.
10891 11266
10892@item C-c C-n a 11267@item C-c C-n a
10893@kindex C-c C-n a (Summary) 11268@kindex C-c C-n a (Summary)
10894@findex gnus-mailing-list-owner 11269@findex gnus-mailing-list-archive
10895Browse the mailing list archive, if List-Archive field exists. 11270Browse the mailing list archive, if List-Archive field exists.
10896 11271
10897@end table 11272@end table
@@ -11111,6 +11486,13 @@ like. The stripped @acronym{MIME} object will be referred via the
11111message/external-body @acronym{MIME} type. 11486message/external-body @acronym{MIME} type.
11112(@code{gnus-mime-save-part-and-strip}). 11487(@code{gnus-mime-save-part-and-strip}).
11113 11488
11489@findex gnus-mime-replace-part
11490@item r (Article)
11491@kindex r (Article)
11492Prompt for a file name, replace the @acronym{MIME} object with an
11493external body refering to the file via the message/external-body
11494@acronym{MIME} type. (@code{gnus-mime-replace-part}).
11495
11114@findex gnus-mime-delete-part 11496@findex gnus-mime-delete-part
11115@item d (Article) 11497@item d (Article)
11116@kindex d (Article) 11498@kindex d (Article)
@@ -11118,11 +11500,16 @@ Delete the @acronym{MIME} object from the article and replace it with some
11118information about the removed @acronym{MIME} object 11500information about the removed @acronym{MIME} object
11119(@code{gnus-mime-delete-part}). 11501(@code{gnus-mime-delete-part}).
11120 11502
11503@c FIXME: gnus-auto-select-part should be documented here
11504
11121@findex gnus-mime-copy-part 11505@findex gnus-mime-copy-part
11122@item c (Article) 11506@item c (Article)
11123@kindex c (Article) 11507@kindex c (Article)
11124Copy the @acronym{MIME} object to a fresh buffer and display this buffer 11508Copy the @acronym{MIME} object to a fresh buffer and display this buffer
11125(@code{gnus-mime-copy-part}). Compressed files like @file{.gz} and 11509(@code{gnus-mime-copy-part}). If given a prefix, copy the raw contents
11510without decoding. If given a numerical prefix, you can do semi-manual
11511charset stuff (see @code{gnus-summary-show-article-charset-alist} in
11512@ref{Paging the Article}). Compressed files like @file{.gz} and
11126@file{.bz2} are automatically decompressed if 11513@file{.bz2} are automatically decompressed if
11127@code{auto-compression-mode} is enabled (@pxref{Compressed Files,, 11514@code{auto-compression-mode} is enabled (@pxref{Compressed Files,,
11128Accessing Compressed Files, emacs, The Emacs Editor}). 11515Accessing Compressed Files, emacs, The Emacs Editor}).
@@ -11142,7 +11529,10 @@ Insert the contents of the @acronym{MIME} object into the buffer
11142the raw contents without decoding. If given a numerical prefix, you can 11529the raw contents without decoding. If given a numerical prefix, you can
11143do semi-manual charset stuff (see 11530do semi-manual charset stuff (see
11144@code{gnus-summary-show-article-charset-alist} in @ref{Paging the 11531@code{gnus-summary-show-article-charset-alist} in @ref{Paging the
11145Article}). 11532Article}). Compressed files like @file{.gz} and @file{.bz2} are
11533automatically decompressed depending on @code{jka-compr} regardless of
11534@code{auto-compression-mode} (@pxref{Compressed Files,, Accessing
11535Compressed Files, emacs, The Emacs Editor}).
11146 11536
11147@findex gnus-mime-view-part-internally 11537@findex gnus-mime-view-part-internally
11148@item E (Article) 11538@item E (Article)
@@ -11217,7 +11607,10 @@ for sensible values.
11217@code{head}: Do the treatment on the headers. 11607@code{head}: Do the treatment on the headers.
11218 11608
11219@item 11609@item
11220@code{last}: Do this treatment on the last part. 11610@code{first}: Do this treatment on the first body part.
11611
11612@item
11613@code{last}: Do this treatment on the last body part.
11221 11614
11222@item 11615@item
11223An integer: Do this treatment on all body parts that have a length less 11616An integer: Do this treatment on all body parts that have a length less
@@ -11322,7 +11715,7 @@ possible but those listed are probably sufficient for most people.
11322@item gnus-treat-overstrike (t, integer) 11715@item gnus-treat-overstrike (t, integer)
11323@item gnus-treat-strip-cr (t, integer) 11716@item gnus-treat-strip-cr (t, integer)
11324@item gnus-treat-strip-headers-in-body (t, integer) 11717@item gnus-treat-strip-headers-in-body (t, integer)
11325@item gnus-treat-strip-leading-blank-lines (t, integer) 11718@item gnus-treat-strip-leading-blank-lines (t, first, integer)
11326@item gnus-treat-strip-multiple-blank-lines (t, integer) 11719@item gnus-treat-strip-multiple-blank-lines (t, integer)
11327@item gnus-treat-strip-pem (t, last, integer) 11720@item gnus-treat-strip-pem (t, last, integer)
11328@item gnus-treat-strip-trailing-blank-lines (t, last, integer) 11721@item gnus-treat-strip-trailing-blank-lines (t, last, integer)
@@ -11403,6 +11796,7 @@ is controlled by @code{gnus-body-boundary-delimiter}.
11403@item gnus-treat-play-sounds 11796@item gnus-treat-play-sounds
11404@vindex gnus-treat-translate 11797@vindex gnus-treat-translate
11405@item gnus-treat-translate 11798@item gnus-treat-translate
11799@item gnus-treat-ansi-sequences (t)
11406@vindex gnus-treat-x-pgp-sig 11800@vindex gnus-treat-x-pgp-sig
11407@item gnus-treat-x-pgp-sig (head) 11801@item gnus-treat-x-pgp-sig (head)
11408 11802
@@ -11615,7 +12009,8 @@ This is the delimiter mentioned above. By default, it is @samp{^L}
11615@item gnus-use-idna 12009@item gnus-use-idna
11616This variable controls whether Gnus performs IDNA decoding of 12010This variable controls whether Gnus performs IDNA decoding of
11617internationalized domain names inside @samp{From}, @samp{To} and 12011internationalized domain names inside @samp{From}, @samp{To} and
11618@samp{Cc} headers. This requires 12012@samp{Cc} headers. @xref{IDNA, ,IDNA,message, The Message Manual},
12013for how to compose such messages. This requires
11619@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this 12014@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this
11620variable is only enabled if you have installed it. 12015variable is only enabled if you have installed it.
11621 12016
@@ -11873,6 +12268,10 @@ you're in, you could say something like the following:
11873 12268
11874Modify to suit your needs. 12269Modify to suit your needs.
11875 12270
12271@vindex gnus-message-highlight-citation
12272If @code{gnus-message-highlight-citation} is t, different levels of
12273citations are highlighted like in Gnus article buffers also in message
12274mode buffers.
11876 12275
11877@node Archived Messages 12276@node Archived Messages
11878@section Archived Messages 12277@section Archived Messages
@@ -11891,7 +12290,8 @@ Group Commands}).
11891 12290
11892@vindex gnus-message-archive-method 12291@vindex gnus-message-archive-method
11893@code{gnus-message-archive-method} says what virtual server Gnus is to 12292@code{gnus-message-archive-method} says what virtual server Gnus is to
11894use to store sent messages. The default is: 12293use to store sent messages. The default is @code{"archive"}, and when
12294actually being used it is expanded into:
11895 12295
11896@lisp 12296@lisp
11897(nnfolder "archive" 12297(nnfolder "archive"
@@ -11901,6 +12301,22 @@ use to store sent messages. The default is:
11901 (nnfolder-inhibit-expiry t)) 12301 (nnfolder-inhibit-expiry t))
11902@end lisp 12302@end lisp
11903 12303
12304@quotation
12305@vindex gnus-update-message-archive-method
12306Note: a server like this is saved in the @file{~/.newsrc.eld} file first
12307so that it may be used as a real method of the server which is named
12308@code{"archive"} (that is, for the case where
12309@code{gnus-message-archive-method} is set to @code{"archive"}) ever
12310since. If it once has been saved, it will never be updated by default
12311even if you change the value of @code{gnus-message-archive-method}
12312afterward. Therefore, the server @code{"archive"} doesn't necessarily
12313mean the @code{nnfolder} server like this at all times. If you want the
12314saved method to reflect always the value of
12315@code{gnus-message-archive-method}, set the
12316@code{gnus-update-message-archive-method} variable to a non-@code{nil}
12317value. The default value of this variable is @code{nil}.
12318@end quotation
12319
11904You can, however, use any mail select method (@code{nnml}, 12320You can, however, use any mail select method (@code{nnml},
11905@code{nnmbox}, etc.). @code{nnfolder} is a quite likable select method 12321@code{nnmbox}, etc.). @code{nnfolder} is a quite likable select method
11906for doing this sort of thing, though. If you don't like the default 12322for doing this sort of thing, though. If you don't like the default
@@ -12104,6 +12520,9 @@ name can be one of:
12104@item @code{body} 12520@item @code{body}
12105@end itemize 12521@end itemize
12106 12522
12523Note that the @code{signature-file} attribute honors the variable
12524@code{message-signature-directory}.
12525
12107The attribute name can also be a string or a symbol. In that case, 12526The attribute name can also be a string or a symbol. In that case,
12108this will be used as a header name, and the value will be inserted in 12527this will be used as a header name, and the value will be inserted in
12109the headers of the article; if the value is @code{nil}, the header 12528the headers of the article; if the value is @code{nil}, the header
@@ -12535,6 +12954,15 @@ Request that the server regenerate all its data structures
12535(@code{gnus-server-regenerate-server}). This can be useful if you have 12954(@code{gnus-server-regenerate-server}). This can be useful if you have
12536a mail back end that has gotten out of sync. 12955a mail back end that has gotten out of sync.
12537 12956
12957@item z
12958@kindex z (Server)
12959@findex gnus-server-compact-server
12960
12961Compact all groups in the server under point
12962(@code{gnus-server-compact-server}). Currently implemented only in
12963nnml (@pxref{Mail Spool}). This removes gaps between article numbers,
12964hence getting a correct total article count.
12965
12538@end table 12966@end table
12539 12967
12540 12968
@@ -12616,7 +13044,19 @@ configuration to the example above:
12616 (nntp-via-rlogin-command "ssh") 13044 (nntp-via-rlogin-command "ssh")
12617@end lisp 13045@end lisp
12618 13046
12619See also @code{nntp-via-rlogin-command-switches}. 13047See also @code{nntp-via-rlogin-command-switches}. Here's an example for
13048an indirect connection:
13049@lisp
13050(setq gnus-select-method
13051 '(nntp "indirect"
13052 (nntp-address "news.server.example")
13053 (nntp-via-user-name "intermediate_user_name")
13054 (nntp-via-address "intermediate.host.example")
13055 (nntp-via-rlogin-command "ssh")
13056 (nntp-end-of-line "\n")
13057 (nntp-via-rlogin-command-switches ("-C" "-t" "-e" "none"))
13058 (nntp-open-connection-function nntp-open-via-rlogin-and-telnet)))
13059@end lisp
12620 13060
12621If you're behind a firewall, but have direct access to the outside world 13061If you're behind a firewall, but have direct access to the outside world
12622through a wrapper command like "runsocks", you could open a socksified 13062through a wrapper command like "runsocks", you could open a socksified
@@ -13006,9 +13446,9 @@ that doesn't seem to work.
13006It is possible to customize how the connection to the nntp server will 13446It is possible to customize how the connection to the nntp server will
13007be opened. If you specify an @code{nntp-open-connection-function} 13447be opened. If you specify an @code{nntp-open-connection-function}
13008parameter, Gnus will use that function to establish the connection. 13448parameter, Gnus will use that function to establish the connection.
13009Six pre-made functions are supplied. These functions can be grouped in 13449Seven pre-made functions are supplied. These functions can be grouped
13010two categories: direct connection functions (four pre-made), and 13450in two categories: direct connection functions (four pre-made), and
13011indirect ones (two pre-made). 13451indirect ones (three pre-made).
13012 13452
13013@item nntp-never-echoes-commands 13453@item nntp-never-echoes-commands
13014@vindex nntp-never-echoes-commands 13454@vindex nntp-never-echoes-commands
@@ -13049,6 +13489,7 @@ INN versions 2.3.0 and later, for instance.
13049* Direct Functions:: Connecting directly to the server. 13489* Direct Functions:: Connecting directly to the server.
13050* Indirect Functions:: Connecting indirectly to the server. 13490* Indirect Functions:: Connecting indirectly to the server.
13051* Common Variables:: Understood by several connection functions. 13491* Common Variables:: Understood by several connection functions.
13492* NNTP marks:: Storing marks for @acronym{NNTP} servers.
13052@end menu 13493@end menu
13053 13494
13054 13495
@@ -13158,6 +13599,41 @@ the telnet command requires a pseudo-tty allocation on an intermediate
13158host. 13599host.
13159@end table 13600@end table
13160 13601
13602Note that you may want to change the value for @code{nntp-end-of-line}
13603to @samp{\n} (@pxref{Common Variables}).
13604
13605@item nntp-open-via-rlogin-and-netcat
13606@findex nntp-open-via-rlogin-and-netcat
13607Does essentially the same, but uses
13608@uref{http://netcat.sourceforge.net/, netcat} instead of @samp{telnet}
13609to connect to the real @acronym{NNTP} server from the intermediate host.
13610
13611@code{nntp-open-via-rlogin-and-netcat}-specific variables:
13612
13613@table @code
13614@item nntp-via-netcat-command
13615@vindex nntp-via-netcat-command
13616Command used to connect to the real @acronym{NNTP} server from the
13617intermediate host. The default is @samp{nc}. You can also use other
13618programs like @uref{http://www.imasy.or.jp/~gotoh/ssh/connect.html,
13619connect} instead.
13620
13621@item nntp-via-netcat-switches
13622@vindex nntp-via-netcat-switches
13623List of strings to be used as the switches to the
13624@code{nntp-via-telnet-command} command. The default is @code{nil}.
13625
13626@item nntp-via-rlogin-command
13627@vindex nntp-via-rlogin-command
13628Command used to log in on the intermediate host. The default is
13629@samp{rsh}, but @samp{ssh} is a popular alternative.
13630
13631@item nntp-via-rlogin-command-switches
13632@vindex nntp-via-rlogin-command-switches
13633List of strings to be used as the switches to
13634@code{nntp-via-rlogin-command}. The default is @code{nil}.
13635@end table
13636
13161@item nntp-open-via-telnet-and-telnet 13637@item nntp-open-via-telnet-and-telnet
13162@findex nntp-open-via-telnet-and-telnet 13638@findex nntp-open-via-telnet-and-telnet
13163Does essentially the same, but uses @samp{telnet} instead of 13639Does essentially the same, but uses @samp{telnet} instead of
@@ -13193,6 +13669,8 @@ is @samp{bash\\|\$ *\r?$\\|> *\r?}.
13193 13669
13194@end table 13670@end table
13195 13671
13672Note that you may want to change the value for @code{nntp-end-of-line}
13673to @samp{\n} (@pxref{Common Variables}).
13196@end table 13674@end table
13197 13675
13198 13676
@@ -13247,7 +13725,7 @@ not work with named ports.
13247@vindex nntp-end-of-line 13725@vindex nntp-end-of-line
13248String to use as end-of-line marker when talking to the @acronym{NNTP} 13726String to use as end-of-line marker when talking to the @acronym{NNTP}
13249server. This is @samp{\r\n} by default, but should be @samp{\n} when 13727server. This is @samp{\r\n} by default, but should be @samp{\n} when
13250using a non native connection function. 13728using a non native telnet connection function.
13251 13729
13252@item nntp-telnet-command 13730@item nntp-telnet-command
13253@vindex nntp-telnet-command 13731@vindex nntp-telnet-command
@@ -13263,6 +13741,52 @@ is @samp{("-8")}.
13263 13741
13264@end table 13742@end table
13265 13743
13744@node NNTP marks
13745@subsubsection NNTP marks
13746@cindex storing NNTP marks
13747
13748Gnus stores marks (@pxref{Marking Articles}) for @acronym{NNTP}
13749servers in marks files. A marks file records what marks you have set
13750in a group and each file is specific to the corresponding server.
13751Marks files are stored in @file{~/News/marks}
13752(@code{nntp-marks-directory}) under a classic hierarchy resembling
13753that of a news server, for example marks for the group
13754@samp{gmane.discuss} on the news.gmane.org server will be stored in
13755the file @file{~/News/marks/news.gmane.org/gmane/discuss/.marks}.
13756
13757Marks files are useful because you can copy the @file{~/News/marks}
13758directory (using rsync, scp or whatever) to another Gnus installation,
13759and it will realize what articles you have read and marked. The data
13760in @file{~/News/marks} has priority over the same data in
13761@file{~/.newsrc.eld}.
13762
13763Note that marks files are very much server-specific: Gnus remembers
13764the article numbers so if you don't use the same servers on both
13765installations things are most likely to break (most @acronym{NNTP}
13766servers do not use the same article numbers as any other server).
13767However, if you use servers A, B, C on one installation and servers A,
13768D, E on the other, you can sync the marks files for A and then you'll
13769get synchronization for that server between the two installations.
13770
13771Using @acronym{NNTP} marks can possibly incur a performance penalty so
13772if Gnus feels sluggish, try setting the @code{nntp-marks-is-evil}
13773variable to @code{t}. Marks will then be stored in @file{~/.newsrc.eld}.
13774
13775Related variables:
13776
13777@table @code
13778
13779@item nntp-marks-is-evil
13780@vindex nntp-marks-is-evil
13781If non-@code{nil}, this back end will ignore any marks files. The
13782default is @code{nil}.
13783
13784@item nntp-marks-directory
13785@vindex nntp-marks-directory
13786The directory where marks for nntp groups will be stored.
13787
13788@end table
13789
13266 13790
13267@node News Spool 13791@node News Spool
13268@subsection News Spool 13792@subsection News Spool
@@ -13926,7 +14450,9 @@ mapped into the @code{imap-shell-program} variable. This should be a
13926ssh %s imapd 14450ssh %s imapd
13927@end example 14451@end example
13928 14452
13929The valid format specifier characters are: 14453Make sure nothing is interfering with the output of the program, e.g.,
14454don't forget to redirect the error output to the void. The valid format
14455specifier characters are:
13930 14456
13931@table @samp 14457@table @samp
13932@item s 14458@item s
@@ -14342,7 +14868,7 @@ body of the messages:
14342The buffer is narrowed to the message in question when @var{function} 14868The buffer is narrowed to the message in question when @var{function}
14343is run. That's why @code{(widen)} needs to be called after 14869is run. That's why @code{(widen)} needs to be called after
14344@code{save-excursion} and @code{save-restriction} in the example 14870@code{save-excursion} and @code{save-restriction} in the example
14345above. Also note that with the nnimap backend, message bodies will 14871above. Also note that with the nnimap back end, message bodies will
14346not be downloaded by default. You need to set 14872not be downloaded by default. You need to set
14347@code{nnimap-split-download-body} to @code{t} to do that 14873@code{nnimap-split-download-body} to @code{t} to do that
14348(@pxref{Splitting in IMAP}). 14874(@pxref{Splitting in IMAP}).
@@ -14956,12 +15482,16 @@ This can also be done non-destructively with
14956@findex nnmail-remove-tabs 15482@findex nnmail-remove-tabs
14957Translate all @samp{TAB} characters into @samp{SPACE} characters. 15483Translate all @samp{TAB} characters into @samp{SPACE} characters.
14958 15484
14959@item nnmail-fix-eudora-headers 15485@item nnmail-ignore-broken-references
14960@findex nnmail-fix-eudora-headers 15486@findex nnmail-ignore-broken-references
15487@c @findex nnmail-fix-eudora-headers
14961@cindex Eudora 15488@cindex Eudora
14962Eudora produces broken @code{References} headers, but OK 15489@cindex Pegasus
14963@code{In-Reply-To} headers. This function will get rid of the 15490Some mail user agents (e.g. Eudora and Pegasus) produce broken
14964@code{References} headers. 15491@code{References} headers, but correct @code{In-Reply-To} headers. This
15492function will get rid of the @code{References} header if the headers
15493contain a line matching the regular expression
15494@code{nnmail-broken-references-mailers}.
14965 15495
14966@end table 15496@end table
14967 15497
@@ -15186,7 +15716,7 @@ When the marks file is used (which it is by default), @code{nnml}
15186servers have the property that you may backup them using @code{tar} or 15716servers have the property that you may backup them using @code{tar} or
15187similar, and later be able to restore them into Gnus (by adding the 15717similar, and later be able to restore them into Gnus (by adding the
15188proper @code{nnml} server) and have all your marks be preserved. Marks 15718proper @code{nnml} server) and have all your marks be preserved. Marks
15189for a group is usually stored in the @code{.marks} file (but see 15719for a group are usually stored in the @code{.marks} file (but see
15190@code{nnml-marks-file-name}) within each @code{nnml} group's directory. 15720@code{nnml-marks-file-name}) within each @code{nnml} group's directory.
15191Individual @code{nnml} groups are also possible to backup, use @kbd{G m} 15721Individual @code{nnml} groups are also possible to backup, use @kbd{G m}
15192to restore the group (after restoring the backup into the nnml 15722to restore the group (after restoring the backup into the nnml
@@ -15245,7 +15775,18 @@ The name of the @dfn{marks} files. The default is @file{.marks}.
15245@item nnml-use-compressed-files 15775@item nnml-use-compressed-files
15246@vindex nnml-use-compressed-files 15776@vindex nnml-use-compressed-files
15247If non-@code{nil}, @code{nnml} will allow using compressed message 15777If non-@code{nil}, @code{nnml} will allow using compressed message
15248files. 15778files. This requires @code{auto-compression-mode} to be enabled
15779(@pxref{Compressed Files, ,Compressed Files, emacs, The Emacs Manual}).
15780If the value of @code{nnml-use-compressed-files} is a string, it is used
15781as the file extension specifying the compression program. You can set it
15782to @samp{.bz2} if your Emacs supports it. A value of @code{t} is
15783equivalent to @samp{.gz}.
15784
15785@item nnml-compressed-files-size-threshold
15786@vindex nnml-compressed-files-size-threshold
15787Default size threshold for compressed message files. Message files with
15788bodies larger than that many characters will be automatically compressed
15789if @code{nnml-use-compressed-files} is non-@code{nil}.
15249 15790
15250@end table 15791@end table
15251 15792
@@ -15958,7 +16499,7 @@ group as read.
15958 16499
15959If the search engine changes its output substantially, @code{nnweb} 16500If the search engine changes its output substantially, @code{nnweb}
15960won't be able to parse it and will fail. One could hardly fault the Web 16501won't be able to parse it and will fail. One could hardly fault the Web
15961providers if they were to do this---their @emph{raison d'être} is to 16502providers if they were to do this---their @emph{raison d'@^etre} is to
15962make money off of advertisements, not to provide services to the 16503make money off of advertisements, not to provide services to the
15963community. Since @code{nnweb} washes the ads off all the articles, one 16504community. Since @code{nnweb} washes the ads off all the articles, one
15964might think that the providers might be somewhat miffed. We'll see. 16505might think that the providers might be somewhat miffed. We'll see.
@@ -16238,6 +16779,15 @@ data files. The default is the value of
16238@code{mm-universal-coding-system} (which defaults to @code{emacs-mule} 16779@code{mm-universal-coding-system} (which defaults to @code{emacs-mule}
16239in Emacs or @code{escape-quoted} in XEmacs). 16780in Emacs or @code{escape-quoted} in XEmacs).
16240 16781
16782@item nnrss-ignore-article-fields
16783@vindex nnrss-ignore-article-fields
16784Some feeds update constantly article fields during their publications,
16785e.g. to indicate the number of comments. However, if there is
16786a difference between the local article and the distant one, the latter
16787is considered to be new. To avoid this and discard some fields, set this
16788variable to the list of fields to be ignored. The default is
16789@code{'(slash:comments)}.
16790
16241@item nnrss-use-local 16791@item nnrss-use-local
16242@vindex nnrss-use-local 16792@vindex nnrss-use-local
16243@findex nnrss-generate-download-script 16793@findex nnrss-generate-download-script
@@ -16275,7 +16825,7 @@ summary buffer.
16275@lisp 16825@lisp
16276(require 'browse-url) 16826(require 'browse-url)
16277 16827
16278(defun browse-nnrss-url( arg ) 16828(defun browse-nnrss-url (arg)
16279 (interactive "p") 16829 (interactive "p")
16280 (let ((url (assq nnrss-url-field 16830 (let ((url (assq nnrss-url-field
16281 (mail-header-extra 16831 (mail-header-extra
@@ -16529,8 +17079,10 @@ to OpenSSL/SSLeay.
16529 17079
16530@vindex imap-shell-program 17080@vindex imap-shell-program
16531@vindex imap-shell-host 17081@vindex imap-shell-host
16532For @acronym{IMAP} connections using the @code{shell} stream, the variable 17082For @acronym{IMAP} connections using the @code{shell} stream, the
16533@code{imap-shell-program} specify what program to call. 17083variable @code{imap-shell-program} specify what program to call. Make
17084sure nothing is interfering with the output of the program, e.g., don't
17085forget to redirect the error output to the void.
16534 17086
16535@item nnimap-authenticator 17087@item nnimap-authenticator
16536@vindex nnimap-authenticator 17088@vindex nnimap-authenticator
@@ -16709,6 +17261,30 @@ messages, you start cursing Gnus for being so slow. On the other hand,
16709if you get a lot of email within a week, setting this variable will 17261if you get a lot of email within a week, setting this variable will
16710cause a lot of network traffic between Gnus and the IMAP server. 17262cause a lot of network traffic between Gnus and the IMAP server.
16711 17263
17264@item nnimap-logout-timeout
17265@vindex nnimap-logout-timeout
17266
17267There is a case where a connection to a @acronym{IMAP} server is unable
17268to close, when connecting to the server via a certain kind of network,
17269e.g. @acronym{VPN}. In that case, it will be observed that a connection
17270between Emacs and the local network looks alive even if the server has
17271closed a connection for some reason (typically, a timeout).
17272Consequently, Emacs continues waiting for a response from the server for
17273the @code{LOGOUT} command that Emacs sent, or hangs in other words. If
17274you are in such a network, setting this variable to a number of seconds
17275will be helpful. If it is set, a hung connection will be closed
17276forcibly, after this number of seconds from the time Emacs sends the
17277@code{LOGOUT} command. It should not be too small value but too large
17278value will be inconvenient too. Perhaps the value 1.0 will be a good
17279candidate but it might be worth trying some other values.
17280
17281Example server specification:
17282
17283@lisp
17284(nnimap "mail.server.com"
17285 (nnimap-logout-timeout 1.0))
17286@end lisp
17287
16712@end table 17288@end table
16713 17289
16714@menu 17290@menu
@@ -18350,7 +18926,8 @@ functionality up to the newsreader makes sense if you're the only person
18350reading news on a machine. 18926reading news on a machine.
18351 18927
18352Setting up Gnus as an ``offline'' newsreader is quite simple. In 18928Setting up Gnus as an ``offline'' newsreader is quite simple. In
18353fact, you don't even have to configure anything. 18929fact, you don't have to configure anything as the agent is now enabled
18930by default (@pxref{Agent Variables, gnus-agent}).
18354 18931
18355Of course, to use it as such, you have to learn a few new commands. 18932Of course, to use it as such, you have to learn a few new commands.
18356 18933
@@ -18362,6 +18939,7 @@ Of course, to use it as such, you have to learn a few new commands.
18362* Agent as Cache:: The Agent is a big cache too. 18939* Agent as Cache:: The Agent is a big cache too.
18363* Agent Expiry:: How to make old articles go away. 18940* Agent Expiry:: How to make old articles go away.
18364* Agent Regeneration:: How to recover from lost connections and other accidents. 18941* Agent Regeneration:: How to recover from lost connections and other accidents.
18942* Agent and flags:: How the Agent maintains flags.
18365* Agent and IMAP:: How to use the Agent with @acronym{IMAP}. 18943* Agent and IMAP:: How to use the Agent with @acronym{IMAP}.
18366* Outgoing Messages:: What happens when you post/mail something? 18944* Outgoing Messages:: What happens when you post/mail something?
18367* Agent Variables:: Customizing is fun. 18945* Agent Variables:: Customizing is fun.
@@ -18526,55 +19104,46 @@ listed below.
18526 19104
18527@cindex Agent Parameters 19105@cindex Agent Parameters
18528@table @code 19106@table @code
18529@item gnus-agent-cat-name 19107@item agent-groups
18530The name of the category.
18531
18532@item gnus-agent-cat-groups
18533The list of groups that are in this category. 19108The list of groups that are in this category.
18534 19109
18535@item gnus-agent-cat-predicate 19110@item agent-predicate
18536A predicate which (generally) gives a rough outline of which articles 19111A predicate which (generally) gives a rough outline of which articles
18537are eligible for downloading; and 19112are eligible for downloading; and
18538 19113
18539@item gnus-agent-cat-score-file 19114@item agent-score
18540a score rule which (generally) gives you a finer granularity when 19115a score rule which (generally) gives you a finer granularity when
18541deciding what articles to download. (Note that this @dfn{download 19116deciding what articles to download. (Note that this @dfn{download
18542score} is not necessarily related to normal scores.) 19117score} is not necessarily related to normal scores.)
18543 19118
18544@item gnus-agent-cat-enable-expiration 19119@item agent-enable-expiration
18545a boolean indicating whether the agent should expire old articles in 19120a boolean indicating whether the agent should expire old articles in
18546this group. Most groups should be expired to conserve disk space. In 19121this group. Most groups should be expired to conserve disk space. In
18547fact, its probably safe to say that the gnus.* hierarchy contains the 19122fact, its probably safe to say that the gnus.* hierarchy contains the
18548only groups that should not be expired. 19123only groups that should not be expired.
18549 19124
18550@item gnus-agent-cat-days-until-old 19125@item agent-days-until-old
18551an integer indicating the number of days that the agent should wait 19126an integer indicating the number of days that the agent should wait
18552before deciding that a read article is safe to expire. 19127before deciding that a read article is safe to expire.
18553 19128
18554@item gnus-agent-cat-low-score 19129@item agent-low-score
18555an integer that overrides the value of @code{gnus-agent-low-score}. 19130an integer that overrides the value of @code{gnus-agent-low-score}.
18556 19131
18557@item gnus-agent-cat-high-score 19132@item agent-high-score
18558an integer that overrides the value of @code{gnus-agent-high-score}. 19133an integer that overrides the value of @code{gnus-agent-high-score}.
18559 19134
18560@item gnus-agent-cat-length-when-short 19135@item agent-short-article
18561an integer that overrides the value of 19136an integer that overrides the value of
18562@code{gnus-agent-short-article}. 19137@code{gnus-agent-short-article}.
18563 19138
18564@item gnus-agent-cat-length-when-long 19139@item agent-long-article
18565an integer that overrides the value of @code{gnus-agent-long-article}. 19140an integer that overrides the value of @code{gnus-agent-long-article}.
18566 19141
18567@c @item gnus-agent-cat-disable-undownloaded-faces 19142@item agent-enable-undownloaded-faces
18568@c a symbol indicating whether the summary buffer should @emph{not} display
18569@c undownloaded articles using the gnus-summary-*-undownloaded-face
18570@c faces. The symbol nil will enable the use of undownloaded faces while
18571@c all other symbols disable them.
18572
18573@item gnus-agent-cat-enable-undownloaded-faces
18574a symbol indicating whether the summary buffer should display 19143a symbol indicating whether the summary buffer should display
18575undownloaded articles using the gnus-summary-*-undownloaded-face 19144undownloaded articles using the @code{gnus-summary-*-undownloaded-face}
18576faces. The symbol nil will disable the use of undownloaded faces while 19145faces. Any symbol other than @code{nil} will enable the use of
18577all other symbols enable them. 19146undownloaded faces.
18578@end table 19147@end table
18579 19148
18580The name of a category can not be changed once the category has been 19149The name of a category can not be changed once the category has been
@@ -19079,9 +19648,9 @@ Download all eligible (@pxref{Agent Categories}) articles in this group.
19079 19648
19080@item J s 19649@item J s
19081@kindex J s (Agent Summary) 19650@kindex J s (Agent Summary)
19082@findex gnus-agent-fetch-series 19651@findex gnus-agent-summary-fetch-series
19083Download all processable articles in this group. 19652Download all processable articles in this group.
19084(@code{gnus-agent-fetch-series}). 19653(@code{gnus-agent-summary-fetch-series}).
19085 19654
19086@item J u 19655@item J u
19087@kindex J u (Agent Summary) 19656@kindex J u (Agent Summary)
@@ -19157,21 +19726,28 @@ If you use the Agent as a cache (to avoid downloading the same article
19157each time you visit it or to minimize your connection time), the 19726each time you visit it or to minimize your connection time), the
19158undownloaded face will probably seem like a good idea. The reason 19727undownloaded face will probably seem like a good idea. The reason
19159being that you do all of our work (marking, reading, deleting) with 19728being that you do all of our work (marking, reading, deleting) with
19160downloaded articles so the normal faces always appear. 19729downloaded articles so the normal faces always appear. For those
19161 19730users using the agent to improve online performance by caching the NOV
19162For occasional Agent users, the undownloaded faces may appear to be an 19731database (most users since 5.10.2), the undownloaded faces may appear
19163absolutely horrible idea. The issue being that, since most of their 19732to be an absolutely horrible idea. The issue being that, since none
19164articles have not been fetched into the Agent, most of the normal 19733of their articles have been fetched into the Agent, all of the
19165faces will be obscured by the undownloaded faces. If this is your 19734normal faces will be obscured by the undownloaded faces.
19166situation, you have two choices available. First, you can completely 19735
19167disable the undownload faces by customizing 19736If you would like to use the undownloaded faces, you must enable the
19168@code{gnus-summary-highlight} to delete the three cons-cells that 19737undownloaded faces by setting the @code{agent-enable-undownloaded-faces}
19169refer to the @code{gnus-summary-*-undownloaded-face} faces. Second, 19738group parameter to @code{t}. This parameter, like all other agent
19170if you prefer to take a more fine-grained approach, you may set the 19739parameters, may be set on an Agent Category (@pxref{Agent Categories}),
19171@code{agent-disable-undownloaded-faces} group parameter to @code{t}. 19740a Group Topic (@pxref{Topic Parameters}), or an individual group
19172This parameter, like all other agent parameters, may be set on an 19741(@pxref{Group Parameters}).
19173Agent Category (@pxref{Agent Categories}), a Group Topic (@pxref{Topic 19742
19174Parameters}), or an individual group (@pxref{Group Parameters}). 19743The one problem common to all users using the agent is how quickly it
19744can consume disk space. If you using the agent on many groups, it is
19745even more difficult to effectively recover disk space. One solution
19746is the @samp{%F} format available in @code{gnus-group-line-format}.
19747This format will display the actual disk space used by articles
19748fetched into both the agent and cache. By knowing which groups use
19749the most space, users know where to focus their efforts when ``agent
19750expiring'' articles.
19175 19751
19176@node Agent as Cache 19752@node Agent as Cache
19177@subsection Agent as Cache 19753@subsection Agent as Cache
@@ -19267,23 +19843,19 @@ then updates the internal data structures that document which articles
19267are stored locally. An optional argument will mark articles in the 19843are stored locally. An optional argument will mark articles in the
19268agent as unread. 19844agent as unread.
19269 19845
19270@node Agent and IMAP 19846@node Agent and flags
19271@subsection Agent and IMAP 19847@subsection Agent and flags
19272
19273The Agent works with any Gnus back end, including nnimap. However,
19274since there are some conceptual differences between @acronym{NNTP} and
19275@acronym{IMAP}, this section (should) provide you with some information to
19276make Gnus Agent work smoother as a @acronym{IMAP} Disconnected Mode client.
19277 19848
19278The first thing to keep in mind is that all flags (read, ticked, etc) 19849The Agent works with any Gnus back end including those, such as
19279are kept on the @acronym{IMAP} server, rather than in @file{.newsrc} as is the 19850nnimap, that store flags (read, ticked, etc) on the server. Sadly,
19280case for nntp. Thus Gnus need to remember flag changes when 19851the Agent does not actually know which backends keep their flags in
19281disconnected, and synchronize these flags when you plug back in. 19852the backend server rather than in @file{.newsrc}. This means that the
19853Agent, while unplugged or disconnected, will always record all changes
19854to the flags in its own files.
19282 19855
19283Gnus keeps track of flag changes when reading nnimap groups under the 19856When you plug back in, Gnus will then check to see if you have any
19284Agent. When you plug back in, Gnus will check if you have any changed 19857changed any flags and ask if you wish to synchronize these with the
19285any flags and ask if you wish to synchronize these with the server. 19858server. This behavior is customizable by @code{gnus-agent-synchronize-flags}.
19286The behavior is customizable by @code{gnus-agent-synchronize-flags}.
19287 19859
19288@vindex gnus-agent-synchronize-flags 19860@vindex gnus-agent-synchronize-flags
19289If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will 19861If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
@@ -19297,6 +19869,23 @@ re-connect, you can do it manually with the
19297@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y} 19869@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y}
19298in the group buffer. 19870in the group buffer.
19299 19871
19872Technical note: the synchronization algorithm does not work by ``pushing''
19873all local flags to the server, but rather by incrementally updated the
19874server view of flags by changing only those flags that were changed by
19875the user. Thus, if you set one flag on an article, quit the group then
19876re-select the group and remove the flag; the flag will be set and
19877removed from the server when you ``synchronize''. The queued flag
19878operations can be found in the per-server @code{flags} file in the Agent
19879directory. It's emptied when you synchronize flags.
19880
19881@node Agent and IMAP
19882@subsection Agent and IMAP
19883
19884The Agent works with any Gnus back end, including nnimap. However,
19885since there are some conceptual differences between @acronym{NNTP} and
19886@acronym{IMAP}, this section (should) provide you with some information to
19887make Gnus Agent work smoother as a @acronym{IMAP} Disconnected Mode client.
19888
19300Some things are currently not implemented in the Agent that you'd might 19889Some things are currently not implemented in the Agent that you'd might
19301expect from a disconnected @acronym{IMAP} client, including: 19890expect from a disconnected @acronym{IMAP} client, including:
19302 19891
@@ -19310,34 +19899,43 @@ Creating/deleting nnimap groups when unplugged.
19310 19899
19311@end itemize 19900@end itemize
19312 19901
19313Technical note: the synchronization algorithm does not work by ``pushing''
19314all local flags to the server, but rather incrementally update the
19315server view of flags by changing only those flags that were changed by
19316the user. Thus, if you set one flag on an article, quit the group and
19317re-select the group and remove the flag; the flag will be set and
19318removed from the server when you ``synchronize''. The queued flag
19319operations can be found in the per-server @code{flags} file in the Agent
19320directory. It's emptied when you synchronize flags.
19321
19322
19323@node Outgoing Messages 19902@node Outgoing Messages
19324@subsection Outgoing Messages 19903@subsection Outgoing Messages
19325 19904
19326When Gnus is unplugged, all outgoing messages (both mail and news) are 19905By default, when Gnus is unplugged, all outgoing messages (both mail
19327stored in the draft group ``queue'' (@pxref{Drafts}). You can view 19906and news) are stored in the draft group ``queue'' (@pxref{Drafts}).
19328them there after posting, and edit them at will. 19907You can view them there after posting, and edit them at will.
19329 19908
19330When Gnus is plugged again, you can send the messages either from the 19909You can control the circumstances under which outgoing mail is queued
19331draft group with the special commands available there, or you can use 19910(see @code{gnus-agent-queue-mail}, @pxref{Agent Variables}). Outgoing
19332the @kbd{J S} command in the group buffer to send all the sendable 19911news is always queued when Gnus is unplugged, and never otherwise.
19333messages in the draft group.
19334 19912
19913You can send the messages either from the draft group with the special
19914commands available there, or you can use the @kbd{J S} command in the
19915group buffer to send all the sendable messages in the draft group.
19916Posting news will only work when Gnus is plugged, but you can send
19917mail at any time.
19335 19918
19919If sending mail while unplugged does not work for you and you worry
19920about hitting @kbd{J S} by accident when unplugged, you can have Gnus
19921ask you to confirm your action (see
19922@code{gnus-agent-prompt-send-queue}, @pxref{Agent Variables}).
19336 19923
19337@node Agent Variables 19924@node Agent Variables
19338@subsection Agent Variables 19925@subsection Agent Variables
19339 19926
19340@table @code 19927@table @code
19928@item gnus-agent
19929@vindex gnus-agent
19930Is the agent enabled? The default is @code{t}. When first enabled,
19931the agent will use @code{gnus-agent-auto-agentize-methods} to
19932automatically mark some back ends as agentized. You may change which
19933back ends are agentized using the agent commands in the server buffer.
19934
19935To enter the server buffer, use the @kbd{^}
19936(@code{gnus-group-enter-server-mode}) command in the group buffer.
19937
19938
19341@item gnus-agent-directory 19939@item gnus-agent-directory
19342@vindex gnus-agent-directory 19940@vindex gnus-agent-directory
19343Where the Gnus Agent will store its files. The default is 19941Where the Gnus Agent will store its files. The default is
@@ -19384,6 +19982,14 @@ mark articles as unread after downloading. This is usually a safe
19384thing to do as the newly downloaded article has obviously not been 19982thing to do as the newly downloaded article has obviously not been
19385read. The default is @code{t}. 19983read. The default is @code{t}.
19386 19984
19985@item gnus-agent-synchronize-flags
19986@vindex gnus-agent-synchronize-flags
19987If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will
19988never automatically synchronize flags. If it is @code{ask}, which is
19989the default, the Agent will check if you made any changes and if so
19990ask if you wish to synchronize these when you re-connect. If it has
19991any other value, all flags will be synchronized automatically.
19992
19387@item gnus-agent-consider-all-articles 19993@item gnus-agent-consider-all-articles
19388@vindex gnus-agent-consider-all-articles 19994@vindex gnus-agent-consider-all-articles
19389If @code{gnus-agent-consider-all-articles} is non-@code{nil}, the 19995If @code{gnus-agent-consider-all-articles} is non-@code{nil}, the
@@ -19432,13 +20038,26 @@ have not been fetched), @code{always-undownloaded} (maneuvering always
19432ignores articles that have not been fetched), @code{unfetched} 20038ignores articles that have not been fetched), @code{unfetched}
19433(maneuvering ignores articles whose headers have not been fetched). 20039(maneuvering ignores articles whose headers have not been fetched).
19434 20040
20041@item gnus-agent-queue-mail
20042@vindex gnus-agent-queue-mail
20043When @code{gnus-agent-queue-mail} is @code{always}, Gnus will always
20044queue mail rather than sending it straight away. When @code{t}, Gnus
20045will queue mail when unplugged only. When @code{nil}, never queue
20046mail. The default is @code{t}.
20047
20048@item gnus-agent-prompt-send-queue
20049@vindex gnus-agent-prompt-send-queue
20050When @code{gnus-agent-prompt-send-queue} is non-@code{nil} Gnus will
20051prompt you to confirm that you really wish to proceed if you hit
20052@kbd{J S} while unplugged. The default is @code{nil}.
20053
19435@item gnus-agent-auto-agentize-methods 20054@item gnus-agent-auto-agentize-methods
19436@vindex gnus-agent-auto-agentize-methods 20055@vindex gnus-agent-auto-agentize-methods
19437If you have never used the Agent before (or more technically, if 20056If you have never used the Agent before (or more technically, if
19438@file{~/News/agent/lib/servers} does not exist), Gnus will 20057@file{~/News/agent/lib/servers} does not exist), Gnus will
19439automatically agentize a few servers for you. This variable control 20058automatically agentize a few servers for you. This variable control
19440which backends should be auto-agentized. It is typically only useful 20059which back ends should be auto-agentized. It is typically only useful
19441to agentize remote backends. The auto-agentizing has the same effect 20060to agentize remote back ends. The auto-agentizing has the same effect
19442as running @kbd{J a} on the servers (@pxref{Server Agent Commands}). 20061as running @kbd{J a} on the servers (@pxref{Server Agent Commands}).
19443If the file exist, you must manage the servers manually by adding or 20062If the file exist, you must manage the servers manually by adding or
19444removing them, this variable is only applicable the first time you 20063removing them, this variable is only applicable the first time you
@@ -19578,7 +20197,6 @@ silently to help keep the sizes of the score files down.
19578* Global Score Files:: Earth-spanning, ear-splitting score files. 20197* Global Score Files:: Earth-spanning, ear-splitting score files.
19579* Kill Files:: They are still here, but they can be ignored. 20198* Kill Files:: They are still here, but they can be ignored.
19580* Converting Kill Files:: Translating kill files to score files. 20199* Converting Kill Files:: Translating kill files to score files.
19581* GroupLens:: Getting predictions on what you like to read.
19582* Advanced Scoring:: Using logical expressions to build score rules. 20200* Advanced Scoring:: Using logical expressions to build score rules.
19583* Score Decays:: It can be useful to let scores wither away. 20201* Score Decays:: It can be useful to let scores wither away.
19584@end menu 20202@end menu
@@ -19849,6 +20467,12 @@ There aren't many of these as yet, I'm afraid.
19849 20467
19850@table @kbd 20468@table @kbd
19851 20469
20470@item W e
20471@kindex W e (Group)
20472@findex gnus-score-edit-all-score
20473Edit the apply-to-all-groups all.SCORE file. You will be popped into
20474a @code{gnus-score-mode} buffer (@pxref{Score File Editing}).
20475
19852@item W f 20476@item W f
19853@kindex W f (Group) 20477@kindex W f (Group)
19854@findex gnus-score-flush-cache 20478@findex gnus-score-flush-cache
@@ -20453,6 +21077,11 @@ The adaptive score entries will be put into a file where the name is the
20453group name with @code{gnus-adaptive-file-suffix} appended. The default 21077group name with @code{gnus-adaptive-file-suffix} appended. The default
20454is @file{ADAPT}. 21078is @file{ADAPT}.
20455 21079
21080@vindex gnus-adaptive-pretty-print
21081Adaptive score files can get huge and are not meant to be edited by
21082human hands. If @code{gnus-adaptive-pretty-print} is @code{nil} (the
21083deafult) those files will not be written in a human readable way.
21084
20456@vindex gnus-score-exact-adapt-limit 21085@vindex gnus-score-exact-adapt-limit
20457When doing adaptive scoring, substring or fuzzy matching would probably 21086When doing adaptive scoring, substring or fuzzy matching would probably
20458give you the best results in most cases. However, if the header one 21087give you the best results in most cases. However, if the header one
@@ -20705,6 +21334,13 @@ so: @kbd{I e s p To RET <your name> RET}.
20705 21334
20706See? Simple. 21335See? Simple.
20707 21336
21337@vindex gnus-inhibit-slow-scoring
21338You can inhibit scoring the slow scoring on headers or body by setting
21339the variable @code{gnus-inhibit-slow-scoring}. If
21340@code{gnus-inhibit-slow-scoring} is regexp, slow scoring is inhibited if
21341the group matches the regexp. If it is t, slow scoring on it is
21342inhibited for all groups.
21343
20708 21344
20709@node Scoring Tips 21345@node Scoring Tips
20710@section Scoring Tips 21346@section Scoring Tips
@@ -20967,205 +21603,6 @@ hand. Or just let them be as they are. Gnus will still use them as
20967before. 21603before.
20968 21604
20969 21605
20970@node GroupLens
20971@section GroupLens
20972@cindex GroupLens
20973
20974@sc{Note:} Unfortunately the GroupLens system seems to have shut down,
20975so this section is mostly of historical interest.
20976
20977@uref{http://www.cs.umn.edu/Research/GroupLens/, GroupLens} is a
20978collaborative filtering system that helps you work together with other
20979people to find the quality news articles out of the huge volume of
20980news articles generated every day.
20981
20982To accomplish this the GroupLens system combines your opinions about
20983articles you have already read with the opinions of others who have done
20984likewise and gives you a personalized prediction for each unread news
20985article. Think of GroupLens as a matchmaker. GroupLens watches how you
20986rate articles, and finds other people that rate articles the same way.
20987Once it has found some people you agree with it tells you, in the form
20988of a prediction, what they thought of the article. You can use this
20989prediction to help you decide whether or not you want to read the
20990article.
20991
20992@menu
20993* Using GroupLens:: How to make Gnus use GroupLens.
20994* Rating Articles:: Letting GroupLens know how you rate articles.
20995* Displaying Predictions:: Displaying predictions given by GroupLens.
20996* GroupLens Variables:: Customizing GroupLens.
20997@end menu
20998
20999
21000@node Using GroupLens
21001@subsection Using GroupLens
21002
21003To use GroupLens you must register a pseudonym with your local
21004@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html, Better Bit
21005Bureau (BBB)} is the only better bit in town at the moment.
21006
21007Once you have registered you'll need to set a couple of variables.
21008
21009@table @code
21010
21011@item gnus-use-grouplens
21012@vindex gnus-use-grouplens
21013Setting this variable to a non-@code{nil} value will make Gnus hook into
21014all the relevant GroupLens functions.
21015
21016@item grouplens-pseudonym
21017@vindex grouplens-pseudonym
21018This variable should be set to the pseudonym you got when registering
21019with the Better Bit Bureau.
21020
21021@item grouplens-newsgroups
21022@vindex grouplens-newsgroups
21023A list of groups that you want to get GroupLens predictions for.
21024
21025@end table
21026
21027That's the minimum of what you need to get up and running with GroupLens.
21028Once you've registered, GroupLens will start giving you scores for
21029articles based on the average of what other people think. But, to get
21030the real benefit of GroupLens you need to start rating articles
21031yourself. Then the scores GroupLens gives you will be personalized for
21032you, based on how the people you usually agree with have already rated.
21033
21034
21035@node Rating Articles
21036@subsection Rating Articles
21037
21038In GroupLens, an article is rated on a scale from 1 to 5, inclusive.
21039Where 1 means something like this article is a waste of bandwidth and 5
21040means that the article was really good. The basic question to ask
21041yourself is, ``on a scale from 1 to 5 would I like to see more articles
21042like this one?''
21043
21044There are four ways to enter a rating for an article in GroupLens.
21045
21046@table @kbd
21047
21048@item r
21049@kindex r (GroupLens)
21050@findex bbb-summary-rate-article
21051This function will prompt you for a rating on a scale of one to five.
21052
21053@item k
21054@kindex k (GroupLens)
21055@findex grouplens-score-thread
21056This function will prompt you for a rating, and rate all the articles in
21057the thread. This is really useful for some of those long running giant
21058threads in rec.humor.
21059
21060@end table
21061
21062The next two commands, @kbd{n} and @kbd{,} take a numerical prefix to be
21063the score of the article you're reading.
21064
21065@table @kbd
21066
21067@item 1-5 n
21068@kindex n (GroupLens)
21069@findex grouplens-next-unread-article
21070Rate the article and go to the next unread article.
21071
21072@item 1-5 ,
21073@kindex , (GroupLens)
21074@findex grouplens-best-unread-article
21075Rate the article and go to the next unread article with the highest score.
21076
21077@end table
21078
21079If you want to give the current article a score of 4 and then go to the
21080next article, just type @kbd{4 n}.
21081
21082
21083@node Displaying Predictions
21084@subsection Displaying Predictions
21085
21086GroupLens makes a prediction for you about how much you will like a
21087news article. The predictions from GroupLens are on a scale from 1 to
210885, where 1 is the worst and 5 is the best. You can use the predictions
21089from GroupLens in one of three ways controlled by the variable
21090@code{gnus-grouplens-override-scoring}.
21091
21092@vindex gnus-grouplens-override-scoring
21093There are three ways to display predictions in grouplens. You may
21094choose to have the GroupLens scores contribute to, or override the
21095regular Gnus scoring mechanism. override is the default; however, some
21096people prefer to see the Gnus scores plus the grouplens scores. To get
21097the separate scoring behavior you need to set
21098@code{gnus-grouplens-override-scoring} to @code{'separate}. To have the
21099GroupLens predictions combined with the grouplens scores set it to
21100@code{'override} and to combine the scores set
21101@code{gnus-grouplens-override-scoring} to @code{'combine}. When you use
21102the combine option you will also want to set the values for
21103@code{grouplens-prediction-offset} and
21104@code{grouplens-score-scale-factor}.
21105
21106@vindex grouplens-prediction-display
21107In either case, GroupLens gives you a few choices for how you would like
21108to see your predictions displayed. The display of predictions is
21109controlled by the @code{grouplens-prediction-display} variable.
21110
21111The following are valid values for that variable.
21112
21113@table @code
21114@item prediction-spot
21115The higher the prediction, the further to the right an @samp{*} is
21116displayed.
21117
21118@item confidence-interval
21119A numeric confidence interval.
21120
21121@item prediction-bar
21122The higher the prediction, the longer the bar.
21123
21124@item confidence-bar
21125Numerical confidence.
21126
21127@item confidence-spot
21128The spot gets bigger with more confidence.
21129
21130@item prediction-num
21131Plain-old numeric value.
21132
21133@item confidence-plus-minus
21134Prediction +/- confidence.
21135
21136@end table
21137
21138
21139@node GroupLens Variables
21140@subsection GroupLens Variables
21141
21142@table @code
21143
21144@item gnus-summary-grouplens-line-format
21145The summary line format used in GroupLens-enhanced summary buffers. It
21146accepts the same specs as the normal summary line format (@pxref{Summary
21147Buffer Lines}). The default is @samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%)
21148%s\n}.
21149
21150@item grouplens-bbb-host
21151Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the
21152default.
21153
21154@item grouplens-bbb-port
21155Port of the host running the bbbd server. The default is 9000.
21156
21157@item grouplens-score-offset
21158Offset the prediction by this value. In other words, subtract the
21159prediction value by this number to arrive at the effective score. The
21160default is 0.
21161
21162@item grouplens-score-scale-factor
21163This variable allows the user to magnify the effect of GroupLens scores.
21164The scale factor is applied after the offset. The default is 1.
21165
21166@end table
21167
21168
21169@node Advanced Scoring 21606@node Advanced Scoring
21170@section Advanced Scoring 21607@section Advanced Scoring
21171 21608
@@ -21366,9 +21803,12 @@ Gnus provides a mechanism for decaying scores to help with this problem.
21366When score files are loaded and @code{gnus-decay-scores} is 21803When score files are loaded and @code{gnus-decay-scores} is
21367non-@code{nil}, Gnus will run the score files through the decaying 21804non-@code{nil}, Gnus will run the score files through the decaying
21368mechanism thereby lowering the scores of all non-permanent score rules. 21805mechanism thereby lowering the scores of all non-permanent score rules.
21369The decay itself if performed by the @code{gnus-decay-score-function} 21806If @code{gnus-decay-scores} is a regexp, only score files matching this
21370function, which is @code{gnus-decay-score} by default. Here's the 21807regexp are treated. E.g. you may set it to @samp{\\.ADAPT\\'} if only
21371definition of that function: 21808@emph{adaptive} score files should be decayed. The decay itself if
21809performed by the @code{gnus-decay-score-function} function, which is
21810@code{gnus-decay-score} by default. Here's the definition of that
21811function:
21372 21812
21373@lisp 21813@lisp
21374(defun gnus-decay-score (score) 21814(defun gnus-decay-score (score)
@@ -21423,6 +21863,8 @@ four days, Gnus will decay the scores four times, for instance.
21423@include sieve.texi 21863@include sieve.texi
21424@chapter PGG 21864@chapter PGG
21425@include pgg.texi 21865@include pgg.texi
21866@chapter SASL
21867@include sasl.texi
21426@end iflatex 21868@end iflatex
21427@end iftex 21869@end iftex
21428 21870
@@ -22805,6 +23247,32 @@ Face and variable:
22805Face to show X-Face. The colors from this face are used as the 23247Face to show X-Face. The colors from this face are used as the
22806foreground and background colors of the displayed X-Faces. The 23248foreground and background colors of the displayed X-Faces. The
22807default colors are black and white. 23249default colors are black and white.
23250
23251@item gnus-face-properties-alist
23252@vindex gnus-face-properties-alist
23253Alist of image types and properties applied to Face (@pxref{Face}) and
23254X-Face images. The default value is @code{((pbm . (:face gnus-x-face))
23255(png . nil))} for Emacs or @code{((xface . (:face gnus-x-face)))} for
23256XEmacs. Here are examples:
23257
23258@lisp
23259;; Specify the altitude of Face and X-Face images in the From header.
23260(setq gnus-face-properties-alist
23261 '((pbm . (:face gnus-x-face :ascent 80))
23262 (png . (:ascent 80))))
23263
23264;; Show Face and X-Face images as pressed buttons.
23265(setq gnus-face-properties-alist
23266 '((pbm . (:face gnus-x-face :relief -2))
23267 (png . (:relief -2))))
23268@end lisp
23269
23270@pxref{Image Descriptors, ,Image Descriptors, elisp, The Emacs Lisp
23271Reference Manual} for the valid properties for various image types.
23272Currently, @code{pbm} is used for X-Face images and @code{png} is used
23273for Face images in Emacs. Only the @code{:face} property is effective
23274on the @code{xface} image type in XEmacs if it is built with the
23275@samp{libcompface} library.
22808@end table 23276@end table
22809 23277
22810If you use posting styles, you can use an @code{x-face-file} entry in 23278If you use posting styles, you can use an @code{x-face-file} entry in
@@ -22871,6 +23339,9 @@ The contents of a @code{Face} header must be a base64 encoded PNG image.
22871See @uref{http://quimby.gnus.org/circus/face/} for the precise 23339See @uref{http://quimby.gnus.org/circus/face/} for the precise
22872specifications. 23340specifications.
22873 23341
23342The @code{gnus-face-properties-alist} variable affects the appearance of
23343displayed Face images. @xref{X-Face}.
23344
22874Viewing an @code{Face} header requires an Emacs that is able to display 23345Viewing an @code{Face} header requires an Emacs that is able to display
22875PNG images. 23346PNG images.
22876@c Maybe add this: 23347@c Maybe add this:
@@ -22994,6 +23465,11 @@ To enable displaying picons, simply make sure that
22994@code{gnus-picon-databases} points to the directory containing the 23465@code{gnus-picon-databases} points to the directory containing the
22995Picons databases. 23466Picons databases.
22996 23467
23468@vindex gnus-picon-style
23469The variable @code{gnus-picon-style} controls how picons are displayed.
23470If @code{inline}, the textual representation is replaced. If
23471@code{right}, picons are added right to the textual representation.
23472
22997The following variables offer control over where things are located. 23473The following variables offer control over where things are located.
22998 23474
22999@table @code 23475@table @code
@@ -23360,7 +23836,7 @@ call the external tools during splitting. Example fancy split method:
23360 "spam")))) 23836 "spam"))))
23361@end lisp 23837@end lisp
23362 23838
23363Note that with the nnimap backend, message bodies will not be 23839Note that with the nnimap back end, message bodies will not be
23364downloaded by default. You need to set 23840downloaded by default. You need to set
23365@code{nnimap-split-download-body} to @code{t} to do that 23841@code{nnimap-split-download-body} to @code{t} to do that
23366(@pxref{Splitting in IMAP}). 23842(@pxref{Splitting in IMAP}).
@@ -23383,10 +23859,10 @@ spam. And here is the nifty function:
23383@cindex hashcash 23859@cindex hashcash
23384 23860
23385A novel technique to fight spam is to require senders to do something 23861A novel technique to fight spam is to require senders to do something
23386costly for each message they send. This has the obvious drawback that 23862costly and demonstrably unique for each message they send. This has
23387you cannot rely on everyone in the world using this technique, 23863the obvious drawback that you cannot rely on everyone in the world
23388since it is not part of the Internet standards, but it may be useful 23864using this technique, since it is not part of the Internet standards,
23389in smaller communities. 23865but it may be useful in smaller communities.
23390 23866
23391While the tools in the previous section work well in practice, they 23867While the tools in the previous section work well in practice, they
23392work only because the tools are constantly maintained and updated as 23868work only because the tools are constantly maintained and updated as
@@ -23402,24 +23878,20 @@ one of them separately.
23402@cindex X-Hashcash 23878@cindex X-Hashcash
23403The ``something costly'' is to burn CPU time, more specifically to 23879The ``something costly'' is to burn CPU time, more specifically to
23404compute a hash collision up to a certain number of bits. The 23880compute a hash collision up to a certain number of bits. The
23405resulting hashcash cookie is inserted in a @samp{X-Hashcash:} 23881resulting hashcash cookie is inserted in a @samp{X-Hashcash:} header.
23406header. For more details, and for the external application 23882For more details, and for the external application @code{hashcash} you
23407@code{hashcash} you need to install to use this feature, see 23883need to install to use this feature, see
23408@uref{http://www.cypherspace.org/~adam/hashcash/}. Even more 23884@uref{http://www.hashcash.org/}. Even more information can be found
23409information can be found at @uref{http://www.camram.org/}. 23885at @uref{http://www.camram.org/}.
23410 23886
23411If you wish to call hashcash for each message you send, say something 23887If you wish to generate hashcash for each message you send, you can
23412like: 23888customize @code{message-generate-hashcash} (@pxref{Mail Headers, ,Mail
23889Headers,message, The Message Manual}), as in:
23413 23890
23414@lisp 23891@lisp
23415(require 'hashcash) 23892(setq message-generate-hashcash t)
23416(add-hook 'message-send-hook 'mail-add-payment)
23417@end lisp 23893@end lisp
23418 23894
23419The @file{hashcash.el} library can be found in the Gnus development
23420contrib directory or at
23421@uref{http://users.actrix.gen.nz/mycroft/hashcash.el}.
23422
23423You will need to set up some additional variables as well: 23895You will need to set up some additional variables as well:
23424 23896
23425@table @code 23897@table @code
@@ -23427,8 +23899,8 @@ You will need to set up some additional variables as well:
23427@item hashcash-default-payment 23899@item hashcash-default-payment
23428@vindex hashcash-default-payment 23900@vindex hashcash-default-payment
23429This variable indicates the default number of bits the hash collision 23901This variable indicates the default number of bits the hash collision
23430should consist of. By default this is 0, meaning nothing will be 23902should consist of. By default this is 20. Suggested useful values
23431done. Suggested useful values include 17 to 29. 23903include 17 to 29.
23432 23904
23433@item hashcash-payment-alist 23905@item hashcash-payment-alist
23434@vindex hashcash-payment-alist 23906@vindex hashcash-payment-alist
@@ -23440,16 +23912,23 @@ that is needed. It can also contain @samp{(@var{addr} @var{string}
23440@var{amount})} cells, where the @var{string} is the string to use 23912@var{amount})} cells, where the @var{string} is the string to use
23441(normally the email address or newsgroup name is used). 23913(normally the email address or newsgroup name is used).
23442 23914
23443@item hashcash 23915@item hashcash-path
23444@vindex hashcash 23916@vindex hashcash-path
23445Where the @code{hashcash} binary is installed. 23917Where the @code{hashcash} binary is installed. This variable should
23918be automatically set by @code{executable-find}, but if it's @code{nil}
23919(usually because the @code{hashcash} binary is not in your path)
23920you'll get a warning when you check hashcash payments and an error
23921when you generate hashcash payments.
23446 23922
23447@end table 23923@end table
23448 23924
23449Currently there is no built in functionality in Gnus to verify 23925Gnus can verify hashcash cookies, although this can also be done by
23450hashcash cookies, it is expected that this is performed by your hand 23926hand customized mail filtering scripts. To verify a hashcash cookie
23451customized mail filtering scripts. Improvements in this area would be 23927in a message, use the @code{mail-check-payment} function in the
23452a useful contribution, however. 23928@code{hashcash.el} library. You can also use the @code{spam.el}
23929package with the @code{spam-use-hashcash} back end to validate hashcash
23930cookies in incoming mail and filter mail accordingly (@pxref{Anti-spam
23931Hashcash Payments}).
23453 23932
23454@node Spam Package 23933@node Spam Package
23455@section Spam Package 23934@section Spam Package
@@ -23481,6 +23960,9 @@ name used throughout this manual to indicate non-spam messages.)
23481You must read this section to understand how the Spam package works. 23960You must read this section to understand how the Spam package works.
23482Do not skip, speed-read, or glance through this section. 23961Do not skip, speed-read, or glance through this section.
23483 23962
23963Make sure you read the section on the @code{spam.el} sequence of
23964events. See @xref{Extending the Spam package}.
23965
23484@cindex spam-initialize 23966@cindex spam-initialize
23485@vindex spam-use-stat 23967@vindex spam-use-stat
23486To use the Spam package, you @strong{must} first run the function 23968To use the Spam package, you @strong{must} first run the function
@@ -23836,7 +24318,7 @@ parameter is not set, ham articles are left in place. If the
23836@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is 24318@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
23837set, the ham articles are marked as unread before being moved. 24319set, the ham articles are marked as unread before being moved.
23838 24320
23839If ham can not be moved---because of a read-only backend such as 24321If ham can not be moved---because of a read-only back end such as
23840@acronym{NNTP}, for example, it will be copied. 24322@acronym{NNTP}, for example, it will be copied.
23841 24323
23842Note that you can use multiples destinations per group or regular 24324Note that you can use multiples destinations per group or regular
@@ -23873,7 +24355,7 @@ articles are only expired. The group name is fully qualified, meaning
23873that if you see @samp{nntp:servername} before the group name in the 24355that if you see @samp{nntp:servername} before the group name in the
23874group buffer then you need it here as well. 24356group buffer then you need it here as well.
23875 24357
23876If spam can not be moved---because of a read-only backend such as 24358If spam can not be moved---because of a read-only back end such as
23877@acronym{NNTP}, for example, it will be copied. 24359@acronym{NNTP}, for example, it will be copied.
23878 24360
23879Note that you can use multiples destinations per group or regular 24361Note that you can use multiples destinations per group or regular
@@ -23992,7 +24474,7 @@ From Ted Zlatanov <tzz@@lifelogs.com>.
23992 24474
23993@end example 24475@end example
23994 24476
23995@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server 24477@subsubheading Using @code{spam.el} on an IMAP server with a statistical filter on the server
23996From Reiner Steib <reiner.steib@@gmx.de>. 24478From Reiner Steib <reiner.steib@@gmx.de>.
23997 24479
23998My provider has set up bogofilter (in combination with @acronym{DCC}) on 24480My provider has set up bogofilter (in combination with @acronym{DCC}) on
@@ -24046,7 +24528,7 @@ an excellent tool for filtering those unwanted mails for me.)
24046In my ham folders, I just hit @kbd{S x} 24528In my ham folders, I just hit @kbd{S x}
24047(@code{gnus-summary-mark-as-spam}) whenever I see an unrecognized spam 24529(@code{gnus-summary-mark-as-spam}) whenever I see an unrecognized spam
24048mail (false negative). On group exit, those messages are moved to 24530mail (false negative). On group exit, those messages are moved to
24049@samp{training.ham}. 24531@samp{training.spam}.
24050@end itemize 24532@end itemize
24051 24533
24052@subsubheading Reporting spam articles in Gmane groups with @code{spam-report.el} 24534@subsubheading Reporting spam articles in Gmane groups with @code{spam-report.el}
@@ -24086,6 +24568,7 @@ Processors}).
24086* Blackholes:: 24568* Blackholes::
24087* Regular Expressions Header Matching:: 24569* Regular Expressions Header Matching::
24088* Bogofilter:: 24570* Bogofilter::
24571* SpamAssassin back end::
24089* ifile spam filtering:: 24572* ifile spam filtering::
24090* Spam Statistics Filtering:: 24573* Spam Statistics Filtering::
24091* SpamOracle:: 24574* SpamOracle::
@@ -24138,7 +24621,7 @@ spam-marked articles will be added to the blacklist.
24138 24621
24139Instead of the obsolete 24622Instead of the obsolete
24140@code{gnus-group-spam-exit-processor-blacklist}, it is recommended 24623@code{gnus-group-spam-exit-processor-blacklist}, it is recommended
24141that you use @code{'(spam spam-use-blacklist)}. Everything will work 24624that you use @code{(spam spam-use-blacklist)}. Everything will work
24142the same way, we promise. 24625the same way, we promise.
24143 24626
24144@end defvar 24627@end defvar
@@ -24150,14 +24633,13 @@ customizing the group parameters or the
24150@code{gnus-spam-process-newsgroups} variable. When this symbol is 24633@code{gnus-spam-process-newsgroups} variable. When this symbol is
24151added to a group's @code{spam-process} parameter, the senders of 24634added to a group's @code{spam-process} parameter, the senders of
24152ham-marked articles in @emph{ham} groups will be added to the 24635ham-marked articles in @emph{ham} groups will be added to the
24153whitelist. Note that this ham processor has no effect in @emph{spam} 24636whitelist.
24154or @emph{unclassified} groups.
24155 24637
24156@emph{WARNING} 24638@emph{WARNING}
24157 24639
24158Instead of the obsolete 24640Instead of the obsolete
24159@code{gnus-group-ham-exit-processor-whitelist}, it is recommended 24641@code{gnus-group-ham-exit-processor-whitelist}, it is recommended
24160that you use @code{'(ham spam-use-whitelist)}. Everything will work 24642that you use @code{(ham spam-use-whitelist)}. Everything will work
24161the same way, we promise. 24643the same way, we promise.
24162 24644
24163@end defvar 24645@end defvar
@@ -24207,6 +24689,12 @@ unless the sender is in the BBDB. Use with care. Only sender
24207addresses in the BBDB will be allowed through; all others will be 24689addresses in the BBDB will be allowed through; all others will be
24208classified as spammers. 24690classified as spammers.
24209 24691
24692While @code{spam-use-BBDB-exclusive} @emph{can} be used as an alias
24693for @code{spam-use-BBDB} as far as @code{spam.el} is concerned, it is
24694@emph{not} a separate back end. If you set
24695@code{spam-use-BBDB-exclusive} to t, @emph{all} your BBDB splitting
24696will be exclusive.
24697
24210@end defvar 24698@end defvar
24211 24699
24212@defvar gnus-group-ham-exit-processor-BBDB 24700@defvar gnus-group-ham-exit-processor-BBDB
@@ -24216,14 +24704,13 @@ customizing the group parameters or the
24216@code{gnus-spam-process-newsgroups} variable. When this symbol is 24704@code{gnus-spam-process-newsgroups} variable. When this symbol is
24217added to a group's @code{spam-process} parameter, the senders of 24705added to a group's @code{spam-process} parameter, the senders of
24218ham-marked articles in @emph{ham} groups will be added to the 24706ham-marked articles in @emph{ham} groups will be added to the
24219BBDB. Note that this ham processor has no effect in @emph{spam} 24707BBDB.
24220or @emph{unclassified} groups.
24221 24708
24222@emph{WARNING} 24709@emph{WARNING}
24223 24710
24224Instead of the obsolete 24711Instead of the obsolete
24225@code{gnus-group-ham-exit-processor-BBDB}, it is recommended 24712@code{gnus-group-ham-exit-processor-BBDB}, it is recommended
24226that you use @code{'(ham spam-use-BBDB)}. Everything will work 24713that you use @code{(ham spam-use-BBDB)}. Everything will work
24227the same way, we promise. 24714the same way, we promise.
24228 24715
24229@end defvar 24716@end defvar
@@ -24250,7 +24737,7 @@ Gmane can be found at @uref{http://gmane.org}.
24250 24737
24251Instead of the obsolete 24738Instead of the obsolete
24252@code{gnus-group-spam-exit-processor-report-gmane}, it is recommended 24739@code{gnus-group-spam-exit-processor-report-gmane}, it is recommended
24253that you use @code{'(spam spam-use-gmane)}. Everything will work the 24740that you use @code{(spam spam-use-gmane)}. Everything will work the
24254same way, we promise. 24741same way, we promise.
24255 24742
24256@end defvar 24743@end defvar
@@ -24261,8 +24748,15 @@ This variable is @code{t} by default. Set it to @code{nil} if you are
24261running your own news server, for instance, and the local article 24748running your own news server, for instance, and the local article
24262numbers don't correspond to the Gmane article numbers. When 24749numbers don't correspond to the Gmane article numbers. When
24263@code{spam-report-gmane-use-article-number} is @code{nil}, 24750@code{spam-report-gmane-use-article-number} is @code{nil},
24264@code{spam-report.el} will use the @code{X-Report-Spam} header that 24751@code{spam-report.el} will fetch the number from the article headers.
24265Gmane provides. 24752
24753@end defvar
24754
24755@defvar spam-report-user-mail-address
24756
24757Mail address exposed in the User-Agent spam reports to Gmane. It allows
24758the Gmane administrators to contact you in case of misreports. The
24759default is @code{user-mail-address}.
24266 24760
24267@end defvar 24761@end defvar
24268 24762
@@ -24276,12 +24770,10 @@ Gmane provides.
24276 24770
24277Similar to @code{spam-use-whitelist} (@pxref{Blacklists and 24771Similar to @code{spam-use-whitelist} (@pxref{Blacklists and
24278Whitelists}), but uses hashcash tokens for whitelisting messages 24772Whitelists}), but uses hashcash tokens for whitelisting messages
24279instead of the sender address. You must have the @code{hashcash.el} 24773instead of the sender address. Messages without a hashcash payment
24280package loaded for @code{spam-use-hashcash} to work properly. 24774token will be sent to the next spam-split rule. This is an explicit
24281Messages without a hashcash payment token will be sent to the next 24775filter, meaning that unless a hashcash token is found, the messages
24282spam-split rule. This is an explicit filter, meaning that unless a 24776are not assumed to be spam or ham.
24283hashcash token is found, the messages are not assumed to be spam or
24284ham.
24285 24777
24286@end defvar 24778@end defvar
24287 24779
@@ -24301,7 +24793,7 @@ list is fairly comprehensive, but make sure to let us know if it
24301contains outdated servers. 24793contains outdated servers.
24302 24794
24303The blackhole check uses the @code{dig.el} package, but you can tell 24795The blackhole check uses the @code{dig.el} package, but you can tell
24304@file{spam.el} to use @code{dns.el} instead for better performance if 24796@code{spam.el} to use @code{dns.el} instead for better performance if
24305you set @code{spam-use-dig} to @code{nil}. It is not recommended at 24797you set @code{spam-use-dig} to @code{nil}. It is not recommended at
24306this time to set @code{spam-use-dig} to @code{nil} despite the 24798this time to set @code{spam-use-dig} to @code{nil} despite the
24307possible performance improvements, because some users may be unable to 24799possible performance improvements, because some users may be unable to
@@ -24428,7 +24920,7 @@ will be added to the Bogofilter spam database.
24428 24920
24429Instead of the obsolete 24921Instead of the obsolete
24430@code{gnus-group-spam-exit-processor-bogofilter}, it is recommended 24922@code{gnus-group-spam-exit-processor-bogofilter}, it is recommended
24431that you use @code{'(spam spam-use-bogofilter)}. Everything will work 24923that you use @code{(spam spam-use-bogofilter)}. Everything will work
24432the same way, we promise. 24924the same way, we promise.
24433@end defvar 24925@end defvar
24434 24926
@@ -24438,14 +24930,13 @@ customizing the group parameters or the
24438@code{gnus-spam-process-newsgroups} variable. When this symbol is 24930@code{gnus-spam-process-newsgroups} variable. When this symbol is
24439added to a group's @code{spam-process} parameter, the ham-marked 24931added to a group's @code{spam-process} parameter, the ham-marked
24440articles in @emph{ham} groups will be added to the Bogofilter database 24932articles in @emph{ham} groups will be added to the Bogofilter database
24441of non-spam messages. Note that this ham processor has no effect in 24933of non-spam messages.
24442@emph{spam} or @emph{unclassified} groups.
24443 24934
24444@emph{WARNING} 24935@emph{WARNING}
24445 24936
24446Instead of the obsolete 24937Instead of the obsolete
24447@code{gnus-group-ham-exit-processor-bogofilter}, it is recommended 24938@code{gnus-group-ham-exit-processor-bogofilter}, it is recommended
24448that you use @code{'(ham spam-use-bogofilter)}. Everything will work 24939that you use @code{(ham spam-use-bogofilter)}. Everything will work
24449the same way, we promise. 24940the same way, we promise.
24450@end defvar 24941@end defvar
24451 24942
@@ -24464,6 +24955,59 @@ variables to indicate to spam-split that Bogofilter should either be
24464used, or has already been used on the article. The 0.9.2.1 version of 24955used, or has already been used on the article. The 0.9.2.1 version of
24465Bogofilter was used to test this functionality. 24956Bogofilter was used to test this functionality.
24466 24957
24958@node SpamAssassin back end
24959@subsubsection SpamAssassin back end
24960@cindex spam filtering
24961@cindex spamassassin, spam filtering
24962@cindex spam
24963
24964@defvar spam-use-spamassassin
24965
24966Set this variable if you want @code{spam-split} to use SpamAssassin.
24967
24968SpamAssassin assigns a score to each article based on a set of rules
24969and tests, including a Bayesian filter. The Bayesian filter can be
24970trained by associating the @samp{$} mark for spam articles. The
24971spam score can be viewed by using the command @kbd{S t} in summary
24972mode.
24973
24974If you set this variable, each article will be processed by
24975SpamAssassin when @code{spam-split} is called. If your mail is
24976preprocessed by SpamAssassin, and you want to just use the
24977SpamAssassin headers, set @code{spam-use-spamassassin-headers}
24978instead.
24979
24980You should not enable this if you use
24981@code{spam-use-spamassassin-headers}.
24982
24983@end defvar
24984
24985@defvar spam-use-spamassassin-headers
24986
24987Set this variable if your mail is preprocessed by SpamAssassin and
24988want @code{spam-split} to split based on the SpamAssassin headers.
24989
24990You should not enable this if you use @code{spam-use-spamassassin}.
24991
24992@end defvar
24993
24994@defvar spam-spamassassin-program
24995
24996This variable points to the SpamAssassin executable. If you have
24997@code{spamd} running, you can set this variable to the @code{spamc}
24998executable for faster processing. See the SpamAssassin documentation
24999for more information on @code{spamd}/@code{spamc}.
25000
25001@end defvar
25002
25003SpamAssassin is a powerful and flexible spam filter that uses a wide
25004variety of tests to identify spam. A ham and a spam processors are
25005provided, plus the @code{spam-use-spamassassin} and
25006@code{spam-use-spamassassin-headers} variables to indicate to
25007spam-split that SpamAssassin should be either used, or has already
25008been used on the article. The 2.63 version of SpamAssassin was used
25009to test this functionality.
25010
24467@node ifile spam filtering 25011@node ifile spam filtering
24468@subsubsection ifile spam filtering 25012@subsubsection ifile spam filtering
24469@cindex spam filtering 25013@cindex spam filtering
@@ -24533,7 +25077,7 @@ articles will be added to the spam-stat database of spam messages.
24533 25077
24534Instead of the obsolete 25078Instead of the obsolete
24535@code{gnus-group-spam-exit-processor-stat}, it is recommended 25079@code{gnus-group-spam-exit-processor-stat}, it is recommended
24536that you use @code{'(spam spam-use-stat)}. Everything will work 25080that you use @code{(spam spam-use-stat)}. Everything will work
24537the same way, we promise. 25081the same way, we promise.
24538@end defvar 25082@end defvar
24539 25083
@@ -24543,18 +25087,17 @@ customizing the group parameters or the
24543@code{gnus-spam-process-newsgroups} variable. When this symbol is 25087@code{gnus-spam-process-newsgroups} variable. When this symbol is
24544added to a group's @code{spam-process} parameter, the ham-marked 25088added to a group's @code{spam-process} parameter, the ham-marked
24545articles in @emph{ham} groups will be added to the spam-stat database 25089articles in @emph{ham} groups will be added to the spam-stat database
24546of non-spam messages. Note that this ham processor has no effect in 25090of non-spam messages.
24547@emph{spam} or @emph{unclassified} groups.
24548 25091
24549@emph{WARNING} 25092@emph{WARNING}
24550 25093
24551Instead of the obsolete 25094Instead of the obsolete
24552@code{gnus-group-ham-exit-processor-stat}, it is recommended 25095@code{gnus-group-ham-exit-processor-stat}, it is recommended
24553that you use @code{'(ham spam-use-stat)}. Everything will work 25096that you use @code{(ham spam-use-stat)}. Everything will work
24554the same way, we promise. 25097the same way, we promise.
24555@end defvar 25098@end defvar
24556 25099
24557This enables @file{spam.el} to cooperate with @file{spam-stat.el}. 25100This enables @code{spam.el} to cooperate with @file{spam-stat.el}.
24558@file{spam-stat.el} provides an internal (Lisp-only) spam database, 25101@file{spam-stat.el} provides an internal (Lisp-only) spam database,
24559which unlike ifile or Bogofilter does not require external programs. 25102which unlike ifile or Bogofilter does not require external programs.
24560A spam and a ham processor, and the @code{spam-use-stat} variable for 25103A spam and a ham processor, and the @code{spam-use-stat} variable for
@@ -24583,7 +25126,7 @@ The easiest method is to make @file{spam.el} (@pxref{Spam Package})
24583call SpamOracle. 25126call SpamOracle.
24584 25127
24585@vindex spam-use-spamoracle 25128@vindex spam-use-spamoracle
24586To enable SpamOracle usage by @file{spam.el}, set the variable 25129To enable SpamOracle usage by @code{spam.el}, set the variable
24587@code{spam-use-spamoracle} to @code{t} and configure the 25130@code{spam-use-spamoracle} to @code{t} and configure the
24588@code{nnmail-split-fancy} or @code{nnimap-split-fancy}. @xref{Spam 25131@code{nnmail-split-fancy} or @code{nnimap-split-fancy}. @xref{Spam
24589Package}. In this example the @samp{INBOX} of an nnimap server is 25132Package}. In this example the @samp{INBOX} of an nnimap server is
@@ -24641,7 +25184,7 @@ sent to SpamOracle as spam samples.
24641 25184
24642Instead of the obsolete 25185Instead of the obsolete
24643@code{gnus-group-spam-exit-processor-spamoracle}, it is recommended 25186@code{gnus-group-spam-exit-processor-spamoracle}, it is recommended
24644that you use @code{'(spam spam-use-spamoracle)}. Everything will work 25187that you use @code{(spam spam-use-spamoracle)}. Everything will work
24645the same way, we promise. 25188the same way, we promise.
24646@end defvar 25189@end defvar
24647 25190
@@ -24651,14 +25194,13 @@ customizing the group parameter or the
24651@code{gnus-spam-process-newsgroups} variable. When this symbol is added 25194@code{gnus-spam-process-newsgroups} variable. When this symbol is added
24652to a group's @code{spam-process} parameter, the ham-marked articles in 25195to a group's @code{spam-process} parameter, the ham-marked articles in
24653@emph{ham} groups will be sent to the SpamOracle as samples of ham 25196@emph{ham} groups will be sent to the SpamOracle as samples of ham
24654messages. Note that this ham processor has no effect in @emph{spam} or 25197messages.
24655@emph{unclassified} groups.
24656 25198
24657@emph{WARNING} 25199@emph{WARNING}
24658 25200
24659Instead of the obsolete 25201Instead of the obsolete
24660@code{gnus-group-ham-exit-processor-spamoracle}, it is recommended 25202@code{gnus-group-ham-exit-processor-spamoracle}, it is recommended
24661that you use @code{'(ham spam-use-spamoracle)}. Everything will work 25203that you use @code{(ham spam-use-spamoracle)}. Everything will work
24662the same way, we promise. 25204the same way, we promise.
24663@end defvar 25205@end defvar
24664 25206
@@ -24696,45 +25238,22 @@ Code
24696 "True if blackbox should be used.") 25238 "True if blackbox should be used.")
24697@end lisp 25239@end lisp
24698 25240
24699Add 25241Write @code{spam-check-blackbox} if Blackbox can check incoming mail.
24700@lisp
24701(spam-use-blackbox . spam-check-blackbox)
24702@end lisp
24703to @code{spam-list-of-checks}.
24704
24705Add
24706@lisp
24707(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox)
24708(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox)
24709@end lisp
24710 25242
24711to @code{spam-list-of-processors}. 25243Write @code{spam-blackbox-register-routine} and
24712 25244@code{spam-blackbox-unregister-routine} using the bogofilter
24713Add 25245register/unregister routines as a start, or other restister/unregister
24714@lisp 25246routines more appropriate to Blackbox, if Blackbox can
24715(spam-use-blackbox spam-blackbox-register-routine 25247register/unregister spam and ham.
24716 nil
24717 spam-blackbox-unregister-routine
24718 nil)
24719@end lisp
24720
24721to @code{spam-registration-functions}. Write the register/unregister
24722routines using the bogofilter register/unregister routines as a
24723start, or other register/unregister routines more appropriate to
24724Blackbox.
24725 25248
24726@item 25249@item
24727Functionality 25250Functionality
24728 25251
24729Write the @code{spam-check-blackbox} function. It should return 25252The @code{spam-check-blackbox} function should return @samp{nil} or
24730@samp{nil} or @code{spam-split-group}, observing the other 25253@code{spam-split-group}, observing the other conventions. See the
24731conventions. See the existing @code{spam-check-*} functions for 25254existing @code{spam-check-*} functions for examples of what you can
24732examples of what you can do, and stick to the template unless you 25255do, and stick to the template unless you fully understand the reasons
24733fully understand the reasons why you aren't. 25256why you aren't.
24734
24735Make sure to add @code{spam-use-blackbox} to
24736@code{spam-list-of-statistical-checks} if Blackbox is a statistical
24737mail analyzer that needs the full message body to operate.
24738 25257
24739@end enumerate 25258@end enumerate
24740 25259
@@ -24749,8 +25268,8 @@ Note you don't have to provide a spam or a ham processor. Only
24749provide them if Blackbox supports spam or ham processing. 25268provide them if Blackbox supports spam or ham processing.
24750 25269
24751Also, ham and spam processors are being phased out as single 25270Also, ham and spam processors are being phased out as single
24752variables. Instead the form @code{'(spam spam-use-blackbox)} or 25271variables. Instead the form @code{(spam spam-use-blackbox)} or
24753@code{'(ham spam-use-blackbox)} is favored. For now, spam/ham 25272@code{(ham spam-use-blackbox)} is favored. For now, spam/ham
24754processor variables are still around but they won't be for long. 25273processor variables are still around but they won't be for long.
24755 25274
24756@lisp 25275@lisp
@@ -24781,7 +25300,64 @@ Add
24781(variable-item spam-use-blackbox) 25300(variable-item spam-use-blackbox)
24782@end lisp 25301@end lisp
24783to the @code{spam-autodetect-methods} group parameter in 25302to the @code{spam-autodetect-methods} group parameter in
24784@code{gnus.el}. 25303@code{gnus.el} if Blackbox can check incoming mail for spam contents.
25304
25305Finally, use the appropriate @code{spam-install-*-backend} function in
25306@code{spam.el}. Here are the available functions.
25307
25308
25309@enumerate
25310
25311@item
25312@code{spam-install-backend-alias}
25313
25314This function will simply install an alias for a back end that does
25315everything like the original back end. It is currently only used to
25316make @code{spam-use-BBDB-exclusive} act like @code{spam-use-BBDB}.
25317
25318@item
25319@code{spam-install-nocheck-backend}
25320
25321This function installs a back end that has no check function, but can
25322register/unregister ham or spam. The @code{spam-use-gmane} back end is
25323such a back end.
25324
25325@item
25326@code{spam-install-checkonly-backend}
25327
25328This function will install a back end that can only check incoming mail
25329for spam contents. It can't register or unregister messages.
25330@code{spam-use-blackholes} and @code{spam-use-hashcash} are such
25331back ends.
25332
25333@item
25334@code{spam-install-statistical-checkonly-backend}
25335
25336This function installs a statistical back end (one which requires the
25337full body of a message to check it) that can only check incoming mail
25338for contents. @code{spam-use-regex-body} is such a filter.
25339
25340@item
25341@code{spam-install-statistical-backend}
25342
25343This function install a statistical back end with incoming checks and
25344registration/unregistration routines. @code{spam-use-bogofilter} is
25345set up this way.
25346
25347@item
25348@code{spam-install-backend}
25349
25350This is the most normal back end installation, where a back end that can
25351check and register/unregister messages is set up without statistical
25352abilities. The @code{spam-use-BBDB} is such a back end.
25353
25354@item
25355@code{spam-install-mover-backend}
25356
25357Mover back ends are internal to @code{spam.el} and specifically move
25358articles around when the summary is exited. You will very probably
25359never install such a back end.
25360@end enumerate
24785 25361
24786@end enumerate 25362@end enumerate
24787 25363
@@ -25140,6 +25716,17 @@ shut up, but will flash so many messages it will make your head swim.
25140This variable works the same way as @code{gnus-verbose}, but it applies 25716This variable works the same way as @code{gnus-verbose}, but it applies
25141to the Gnus back ends instead of Gnus proper. 25717to the Gnus back ends instead of Gnus proper.
25142 25718
25719@item gnus-add-timestamp-to-message
25720@vindex gnus-add-timestamp-to-message
25721This variable controls whether to add timestamps to messages that are
25722controlled by @code{gnus-verbose} and @code{gnus-verbose-backends} and
25723are issued. The default value is @code{nil} which means never to add
25724timestamp. If it is @code{log}, add timestamps to only the messages
25725that go into the @samp{*Messages*} buffer (in XEmacs, it is the
25726@w{@samp{ *Message-Log*}} buffer). If it is neither @code{nil} nor
25727@code{log}, add timestamps not only to log messages but also to the ones
25728displayed in the echo area.
25729
25143@item nnheader-max-head-length 25730@item nnheader-max-head-length
25144@vindex nnheader-max-head-length 25731@vindex nnheader-max-head-length
25145When the back ends read straight heads of articles, they all try to read 25732When the back ends read straight heads of articles, they all try to read
@@ -25661,8 +26248,7 @@ Wes Hardaker---@file{gnus-picon.el} and the manual section on
25661Kim-Minh Kaplan---further work on the picon code. 26248Kim-Minh Kaplan---further work on the picon code.
25662 26249
25663@item 26250@item
25664Brad Miller---@file{gnus-gl.el} and the GroupLens manual section 26251Brad Miller---@file{gnus-gl.el} and the GroupLens manual section.
25665(@pxref{GroupLens}).
25666 26252
25667@item 26253@item
25668Sudish Joseph---innumerable bug fixes. 26254Sudish Joseph---innumerable bug fixes.
@@ -25703,7 +26289,7 @@ David Moore---rewrite of @file{nnvirtual.el} and many other things.
25703Kevin Davidson---came up with the name @dfn{ding}, so blame him. 26289Kevin Davidson---came up with the name @dfn{ding}, so blame him.
25704 26290
25705@item 26291@item
25706François Pinard---many, many interesting and thorough bug reports, as 26292Fran@,{c}ois Pinard---many, many interesting and thorough bug reports, as
25707well as autoconf support. 26293well as autoconf support.
25708 26294
25709@end itemize 26295@end itemize
@@ -25720,7 +26306,7 @@ Kevin Greiner,
25720Jesper Harder, 26306Jesper Harder,
25721Paul Jarc, 26307Paul Jarc,
25722Simon Josefsson, 26308Simon Josefsson,
25723David Kågedal, 26309David K@aa{}gedal,
25724Richard Pieri, 26310Richard Pieri,
25725Fabrice Popineau, 26311Fabrice Popineau,
25726Daniel Quinlan, 26312Daniel Quinlan,
@@ -25805,12 +26391,13 @@ Yoshiki Hayashi, @c Hayashi
25805P. E. Jareth Hein, 26391P. E. Jareth Hein,
25806Hisashige Kenji, @c Hisashige 26392Hisashige Kenji, @c Hisashige
25807Scott Hofmann, 26393Scott Hofmann,
26394Tassilo Horn,
25808Marc Horowitz, 26395Marc Horowitz,
25809Gunnar Horrigmo, 26396Gunnar Horrigmo,
25810Richard Hoskins, 26397Richard Hoskins,
25811Brad Howes, 26398Brad Howes,
25812Miguel de Icaza, 26399Miguel de Icaza,
25813François Felix Ingrand, 26400Fran@,{c}ois Felix Ingrand,
25814Tatsuya Ichikawa, @c Ichikawa 26401Tatsuya Ichikawa, @c Ichikawa
25815Ishikawa Ichiro, @c Ishikawa 26402Ishikawa Ichiro, @c Ishikawa
25816Lee Iverson, 26403Lee Iverson,
@@ -25950,6 +26537,7 @@ actually are people who are using Gnus. Who'd'a thunk it!
25950* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. 26537* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7.
25951* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. 26538* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9.
25952* Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11. 26539* Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11.
26540* No Gnus:: Very punny.
25953@end menu 26541@end menu
25954 26542
25955These lists are, of course, just @emph{short} overviews of the 26543These lists are, of course, just @emph{short} overviews of the
@@ -26109,7 +26697,7 @@ Partial thread regeneration now happens when articles are
26109referred. 26697referred.
26110 26698
26111@item 26699@item
26112Gnus can make use of GroupLens predictions (@pxref{GroupLens}). 26700Gnus can make use of GroupLens predictions.
26113 26701
26114@item 26702@item
26115Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). 26703Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}).
@@ -26758,7 +27346,7 @@ Gnus is now able to take out spam from your mail and news streams
26758using a wide variety of programs and filter rules. Among the supported 27346using a wide variety of programs and filter rules. Among the supported
26759methods are RBL blocklists, bogofilter and white/blacklists. Hooks 27347methods are RBL blocklists, bogofilter and white/blacklists. Hooks
26760for easy use of external packages such as SpamAssassin and Hashcash 27348for easy use of external packages such as SpamAssassin and Hashcash
26761are also new. @xref{Thwarting Email Spam}. 27349are also new. @ref{Thwarting Email Spam} and @ref{Spam Package}.
26762@c FIXME: @xref{Spam Package}?. Should this be under Misc? 27350@c FIXME: @xref{Spam Package}?. Should this be under Misc?
26763 27351
26764@item 27352@item
@@ -27325,6 +27913,15 @@ A new command which starts Gnus offline in slave mode.
27325 27913
27326@end itemize 27914@end itemize
27327 27915
27916@node No Gnus
27917@subsubsection No Gnus
27918@cindex No Gnus
27919
27920New features in No Gnus:
27921@c FIXME: Gnus 5.12?
27922
27923@include gnus-news.texi
27924
27328@iftex 27925@iftex
27329 27926
27330@page 27927@page
@@ -28416,7 +29013,9 @@ A Gnus group info (@pxref{Group Info}) is handed to the back end for
28416alterations. This comes in handy if the back end really carries all 29013alterations. This comes in handy if the back end really carries all
28417the information (as is the case with virtual and imap groups). This 29014the information (as is the case with virtual and imap groups). This
28418function should destructively alter the info to suit its needs, and 29015function should destructively alter the info to suit its needs, and
28419should return a non-@code{nil} value. 29016should return a non-@code{nil} value (exceptionally,
29017@code{nntp-request-update-info} always returns @code{nil} not to waste
29018the network resources).
28420 29019
28421There should be no result data from this function. 29020There should be no result data from this function.
28422 29021
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 828af92fc0c..aad9cd223ea 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -71,14 +71,14 @@ Message mode buffers.
71@c Adjust ../Makefile.in if you change the following lines: 71@c Adjust ../Makefile.in if you change the following lines:
72Message is distributed with Gnus. The Gnus distribution 72Message is distributed with Gnus. The Gnus distribution
73@c 73@c
74corresponding to this manual is Gnus v5.11. 74corresponding to this manual is No Gnus v0.7.
75 75
76 76
77@node Interface 77@node Interface
78@chapter Interface 78@chapter Interface
79 79
80When a program (or a person) wants to respond to a message -- reply, 80When a program (or a person) wants to respond to a message---reply,
81follow up, forward, cancel -- the program (or person) should just put 81follow up, forward, cancel---the program (or person) should just put
82point in the buffer where the message is and call the required command. 82point in the buffer where the message is and call the required command.
83@code{Message} will then pop up a new @code{message} mode buffer with 83@code{Message} will then pop up a new @code{message} mode buffer with
84appropriate headers filled out, and the user can edit the message before 84appropriate headers filled out, and the user can edit the message before
@@ -179,7 +179,8 @@ but you can change the behavior to suit your needs by fiddling with the
179 179
180@vindex message-dont-reply-to-names 180@vindex message-dont-reply-to-names
181Addresses that match the @code{message-dont-reply-to-names} regular 181Addresses that match the @code{message-dont-reply-to-names} regular
182expression will be removed from the @code{Cc} header. 182expression (or list of regular expressions) will be removed from the
183@code{Cc} header. A value of @code{nil} means exclude your name only.
183 184
184@vindex message-wide-reply-confirm-recipients 185@vindex message-wide-reply-confirm-recipients
185If @code{message-wide-reply-confirm-recipients} is non-@code{nil} you 186If @code{message-wide-reply-confirm-recipients} is non-@code{nil} you
@@ -257,7 +258,7 @@ removed before popping up the new message buffer. The default is@*
257^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|@* 258^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|@*
258Return-Path:\\|^Supersedes:\\|^NNTP-Posting-Date:\\|^X-Trace:\\|@* 259Return-Path:\\|^Supersedes:\\|^NNTP-Posting-Date:\\|^X-Trace:\\|@*
259^X-Complaints-To:\\|^Cancel-Lock:\\|^Cancel-Key:\\|^X-Hashcash:\\|@* 260^X-Complaints-To:\\|^Cancel-Lock:\\|^Cancel-Key:\\|^X-Hashcash:\\|@*
260^X-Payment:}. 261^X-Payment:\\|^Approved:}.
261 262
262 263
263 264
@@ -797,14 +798,18 @@ Insert the message headers (@code{message-insert-headers}).
797@item C-c M-m 798@item C-c M-m
798@kindex C-c M-m 799@kindex C-c M-m
799@findex message-mark-inserted-region 800@findex message-mark-inserted-region
800Mark some region in the current article with enclosing tags. 801Mark some region in the current article with enclosing tags. See
801See @code{message-mark-insert-begin} and @code{message-mark-insert-end}. 802@code{message-mark-insert-begin} and @code{message-mark-insert-end}.
803When called with a prefix argument, use slrn style verbatim marks
804(@samp{#v+} and @samp{#v-}).
802 805
803@item C-c M-f 806@item C-c M-f
804@kindex C-c M-f 807@kindex C-c M-f
805@findex message-mark-insert-file 808@findex message-mark-insert-file
806Insert a file in the current article with enclosing tags. 809Insert a file in the current article with enclosing tags.
807See @code{message-mark-insert-begin} and @code{message-mark-insert-end}. 810See @code{message-mark-insert-begin} and @code{message-mark-insert-end}.
811When called with a prefix argument, use slrn style verbatim marks
812(@samp{#v+} and @samp{#v-}).
808 813
809@end table 814@end table
810 815
@@ -1159,6 +1164,11 @@ The text is killed and replaced with the contents of the variable
1159@code{message-elide-ellipsis}. The default value is to use an ellipsis 1164@code{message-elide-ellipsis}. The default value is to use an ellipsis
1160(@samp{[...]}). 1165(@samp{[...]}).
1161 1166
1167@item C-c M-k
1168@kindex C-c M-k
1169@findex message-kill-address
1170Kill the address under point.
1171
1162@item C-c C-z 1172@item C-c C-z
1163@kindex C-c C-z 1173@kindex C-c C-z
1164@findex message-kill-to-signature 1174@findex message-kill-to-signature
@@ -1244,11 +1254,13 @@ Kill the message buffer and exit (@code{message-kill-buffer}).
1244@section Mail Aliases 1254@section Mail Aliases
1245@cindex mail aliases 1255@cindex mail aliases
1246@cindex aliases 1256@cindex aliases
1257@cindex completion
1258@cindex ecomplete
1247 1259
1248@vindex message-mail-alias-type 1260@vindex message-mail-alias-type
1249The @code{message-mail-alias-type} variable controls what type of mail 1261The @code{message-mail-alias-type} variable controls what type of mail
1250alias expansion to use. Currently only one form is supported---Message 1262alias expansion to use. Currently two forms are supported:
1251uses @code{mailabbrev} to handle mail aliases. If this variable is 1263@code{mailabbrev} and @code{ecomplete}. If this variable is
1252@code{nil}, no mail alias expansion will be performed. 1264@code{nil}, no mail alias expansion will be performed.
1253 1265
1254@code{mailabbrev} works by parsing the @file{/etc/mailrc} and 1266@code{mailabbrev} works by parsing the @file{/etc/mailrc} and
@@ -1266,6 +1278,14 @@ on) headers and press @kbd{SPC} to expand the alias.
1266No expansion will be performed upon sending of the message---all 1278No expansion will be performed upon sending of the message---all
1267expansions have to be done explicitly. 1279expansions have to be done explicitly.
1268 1280
1281If you're using @code{ecomplete}, all addresses from @code{To} and
1282@code{Cc} headers will automatically be put into the
1283@file{~/.ecompleterc} file. When you enter text in the @code{To} and
1284@code{Cc} headers, @code{ecomplete} will check out the values stored
1285there and ``electrically'' say what completions are possible. To
1286choose one of these completions, use the @kbd{M-n} command to move
1287down to the list. Use @kbd{M-n} and @kbd{M-p} to move down and up the
1288list, and @kbd{RET} to choose a completion.
1269 1289
1270@node Spelling 1290@node Spelling
1271@section Spelling 1291@section Spelling
@@ -1334,7 +1354,7 @@ installed.
1334@section Message Headers 1354@section Message Headers
1335 1355
1336Message is quite aggressive on the message generation front. It has to 1356Message is quite aggressive on the message generation front. It has to
1337be -- it's a combined news and mail agent. To be able to send combined 1357be---it's a combined news and mail agent. To be able to send combined
1338messages, it has to generate all headers itself (instead of letting the 1358messages, it has to generate all headers itself (instead of letting the
1339mail/news system do it) to ensure that mail and news copies of messages 1359mail/news system do it) to ensure that mail and news copies of messages
1340look sufficiently similar. 1360look sufficiently similar.
@@ -1373,7 +1393,7 @@ values:
1373 1393
1374@table @code 1394@table @code
1375@item nil 1395@item nil
1376Just the address -- @samp{king@@grassland.com}. 1396Just the address---@samp{king@@grassland.com}.
1377 1397
1378@item parens 1398@item parens
1379@samp{king@@grassland.com (Elvis Parsley)}. 1399@samp{king@@grassland.com (Elvis Parsley)}.
@@ -1494,6 +1514,9 @@ hidden when composing a message.
1494 '(not "From" "Subject" "To" "Cc" "Newsgroups")) 1514 '(not "From" "Subject" "To" "Cc" "Newsgroups"))
1495@end lisp 1515@end lisp
1496 1516
1517Headers are hidden using narrowing, you can use @kbd{M-x widen} to
1518expose them in the buffer.
1519
1497@item message-header-synonyms 1520@item message-header-synonyms
1498@vindex message-header-synonyms 1521@vindex message-header-synonyms
1499A list of lists of header synonyms. E.g., if this list contains a 1522A list of lists of header synonyms. E.g., if this list contains a
@@ -1525,6 +1548,13 @@ Regexp of headers to be removed before mailing. The default is@*
1525This string is inserted at the end of the headers in all message 1548This string is inserted at the end of the headers in all message
1526buffers that are initialized as mail. 1549buffers that are initialized as mail.
1527 1550
1551@item message-generate-hashcash
1552@vindex message-generate-hashcash
1553Variable that indicates whether @samp{X-Hashcash} headers
1554should be computed for the message. @xref{Hashcash, ,Hashcash,gnus,
1555The Gnus Manual}. If @code{opportunistic}, only generate the headers
1556when it doesn't lead to the user having to wait.
1557
1528@end table 1558@end table
1529 1559
1530 1560
@@ -1541,10 +1571,10 @@ buffers that are initialized as mail.
1541@findex smtpmail-send-it 1571@findex smtpmail-send-it
1542@findex feedmail-send-it 1572@findex feedmail-send-it
1543Function used to send the current buffer as mail. The default is 1573Function used to send the current buffer as mail. The default is
1544@code{message-send-mail-with-sendmail}. Other valid values include 1574@code{message-send-mail-with-sendmail}, or @code{smtpmail-send-it}
1575according to the system. Other valid values include
1545@code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail}, 1576@code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail},
1546@code{message-smtpmail-send-it}, @code{smtpmail-send-it} and 1577@code{message-smtpmail-send-it} and @code{feedmail-send-it}.
1547@code{feedmail-send-it}.
1548 1578
1549@item message-mh-deletable-headers 1579@item message-mh-deletable-headers
1550@vindex message-mh-deletable-headers 1580@vindex message-mh-deletable-headers
@@ -1859,6 +1889,9 @@ that look like:
1859Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes: 1889Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
1860@end example 1890@end example
1861 1891
1892@c FIXME: Add `message-insert-formated-citation-line' and
1893@c `message-citation-line-format'
1894
1862Point will be at the beginning of the body of the message when this 1895Point will be at the beginning of the body of the message when this
1863function is called. 1896function is called.
1864 1897
@@ -1873,21 +1906,29 @@ Article Highlighting, gnus, The Gnus Manual}, for details.
1873@cindex yanking 1906@cindex yanking
1874@cindex quoting 1907@cindex quoting
1875When you are replying to or following up an article, you normally want 1908When you are replying to or following up an article, you normally want
1876to quote the person you are answering. Inserting quoted text is done 1909to quote the person you are answering. Inserting quoted text is done by
1877by @dfn{yanking}, and each line you yank will have 1910@dfn{yanking}, and each line you yank will have
1878@code{message-yank-prefix} prepended to it (except for quoted and 1911@code{message-yank-prefix} prepended to it (except for quoted lines
1879empty lines which uses @code{message-yank-cited-prefix}). The default 1912which use @code{message-yank-cited-prefix} and empty lines which use
1880is @samp{> }. 1913@code{message-yank-empty-prefix}). The default is @samp{> }.
1881 1914
1882@item message-yank-cited-prefix 1915@item message-yank-cited-prefix
1883@vindex message-yank-cited-prefix 1916@vindex message-yank-cited-prefix
1884@cindex yanking 1917@cindex yanking
1885@cindex cited 1918@cindex cited
1886@cindex quoting 1919@cindex quoting
1887When yanking text from an article which contains no text or already 1920When yanking text from an article which contains already cited text,
1888cited text, each line will be prefixed with the contents of this 1921each line will be prefixed with the contents of this variable. The
1889variable. The default is @samp{>}. See also 1922default is @samp{>}. See also @code{message-yank-prefix}.
1890@code{message-yank-prefix}. 1923
1924@item message-yank-empty-prefix
1925@vindex message-yank-empty-prefix
1926@cindex yanking
1927@cindex quoting
1928When yanking text from an article, each empty line will be prefixed with
1929the contents of this variable. The default is @samp{>}. You can set
1930this variable to an empty string to split the cited text into paragraphs
1931automatically. See also @code{message-yank-prefix}.
1891 1932
1892@item message-indentation-spaces 1933@item message-indentation-spaces
1893@vindex message-indentation-spaces 1934@vindex message-indentation-spaces
@@ -1932,8 +1973,18 @@ If this variable is @code{nil}, no signature will be inserted at all.
1932@item message-signature-file 1973@item message-signature-file
1933@vindex message-signature-file 1974@vindex message-signature-file
1934File containing the signature to be inserted at the end of the buffer. 1975File containing the signature to be inserted at the end of the buffer.
1976If a path is specified, the value of
1977@code{message-signature-directory} is ignored, even if set.
1935The default is @file{~/.signature}. 1978The default is @file{~/.signature}.
1936 1979
1980@item message-signature-directory
1981@vindex message-signature-directory
1982Name of directory containing signature files. Comes in handy if you
1983have many such files, handled via Gnus posting styles for instance.
1984If @code{nil} (the default), @code{message-signature-file} is expected
1985to specify the directory if needed.
1986
1987
1937@item message-signature-insert-empty-line 1988@item message-signature-insert-empty-line
1938@vindex message-signature-insert-empty-line 1989@vindex message-signature-insert-empty-line
1939If @code{t} (the default value) an empty line is inserted before the 1990If @code{t} (the default value) an empty line is inserted before the
@@ -1968,6 +2019,13 @@ Emacsen.) @xref{Charset Translation, , Charset Translation, emacs-mime,
1968Emacs MIME Manual}, for details on the @sc{mule}-to-@acronym{MIME} 2019Emacs MIME Manual}, for details on the @sc{mule}-to-@acronym{MIME}
1969translation process. 2020translation process.
1970 2021
2022@item message-fill-column
2023@vindex message-fill-column
2024@cindex auto-fill
2025Local value for the column beyond which automatic line-wrapping should
2026happen for message buffers. If non-nil (the default), also turn on
2027auto-fill in message buffers.
2028
1971@item message-signature-separator 2029@item message-signature-separator
1972@vindex message-signature-separator 2030@vindex message-signature-separator
1973Regexp matching the signature separator. It is @samp{^-- *$} by 2031Regexp matching the signature separator. It is @samp{^-- *$} by
@@ -2057,6 +2115,12 @@ Hook run when canceling news articles.
2057@vindex message-mode-syntax-table 2115@vindex message-mode-syntax-table
2058Syntax table used in message mode buffers. 2116Syntax table used in message mode buffers.
2059 2117
2118@item message-cite-articles-with-x-no-archive
2119@vindex message-cite-articles-with-x-no-archive
2120If non-@code{nil}, don't strip quoted text from articles that have
2121@samp{X-No-Archive} set. Even if this variable isn't set, you can
2122undo the stripping by hitting the @code{undo} keystroke.
2123
2060@item message-strip-special-text-properties 2124@item message-strip-special-text-properties
2061@vindex message-strip-special-text-properties 2125@vindex message-strip-special-text-properties
2062Emacs has a number of special text properties which can break message 2126Emacs has a number of special text properties which can break message
@@ -2089,7 +2153,7 @@ the buffer where the message is.
2089 2153
2090@item function 2154@item function
2091A function to be called if @var{predicate} returns non-@code{nil}. 2155A function to be called if @var{predicate} returns non-@code{nil}.
2092@var{function} is called with one parameter -- the prefix. 2156@var{function} is called with one parameter---the prefix.
2093@end table 2157@end table
2094 2158
2095The default is: 2159The default is:
diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi
index ca29e2184e5..3a171297740 100644
--- a/doc/misc/pgg.texi
+++ b/doc/misc/pgg.texi
@@ -345,11 +345,11 @@ singleton object wrapped with the luna object system.
345Since PGG was designed for accessing and developing PGP functionality, 345Since PGG was designed for accessing and developing PGP functionality,
346the architecture had to be designed not just for interoperability but 346the architecture had to be designed not just for interoperability but
347also for extensiblity. In this chapter we explore the architecture 347also for extensiblity. In this chapter we explore the architecture
348while finding out how to write the PGG backend. 348while finding out how to write the PGG back end.
349 349
350@menu 350@menu
351* Initializing:: 351* Initializing::
352* Backend methods:: 352* Back end methods::
353* Getting output:: 353* Getting output::
354@end menu 354@end menu
355 355
@@ -373,12 +373,12 @@ variable @code{pgg-scheme-gpg-instance} and will be reused from now on.
373@end lisp 373@end lisp
374 374
375The name of the function must follow the 375The name of the function must follow the
376regulation---@code{pgg-make-scheme-} follows the backend name. 376regulation---@code{pgg-make-scheme-} follows the back end name.
377 377
378@node Backend methods 378@node Back end methods
379@section Backend methods 379@section Back end methods
380 380
381In each backend, these methods must be present. The output of these 381In each back end, these methods must be present. The output of these
382methods is stored in special buffers (@ref{Getting output}), so that 382methods is stored in special buffers (@ref{Getting output}), so that
383these methods must tell the status of the execution. 383these methods must tell the status of the execution.
384 384
@@ -435,7 +435,7 @@ On success, it returns @code{t}, otherwise @code{nil}.
435@node Getting output 435@node Getting output
436@section Getting output 436@section Getting output
437 437
438The output of the backend methods (@ref{Backend methods}) is stored in 438The output of the back end methods (@ref{Back end methods}) is stored in
439special buffers, so that these methods must tell the status of the 439special buffers, so that these methods must tell the status of the
440execution. 440execution.
441 441
diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi
new file mode 100644
index 00000000000..9cd465abb26
--- /dev/null
+++ b/doc/misc/sasl.texi
@@ -0,0 +1,270 @@
1\input texinfo @c -*-texinfo-*-
2
3@setfilename sasl.info
4
5@set VERSION 0.2
6
7@dircategory Emacs
8@direntry
9* SASL: (sasl). The Emacs SASL library.
10@end direntry
11
12@settitle Emacs SASL Library @value{VERSION}
13
14@ifinfo
15This file describes the Emacs SASL library.
16
17Copyright @copyright{} 2004, 2005, 2006 Free Software Foundation, Inc.
18Copyright @copyright{} 2000 Daiki Ueno.
19
20Permission is granted to copy, distribute and/or modify this document
21under the terms of the GNU Free Documentation License, Version 1.2 or
22any later version published by the Free Software Foundation; with no
23Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
24Texts. A copy of the license is included in the section entitled "GNU
25Free Documentation License".
26@end ifinfo
27
28@tex
29
30@titlepage
31@title Emacs SASL Library
32
33@author by Daiki Ueno
34@page
35
36@vskip 0pt plus 1filll
37Copyright @copyright{} 2000 Daiki Ueno.
38
39Permission is granted to copy, distribute and/or modify this document
40under the terms of the GNU Free Documentation License, Version 1.2 or
41any later version published by the Free Software Foundation; with no
42Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
43Texts. A copy of the license is included in the section entitled "GNU
44Free Documentation License".
45@end titlepage
46@page
47
48@end tex
49
50@node Top
51@top Emacs SASL
52This manual describes the Emacs SASL library.
53
54A common interface to share several authentication mechanisms between
55applications using different protocols.
56
57@menu
58* Overview:: What Emacs SASL library is.
59* How to use:: Adding authentication support to your applications.
60* Data types::
61* Back end drivers:: Writing your own drivers.
62* Index::
63* Function Index::
64* Variable Index::
65@end menu
66
67@node Overview
68@chapter Overview
69
70@sc{sasl} is short for @dfn{Simple Authentication and Security Layer}.
71This standard is documented in RFC2222. It provides a simple method for
72adding authentication support to various application protocols.
73
74The toplevel interface of this library is inspired by Java @sc{sasl}
75Application Program Interface. It defines an abstraction over a series
76of authentication mechanism drivers (@ref{Back end drivers}).
77
78Back end drivers are designed to be close as possible to the
79authentication mechanism. You can access the additional configuration
80information anywhere from the implementation.
81
82@node How to use
83@chapter How to use
84
85(Not yet written).
86
87To use Emacs SASL library, please evaluate following expression at the
88beginning of your application program.
89
90@lisp
91(require 'sasl)
92@end lisp
93
94If you want to check existence of sasl.el at runtime, instead you
95can list autoload settings for functions you want.
96
97@node Data types
98@chapter Data types
99
100There are three data types to be used for carrying a negotiated
101security layer---a mechanism, a client parameter and an authentication
102step.
103
104@menu
105* Mechanisms::
106* Clients::
107* Steps::
108@end menu
109
110@node Mechanisms
111@section Mechanisms
112
113A mechanism (@code{sasl-mechanism} object) is a schema of the @sc{sasl}
114authentication mechanism driver.
115
116@defvar sasl-mechanisms
117A list of mechanism names.
118@end defvar
119
120@defun sasl-find-mechanism mechanisms
121
122Retrieve an apropriate mechanism.
123This function compares @var{mechanisms} and @code{sasl-mechanisms} then
124returns apropriate @code{sasl-mechanism} object.
125
126@example
127(let ((sasl-mechanisms '("CRAM-MD5" "DIGEST-MD5")))
128 (setq mechanism (sasl-find-mechanism server-supported-mechanisms)))
129@end example
130
131@end defun
132
133@defun sasl-mechanism-name mechanism
134Return name of mechanism, a string.
135@end defun
136
137If you want to write an authentication mechanism driver (@ref{Back end
138drivers}), use @code{sasl-make-mechanism} and modify
139@code{sasl-mechanisms} and @code{sasl-mechanism-alist} correctly.
140
141@defun sasl-make-mechanism name steps
142Allocate a @code{sasl-mechanism} object.
143This function takes two parameters---name of the mechanism, and a list
144of authentication functions.
145
146@example
147(defconst sasl-anonymous-steps
148 '(identity ;no initial response
149 sasl-anonymous-response))
150
151(put 'sasl-anonymous 'sasl-mechanism
152 (sasl-make-mechanism "ANONYMOUS" sasl-anonymous-steps))
153@end example
154
155@end defun
156
157@node Clients
158@section Clients
159
160A client (@code{sasl-client} object) initialized with four
161parameters---a mechanism, a user name, name of the service and name of
162the server.
163
164@defun sasl-make-client mechanism name service server
165Prepare a @code{sasl-client} object.
166@end defun
167
168@defun sasl-client-mechanism client
169Return the mechanism (@code{sasl-mechanism} object) of client.
170@end defun
171
172@defun sasl-client-name client
173Return the authorization name of client, a string.
174@end defun
175
176@defun sasl-client-service client
177Return the service name of client, a string.
178@end defun
179
180@defun sasl-client-server client
181Return the server name of client, a string.
182@end defun
183
184If you want to specify additional configuration properties, please use
185@code{sasl-client-set-property}.
186
187@defun sasl-client-set-property client property value
188Add the given property/value to client.
189@end defun
190
191@defun sasl-client-property client property
192Return the value of the property of client.
193@end defun
194
195@defun sasl-client-set-properties client plist
196Destructively set the properties of client.
197The second argument is the new property list.
198@end defun
199
200@defun sasl-client-properties client
201Return the whole property list of client configuration.
202@end defun
203
204@node Steps
205@section Steps
206
207A step (@code{sasl-step} object) is an abstraction of authentication
208``step'' which holds the response value and the next entry point for the
209authentication process (the latter is not accessible).
210
211@defun sasl-step-data step
212Return the data which @var{step} holds, a string.
213@end defun
214
215@defun sasl-step-set-data step data
216Store @var{data} string to @var{step}.
217@end defun
218
219To get the initial response, you should call the function
220@code{sasl-next-step} with the second argument @code{nil}.
221
222@example
223(setq name (sasl-mechanism-name mechanism))
224@end example
225
226At this point we could send the command which starts a SASL
227authentication protocol exchange. For example,
228
229@example
230(process-send-string
231 process
232 (if (sasl-step-data step) ;initial response
233 (format "AUTH %s %s\r\n" name (base64-encode-string (sasl-step-data step) t))
234 (format "AUTH %s\r\n" name)))
235@end example
236
237To go on with the authentication process, all you have to do is call
238@code{sasl-next-step} consecutively.
239
240@defun sasl-next-step client step
241Perform the authentication step.
242At the first time @var{step} should be set to @code{nil}.
243@end defun
244
245@node Back end drivers
246@chapter Back end drivers
247
248(Not yet written).
249
250@node Index
251@chapter Index
252@printindex cp
253
254@node Function Index
255@chapter Function Index
256@printindex fn
257
258@node Variable Index
259@chapter Variable Index
260@printindex vr
261
262@summarycontents
263@contents
264@bye
265
266@c End:
267
268@ignore
269 arch-tag: dc9650be-a953-40bf-bc55-24fe5f19d875
270@end ignore
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index af2132e4997..9c31f77f4d8 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -236,9 +236,9 @@ if address "sender" "owner-w3-beta@@xemacs.org" @{
236@} 236@}
237@end example 237@end example
238 238
239A few mailing lists do not use the @samp{Sender:} header, but does 239A few mailing lists do not use the @samp{Sender:} header, but has a
240contain some unique identifier in some other header. The following is 240unique identifier in some other header. The following is not a
241not a complete script, it assumes that @code{fileinto} has already been 241complete script, it assumes that @code{fileinto} has already been
242required. 242required.
243 243
244@example 244@example