aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2005-03-30 08:14:32 +0000
committerMiles Bader2005-03-30 08:14:32 +0000
commit10ace8ea53395cc0ca656080cc3e828febc39b34 (patch)
tree76c630eeaaeb80f46baa34c8af29ff0b41abfd4b
parent96a29ab7a8e391db9078d1ffc0c76faffb470a1b (diff)
downloademacs-10ace8ea53395cc0ca656080cc3e828febc39b34.tar.gz
emacs-10ace8ea53395cc0ca656080cc3e828febc39b34.zip
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-220
Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 45-52) - Update from CVS - Update from CVS: texi Makefile.in CVS keyw cruft - Update from CVS: ChangeLog tweaks 2005-03-29 Reiner Steib <Reiner.Steib@gmx.de> * etc/gnus-refcard.tex, etc/gnus-logo.eps: New files. 2005-03-25 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/message.el (message-resend): Bind rfc2047-encode-encoded-words. * lisp/gnus/mm-util.el (mm-replace-in-string): New function. (mm-xemacs-find-mime-charset-1): Ignore errors while loading latin-unity, which cannot be used with XEmacs 21.1. * lisp/gnus/rfc2047.el (rfc2047-encode-function-alist): Rename from rfc2047-encoding-function-alist in order to avoid conflicting with the old version. (rfc2047-encode-message-header): Remove useless goto-char. (rfc2047-encodable-p): Don't move point. (rfc2047-syntax-table): Treat `(' and `)' as is. (rfc2047-encode-region): Concatenate words containing non-ASCII characters in structured fields; don't encode space-delimited ASCII words even in unstructured fields; don't break words at char-category boundaries; encode encoded words in structured fields; treat text within parentheses as special; show the original text when error has occurred; move point to the end of the region after encoding, suggested by IRIE Tetsuya <irie@t.email.ne.jp>; treat backslash-quoted characters as non-special; check carefully whether to encode special characters; fix some kind of misconfigured headers; signal a real error if debug-on-quit or debug-on-error is non-nil; don't infloop, suggested by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>; assume the close parenthesis may be included in the encoded word; encode bogus delimiters. (rfc2047-encode-string): Use mm-with-multibyte-buffer. (rfc2047-encode-max-chars): New variable. (rfc2047-encode-1): New function. (rfc2047-encode): Use it; encode text so that it occupies the maximum width within 76-column; work correctly on Q encoding for iso-2022-* charsets; fold the line before encoding; don't append a space if the encoded word includes close parenthesis. (rfc2047-fold-region): Use existing whitespace for LWSP; make it sure not to break a line just after the header name. (rfc2047-b-encode-region): Remove. (rfc2047-b-encode-string): New function. (rfc2047-q-encode-region): Remove. (rfc2047-q-encode-string): New function. (rfc2047-encode-parameter): New function. (rfc2047-encoded-word-regexp): Don't use shy group. (rfc2047-decode-region): Follow rfc2047-encoded-word-regexp change. (rfc2047-parse-and-decode): Ditto. (rfc2047-decode): Treat the ascii coding-system as raw-text by default. 2005-03-25 Lars Magne Ingebrigtsen <larsi@gnus.org> * lisp/gnus/rfc2047.el (rfc2047-encode-encoded-words): New variable. (rfc2047-field-value): Strip props. (rfc2047-encode-message-header): Disabled header folding -- not all headers can be folded, and this should be done by the message composition mode. Probably. I think. (rfc2047-encodable-p): Say that =? needs encoding. (rfc2047-encode-region): Encode =? strings. 2005-03-25 Jesper Harder <harder@ifa.au.dk> * lisp/gnus/rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231 language tags; remove unnecessary '+'. Reported by Stefan Wiens <s.wi@gmx.net>. (rfc2047-decode-string): Don't cons a string unnecessarily. (rfc2047-parse-and-decode, rfc2047-decode): Use a character for the encoding to avoid consing a string. (rfc2047-decode): Use mm-subst-char-in-string instead of mm-replace-chars-in-string. 2005-03-25 TSUCHIYA Masatoshi <tsuchiya@namazu.org> * lisp/gnus/rfc2047.el (rfc2047-encode): Use uppercase letters to specify encodings of MIME-encoded words, in order to improve interoperability with several broken MUAs. 2005-03-21 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/gnus-srvr.el (gnus-browse-select-group): Add NUMBER argument and pass it to `gnus-browse-read-group'. (gnus-browse-read-group): Add NUMBER argument and pass it to `gnus-group-read-ephemeral-group'. * lisp/gnus/gnus-group.el (gnus-group-read-ephemeral-group): Add NUMBER argument and pass it to `gnus-group-read-group'. 2005-03-19 Aidan Kehoe <kehoea@parhasard.net> * lisp/gnus/mm-util.el (mm-xemacs-find-mime-charset): Only call mm-xemacs-find-mime-charset-1 if we have the mule feature available at runtime. 2005-03-25 Katsumi Yamaoka <yamaoka@jpl.org> * man/emacs-mime.texi (Display Customization): Markup fixes. (rfc2047): Update. 2005-03-23 Reiner Steib <Reiner.Steib@gmx.de> * man/gnus-faq.texi: Replaced with auto-generated version.
-rw-r--r--etc/ChangeLog4
-rw-r--r--etc/gnus-logo.eps1055
-rw-r--r--etc/gnus-refcard.tex1427
-rw-r--r--lisp/gnus/ChangeLog91
-rw-r--r--lisp/gnus/gnus-group.el6
-rw-r--r--lisp/gnus/gnus-srvr.el19
-rw-r--r--lisp/gnus/message.el3
-rw-r--r--lisp/gnus/mm-util.el30
-rw-r--r--lisp/gnus/rfc2047.el641
-rw-r--r--man/ChangeLog9
-rw-r--r--man/emacs-mime.texi33
-rw-r--r--man/gnus-faq.texi3521
-rw-r--r--man/message.texi2
13 files changed, 4675 insertions, 2166 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 5632e1aaf12..4272d50cf2a 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
12005-03-29 Reiner Steib <Reiner.Steib@gmx.de>
2
3 * gnus-refcard.tex, gnus-logo.eps: New files.
4
12005-03-23 David Ponce <david@dponce.com> 52005-03-23 David Ponce <david@dponce.com>
2 6
3 * NEWS: Mention recentf-keep. 7 * NEWS: Mention recentf-keep.
diff --git a/etc/gnus-logo.eps b/etc/gnus-logo.eps
new file mode 100644
index 00000000000..95408ba9af6
--- /dev/null
+++ b/etc/gnus-logo.eps
@@ -0,0 +1,1055 @@
1%!PS-Adobe-2.0 EPSF-2.0
2%%Title: gnuslogo1.ps
3%%Creator: XV Version 3.00 Rev: 3/30/93 - by John Bradley
4%%BoundingBox: 0 0 493 505
5%%Pages: 1
6%%DocumentFonts:
7%%EndComments
8%%EndProlog
9
10%%Page: 1 1
11
12% remember original state
13/origstate save def
14
15% build a temporary dictionary
1620 dict begin
17
18% define string to hold a scanline's worth of data
19/pix 62 string def
20
21% lower left corner
220 0 translate
23
24% size of image (on paper, in 1/72inch coords)
25493.0 505.0 scale
26
27% dimensions of data
28493 505 1
29
30% mapping matrix
31[493 0 0 -505 0 505]
32
33{currentfile pix readhexstring pop}
34image
35ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
36ffffffffffffffffffffffffffffffffffffffffff01fffffff8
37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
38fffffffffffffffffffffffffffffffffffffffff8003ffffff8
39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
40fffffffffffffffffffffffffffffffffffffffff0000ffffff8
41ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
42ffffffffffffffffffffffffffffffffffffffff8000007ffff8
43ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
44ffffffffffffffffffffffffffffffffffffffff0000003ffff8
45ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
46fffffffffffffffffffffffffffffffffffffffe0000000ffff8
47ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
48fffffffffffffffffffffffffffffffffffffff000000003fff8
49ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
50fffffffffffffffffffffffffffffffffffffff000000000fff8
51ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
52ffffffffffffffffffffffffffffffffffffffc0000000007ff8
53ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
54ffffffffffffffffffffffffffffffffffffff80000000003ff8
55ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
56ffffffffffffffffffffffffffffffffffffff00000000001ff8
57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
58fffffffffffffffffffffffffffffffffffffe00000000000ff8
59ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
60fffffffffffffffffffffffffffffffffffffc00000000000ff8
61ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
62fffffffffffffffffffffffffffffffffffff8000000000007f8
63ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
64fffffffffffffffffffffffffffffffffffff0000000000003f8
65ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
66fffffffffffffffffffffffffffffffffffff0000000000003f8
67fffffffffffffffffffffffffff800ffffffffffffffffffffffffffffffffffffffffff
68ffffffffffffffffffffffffffffffffffffe0000000000001f8
69fffffffffffffffffffffffffff0001fffffffffffffffffffffffffffffffffffffffff
70ffffffffffffffffffffffffffffffffffffc0000000000000f8
71ffffffffffffffffffffffffffc00007ffffffffffffffffffffffffffffffffffffffff
72ffffffffffffffffffffffffffffffffffffc0000000000000f8
73ffffffffffffffffffffffffff000001ffffffffffffffffffffffffffffffffffffffff
74ffffffffffffffffffffffffffffffffffff8000000000000078
75fffffffffffffffffffffffffe0000003ffffffffffff0001fffffffffffffffffffffff
76ffffffffffffffffffffffffffffffffffff0000000000000038
77fffffffffffffffffffffffffc0000001fffffffffffe00007ffffffffffffffffffffff
78fffffffffffffffffffffffffffffffffffe0000000000000038
79fffffffffffffffffffffffff800000007ffffffffff800001ffffffffffffffffffffff
80fffffffffffffffffffffffffffffffffffe0000000000000038
81fffffffffffffffffffffffff000000003fffffffffe0000003fffffffffffffffffffff
82fffffffffffffffffffffffffffffffffffc0000000000000018
83ffffffffffffffffffffffffe000000001fffffffff80000000fffffffffffffffffffff
84fffffffffffffffffffffffffffffffffffc0000000000000018
85ffffffffffffffffffffffffc000000000ffffffffe000000003ffffffffffffffffffff
86fffffffffffffffffffffffffffffffffff80000000000000018
87ffffffffffffffffffffffff80000000007fffffff8000000000ffffffffffffffffffff
88fffffffffffffffffffffffffffffffffff80000000000000008
89ffffffffffffffffffffffff00000000003fffffff00000000007fffffffffffffffffff
90fffffffffffffffffffffffffffffffffff00000000000000008
91fffffffffffffffffffffffe00000000001ffffffe00000000001fffffffffffffffffff
92fffffffffffffffffffffffffffffffffff00000000000000008
93fffffffffffffffffffffffc00000000000ffffff8000000000007ffffffffffffffffff
94ffffffffffffffffffffffffffffffffffe00000000000000008
95fffffffffffffffffffffff8000000000007fffff0000000000007ffffffffffffffffff
96ffffffffffffffffffffffffffffffffffe00000000000000008
97fffffffffffffffffffffff0000000000001ffffe0000000000000ffffffffffffffffff
98ffffffffffffffffffffffffffffffffffc00000000000000000
99ffffffffffffffffffffffe0000000000000ffffc00000000000007fffffffffffffffff
100ffffffffffffffffffffffffffffffffffc00000000000000000
101ffffffffffffffffffffffc00000000000007fff800000000000001fffffffffffffffff
102ffffffffffffffffffffffffffffffffff800000000000000000
103ffffffffffffffffffffff800000000000003fff000000000000000fffffffffffffffff
104ffffffffffffffffffffffffffffffffff800000000000000000
105ffffffffffffffffffffff000000000000003fff0000000000000007ffffffffffffffff
106ffffffffffffffffffffffffffffffffff000040000000000000
107fffffffffffffffffffffe000000000000000ffe0000000000000001ffffffffffffffff
108ffffffffffffffffffffffffffffffffff0007ffc00000000000
109fffffffffffffffffffffc000000000000000ffc0000000000000000ffffffffffffffff
110fffffffffffffffffffffffffffffffffe001ffffc0000000000
111fffffffffffffffffffffc0000000000000007fc00000000000000007fffffffffffffff
112fffffffffffffffffffffffffffffffffc003ffffe0000000000
113fffffffffffffffffffff80000000000000007f800000000000000003fffffffffffffff
114fffffffffffffffffffffffffffffffffc007fffffc000000000
115fffffffffffffffffffff00000000000000001f000000000000000001fffffffffffffff
116fffffffffffffffffffffffffffffffff800fffffff000000000
117ffffffffffffffffffffe00000000000000001f000000000000000000fffffffffffffff
118fffffffffffffffffffffffffffffffff801fffffff800000000
119ffffffffffffffffffffc00000000000000000e0000000000000000007ffffffffffffff
120fffffffffffffffffffffffffffffffff003ffffffff00000000
121ffffffffffffffffffff800000000000000000c0000000000000000003ffffffffffffff
122fffffffffffffffffffffffffffffffff007ffffffff00000000
123ffffffffffffffffffff00000000000000000000000000000000000000ffffffffffffff
124ffffffffffffffffffffffffffffffffe00fffffffff80000000
125fffffffffffffffffffe00000000000000000000000000000000000000ffffffffffffff
126ffffffffffffffffffffffffffffffffe01fffffffffc0000008
127fffffffffffffffffffc000000000000000000000000000000000000007fffffffffffff
128ffffffffffffffffffffffffffffffffc03fffffffffc0000008
129fffffffffffffffffff8000000000000000000000000000000000000001fffffffffffff
130ffffffffffffffffffffffffffffffffc07ffffffffff0000000
131fff9fffffffffffffff800000fe00000000000000000000000000000001fffffffffffff
132ffffffffffffffffffffffffffffffff807ffffffffff0000000
133fff9fffffffffffffff000001ff80000000000000000000000000000000fffffffffffff
134ffffffffffffffffffffffffffffffff80fffffffffff0000008
135fff0ffffffffffffffc000007ffc00000000000000000000000000000007ffffffffffff
136ffffffffffffffffffffffffffffffff81fffffffffff8000008
137fff0ffffffffffffffc00000fffc00000000000000000000000000000003ffffffffffff
138ffffffffffffffffffffffffffffffff01fffffffffff8000008
139ffe07fffffffffffff800001ffff00000000000000000000000000000001ffffffffffff
140ffffffffffffffffffffffffffffffff03fffffffffffc000008
141ffe07fffffffffffff00000fffffc0000000000000000000000000000000ffffffffffff
142fffffffffffffffffffffffffffffffe03fffffffffffc000008
143ffe03ffffffffffffc00001fffffe00000000000000000000000000000007fffffffffff
144fffffffffffffffffffffffffffffffe07fffffffffffe000008
145ffe03ffffffffffff800003ffffff00000000000000000000000000000003fffffffffff
146fffffffffffffffffffffffffffffffe07fffffffffffe000008
147ffc03ffffffffffff000007ffffff80000000000000f80000000000000003fffffffffff
148fffffffffffffffffffffffffffffffe0ffffffffffffe000008
149ffc01fffffffffffe00001fffffffe000000000000fffe000000000000001fffffffffff
150fffffffffffffffffffffffffffffffc0ffffffffffffe000008
151ffc00fffffffffffc00003ffffffff000000000001ffff800000000000000fffffffffff
152fffffffffffffffffffffffffffffffc1fffffffffffff000008
153ff800fffffffffff800003ffffffff800000000007ffffc000000000000007ffffffffff
154fffffffffffffffffffffffffffffffc3fffffffffffff000008
155ff8007fffffffffe00000fffffffffc0000000001ffffffc00000000000003ffffffffff
156fffffffffffffffffffffffffffffff87fffffffffffff000008
157ff8007fffffffffc00000fffffffffe0000000005ffffffe00000000000001ffffffffff
158fffffffffffffffffffffffffffffff87fffffffffffff000008
159ff8003fffffffff800001ffffffffff000000000ffffffffc0000000000000ffffffffff
160fffffffffffffffffffffffffffffff87fffffffffffff000008
161ff0001fffffffff000003ffffffffffc00000007fffffffff80000000000007fffffffff
162fffffffffffffffffffffffffffffff8ffffffffffffff000008
163ff0000ffffffffe000003ffffffffffc0000000ffffffffffc0000000000007fffffffff
164fffffffffffffffffffffffffffffffcffffffffffffff000008
165fe00007fffffff800000ffffffffffff0000001ffffffffffe0000000000001fffffffff
166ffffffffffffffffffffffffffffe7fdffffffffffffff000008
167fe00007fffffff000001ffffffffffff8000003fffffffffff0000000000001fffffffff
168ffffffffffffffffffffffffffffe7fdffffffffffffff000008
169fc00001ffffffc000003ffffffffffffc000007fffffffffffe0000000000007ffffffff
170ffffffffffffffffffffffffffffc7ffffffffffffffff000008
171fc00001ffffff0000003ffffffffffffe00000fffffffffffff0000000000007ffffffff
172fffffffffeffffffffffffffffff87ffffffffffffffff000008
173f800000fffffe0000007fffffffffffff00000fffffffffffff8000000000003ffffffff
174fffffffffcffffffffffffffffff87ffffffffffffffff000008
175f8000003ffff0000000ffffffffffffff80001fffffffffffffc000000000001ffffffff
176fffffffff8ffffffffffffffffff07ffffffffffffffff000008
177f8000001fffe0000001ffffffffffffff80001ffffffffffffff000000000000ffffffff
178fffffffff8fffffffffffffffffe0fffffffffffffffff000008
179f0000000fff00000003ffffffffffffffc0001ffffffffffffff8000000000007fffffff
180fffffffff0fffffffffffffffffe0fffffffffffffffff000018
181e00000001a000000007ffffffffffffffe0003ffffffffffffffc000000000003fffffff
182fffffffff0fffffffffffffffffc0fffffffffffffffff000018
183e000000000000000007fffffffffffffff0003ffffffffffffffc000000000003fffffff
184ffffffffe0fffffffffffffffffc1fffffffffffffffff000018
185c00000000000000000ffffffffffffffff0007ffffffffffffffe000000000001fffffff
186ffffffffe0fffffffffffffffff81fffffffffffffffff000018
187c00000000000000001ffffffffffffffff0007fffffffffffffff0000000000007ffffff
188ffffffffc0fffffffffffffffff83fffffffffffffffff000018
189800000000000000007ffffffffffffffff800ffffffffffffffffc000000000003ffffff
190ffffffff01fffffffffffffffff03fffffffffffffffff000038
191800000000000000007ffffffffffffffff800ffffffffffffffffe000000000001ffffff
192ffffffff01fffffffffffffffff03fffffffffffffffff800038
19300000000000000000fffffffffffffffffc00fffffffffffffffff000000000000ffffff
194fffffffe03ffffffffffffffffe07fffffffffffffffff800038
19500000000000000001fffffffffffffffffc01fffffffffffffffff8000000000007fffff
196fffffffc03ffffffffffffffffe07fffffffffffffffff800038
19700000000000000003fffffffffffffffffe03fffffffffffffffffc000000000003fffff
198fffffff803ffffffffffffffffc07fffffffffffffffff800038
19900000000000000007ffffffffffffffffff03fffffffffffffffffe000000000000fffff
200fffffff007ffffffffffffffffc0ffffffffffffffffff800038
2010000000000000000fffffffffffffffffff07ffffffffffffffffff000000000000fffff
202fffffff007ffffffffffffffff80ffffffffffffffffff800078
2030000000000000003ffffffffffffffff8ff87ffffffffffffffffff8000000000001ffff
204ffffffc00fffffffffffffffff81ffffffffffffffffff800078
2058000000000000007ffffffffffffffff0ff8fffffffffffffffffffc000000000000ffff
206ffffffc00fffffffffffffffff01ffffffffffffffffff8000f8
2078000000000000007fffffffffffffffe0ffffffffffffffffffffffe0000000000007fff
208ffffff801fffffffffffffffff03ffffffffffffffffff8000f8
209c00000000000001ffffffffffffffffc0fffffffffffffffffffffff0000000000001fff
210fffffe001ffffffffffffffffe07ffffffffffffffffff8000f8
211e00000000000007ffffffffffffffff83fffffffffffffffffffffffc0000000000007ff
212fffff8003ffffffffffffffffc07ffffffffffffffffff8000f8
213f00000000000007ffffffffffffffff03fffffffffffffffffffffffc0000000000001ff
214fffff0003ffffffffffffffff80fffffffffffffffffff8000f8
215f0000000000000fffffffffffffffff07fffffffffffffffffffffffe0000000000000ff
216ffffe0003ffffffffffffffff00fffffffffffffffffff8001f8
217f8000000000003ffffffffffffffffe07ffffffffffffffffffffffff00000000000000f
218ffff00007fffffffffffffffe01fffffffffffffffffff0001f8
219fc000000000007ffffffffffffffffc07ffffffffffffffffffffffff800000000000007
220fffc00007fffffffffffffffc01fffffffffffffffffff0001f8
221fc000000000007ffffffffffffffffc0fffffffffffffffffffffffff800000000000000
222ffe000007ffffbffffffffff801fffffffffffffffffff0001f8
223fe00000000001fffffffffffffffff03fffffffffffffffffffffffffe00000000000000
22400000000fffff3ffffffffff003fffffffffffffffffff0001f8
225fe00000000003fffffffffffffffff03ffffffffffffffffffffffffff00000000000000
22600000001fffff1fffffffffe003fffffffffffffffffff0003f8
227ff00000000007ffffffffffffffffe03ffffffffffffffffffffffffff00000000000000
22800000001ffffe1fffffffffc007fffffffffffffffffff0003f8
229ff8000000001fffffffffffffffffc07ffffffffffffffffffffffffff80000000000000
23000000003ffffe0fffffffff0007fffffffffffffffffff0003f8
231ffc000000003fffffffffffffffffc0fffffffffffffffffffffffffffc0000000000000
23200000003ffffc0ffffffffe0007fffffffffffffffffff0003f8
233ffe00000000ffffffffffffffffff81fffffffffffffffffffffffffffe0000000000000
23400000007ffffc07fffffff8000ffffffffffffffffffff0003f8
235fff00000003ffffffffffffffffff01ffffffffffffffffffffffffffff0000000000000
23600000007ffff803fffffff0000fffffffffffffffffffe0007f8
237fff8000000ffffffffffffffffffe03ffffffffffffffffffffffffffff8000000000000
23800000007ffff801ffffffc0001fffffffffffffffffffe0007f8
239fffc000001ffffffffffffffffffe07ffffffffffffffffffffffffffffc000000000000
2400000000fffff000ffffff80003fffffffffffffffffffe0007f8
241fffe00000fffffffffffffffffffc07ffffffffffffffffffffffffffffc000000000000
2420000000fffff0007ffffe00003fffffffffffffffffffe0007f8
243ffff80007fffffffffffffffffff80fffffffffffffffffffffffffffffe000000000000
2440000001ffffe0001ffff800007fffffffffffffffffffe000ff8
245ffffe007ffffffffffffffffffff80ffffffffffffffffffffffffffffff000000000000
2460000001ffffe0000fffc000007fffffffffffffffffffe000ff8
247ffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffff800000000000
2480000003ffffe0000000000000ffffffffffffffffffffe000ff8
249fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffc00000000000
2500000003ffffc0000000000000ffffffffffffffffffffe000ff8
251fffffffffffffffffffffffffffe03ffffffffffffffffffffffffffffffe00000000000
2520000007ffff80000000000001ffffffffffffffffffffe001ff8
253fffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffff00000000000
2540000007ffff80000000000001ffffffffffffffffffffe001ff8
255fffffffffffffffffffffffffff807fffffffffffffffffffffffffffffff80000000000
256000000fffff80000000000003ffffffffffffffffffffc001ff8
257fffffffffffffffffffffffffff80ffffffffffffffffffffffffffffffffc0000000000
258000003fffff00000000000007ffffffffffffffffffffc001ff8
259fffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffe0000000000
260000007ffffe00000000000007ffffffffffffffffffffe003ff8
261fffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffff0000000000
262000007ffffe0000000000000fffffffffffffffffffffc003ff8
263ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffff8000000000
26400001fffffc0000000000001fffffffffffffffffffffc003ff8
265ffffffffffffffffffffffffffc07fffffffffffffffffffffffffffffffffe000000000
26600001fffffc0000000000003fffffffffffffffffffffc003ff8
267ffffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffff000000000
26800003fffff80000000000003fffffffffffffffffffffc007ff8
269ffffffffffffffffffffffffff01fffffffffffffffffffffffffffffffffff800000000
27000007fffff80000000000007fffffffffffffffffffffc007ff8
271ffffffffffffffffffffffffff03fffffffffffffffffffffffffffffffffffc00000000
2720000ffffff0000000000000ffffffffffffffffffffffc007ff8
273fffffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffc00000000
2740001ffffff0000000000001ffffffffffffffffffffffc007ff8
275fffffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffff00000000
2760003fffffe0000000000001ffffffffffffffffffffff800fff8
277fffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffff80000000
2780007fffffe0000000000003ffffffffffffffffffffff800fff8
279fffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffff0000000
280001ffffffc0000000000007ffffffffffffffffffffff800fff8
281fffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffff8000000
282003ffffffc000000000000fffffffffffffffffffffff800fff8
283ffffffffffffffffffffffffe07ffffffffffffffffffffffffffffffffffffffe000000
28400fffffff8000000000003fffffffffffffffffffffff001fff8
285ffffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffff800000
28603fffffff8000000000003fffffffffffffffffffffff001fff8
287ffffffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffc00000
28807fffffff0000000000007fffffffffffffffffffffff001fff8
289ffffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffc0000
2903ffffffff000000000000ffffffffffffffffffffffff003fff8
291ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffe03f
292fffffffff000000000003ffffffffffffffffffffffff003fff8
293ffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffff
294fffffffff800000000007ffffffffffffffffffffffff003fff8
295fffffffffffffffffffffffe03ffffffffffffffffffffffffffffffffffffffffffffff
296fffffffff80000000000ffffffffffffffffffffffffe003fff8
297fffffffffffffffffffffffc07ffffffffffffffffffffffffffffffffffffffffffffff
298fffffffffc0000000003ffffffffffffffffffffffffe007fff8
299fffffffffffffffffffffffc0fffffffffffffffffffffffffffffffffffffffffffffff
300fffffffffe0000000007ffffffffffffffffffffffffe007fff8
301fffffffffffffffffffffff81fffffffffffffffffffffffffffffffffffffffffffffff
302fffffffffe000000000fffffffffffffffffffffffffe00ffff8
303fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
304ffffffffff000000001fffffffffffffffffffffffffe00ffff8
305ffffffffffffffffffffffe03ffffffffffffffffffffffffbffffffffffffffffffffff
306ffffffffff800000007fffffffffffffffffffffffffc00ffff8
307ffffffffffffffffffffffe07ffffffffffffffffffdfffff1ffffffffffffffffffffff
308ffffffffffc0000000ffffffffffffffffffffffffffc00ffff8
309ffffffffffffffffffffffe07ffffffffffffffffff9fffff07fffffffffffffffffffff
310ffffffffffe0000001ffffffffffffffffffffffffffc00ffff8
311ffffffffffffffffffffffc0ffffffffffffffffffe3ffffe03fffffffffffffffffffff
312fffffffffff800001fffffffffffffffffffffffffffc01ffff8
313ffffffffffffffffffffff81ffffffffffffffffffc7ffffc00fffffffffffffffffffff
314fffffffffffe00007fffffffffffffffffffffffffffc01ffff8
315ffffffffffffffffffffff81ffffffffffffffffff87ffffc007ffffffffffffffffffff
316ffffffffffff8003ffffffffffffffffffffffffffff801ffff8
317ffffffffffffffffffffff03ffffffffffffffffff0fffff8007ffffffffffffffffffff
318ffffffffffffffffffffffffffffffffffffffffffff803ffff8
319fffffffffffffffffffffe07fffffffffffffffffe0fffff8001ffffffffffffffffffff
320ffffffffffffffffffffffffffffffffffffffffffff803ffff8
321fffffffffffffffffffffe07fffffffffffffffffc1fffff0000ffffffffffffffffffff
322ffffffffffffffffffffffffffffffffffffffffffff803ffff8
323fffffffffffffffffffffc0ffffffffffffffffff83ffffe00007fffffffffffffffffff
324ffffffffffffffffffffffffffffffffffffffffffff007ffff8
325fffffffffffffffffffff81fffffffffffffffffe03ffffe00007fffffffffffffffffff
326ffffffffffffffffffffffffffffffffffffffffffff007ffff8
327fffffffffffffffffffff83fffffffffffffffffc07ffffc00003fffffffffffffffffff
328ffffffffffffffffffffffffffffffffffffffffffff007ffff8
329fffffffffffffffffffff03fffffffffffffffff80fffff800001fffffffffffffffffff
330fffffffffffffffffffffffffffffffffffffffffffe00fffff8
331ffffffffffffffffffffe07fffffffffffffffff00fffff800000fffffffffffffffffff
332fffffffffffffffffffffffffffffffffffffffffffe00fffff8
333ffffffffffffffffffffe0fffffffffffffffffe01fffff0000007ffffffffffffffffff
334fffffffffffffffffffffffffffffffffffffffffffe00fffff8
335ffffffffffffffffffffc0fffffffffffffffffc01ffffe0000003ffffffffffffffffff
336fffffffffffffffffffffffffffffffffffffffffffe00fffff8
337ffffffffffffffffffff81fffffffffffffffff803ffffe0000003ffffffffffffffffff
338fffffffffffffffffffffffffffffffffffffffffffe01fffff8
339ffffffffffffffffffff81ffffffffffffffffe007ffffc0000003ffffffffffffffffff
340fffffffffffffffffffffffffffffffffffffffffffc01fffff8
341ffffffffffffffffffff83ffffffffffffffffe007ffffc0000001ffffffffffffffffff
342fffffffffffffffffffffffffffffffffffffffffffc01fffff8
343ffffffffffffffffffff07ffffffffffffffff800fffff80000000ffffffffffffffffff
344fffffffffffffffffffffffffffffffffffffffffffc01fffff8
345fffffffffffffffffffe07ffffffffffffffff800fffff00000000ffffffffffffffffff
346fffffffffffffffffffffffffffffffffffffffffffc03fffff8
347fffffffffffffffffffc0ffffffffffffffffe001fffff00000000ffffffffffffffffff
348fffffffffffffffffffffffffffffffffffffffffff803fffff8
349fffffffffffffffffffc0ffffffffffffffffc003ffffe000000007fffffffffffffffff
350fffffffffffffffffffffffffffffffffffffffffff803fffff8
351fffffffffffffffffff81ffffffffffffffff0003ffffc000000007fffffffffffffffff
352fffffffffffffffffffffffffffffffffffffffffff007fffff8
353fffffffffffffffffff01fffffffffffffffe0007ffffc000000003fffffffffffffffff
354fffffffffffffffffffffffffffffffffffffffffff007fffff8
355fffffffffffffffffff03fffffffffffffffe000fffff8000000001fffffffffffffffff
356fffffffffffffffffffffffffffffffffffffffffff007fffff8
357ffffffffffffffffffe07fffffffffffffff8000fffff0000000001fffffffffffffffff
358ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
359ffffffffffffffffffc07fffffffffffffff0001fffff0000000001fffffffffffffffff
360ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
361ffffffffffffffffffc0fffffffffffffffe0001ffffe0000000000fffffffffffffffff
362ffffffffffffffffffffffffffffffffffffffffffe00ffffff8
363ffffffffffffffffff80fffffffffffffff80003ffffe0000000000fffffffffffffffff
364ffffffffffffffffffffffffffffffffffffffffffe01ffffff8
365ffffffffffffffffff81fffffffffffffff00007ffffc0000000000fffffffffffffffff
366ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
367ffffffffffffffffff81ffffffffffffffe00007ffffc00000000007ffffffffffffffff
368ffffffffffffffffffffffffffffffffffffffffffc01ffffff8
369ffffffffffffffffff03ffffffffffffffc0000fffffc00000000007ffffffffffffffff
370ffffffffffffffffffffffffffffffffffffffffffc03ffffff8
371fffffffffffffffffe03ffffffffffffff00000fffffe00000000007ffffffffffffffff
372ffffffffffffffffffffffffffffffffffffffffff803ffffff8
373fffffffffffffffffc07fffffffffffffe00001ffffff00000000007ffffffffffffffff
374ffffffffffffffffffffffffffffffffffffffffff803ffffff8
375fffffffffffffffffc07fffffffffffffc00007ffffffc0000000007ffffffffffffffff
376ffffffffffffffffffffffffffffffffffffffffff807ffffff8
377fffffffffffffffff807fffffffffffff00001fffffffe0000000003ffffffffffffffff
378ffffffffffffffffffffffffffffffffffffffffff807ffffff8
379fffffffffffffffff807ffffffffffffe00003ffffffff0000000003ffffffffffffffff
380ffffffffffffffffffffffffffffffffffffffffff007ffffff8
381fffffffffffffffff00fffffffffffff800007ffffffff8000000003ffffffffffffffff
382ffffffffffffffffffffffffffffffffffffffffff00fffffff8
383fffffffffffffffff00fffffffffffff00000fffffffffc000000001ffffffffffffffff
384ffffffffffffffffffffffffffffffffffffffffff00fffffff8
385ffffffffffffffffe00ffffffffffffc00003fffffffffe000000001ffffffffffffffff
386fffffffffffffffffffffffffffffffffffffffffe01fffffff8
387ffffffffffffffffe00ffffffffffff800007ffffffffff000000001ffffffffffffffff
388fffffffffffffffffffffffffffffffffffffffffe01fffffff8
389ffffffffffffffffc00ffffffffffff00000fffffffffff800000001ffffffffffffffff
390fffffffffffffffffffffffffffffffffffffffffe01fffffff8
391ffffffffffffffff800fffffffffffc00001fffffffffffc00000001ffffffffffffffff
392fffffffffffffffffffffffffffffffffffffffffe03fffffff8
393ffffffffffffffff800fffffffffff000007fffffffffffe00000001ffffffffffffffff
394fffffffffffffffffffffffffffffffffffffffffe03fffffff8
395ffffffffffffffff001ffffffffffe00000fffffffffffff00000001ffffffffffffffff
396fffffffffffffffffffffffffffffffffffffffffc07fffffff8
397ffffffffffffffff001ffffffffffc00001fffffffffffff80000001ffffffffffffffff
398fffffffffffffffffffffffffffffffffffffffffc07fffffff8
399fffffffffffffffe000fffffffffe000003fffffffffffff80000001ffffffffffffffff
400fffffffffffffffffffffffffffffffffffffffff807fffffff8
401fffffffffffffffe000fffffffffc000007fffffffffffffc0000000ffffffffffffffff
402fffffffffffffffffffffffffffffffffffffffff807fffffff8
403fffffffffffffffc000fffffffff800000ffffffffffffffe0000000ffffffffffffffff
404fffffffffffffffffffffffffffffffffffffffff80ffffffff8
405fffffffffffffffc0007fffffffe000001fffffffffffffff0000000ffffffffffffffff
406fffffffffffffffffffffffffffffffffffffffff80ffffffff8
407fffffffffffffffc0003fffffffc000003fffffffffffffff0000000ffffffffffffffff
408fffffffffffffffffffffffffffffffffffffffff01ffffffff8
409fffffffffffffff80001fffffff8000007fffffffffffffff8000000ffffffffffffffff
410fffffffffffffffffffffffffffffffffffffffff01ffffffff8
411fffffffffffffff80000ffffffc000001ffffffffffffffff8000000ffffffffffffffff
412fffffffffffffffffffffffffffffffffffffffff01ffffffff8
413fffffffffffffff800003fffff0000003ffffffffffffffffc000000ffffffffffffffff
414ffffffffffffffffffffffffffffffffffffffffe01ffffffff8
415fffffffffffffff000000000000000007ffffffffffffffffc000000ffffffffffffffff
416ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
417ffffffffffffffe00000000000000000fffffffffffffffffe000000ffffffffffffffff
418ffffffffffffffffffffffffffffffffffffffffe03ffffffff8
419ffffffffffffffe00000000000000001fffffffffffffffffe000000ffffffffffffffff
420ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
421ffffffffffffffc00000000000000003fffffffffffffffffe000000ffffffffffffffff
422ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
423ffffffffffffffc00000000000000007ffffffffffffffffff000000ffffffffffffffff
424ffffffffffffffffffffffffffffffffffffffffc07ffffffff8
425ffffffffffffffc0000000000000000fffffffffffffffffff000000ffffffffffffffff
426ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
427ffffffffffffff80000000000000003fffffffffffffffffff800000ffffffffffffffff
428ffffffffffffffffffffffffffffffffffffffffc0fffffffff8
429ffffffffffffff80000000000000007fffffffffffffffffff800001ffffffffffffffff
430ffffffffffffffffffffffffffffffffffffffff80fffffffff8
431ffffffffffffff8000000000000001ffffffffffffffffffff800001ffffffffffffffff
432ffffffffffffffffffffffffffffffffffffffff81fffffffff8
433ffffffffffffff8000000000000001ffffffffffffffffffffc00001ffffffffffffffff
434ffffffffffffffffffffffffffffffffffffffff81fffffffff8
435ffffffffffffff8000000000000003ffffffffffffffffffffe00001ffffffffffffffff
436ffffffffffffffffffffffffffffffffffffffff01fffffffff8
437ffffffffffffff000000000000000fffffffffffffffffffffe00001ffffffffffffffff
438ffffffffffffffffffffffffffffffffffffffff03fffffffff8
439ffffffffffffff000000000000001ffffffffffffffffffffff00001ffffffffffffffff
440fffffffffffffffffffffffffffffffffffffffe03fffffffff8
441fffffffffffffe000000000000003ffffffffffffffffffffff00001ffffffffffffffff
442fffffffffffffffffffffffffffffffffffffffe03fffffffff8
443fffffffffffffe000000000000007ffffffffffffffffffffff00001ffffffffffffffff
444fffffffffffffffffffffffffffffffffffffffe03fffffffff8
445fffffffffffffc00000000000001fffffffffffffffffffffff00001ffffffffffffffff
446fffffffffffffffffffffffffffffffffffffffe07fffffffff8
447fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
448fffffffffffffffffffffffffffffffffffffffc07fffffffff8
449fffffffffffffc00000000000007fffffffffffffffffffffff00001ffffffffffffffff
450fffffffffffffffffffffffffffffffffffffffc07fffffffff8
451fffffffffffffc0000000000003ffffffffffffffffffffffff80003ffffffffffffffff
452fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
453fffffffffffffc0000000000007ffffffffffffffffffffffff80003ffffffffffffffff
454fffffffffffffffffffffffffffffffffffffffc0ffffffffff8
455fffffffffffffc000000000000fffffffffffffffffffffffff80003ffffffffffffffff
456fffffffffffffffffffffffffffffffffffffff80ffffffffff8
457fffffffffffffc000000000003fffffffffffffffffffffffff80003ffffffffffffffff
458fffffffffffffffffffffffffffffffffffffff80ffffffffff8
459fffffffffffffc000000000007fffffffffffffffffffffffff80003ffffffffffffffff
460fffffffffffffffffffffffffffffffffffffff00ffffffffff8
461fffffffffffffc00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
462fffffffffffffffffffffffffffffffffffffff01ffffffffff8
463fffffffffffffe00000000001ffffffffffffffffffffffffff80007ffffffffffffffff
464fffffffffffffffffffffffffffffffffffffff01ffffffffff8
465fffffffffffffe0000000000fffffffffffffffffffffffffff80007ffffffffffffffff
466ffffffffffffffffffffffffffffffffffffffe01ffffffffff8
467ffffffffffffff0000000001fffffffffffffffffffffffffff80007ffffffffffffffff
468ffffffffffffffffffffffffffffffffffffffe03ffffffffff8
469ffffffffffffff000000000ffffffffffffffffffffffffffff80007ffffffffffffffff
470fffffffffffffffffffdffffffffffffffffffe03ffffffffff8
471ffffffffffffff800000003ffffffffffffffffffffffffffff80007ffffffffffffffff
472fffffffffffffffffff9ffffffffffffffffffc03ffffffffff8
473ffffffffffffffe0000001fffffffffffffffffffffffffffff80007ffffffffffffffff
474fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
475fffffffffffffff0000001fffffffffffffffffffffffffffff8000fffffffffffffffff
476fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
477fffffffffffffff800000ffffffffffffffffffffffffffffffc000fffffffffffffffff
478fffffffffffffffffff1ffffffffffffffffff807ffffffffff8
479fffffffffffffffe0003fffffffffffffffffffffffffffffffc000fffffffffffffffff
480ffffffffffffffffffe1ffffffffffffffffff807ffffffffff8
481ffffffffffffffff4007fffffffffffffffffffffffffffffffc001fffffffffffffffff
482ffffffffffffffffffc1ffffffffffffffffff00fffffffffff8
483fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
484ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
485fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
486ffffffffffffffffff83ffffffffffffffffff00fffffffffff8
487fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
488ffffffffffffffffff03ffffffffffffffffff00fffffffffff8
489fffffffffffffffffffffffffffffffffffffffffffffffffffc001fffffffffffffffff
490ffffffffffffffffff03ffffffffffffffffff01fffffffffff8
491fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
492ffffffffffffffffff07ffffffffffffffffff01fffffffffff8
493fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
494fffffffffffffffffe07fffffffffffffffffe01fffffffffff8
495fffffffffffffffffffffffffffffffffffffffffffffffffffc003fffffffffffffffff
496fffffffffffffffffc07fffffffffffffffffe03fffffffffff8
497fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
498fffffffffffffffffc07fffffffffffffffffc03fffffffffff8
499fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffffff
500fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
501fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
502fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
503fffffffffffffffffffffffffffffffffffffffffffffffffffe007fffffffffffffffff
504fffffffffffffffff80ffffffffffffffffffc03fffffffffff8
505fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
506fffffffffffffffff03ffffffffffffffffff807fffffffffff8
507fffffffffffffffffffffffffffffffffffffffffffffffffffe00ffffffffffffffffff
508ffffffffffffffffe01ffffffffffffffffff807fffffffffff8
509fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
510ffffffffffffffffe03ffffffffffffffffff807fffffffffff8
511fffffffffffffffffffffffffffffffffffffffffffffffffffe01ffffffffffffffffff
512ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
513fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
514ffffffffffffffffc07ffffffffffffffffff00ffffffffffff8
515fffffffffffffffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff
516ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
517fffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffffffff
518ffffffffffffffff80fffffffffffffffffff00ffffffffffff8
519ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
520ffffffffffffffff00ffffffffffffffffffe01ffffffffffff8
521ffffffffffffffffffffffffffffffffffffffffffffffffffff07ffffffffffffffffff
522fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
523ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
524fffffffffffffffe00ffffffffffffffffffe01ffffffffffff8
525ffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffffffffffffff
526fffffffffffffffc01ffffffffffffffffffc01ffffffffffff8
527ffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff
528fffffffffffffffc03ffffffffffffffffffc01ffffffffffff8
529ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff
530fffffffffffffffc03ffffffffffffffffffc03ffffffffffff8
531ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff
532fffffffffffffff807ffffffffffffffffffc03ffffffffffff8
533ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
534fffffffffffffff807ffffffffffffffffff803ffffffffffff8
535ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
536fffffffffffffff00fffffffffffffffffff803ffffffffffff8
537ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
538fffffffffffffff00fffffffffffffffffff807ffffffffffff8
539ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
540ffffffffffffffe01fffffffffffffffffff807ffffffffffff8
541ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
542ffffffffffffffe03fffffffffffffffffff807ffffffffffff8
543ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
544ffffffffffffffc03fffffffffffffffffff807ffffffffffff8
545ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
546ffffffffffffff807fffffffffffffffffff00fffffffffffff8
547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
548ffffffffffffff807fffffffffffffffffff00fffffffffffff8
549ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
550ffffffffffffff00ffffffffffffffffffff00fffffffffffff8
551ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
552ffffffffffffff00fffffffffffffffffffe00fffffffffffff8
553ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
554fffffffffffffe01fffffffffffffffffffe01fffffffffffff8
555ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
556fffffffffffffe03fffffffffffffffffffe01fffffffffffff8
557ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
558fffffffffffffc03fffffffffffffffffffc01fffffffffffff8
559ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
560fffffffffffffc07fffffffffffffffffffc01fffffffffffff8
561ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
562fffffffffffff807fffffffffffffffffffc03fffffffffffff8
563ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
564fffffffffffff00ffffffffffffffffffffc03fffffffffffff8
565ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
566fffffffffffff00ffffffffffffffffffff803fffffffffffff8
567ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
568ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
569ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
570ffffffffffffe01ffffffffffffffffffff803fffffffffffff8
571ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
572ffffffffffffc03ffffffffffffffffffff807fffffffffffff8
573ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
574ffffffffffffc03ffffffffffffffffffff007fffffffffffff8
575ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
576ffffffffffff807ffffffffffffffffffff007fffffffffffff8
577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
578ffffffffffff807ffffffffffffffffffff007fffffffffffff8
579ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
580ffffffffffff00fffffffffffffffffffff007fffffffffffff8
581ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
582fffffffffffe00ffffffffffffffffffffe00ffffffffffffff8
583ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
584fffffffffffe01ffffffffffffffffffffe00ffffffffffffff8
585ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffff
586fffffffffffc01ffffffffffffffffffffe00ffffffffffffff8
587ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
588fffffffffffc03ffffffffffffffffffffe00ffffffffffffff8
589ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1fffffffffffff
590fffffffffff803ffffffffffffffffffffc00ffffffffffffff8
591fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1fffffffffffff
592fffffffffff807ffffffffffffffffffffc00ffffffffffffff8
593fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1fffffffffffff
594fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
595fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3fffffffffffff
596fffffffffff00fffffffffffffffffffffc01ffffffffffffff8
597fffffffffffffffffffffffffffffffffffffffffffffffffffffffff83fffffffffffff
598ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
599fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
600ffffffffffc01fffffffffffffffffffffc01ffffffffffffff8
601fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
602ffffffffff801fffffffffffffffffffff801ffffffffffffff8
603fffffffffffffffffffffffffffffffffffffffffffffffffffffffff07fffffffffffff
604ffffffffff803fffffffffffffffffffff801ffffffffffffff8
605ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffff
606ffffffffff003fffffffffffffffffffff803ffffffffffffff8
607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffffffff
608fffffffffe007fffffffffffffffffffff803ffffffffffffff8
609ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1ffffffffffffff
610fffffffffc007fffffffffffffffffffff003ffffffffffffff8
611ffffffffffffffffffffffffffffffffffffffffffffffffffffffff81ffffffffffffff
612fffffffffc00ffffffffffffffffffffff003ffffffffffffff8
613ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
614fffffffff800ffffffffffffffffffffff003ffffffffffffff8
615ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffff
616fffffffff801ffffffffffffffffffffff003ffffffffffffff8
617ffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffff
618fffffffff803ffffffffffffffffffffff007ffffffffffffff8
619fffffffffffffffffffffffffffffffffffffffffffffffffffffffe07ffffffffffffff
620fffffffff003fffffffffffffffffffffe007ffffffffffffff8
621fffffffffffffffffffffffffffffffffffffffffffffffffffffffc07ffffffffffffff
622ffffffffe007fffffffffffffffffffffe007ffffffffffffff8
623fffffffffffffffffffffffffffffffffffffffffffffffffffffff807ffffffffffffff
624ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
625fffffffffffffffffffffffffffffffffffffffffffffffffffffff007ffffffffffffff
626ffffffffc007fffffffffffffffffffffe007ffffffffffffff8
627fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
628ffffffff800ffffffffffffffffffffffe00fffffffffffffff8
629fffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffff
630ffffffff000ffffffffffffffffffffffe00fffffffffffffff8
631ffffffffffffffffffffffffffffffffffffffffffffffffffffffe00fffffffffffffff
632fffffffe001ffffffffffffffffffffffe00fffffffffffffff8
633ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
634fffffffc003ffffffffffffffffffffffe00fffffffffffffff8
635ffffffffffffffffffffffffffffffffffffffffffffffffffffffc01fffffffffffffff
6369ffffffc003ffffffffffffffffffffffe00fffffffffffffff8
637ffffffffffffffffffffffffffffffffffffffffffffffffffffff803fffffffffffffff
6380ffffff8003ffffffffffffffffffffffc01fffffffffffffff8
639ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
64007fffff0007ffffffffffffffffffffffc01fffffffffffffff8
641ffffffffffffffffffffffffffffffffffffffffffffffffffffff003ffffffffffffffe
64207ffffe000fffffffffffffffffffffffc01fffffffffffffff8
643fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff8
64403ffffc000fffffffffffffffffffffffc01fffffffffffffff8
645fffffffffffffffffffffffffffffffffffffffffffffffffffffe007ffffffffffffff0
64603ffff8001fffffffffffffffffffffff801fffffffffffffff8
647fffffffffffffffffffffffffffffffffffffffffffffffffffffc007ffffffffffffff0
64801ffff0003fffffffffffffffffffffff803fffffffffffffff8
649fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
65000fffe0003fffffffffffffffffffffff803fffffffffffffff8
651fffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffe0
65200fffe0003fffffffffffffffffffffff803fffffffffffffff8
653fffffffffffffffffffffffffffffffffffffffffffffffffffff001ffffffffffffffc0
654003ffc0007fffffffffffffffffffffff003fffffffffffffff8
655ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff80
656001fe0001ffffffffffffffffffffffff003fffffffffffffff8
657ffffffffffffffffffffffffffffffffffffffffffffffffffffe003ffffffffffffff00
658000fc0001ffffffffffffffffffffffff007fffffffffffffff8
659ffffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe00
660000000001ffffffffffffffffffffffff007fffffffffffffff8
661ffffffffffffffffffffffffffffffffffffffffffffffffffff8007fffffffffffffe00
662000000003ffffffffffffffffffffffff007fffffffffffffff8
663ffffffffffffffffffffffffffffffffffffffffffffffffffff800ffffffffffffffc00
664000000003ffffffffffffffffffffffff007fffffffffffffff8
665ffffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffff800
666000000007fffffffffffffffffffffffe007fffffffffffffff8
667fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff800
668000000007fffffffffffffffffffffffe007fffffffffffffff8
669fffffffffffffffffffffffffffffffffffffffffffffffffffe001ffffffffffffff000
67000000001ffffffffffffffffffffffffe007fffffffffffffff8
671fffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff000
67200000001ffffffffffffffffffffffffe007fffffffffffffff8
673fffffffffffffffffffffffffffffffffffffffffffffffffffc007fffffffffffffe000
67400000001ffffffffffffffffffffffffe007fffffffffffffff8
675fffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffc000
67600000003ffffffffffffffffffffffffc00ffffffffffffffff8
677fffffffffffffffffffffffffffffffffffffffffffffffffff000ffffffffffffffc000
67800000003ffffffffffffffffffffffffc00ffffffffffffffff8
679ffffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff8000
68000000007ffffffffffffffffffffffffc00ffffffffffffffff8
681ffffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff0000
6820000000fffffffffffffffffffffffffc01ffffffffffffffff8
683ffffffffffffffffffffffffffffffffffffffffffffffffffc003ffffffffffffff0000
6840000001fffffffffffffffffffffffffc01ffffffffffffffff8
685ffffffffffffffffffffffffffffffffffffffffffffffffff8003fffffffffffffe0000
6860000001fffffffffffffffffffffffffc01ffffffffffffffff8
687ffffffffffffffffffffffffffffffffffffffffffffffffff0007fffffffffffffe0000
6880000003fffffffffffffffffffffffffc01ffffffffffffffff8
689fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffc0000
6900000007fffffffffffffffffffffffff801ffffffffffffffff8
691fffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffff80000
6920000007fffffffffffffffffffffffff801ffffffffffffffff8
693fffffffffffffffffffffffffffffffffffffffffffffffffc001ffffffffffffff80000
694000000ffffffffffffffffffffffffff801ffffffffffffffff8
695fffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff00000
696000001ffffffffffffffffffffffffff801ffffffffffffffff8
697fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
698000001ffffffffffffffffffffffffff801ffffffffffffffff8
699fffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff00000
700000003ffffffffffffffffffffffffff801ffffffffffffffff8
701ffffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe00000
702000003ffffffffffffffffffffffffff801ffffffffffffffff8
703ffffffffffffffffffffffffffffffffffffffffffffffffe000ffffffffffffffe00000
704000007ffffffffffffffffffffffffff803ffffffffffffffff8
705ffffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffc00000
70600000fffffffffffffffffffffffffff003ffffffffffffffff8
707ffffffffffffffffffffffffffffffffffffffffffffffff8001ffffffffffffff800000
70800000fffffffffffffffffffffffffff803ffffffffffffffff8
709ffffffffffffffffffffffffffffffffffffffffffffffff0003ffffffffffffff800000
71000001fffffffffffffffffffffffffff803ffffffffffffffff8
711ffffffffffffffffffffffffffffffffffffffffffffffff0007ffffffffffffff000200
71200003fffffffffffffffffffffffffff007ffffffffffffffff8
713fffffffffffffffffffffffffffffffffffffffffffffffe0007fffffffffffffe000700
71400007fffffffffffffffffffffffffff00fffffffffffffffff8
715fffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe001f80
7160000ffffffffffffffffffffffffffff00fffffffffffffffff8
717fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe001f80
7180001ffffffffffffffffffffffffffff00fffffffffffffffff8
719fffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffc003fc0
7200001ffffffffffffffffffffffffffff00fffffffffffffffff8
721fffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffff8007fe0
7220003ffffffffffffffffffffffffffff01fffffffffffffffff8
723ffffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff0007fe0
7240007ffffffffffffffffffffffffffff01fffffffffffffffff8
725ffffffffffffffffffffffffffffffffffffffffffffffe0007ffffffffffffff000fff0
7260007ffffffffffffffffffffffffffff01fffffffffffffffff8
727ffffffffffffffffffffffffffffffffffffffffffffffc000ffffffffffffffe003fff8
728001fffffffffffffffffffffffffffff07fffffffffffffffff8
729ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffc
730007fffffffffffffffffffffffffffff07fffffffffffffffff8
731ffffffffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffe003fffe
73200ffffffffffffffffffffffffffffff07fffffffffffffffff8
733ffffffffffffffffffffffffffffffffffffffffffffff0001ffffffffffffffc007ffff
734dfffffffffffffffffffffffffffffff0ffffffffffffffffff8
735fffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffff800fffff
736fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
737fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff800fffff
738fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
739fffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffff001fffff
740fffffffffffffffffffffffffffffffe1ffffffffffffffffff8
741fffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff003fffff
742fffffffffffffffffffffffffffffffe3ffffffffffffffffff8
743fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffe003fffff
744ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
745ffffffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffc007fffff
746ffffffffffffffffffffffffffffffff3ffffffffffffffffff8
747ffffffffffffffffffffffffffffffffffffffffffffe0003ffffffffffffffc007fffff
748fffffffffffffffffffffffffffffffffffffffffffffffffff8
749ffffffffffffffffffffffffffffffffffffffffffffc0007ffffffffffffffc00ffffff
750fffffffffffffffffffffffffffffffffffffffffffffffffff8
751ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff800ffffff
752fffffffffffffffffffffffffffffffffffffffffffffffffff8
753ffffffffffffffffffffffffffffffffffffffffffff8000fffffffffffffff801ffffff
754fffffffffffffffffffffffffffffffffffffffffffffffffff8
755fffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffff001ffffff
756fffffffffffffffffffffffffffffffffffffffffffffffffff8
757fffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff003ffffff
758fffffffffffffffffffffffffffffffffffffffffffffffffff8
759fffffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffe007ffffff
760fffffffffffffffffffffffffffffffffffffffffffffffffff8
761fffffffffffffffffffffffffffffffffffffffffff80007ffffffffffffffe007ffffff
762fffffffffffffffffffffffffffffffffffffffffffffffffff8
763fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
764fffffffffffffffffffffffffffffffffffffffffffffffffff8
765fffffffffffffffffffffffffffffffffffffffffff0000fffffffffffffffc00fffffff
766fffffffffffffffffffffffffffffffffffffffffffffffffff8
767ffffffffffffffffffffffffffffffffffffffffffe0001fffffffffffffffc00fffffff
768fffffffffffffffffffffffffffffffffffffffffffffffffff8
769ffffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffff801fffffff
770fffffffffffffffffffffffffffffffffffffffffffffffffff8
771ffffffffffffffffffffffffffffffffffffffffffc0003fffffffffffffff801fffffff
772fffffffffffffffffffffffffffffffffffffffffffffffffff8
773ffffffffffffffffffffffffffffffffffffffffff80003fffffffffffffff003fffffff
774fffffffffffffffffffffffffffffffffffffffffffffffffff8
775ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff007fffffff
776fffffffffffffffffffffffffffffffffffffffffffffffffff8
777fffffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffff007fffffff
778fffffffffffffffffffffffffffffffffffffffffffffffffff8
779fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc007fffffff
780fffffffffffffffffffffffffffffffffffffffffffffffffff8
781fffffffffffffffffffffffffffffffffffffffffc0001fffffffffffffffc00ffffffff
782fffffffffffffffffffffffffffffffffffffffffffffffffff8
783fffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffc01ffffffff
784fffffffffffffffffffffffffffffffffffffffffffffffffff8
785fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff801ffffffff
786fffffffffffffffffffffffffffffffffffffffffffffffffff8
787ffffffffffffffffffffffffffffffffffffffffe0001ffffffffffffffff801ffffffff
788fffffffffffffffffffffffffffffffffffffffffffffffffff8
789ffffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff803ffffffff
790fffffffffffffffffffffffffffffffffffffffffffffffffff8
791ffffffffffffffffffffffffffffffffffffffffc0003ffffffffffffffff803ffffffff
792fffffffffffffffffffffffffffffffffffffffffffffffffff8
793ffffffffffffffffffffffffffffffffffffffff80003fffffffffffffffe007ffffffff
794fffffffffffffffffffffffffffffffffffffffffffffffffff8
795ffffffffffffffffffffffffffffffffffffffff80007fffffffffffffffe007ffffffff
796fffffffffffffffffffffffffffffffffffffffffffffffffff8
797ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffe00fffffffff
798fffffffffffffffffffffffffffffffffffffffffffffffffff8
799ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffc00fffffffff
800fffffffffffffffffffffffffffffffffffffffffffffffffff8
801fffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffff801fffffffff
802fffffffffffffffffffffffffffffffffffffffffffffffffff8
803fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff803fffffffff
804fffffffffffffffffffffffffffffffffffffffffffffffffff8
805fffffffffffffffffffffffffffffffffffffff80003ffffffffffffffff003fffffffff
806fffffffffffffffffffffffffffffffffffffffffffffffffff8
807fffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff003fffffffff
808fffffffffffffffffffffffffffffffffffffffffffffffffff8
809ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffe007fffffffff
810fffffffffffffffffffffffffffffffffffffffffffffffffff8
811ffffffffffffffffffffffffffffffffffffffe0000ffffffffffffffffc007fffffffff
812fffffffffffffffffffffffffffffffffffffffffffffffffff8
813ffffffffffffffffffffffffffffffffffffffc0001ffffffffffffffffc00ffffffffff
814fffffffffffffffffffffffffffffffffffffffffffffffffff8
815ffffffffffffffffffffffffffffffffffffff80007ffffffffffffffffc00ffffffffff
816fffffffffffffffffffffffffffffffffffffffffffffffffff8
817ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
818fffffffffffffffffffffffffffffffffffffffffffffffffff8
819ffffffffffffffffffffffffffffffffffffff00007ffffffffffffffff801ffffffffff
820fffffffffffffffffffffffffffffffffffffffffffffffffff8
821fffffffffffffffffffffffffffffffffffffe0000fffffffffffffffff003ffffffffff
822fffffffffffffffffffffffffffffffffffffffffffffffffff8
823fffffffffffffffffffffffffffffffffffffc0001fffffffffffffffff003ffffffffff
824fffffffffffffffffffffffffffffffffffffffffffffffffff8
825fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
826fffffffffffffffffffffffffffffffffffffffffffffffffff8
827fffffffffffffffffffffffffffffffffffff80003ffffffffffffffffe007ffffffffff
828fffffffffffffffffffffffffffffffffffffffffffffffffff8
829ffffffffffffffffffffffffffffffffffffe00007ffffffffffffffffc00fffffffffff
830fffffffffffffffffffffffffffffffffffffffffffffffffff8
831ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
832fffffffffffffffffffffffffffffffffffffffffffffffffff8
833ffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffc00fffffffffff
834fffffffffffffffffffffffffffffffffffffffffffffffffff8
835ffffffffffffffffffffffffffffffffffff80001fffffffffffffffff801fffffffffff
836fffffffffffffffffffffffffffffffffffffffffffffffffff8
837ffffffffffffffffffffffffffffffffffff00003fffffffffffffffff801fffffffffff
838fffffffffffffffffffffffffffffffffffffffffffffffffff8
839ffffffffffffffffffffffffffffffffffff00007fffffffffffffffff003fffffffffff
840fffffffffffffffffffffffffffffffffffffffffffffffffff8
841fffffffffffffffffffffffffffffffffffe00007fffffffffffffffff007fffffffffff
842fffffffffffffffffffffffffffffffffffffffffffffffffff8
843fffffffffffffffffffffffffffffffffffc0000ffffffffffffffffff007fffffffffff
844fffffffffffffffffffffffffffffffffffffffffffffffffff8
845fffffffffffffffffffffffffffffffffffc0001fffffffffffffffffc007fffffffffff
846fffffffffffffffffffffffffffffffffffffffffffffffffff8
847fffffffffffffffffffffffffffffffffff80003fffffffffffffffffc00ffffffffffff
848fffffffffffffffffffffffffffffffffffffffffffffffffff8
849fffffffffffffffffffffffffffffffffff80007fffffffffffffffffc01ffffffffffff
850fffffffffffffffffffffffffffffffffffffffffffffffffff8
851fffffffffffffffffffffffffffffffffff00007fffffffffffffffff801ffffffffffff
852fffffffffffffffffffffffffffffffffffffffffffffffffff8
853fffffffffffffffffffffffffffffffffff0000ffffffffffffffffff801ffffffffffff
854fffffffffffffffffffffffffffffffffffffffffffffffffff8
855ffffffffffffffffffffffffffffffffffc0001ffffffffffffffffff803ffffffffffff
856fffffffffffffffffffffffffffffffffffffffffffffffffff8
857ffffffffffffffffffffffffffffffffff80003ffffffffffffffffff803ffffffffffff
858fffffffffffffffffffffffffffffffffffffffffffffffffff8
859ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
860fffffffffffffffffffffffffffffffffffffffffffffffffff8
861ffffffffffffffffffffffffffffffffff00007ffffffffffffffffff007ffffffffffff
862fffffffffffffffffffffffffffffffffffffffffffffffffff8
863fffffffffffffffffffffffffffffffffe0000ffffffffffffffffffe00fffffffffffff
864fffffffffffffffffffffffffffffffffffffffffffffffffff8
865fffffffffffffffffffffffffffffffffc0000ffffffffffffffffffe00fffffffffffff
866fffffffffffffffffffffffffffffffffffffffffffffffffff8
867fffffffffffffffffffffffffffffffffc0001ffffffffffffffffffe01fffffffffffff
868fffffffffffffffffffffffffffffffffffffffffffffffffff8
869fffffffffffffffffffffffffffffffff80003ffffffffffffffffffc03fffffffffffff
870fffffffffffffffffffffffffffffffffffffffffffffffffff8
871fffffffffffffffffffffffffffffffff00007ffffffffffffffffffc03fffffffffffff
872fffffffffffffffffffffffffffffffffffffffffffffffffff8
873ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc03fffffffffffff
874fffffffffffffffffffffffffffffffffffffffffffffffffff8
875ffffffffffffffffffffffffffffffffe00007ffffffffffffffffffc07fffffffffffff
876fffffffffffffffffffffffffffffffffffffffffffffffffff8
877ffffffffffffffffffffffffffffffffc0001fffffffffffffffffff807fffffffffffff
878fffffffffffffffffffffffffffffffffffffffffffffffffff8
879ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
880fffffffffffffffffffffffffffffffffffffffffffffffffff8
881ffffffffffffffffffffffffffffffff80003fffffffffffffffffff80ffffffffffffff
882fffffffffffffffffffffffffffffffffffffffffffffffffff8
883ffffffffffffffffffffffffffffffff00007fffffffffffffffffff81ffffffffffffff
884fffffffffffffffffffffffffffffffffffffffffffffffffff8
885fffffffffffffffffffffffffffffffe0000ffffffffffffffffffff01ffffffffffffff
886fffffffffffffffffffffffffffffffffffffffffffffffffff8
887fffffffffffffffffffffffffffffffe0001ffffffffffffffffffff03ffffffffffffff
888fffffffffffffffffffffffffffffffffffffffffffffffffff8
889fffffffffffffffffffffffffffffffc0003ffffffffffffffffffff03ffffffffffffff
890fffffffffffffffffffffffffffffffffffffffffffffffffff8
891fffffffffffffffffffffffffffffff80003fffffffffffffffffffe07ffffffffffffff
892fffffffffffffffffffffffffffffffffffffffffffffffffff8
893fffffffffffffffffffffffffffffff00007fffffffffffffffffffe07ffffffffffffff
894fffffffffffffffffffffffffffffffffffffffffffffffffff8
895ffffffffffffffffffffffffffffffe00007fffffffffffffffffffe0fffffffffffffff
896fffffffffffffffffffffffffffffffffffffffffffffffffff8
897ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc0fffffffffffffff
898fffffffffffffffffffffffffffffffffffffffffffffffffff8
899ffffffffffffffffffffffffffffffe0000ffffffffffffffffffffc1fffffffffffffff
900fffffffffffffffffffffffffffffffffffffffffffffffffff8
901ffffffffffffffffffffffffffffffc0001ffffffffffffffffffffc1fffffffffffffff
902fffffffffffffffffffffffffffffffffffffffffffffffffff8
903ffffffffffffffffffffffffffffff80007ffffffffffffffffffff83fffffffffffffff
904fffffffffffffffffffffffffffffffffffffffffffffffffff8
905ffffffffffffffffffffffffffffff00007ffffffffffffffffffff83fffffffffffffff
906fffffffffffffffffffffffffffffffffffffffffffffffffff8
907fffffffffffffffffffffffffffffe00007ffffffffffffffffffff83fffffffffffffff
908fffffffffffffffffffffffffffffffffffffffffffffffffff8
909fffffffffffffffffffffffffffffe0000fffffffffffffffffffff87fffffffffffffff
910fffffffffffffffffffffffffffffffffffffffffffffffffff8
911fffffffffffffffffffffffffffffc0001fffffffffffffffffffff87fffffffffffffff
912fffffffffffffffffffffffffffffffffffffffffffffffffff8
913fffffffffffffffffffffffffffffc0001fffffffffffffffffffff0ffffffffffffffff
914fffffffffffffffffffffffffffffffffffffffffffffffffff8
915fffffffffffffffffffffffffffff80003fffffffffffffffffffff0ffffffffffffffff
916fffffffffffffffffffffffffffffffffffffffffffffffffff8
917fffffffffffffffffffffffffffff00007fffffffffffffffffffff0ffffffffffffffff
918fffffffffffffffffffffffffffffffffffffffffffffffffff8
919fffffffffffffffffffffffffffff0000ffffffffffffffffffffff1ffffffffffffffff
920fffffffffffffffffffffffffffffffffffffffffffffffffff8
921ffffffffffffffffffffffffffffe0000fffffffffffffffffffffe1ffffffffffffffff
922fffffffffffffffffffffffffffffffffffffffffffffffffff8
923ffffffffffffffffffffffffffffc0001fffffffffffffffffffffe3ffffffffffffffff
924fffffffffffffffffffffffffffffffffffffffffffffffffff8
925ffffffffffffffffffffffffffff80003fffffffffffffffffffffffffffffffffffffff
926fffffffffffffffffffffffffffffffffffffffffffffffffff8
927ffffffffffffffffffffffffffff00007fffffffffffffffffffffffffffffffffffffff
928fffffffffffffffffffffffffffffffffffffffffffffffffff8
929ffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff
930fffffffffffffffffffffffffffffffffffffffffffffffffff8
931fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
932fffffffffffffffffffffffffffffffffffffffffffffffffff8
933fffffffffffffffffffffffffffe0001ffffffffffffffffffffffffffffffffffffffff
934fffffffffffffffffffffffffffffffffffffffffffffffffff8
935fffffffffffffffffffffffffffc0003ffffffffffffffffffffffffffffffffffffffff
936fffffffffffffffffffffffffffffffffffffffffffffffffff8
937fffffffffffffffffffffffffffc0007ffffffffffffffffffffffffffffffffffffffff
938fffffffffffffffffffffffffffffffffffffffffffffffffff8
939fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
940fffffffffffffffffffffffffffffffffffffffffffffffffff8
941fffffffffffffffffffffffffff0000fffffffffffffffffffffffffffffffffffffffff
942fffffffffffffffffffffffffffffffffffffffffffffffffff8
943ffffffffffffffffffffffffffe0001fffffffffffffffffffffffffffffffffffffffff
944fffffffffffffffffffffffffffffffffffffffffffffffffff8
945ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
946fffffffffffffffffffffffffffffffffffffffffffffffffff8
947ffffffffffffffffffffffffffc0003fffffffffffffffffffffffffffffffffffffffff
948fffffffffffffffffffffffffffffffffffffffffffffffffff8
949ffffffffffffffffffffffffffc0007fffffffffffffffffffffffffffffffffffffffff
950fffffffffffffffffffffffffffffffffffffffffffffffffff8
951ffffffffffffffffffffffffff8000ffffffffffffffffffffffffffffffffffffffffff
952fffffffffffffffffffffffffffffffffffffffffffffffffff8
953ffffffffffffffffffffffffff8001ffffffffffffffffffffffffffffffffffffffffff
954fffffffffffffffffffffffffffffffffffffffffffffffffff8
955ffffffffffffffffffffffffff0001ffffffffffffffffffffffffffffffffffffffffff
956fffffffffffffffffffffffffffffffffffffffffffffffffff8
957ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
958fffffffffffffffffffffffffffffffffffffffffffffffffff8
959ffffffffffffffffffffffffff0003ffffffffffffffffffffffffffffffffffffffffff
960fffffffffffffffffffffffffffffffffffffffffffffffffff8
961fffffffffffffffffffffffffe0007ffffffffffffffffffffffffffffffffffffffffff
962fffffffffffffffffffffffffffffffffffffffffffffffffff8
963fffffffffffffffffffffffffc000fffffffffffffffffffffffffffffffffffffffffff
964fffffffffffffffffffffffffffffffffffffffffffffffffff8
965fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
966fffffffffffffffffffffffffffffffffffffffffffffffffff8
967fffffffffffffffffffffffff8001fffffffffffffffffffffffffffffffffffffffffff
968fffffffffffffffffffffffffffffffffffffffffffffffffff8
969fffffffffffffffffffffffff8003fffffffffffffffffffffffffffffffffffffffffff
970fffffffffffffffffffffffffffffffffffffffffffffffffff8
971fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
972fffffffffffffffffffffffffffffffffffffffffffffffffff8
973fffffffffffffffffffffffff8007fffffffffffffffffffffffffffffffffffffffffff
974fffffffffffffffffffffffffffffffffffffffffffffffffff8
975fffffffffffffffffffffffff0007fffffffffffffffffffffffffffffffffffffffffff
976fffffffffffffffffffffffffffffffffffffffffffffffffff8
977ffffffffffffffffffffffffe000ffffffffffffffffffffffffffffffffffffffffffff
978fffffffffffffffffffffffffffffffffffffffffffffffffff8
979ffffffffffffffffffffffffe001ffffffffffffffffffffffffffffffffffffffffffff
980fffffffffffffffffffffffffffffffffffffffffffffffffff8
981ffffffffffffffffffffffffc001ffffffffffffffffffffffffffffffffffffffffffff
982fffffffffffffffffffffffffffffffffffffffffffffffffff8
983ffffffffffffffffffffffffc007ffffffffffffffffffffffffffffffffffffffffffff
984fffffffffffffffffffffffffffffffffffffffffffffffffff8
985ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffffff
986fffffffffffffffffffffffffffffffffffffffffffffffffff8
987ffffffffffffffffffffffffc01fffffffffffffffffffffffffffffffffffffffffffff
988fffffffffffffffffffffffffffffffffffffffffffffffffff8
989ffffffffffffffffffffffff801fffffffffffffffffffffffffffffffffffffffffffff
990fffffffffffffffffffffffffffffffffffffffffffffffffff8
991ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
992fffffffffffffffffffffffffffffffffffffffffffffffffff8
993ffffffffffffffffffffffff003fffffffffffffffffffffffffffffffffffffffffffff
994fffffffffffffffffffffffffffffffffffffffffffffffffff8
995ffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffff
996fffffffffffffffffffffffffffffffffffffffffffffffffff8
997ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
998fffffffffffffffffffffffffffffffffffffffffffffffffff8
999fffffffffffffffffffffffe00ffffffffffffffffffffffffffffffffffffffffffffff
1000fffffffffffffffffffffffffffffffffffffffffffffffffff8
1001fffffffffffffffffffffffe01ffffffffffffffffffffffffffffffffffffffffffffff
1002fffffffffffffffffffffffffffffffffffffffffffffffffff8
1003fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
1004fffffffffffffffffffffffffffffffffffffffffffffffffff8
1005fffffffffffffffffffffffc03ffffffffffffffffffffffffffffffffffffffffffffff
1006fffffffffffffffffffffffffffffffffffffffffffffffffff8
1007fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
1008fffffffffffffffffffffffffffffffffffffffffffffffffff8
1009fffffffffffffffffffffff807ffffffffffffffffffffffffffffffffffffffffffffff
1010fffffffffffffffffffffffffffffffffffffffffffffffffff8
1011fffffffffffffffffffffff80fffffffffffffffffffffffffffffffffffffffffffffff
1012fffffffffffffffffffffffffffffffffffffffffffffffffff8
1013fffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffff
1014fffffffffffffffffffffffffffffffffffffffffffffffffff8
1015fffffffffffffffffffffff01fffffffffffffffffffffffffffffffffffffffffffffff
1016fffffffffffffffffffffffffffffffffffffffffffffffffff8
1017ffffffffffffffffffffffe03fffffffffffffffffffffffffffffffffffffffffffffff
1018fffffffffffffffffffffffffffffffffffffffffffffffffff8
1019ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
1020fffffffffffffffffffffffffffffffffffffffffffffffffff8
1021ffffffffffffffffffffffe07fffffffffffffffffffffffffffffffffffffffffffffff
1022fffffffffffffffffffffffffffffffffffffffffffffffffff8
1023ffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffff
1024fffffffffffffffffffffffffffffffffffffffffffffffffff8
1025ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
1026fffffffffffffffffffffffffffffffffffffffffffffffffff8
1027ffffffffffffffffffffffc1ffffffffffffffffffffffffffffffffffffffffffffffff
1028fffffffffffffffffffffffffffffffffffffffffffffffffff8
1029ffffffffffffffffffffffc3ffffffffffffffffffffffffffffffffffffffffffffffff
1030fffffffffffffffffffffffffffffffffffffffffffffffffff8
1031ffffffffffffffffffffff83ffffffffffffffffffffffffffffffffffffffffffffffff
1032fffffffffffffffffffffffffffffffffffffffffffffffffff8
1033ffffffffffffffffffffff87ffffffffffffffffffffffffffffffffffffffffffffffff
1034fffffffffffffffffffffffffffffffffffffffffffffffffff8
1035ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
1036fffffffffffffffffffffffffffffffffffffffffffffffffff8
1037ffffffffffffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffffff
1038fffffffffffffffffffffffffffffffffffffffffffffffffff8
1039ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
1040fffffffffffffffffffffffffffffffffffffffffffffffffff8
1041ffffffffffffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffffff
1042fffffffffffffffffffffffffffffffffffffffffffffffffff8
1043ffffffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff
1044fffffffffffffffffffffffffffffffffffffffffffffffffff8
1045
1046
1047showpage
1048
1049% stop using temporary dictionary
1050end
1051
1052% restore original state
1053origstate restore
1054
1055%%Trailer
diff --git a/etc/gnus-refcard.tex b/etc/gnus-refcard.tex
new file mode 100644
index 00000000000..343de2d6f6f
--- /dev/null
+++ b/etc/gnus-refcard.tex
@@ -0,0 +1,1427 @@
1\documentclass{article}
2
3% Previously we had five input LaTeX files (booklet.tex bk-lt.tex bk-a4.tex
4% refcard.tex gnusref.tex) and two logo files (gnuslogo-refcard.eps and
5% gnuslogo-booklet.eps).
6%
7% From this LaTeX file (gnus-refcard.tex) plus a single logo (gnus-logo.eps),
8% we can generate the refcard and the booklet version. Appropriate Makefile
9% rules were added. This simplifies to distribute the refcard with Emacs.
10%
11% (Reiner Steib, March 2005)
12
13\usepackage{ifthen}
14\ifthenelse{\isundefined{\booklettrue}}{
15 \typeout{Creating reference card...}
16}{
17 \typeout{Creating reference booklet...}}
18
19\usepackage{supertabular}
20
21\newlength{\logowidth} \setlength{\logowidth} {6.861in}
22\newlength{\logoheight} \setlength{\logoheight}{7.013in}
23
24\usepackage{graphicx}
25
26\usepackage{geometry}
27
28\ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29 % Reference Card
30
31 \def\Guide{Card}\def\guide{card}
32 \def\logoscale{0.25}
33
34 % Page setup for the refcard:
35
36 % \setlength{\textwidth}{7.26in} \setlength{\textheight}{10in}
37 % \setlength{\topmargin}{-1.0in}
38 % % the same settings work for A4, although there is a bit of space at the
39 % % top and bottom of the page.
40 % \setlength{\oddsidemargin}{-0.5in} \setlength{\evensidemargin}{-0.5in}
41
42 \ifthenelse{\isundefined{\letterpapertrue}}{
43 \geometry{a4paper,hmargin=10mm,tmargin=10mm,bmargin=35mm}
44 }{
45 \geometry{hmargin=20mm,tmargin=10mm,bmargin=12mm}
46 }
47
48}{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
49 % Reference Booklet
50
51 \def\Guide{Booklet}\def\guide{booklet}
52 \def\logoscale{0.5}% FIXME: too large for 2up printing? --rsteib
53
54 % FIXME: Use geometry package. --rsteib
55% \ifthenelse{\isundefined{\letterpapertrue}}{
56% \textwidth 4.9in \textheight 7.35in \topmargin -1.0in
57% }{
58% \textwidth 4.5in \textheight 7.5in \topmargin -1.0in
59% }
60% \oddsidemargin -0.5in \evensidemargin -0.5in
61 \ifthenelse{\isundefined{\letterpapertrue}}{
62 \geometry{a5paper,hmargin=10mm,tmargin=10mm,bmargin=4mm}
63 }{
64 % FIXME: Use geometry package. --rsteib
65 \geometry{a5paper,hmargin=20mm,tmargin=10mm,bmargin=4mm}
66 }
67
68 \def\sec{\section}
69 \def\subsec{\subsection}
70 \def\subsubsec{\subsubsection}
71 \def\blankpage{\vspace*{\fill}\par
72 %\centerline{(This page intentionally left blank.)}
73 \par\vspace*{\fill}\pagebreak}
74}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
75
76% \input{gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %
77%% include file for the Gnus refcard and booklet
78
79\def\progver{5.10}\def\refver{5.10-2} % program and refcard versions
80\def\date{Mar, 2005}
81\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
82
83%%
84\newlength{\keycolwidth}
85\newenvironment{keys}[1]% #1 is the widest key
86{\nopagebreak%\noindent%
87 \settowidth{\keycolwidth}{#1}%
88 \addtolength{\keycolwidth}{\tabcolsep}%
89 \addtolength{\keycolwidth}{-\columnwidth}%
90 \begin{supertabular}{@{}l@{\hspace{\tabcolsep}}p{-\keycolwidth}@{}}}%
91 {\end{supertabular}\\}
92
93%% uncomment the first definition if you do not want pagebreaks in maps
94%%\newcommand{\esamepage}{\samepage}
95\newcommand{\esamepage}{}
96
97\newcommand*{\B}[1]{{\bf#1})} % bold l)etter
98
99\newcommand{\Title}{%
100 \begin{center}
101 {\bf\LARGE Gnus \progver\ Reference \Guide\\}
102 %{\normalsize \Guide\ version \refver}
103 \end{center}
104 }
105
106% \newcommand*{\LogoOLD}[1]{\centerline{%
107% \makebox[\logoscale\logowidth][l]{\vbox to \logoscale\logoheight
108% {\vfill\epsfig{figure=gnuslogo-#1}}\vspace{-\baselineskip}}}}
109
110\newcommand*{\Logo}[1]{\centerline{%
111 \includegraphics[width=\logoscale\logowidth]{gnus-logo}}}
112
113\newcommand{\Copyright}{%
114 \begin{center}
115 Copyright \copyright\ 1995 Free Software Foundation, Inc.\\*
116 Copyright \copyright\ 1995 Vladimir Alexiev
117 $<$vladimir@cs.ualberta.ca$>$.\\*
118 Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\*
119 Copyright \copyright\ 2001, 2002, 2003, 2005 \author.\\*
120 Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne
121 Ingebrigtsen.\\*
122 and the Emacs Help Bindings feature (C-h b).\\*
123 Gnus logo copyright \copyright\ 1995 Luis Fernandes.\\*
124 \end{center}
125
126 Permission is granted to make and distribute copies of this reference
127 \guide{} provided the copyright notice and this permission are preserved on
128 all copies. Please send corrections, additions and suggestions to the
129 current maintainer's email address. \Guide{} last edited on \date.
130 }
131
132\newcommand{\Notes}{%
133 \subsection*{Notes}
134 {\esamepage
135 Gnus is complex. Currently it has some 876 interactive (user-callable)
136 functions. Of these 618 are in the two major modes (Group and
137 Summary/Article). Many of these functions have more than one binding, some
138 have 3 or even 4 bindings. The total number of keybindings is 677. So in
139 order to save 40\% space, every function is listed only once on this
140 \guide, under the ``more logical'' binding. Alternative bindings are given
141 in parentheses in the beginning of the description.
142
143 Many Gnus commands are affected by the numeric prefix. Normally you enter a
144 prefix by holding the Meta key and typing a number, but in most Gnus modes
145 you don't need to use Meta since the digits are not self-inserting. The
146 prefixed behavior of commands is given in [brackets]. Often the prefix is
147 used to specify:
148
149 \quad [distance] How many objects to move the point over.
150
151 \quad [scope] How many objects to operate on (including the current one).
152
153 \quad [p/p] The ``Process/Prefix Convention'': If a prefix is given then it
154 determines how many objects to operate on. Else if there are some objects
155 marked with the process mark \#, these are operated on. Else only the
156 current object is affected.
157
158 \quad [level] A group subscribedness level. Only groups with a lower or
159 equal level will be affected by the operation. If no prefix is given,
160 `gnus-group-default-list-level' is used. If
161 `gnus-group-use-permanent-levels', then a prefix to the `g' and `l'
162 commands will also set the default level.
163
164 \quad [score] An article score. If no prefix is given,
165 `gnus-summary-default-score' is used. \\*[\baselineskip]
166 % some keys
167 Gnus startup-commands:\\*
168 \begin{keys}{M-x gnus-unplugged}
169 M-x gnus & start Gnus. \\
170 M-x gnus-no-server & start Gnus without connecting to server
171 (i.e. to read mail). \\
172 \end{keys}
173 Additionally, there are the two commands \texttt{gnus-plugged} and
174 \texttt{gnus-unplugged}, which are only used if you want to download
175 news and/or read previously downloaded news offline (see C-c C-i g Gnus
176 Unplugged RET). Note: \texttt{gnus-no-server} ignores the stuff in
177 \texttt{gnus-agent-directory}, and thus does not allow you to use Gnus
178 Unplugged.
179 %
180 \begin{keys}{C-c C-i}
181 C-c C-i & Go to the Gnus online {\bf info}.\\
182 C-c C-b & Send a Gnus {\bf bug} report.\\
183 \end{keys}
184 }}
185
186\newcommand{\GroupLevels}{%
187 The table below assumes that you use the default Gnus levels.
188 Fill your user-specific levels in the blank cells.\\[1\baselineskip]
189 \begin{tabular}{|c|l|l|}
190 \hline
191 Level & Groups & Status \\
192 \hline
193 1 & draft/mail groups & \\
194 2 & mail groups & \\
195 3 & & subscribed \\
196 4 & & \\
197 5 & default list level & \\
198 \hline
199 6 & & unsubscribed \\
200 7 & & \\
201 \hline
202 8 & & zombies \\
203 \hline
204 9 & & killed \\
205 \hline
206 \end{tabular}}
207
208\newcommand{\MarkCharacters}{%
209 {\esamepage If a command directly sets a mark, it is shown in parentheses.\\*
210 \newlength{\markcolwidth}
211 \settowidth{\markcolwidth}{` '}% widest character
212 \addtolength{\markcolwidth}{4\tabcolsep}
213 \addtolength{\markcolwidth}{-\columnwidth}
214 \newlength{\markdblcolwidth}
215 \setlength{\markdblcolwidth}{\columnwidth}
216 \addtolength{\markdblcolwidth}{-2\tabcolsep}
217 \begin{tabular}{|c|p{-\markcolwidth}|}
218 \hline
219 \multicolumn{2}{|p{\markdblcolwidth}|}{{\bf ``Read'' Marks.}
220 All these marks appear in the first column of the summary line, and so
221 are mutually exclusive.}\\
222 \hline
223 ` ' & (M-u, M SPC, M c) Not read.\\
224 ! & (!, M !, M t) Ticked (interesting).\\
225 ? & (?, M ?) Dormant (only followups are interesting).\\
226 E & (E, M e, M x) {\bf Expirable}. Only has effect in mail groups.\\
227 G & (C, B DEL) Canceled article (or deleted in mailgroups).\\
228 \$ & (M-d, M s x, S x). Marked as spam.\\
229 \hline\hline
230 \multicolumn{2}{|p{\markdblcolwidth}|}
231 {The marks below mean that the article
232 is read (killed, uninteresting), and have more or less the same effect.
233 Some commands however explicitly differentiate between them (e.g.\ M
234 M-C-r, adaptive scoring).}\\
235 \hline
236 r & (d, M d, M r) Deleted (marked as {\bf read}).\\
237 C & (M C; M C-c; M H; c, Z c; Z n; Z C) Killed by {\bf catch-up}.\\
238 F & SOUPed article. See the manual.\\
239 O & {\bf Old} (read in a previous session).\\
240 K & (k, M k; C-k, M K) {\bf Killed}.\\
241 M & Article marked as read by duplicate suppression.\\
242 Q & Article is part of a sparse thread (see ``Threading''
243 in the manual).\\
244 R & {\bf Read} (viewed in actuality).\\
245 X & Killed by a kill file.\\
246 Y & Killed due to low score.\\
247 \hline\multicolumn{2}{c}{\vspace{1ex}}\\\hline
248 \multicolumn{2}{|p{\markdblcolwidth}|}
249 {{\bf Marks not affecting visibility}}\\
250 \hline
251 \# & (\#, M \#, M P p) Processable (will be affected by the next operation).
252 [2]\\
253 A & {\bf Answered} (followed-up or replied). [2]\\
254 F & Forwarded. [2]\\
255 $\ast$ & Cached. [2]\\
256 S & Saved. [2]\\
257 N & Recently arrived. [2]\\
258 . & Unseen. [2]\\
259 + & Over default score. [3]\\
260 $-$ & Under default score. [3]\\
261 $=$ & Has children (thread underneath it). Add `\%e' to
262 `gnus-summary-line-format'. [3]\\
263 \hline
264 \end{tabular}
265 }}
266
267\newcommand{\GroupModeGeneral}{%
268 \begin{keys}{C-c M-C-x}
269 RET & (=) Enter this group. [Prefix: how many (read) articles to fetch.
270 Positive: newest articles, negative: oldest ones; non-numerical:
271 view all articles, not just unread]\\
272 M-RET & Enter group quickly.\\
273 M-SPC & Same as RET but does not expunge and hide dormants.\\
274 M-C-RET & Enter group without any processing, changes will not be permanent.\\
275 SPC & Select this group and display the first (unread) article. [Same
276 prefix as above.]\\
277 ? & Give a very short help message.\\
278 $<$ & Go to the beginning of the Group buffer.\\
279 $>$ & Go to the end of the Group buffer.\\
280 , & Jump to the lowest-level group with unread articles.\\
281 . & Jump to the first group with unread articles.\\
282 \^{} & Enter the Server buffer mode.\\
283 a & Post an {\bf article} to a group
284 [Prefix: use group under point to find posting-style].\\
285 b & Find {\bf bogus} groups and delete them.\\
286 c & Mark all unticked articles in this group as read ({\bf catch-up}).
287 [p/p]\\
288 g & Check the server for new articles ({\bf get}). [level]\\
289 M-g & Check the server for new articles in this group ({\bf get}). [p/p]\\
290 j & {\bf Jump} to a group.\\
291 m & {\bf Mail} a message to someone
292 [Prefix: use group under point to find posting-style].\\
293 n & Go to the {\bf next} group with unread articles. [distance]\\
294 M-n & Go to the {\bf next} group on the same or lower level.
295 [distance]\\
296 p & (DEL) Go to the {\bf previous} group with unread articles.
297 [distance]\\
298 M-p & Go to the {\bf previous} group on the same or lower level. [distance]\\
299 q & {\bf Quit} Gnus.\\
300 r & Re-read the init file ({\bf reset}).\\
301 s & {\bf Save} the `.newsrc.eld' file (and `.newsrc' if
302 `gnus-save-newsrc-file').\\
303 z & Suspend (kill all buffers of) Gnus.\\
304 B & {\bf Browse} a foreign server.\\
305 C & Mark all articles in this group as read ({\bf Catch-up}). [p/p]\\
306 F & {\bf Find} new groups and process them.\\
307 N & Go to the {\bf next} group. [distance]\\
308 P & Go to the {\bf previous} group. [distance]\\
309 Q & {\bf Quit} Gnus without saving any startup (.newsrc) files.\\
310 R & {\bf Restart} Gnus.\\
311 Z & Clear the dribble buffer.\\
312 M-c & Clear data from group (marks and list of read articles). \\
313 C-c C-s & {\bf Sort} the groups by name, number of unread articles, or level
314 (depending on `gnus-group-sort-function').\\
315 C-c C-x & Run all expirable articles in this group through the {\bf expiry}
316 process.\\
317 C-c M-C-x & Run all articles in all groups through the {\bf expiry} process.\\
318 C-c M-g & Activate all {\bf groups}.\\
319 C-c C-i & Gnus online-manual ({\bf info}).\\
320 C-x C-t & {\bf Transpose} two groups.\\
321 H f & Fetch this group's {\bf FAQ} (using ange-ftp).\\
322 H c & Display this group's {\bf charter}. [Prefix: query for group]\\
323 H C & Display this group's {\bf control message} (using
324 ange-ftp). [Prefix: query for group]\\
325 H v & (V) Display the Gnus {\bf version} number.\\
326 H d & (C-c C-d) Show the {\bf description} of this group
327 [Prefix: re-read from server].\\
328 M-d & {\bf Describe} all groups. [Prefix: re-read from server]\\
329 D g & Regenerate a Sieve script from group parameters.\\
330 D u & Regenerate Sieve script and {\bf upload} to server.\\
331 \end{keys}
332 }
333
334\newcommand{\ListGroups}{%
335 {\esamepage
336 \begin{keys}{A M}
337 A d & (C-c C-M-a) List all groups whose names or {\bf descriptions} match a regexp.\\
338 A k & (C-c C-l) List all {\bf killed} groups.
339 [Prefix: look at active-file from server]\\
340 A l & List all groups on a specific level.
341 [Prefix: also list groups with no unread articles]\\
342 A a & (C-c C-a) List all groups whose names match a regexp
343 ({\bf apropos}).\\
344 A A & List the server's active-file.\\
345 A M & List groups that {\bf match} a regexp.\\
346 A m & List groups that {\bf match} a regexp and have unread articles.
347 [level]\\
348 A s & (l) List all {\bf subscribed} groups with unread articles.
349 [level; 5 and lower is the default]\\
350 A u & (L) List all groups (including read and {\bf unsubscribed}).
351 [level; 7 and lower is the default]\\
352 A z & List all {\bf zombie} groups.\\
353 A c & List all groups with cached articles. [level]\\
354 A ? & List all groups with dormant articles. [level]\\
355 \end{keys}
356 }
357
358 \newcommand{\CreateEditGroups}{%
359 {\esamepage
360 The select methods are indicated in parentheses.\\*
361 \begin{keys}{G DEL}
362 G a & Make the Gnus list {\bf archive} group. (nndir over ange-ftp)\\
363 G c & {\bf Customize} this group's parameters.\\
364 G d & Make a {\bf directory} group (every file must be a posting and files
365 must have numeric names). (nndir)\\
366 G D & Enter a {\bf directory} as a (temporary) group.
367 (nneething without recording articles read)\\
368 G e & (M-e) {\bf Edit} this group's select method.\\
369 G E & {\bf Edit} this group's info (select method, articles read, etc).\\
370 G f & Make a group based on a {\bf file}. (nndoc)\\
371 G h & Make the Gnus {\bf help} (documentation) group. (nndoc)\\
372 G k & Make a {\bf kiboze} group. (nnkiboze)\\
373 G m & {\bf Make} a new group.\\
374 G p & Edit this group's {\bf parameters}.\\
375 G r & Rename this group (does not work with read-only groups!).\\
376 G u & Create one of the groups mentioned in gnus-{\bf useful}-groups.\\
377 G v & Add this group to a {\bf virtual} group. [p/p]\\
378 G V & Make a new empty {\bf virtual} group. (nnvirtual)\\
379 G w & Create ephemeral group based on web-search. [Prefix: make solid group
380 instead]\\
381 G R & Make an {\bf RSS} group.\\
382 G DEL & {\bf Delete} group [Prefix: delete all articles as well].\\
383 G x & Expunge all deleted articles in an nnimap mailbox.\\
384 G l & Edit ACL (Access Control {\bf List}) for an nnimap mailbox.\\
385 \end{keys}
386 You can also create mail-groups and read your mail with Gnus (very useful
387 if you are subscribed to mailing lists), using one of the methods
388 nnmbox, nnbabyl, nnml, nnmh, or nnfolder. Read about it in the online info
389 (C-c C-i g Reading Mail RET).
390 }}
391
392 % TODO:
393 \newcommand{\SoupCommands}{%
394 \begin{keys}{G s w}
395 G s b & gnus-group-brew-soup: not documented.\\
396 G s p & gnus-soup-pack-packet: not documented.\\
397 G s r & nnsoup-pack-replies: not documented.\\
398 G s s & gnus-soup-send-replies: not documented.\\
399 G s w & gnus-soup-save-areas: not documented.\\
400 \end{keys}}
401
402 \newcommand{\MarkGroups}{%
403 \begin{keys}{M m}
404 M m & (\#) Set the process {\bf mark} on this group. [scope]\\
405 M r & Mark all groups matching regular expression.\\
406 M u & (M-\#) Remove the process mark from this group ({\bf unmark}).
407 [scope]\\
408 M U & Remove the process mark from all groups (\textbf{umark all}).\\
409 M w & Mark all groups in the current region. [prefix: unmark]\\
410 M b & Mark all groups in the {\bf buffer}. [prefix: unmark]\\
411 \end{keys}}
412
413 \newcommand{\GroupTopicsGeneral}{%
414 {\esamepage
415 Topics are ``categories'' for groups. Press t in the group-buffer to
416 toggle gnus-topic-mode (C-c C-i g Group Topics RET).\\*
417 \begin{keys}{C-c C-x}
418 T n & Prompt for topic {\bf name} and create it.\\
419 T m & {\bf Move} the current group to some other topic [p/p].\\
420 T j & {\bf Jump} to a topic.\\
421 T c & {\bf Copy} the current group to some other topic [p/p].\\
422 T D & Remove (not delete) the current group [p/p].\\
423 T M & {\bf Move} all groups matching a regexp to a topic.\\
424 T C & {\bf Copy} all groups matching a regexp to a topic.\\
425 T H & Toggle {\bf hiding} of empty topics.\\
426 T r & {\bf Rename} a topic.\\
427 T DEL & Delete an empty topic.\\
428 T \# & Mark all groups in the current topic with the process-mark.\\
429 T M-\# & Remove the process-mark from all groups in the current topic.\\
430 T TAB & (TAB) Indent current topic [Prefix: unindent].\\
431 M-TAB & Unindent the current topic.\\
432 RET & (SPC) Either unfold topic or enter group [level].\\
433 T s & {\bf Show} the current topic. [Prefix: show permanently]\\
434 T h & {\bf Hide} the current topic. [Prefix: hide permanently]\\
435 C-c C-x & Expire all articles in current group or topic.\\
436 C-k & {\bf Kill} a group or topic.\\
437 C-y & {\bf Yank} a group or topic.\\
438 A T & List active-file using {\bf topics}.\\
439 G p & Edit topic-{\bf parameters}.\\
440 T M-n & Go to {\bf next} topic. [distance]\\
441 T M-p & Go to {\bf previous} topic. [distance]\\
442 \end{keys}
443 }
444 }
445
446 \newcommand{\TopicSorting}{%
447 {\esamepage
448 \begin{keys}{T S m}
449 T S a & Sort {\bf alphabetically}.\\
450 T S u & Sort by number of {\bf unread} articles.\\
451 T S l & Sort by group {\bf level}.\\
452 T S v & Sort by group score ({\bf value}).\\
453 T S r & Sort by group {\bf rank}.\\
454 T S m & Sort by {\bf method}.\\
455 T S e & Sort by {\bf server} name.\\
456 T S s & Sort according to `gnus-group-sort-function'.\\
457 \end{keys}
458 With a prefix these commands will sort in reverse order.
459 }
460 }
461
462 \newcommand{\SubscribeKillYankGroups}{%
463 {\esamepage
464 \begin{keys}{S C-k}
465 S k & (C-k) {\bf Kill} this group.\\
466 S l & Set the {\bf level} of this group. [p/p]\\
467 S s & (U) Prompt for a group and toggle its {\bf subscription}.\\
468 S t & (u) {\bf Toggle} subscription to this group. [p/p]\\
469 S w & (C-w) Kill all groups in the region.\\
470 S y & (C-y) {\bf Yank} the last killed group.\\
471 S z & Kill all {\bf zombie} groups.\\
472 S C-k & Kill all groups on a certain level.\\
473 \end{keys}
474 }
475 }
476
477 \newcommand{\SummaryModeGeneral}{%
478 {\esamepage
479 \begin{keys}{M-RET}
480 SPC & (A SPC, A n) Select an article, scroll it one page, move to the
481 next one.\\
482 DEL & (A DEL, A p, b) Scroll this article one page back. [distance]\\
483 RET & (A RET) Scroll this article one line forward. [distance]\\
484 M-RET & (A M-RET) Scroll this article one line backward. [distance]\\
485 = & Expand the Summary window (fullsize).
486 [Prefix: shrink to display article window]\\
487 %
488 \& & Execute a command on all articles whose header matches a regexp.
489 [Prefix: move backwards]\\
490 M-\& & Execute a command on all articles having the process mark.\\
491 %
492 M-n & (G M-n) Go to the {\bf next} summary line of an unread article.
493 [distance]\\
494 M-p & (G M-p) Go to the {\bf previous} summary line of an unread article.
495 [distance]\\
496 M-s & {\bf Search} through all subsequent articles for a regexp.\\
497 M-r & Search through all previous articles for a regexp.\\
498 %
499 A P & {\bf Postscript}-print current buffer.\\
500 %
501 M-k & Edit this group's {\bf kill} file.\\
502 M-K & Edit the general {\bf kill} file.\\
503 %
504 C-t & Toggle {\bf truncation} of summary lines.\\
505 Y g & Regenerate the summary-buffer.\\
506 Y c & Insert all cached articles into the summary-buffer.\\
507 %
508 M-C-e & {\bf Edit} the group-parameters.\\
509 M-C-a & Customize the group-parameters.\\
510 %
511 % article handling
512 %
513 A $<$ & ($<$, A b) Scroll to the beginning of this article.\\
514 A $>$ & ($>$, A e) Scroll to the end of this article.\\
515 A s & (s) Perform an i{\bf search} in the article buffer.\\
516 %
517 A D & (C-d) Un{\bf digestify} this article into a separate group.
518 [Prefix: force digest]\\
519 M-C-d & Like C-d, but open several documents in nndoc-groups, wrapped
520 in an nnvirtual group [p/p]\\
521 %
522 A g & (g) (Re)fetch this article ({\bf get}). [Prefix: get raw version]\\
523 A r & (\^{}, A \^{}) Fetch the parent(s) of this article.
524 [Prefix: if positive fetch \textit{n} ancestors;
525 negative: fetch only the \textit{n}th ancestor]\\
526 A t & {\bf Translate} this article.\\
527 A R & Fetch all articles mentioned in the {\bf References}-header.\\
528 A T & Fetch full \textbf{thread} in which the current article appears.\\
529 M-\^{} & Fetch the article with a given Message-ID.\\
530 S y & {\bf Yank} the current article into an existing message-buffer.
531 [p/p]\\
532 A M & Setup group parameters for {\bf mailing} lists from
533 headers. [Prefix: replace old settings]\\
534 \end{keys}
535 }
536 }
537
538 \newcommand{\MIMESummary}{%
539 {\esamepage
540 For the commands operating on one MIME part (a subset of gnus-article-*), a
541 prefix selects which part to operate on. If the point is placed over a
542 MIME button in the article buffer, use the corresponding bindings for the
543 article buffer instead.
544
545 \begin{keys}{W M w}
546 K v & (b, W M b) {\bf View} the MIME-part.\\
547 K o & {\bf Save} the MIME part.\\
548 K c & {\bf Copy} the MIME part.\\
549 K e & View the MIME part {\bf externally}.\\
550 K i & View the MIME part {\bf internally}.\\
551 K $\mid$ & Pipe the MIME part to an external command.\\
552 K b & Make all the MIME parts have buttons in front of them.\\
553 K m & Try to repair {\bf multipart-headers}.\\
554 K C & View the MIME part using a different {\bf charset}.\\
555 X m & Save all parts matching a MIME type to a directory. [p/p]\\
556 M-t & Toggle the buttonized display of the article buffer.\\
557 W M w & Decode RFC2047-encoded words in the article headers.\\
558 W M c & Decode encoded article bodies. [Prefix: prompt for charset]\\
559 W M v & View all MIME parts in the current article.\\
560 \end{keys}
561 }
562 }
563
564 \newcommand{\SortSummary}{%
565 {\esamepage
566 \begin{keys}{C-c C-s C-a}
567 C-c C-s C-a & Sort the summary-buffer by {\bf author}.\\
568 % C-c C-s C-t & Sort the summary-buffer by {\bf recipient}.\\ % No Gnus
569 C-c C-s C-d & Sort the summary-buffer by {\bf date}.\\
570 C-c C-s C-i & Sort the summary-buffer by article score.\\
571 C-c C-s C-l & Sort the summary-buffer by amount of {\bf lines}.\\
572 C-c C-s C-c & Sort the summary-buffer by length.\\
573 C-c C-s C-n & Sort the summary-buffer by article {\bf number}.\\
574 C-c C-s C-s & Sort the summary-buffer by {\bf subject}.\\
575 C-c C-s C-r & Sort the summary-buffer {\bf randomly}.\\
576 C-c C-s C-o & Sort the summary-buffer using the default method.\\
577 \end{keys}
578 With a prefix these functions sort in reverse order.
579 }
580 }
581
582 \newcommand{\MailGroups}{% formerly \Bsubmap
583 {\esamepage
584 These commands (except `B c') are only valid in a mail group.\\*
585 \begin{keys}{B M-C-e}
586 B DEL & (B backspace, B delete) {\bf Delete} the mail article from disk (!).
587 [p/p]\\
588 B B & Crosspost this article to another group.\\
589 B c & {\bf Copy} this article from any group to a mail group. [p/p]\\
590 B e & {\bf Expire} all expirable articles in this group. [p/p]\\
591 B i & {\bf Import} a random file into this group.\\
592 B I & Create an empty article in this group.\\
593 B m & {\bf Move} the article from one mail group to another. [p/p]\\
594 B p & Query whether the article was {\bf posted} as well.\\
595 B q & {\bf Query} where the article will end up after fancy splitting\\
596 B r & {\bf Respool} this mail article. [p/p]\\
597 B t & {\bf Trace} the fancy splitting patterns applied to this article.\\
598 B w & (e) Edit this article.\\
599 B M-C-e & {\bf Expunge} (delete from disk) all expirable articles in this group
600 (!). [p/p]\\
601 K E & {\bf Encrypt} article body. [p/p]\\
602 \end{keys}
603 }
604 }
605
606 \newcommand{\DraftGroup}{% formerly \Dsubmap
607 {\esamepage
608 The ``drafts''-group contains messages that have been saved but not sent
609 and rejected articles. \\*
610 \begin{keys}{B DEL}
611 D e & \textbf{edit} message.\\
612 D s & \textbf{Send} message. [p/p]\\
613 D S & \textbf{Send} all messages.\\
614 D t & \textbf{Toggle} sending (mark as unsendable).\\
615 B DEL & \textbf{Delete} message (like in mailgroup).\\
616 \end{keys}
617 }
618 }
619
620 \newcommand{\SelectArticles}{% formerly \Gsubmap
621 {\esamepage
622 These commands select the target article. They do not understand the prefix.\\*
623 \begin{keys}{G C-n}
624 h & Enter article-buffer.\\
625 G b & (,) Go to the {\bf best} article (the one with highest score).\\
626 G f & (.) Go to the {\bf first} unread article.\\
627 G n & (n) Go to the {\bf next} unread article.\\
628 G p & (p) Go to the {\bf previous} unread article.\\
629 %
630 G N & (N) Go to {\bf the} next article.\\
631 G P & (P) Go to the {\bf previous} article.\\
632 %
633 G C-n & (M-C-n) Go to the {\bf next} article with the same subject.\\
634 G C-p & (M-C-p) Go to the {\bf previous} article with the same subject.\\
635 %
636 G l & (l) Go to the previously read article ({\bf last-read-article}).\\
637 G o & Pop an article off the summary history and go to it.\\
638 %
639 G g & Search an article via subject.\\
640 G j & (j) Search an article via Message-Id or subject.\\
641 \end{keys}
642 }
643 }
644
645 \newcommand{\ArticleModeGeneral}{%
646 {\esamepage
647 The normal navigation keys work in Article mode. Some additional keys are:\\
648 \begin{keys}{C-c RET}
649 C-c \^{} & Get the article with the Message-ID near point.\\
650 C-c RET & Send reply to address near point.\\
651 h & Go to the \textbf{header}-line of the article in the
652 summary-buffer.\\
653 s & Go to \textbf{summary}-buffer.\\
654 RET & (middle mouse button) Activate the button at point to follow
655 an URL or Message-ID.\\
656 TAB & Move the point to the next button.\\
657 M-TAB & Move point to previous button.\\
658 \end{keys}
659 }
660 }
661
662 \newcommand{\WashArticle}{% formerly \Wsubmap
663 {\esamepage
664 \begin{keys}{W W H}
665 W 6 & Translate a base64 article.\\
666 W a & Strip certain {\bf headers} from body.\\
667 W b & Make Message-IDs and URLs in the article mouse-clickable
668 {\bf buttons}.\\
669 W c & Translate CRLF-pairs to LF and then the remaining CR's to LF's.\\
670 W d & Treat {\bf dumbquotes}.\\
671 W e & Treat {\bf emphasized} text.\\
672 W h & Treat {\bf HTML}.\\
673 W l & (w) Remove page breaks ({\bf\^{}L}) from the article.\\
674 W m & {\bf Morse} decode article.\\
675 W o & Treat {\bf overstrike} or underline (\^{}H\_) in the article.\\
676 W p & Verify X-{\bf PGP}-Sig header.\\
677 W q & Treat {\bf quoted}-printable in the article.\\
678 W r & (C-c C-r) Do a Caesar {\bf rotate} (rot13) on the article.\\
679 W s & Verify (and decrypt) a {\bf signed} message.\\
680 W t & (t) {\bf Toggle} display of all headers.\\
681 W u & {\bf Unsplit} broken URLs.\\
682 W v & (v) Toggle permanent {\bf verbose} displaying of all headers.\\
683 W w & Do word {\bf wrap} in the article.\\
684 W B & Add clickable {\bf buttons} to the article headers.\\
685 W C & {\bf Capitalize} first word in each sentence.\\
686 W Q & Fill long lines.\\
687 W Z & Translate a HZ-encoded article.\\
688 %
689 W G u & {\bf Unfold} folded header lines.\\
690 W G f & {\bf Fold} all header lines.\\
691 W G n & Unfold {\bf Newsgroups:} and Follow-Up-To:.\\
692 %
693 W Y c & Repair broken {\bf citations}.\\
694 W Y a & Repair broken {\bf attribution} lines.\\
695 W Y u & {\bf Unwrap} broken citation lines.\\
696 W Y f & Do a {\bf full} deuglification (W Y c, W Y a, W Y u).\\
697 \end{keys}
698 }
699 }
700
701 \newcommand{\BlankAndWhitespace}{%
702 {\esamepage
703 \begin{keys}{W E w}
704 W E l & Strip blank {\bf lines} from the beginning of the article.\\
705 W E m & Replace blank lines with empty lines and remove {\bf multiple}
706 blank lines.\\
707 W E t & Remove {\bf trailing} blank lines.\\
708 W E a & Strip blank lines at the beginning and the end
709 (W E l, W E m and W E t).\\
710 W E A & Strip {\bf all} blank lines.\\
711 W E s & Strip leading blank lines from the article body.\\
712 W E e & Strip trailing blank lines from the article body.\\
713 W E w & Remove leading {\bf whitespace} from all headers.\\
714 \end{keys}
715 }
716 }
717
718 \newcommand{\Picons}{%
719 {\esamepage
720 \begin{keys}{W D D}
721 W D s & (W g) Display {\bf smilies}.\\
722 W D x & (W f) Look for and display any X-{\bf Face} headers.\\
723 W D d & Display any Face headers.\\
724 W D n & Toggle picons in {\bf Newsgroups} and Followup-To.\\
725 W D m & Toggle picons in {\bf mail} headers (To and Cc).\\
726 W D f & Toggle picons in {\bf From}.\\
727 W D D & Remove all images from the article buffer.\\
728 \end{keys}
729 }
730 }
731
732 \newcommand{\TimeAndDate}{%
733 {\esamepage
734 \begin{keys}{W T u}
735 W T u & (W T z) Display the article timestamp in GMT ({\bf UT, ZULU}).\\
736 W T i & Display the article timestamp in {\bf ISO} 8601.\\
737 W T l & Display the article timestamp in the {\bf local} timezone.\\
738 W T s & Display according to `gnus-article-time-format'.\\
739 W T e & Display the time {\bf elapsed} since it was sent.\\
740 W T o & Display the {\bf original} timestamp.\\
741 W T p & Display the date in format that's {\bf
742 pronounceable} in English.\\
743 \end{keys}
744 }
745 }
746
747 \newcommand{\HideHighlightArticle}{%
748 {\esamepage
749 \begin{keys}{W W C-c}
750 W W a & Hide {\bf all} unwanted parts. Calls W W h, W W s, W W C-c.\\
751 W W h & Hide article {\bf headers}.\\
752 W W b & Hide {\bf boring} headers.\\
753 W W s & Hide {\bf signature}.\\
754 W W l & Hide {\bf list} identifiers in subject-header.\\
755 W W P & Hide {\bf PEM} (privacy enhanced messages).\\
756 W W B & Hide banner specified by group parameter.\\
757 W W c & Hide {\bf citation}.\\
758 W W C-c & Hide {\bf citation} using a more intelligent algorithm.\\
759 W W C & Hide cited text in articles that aren't roots.\\
760 W H a & Highlight {\bf all} parts. Calls W b, W H c, W H h, W H s.\\
761 W H c & Highlight article {\bf citations}.\\
762 W H h & Highlight article {\bf headers}.\\
763 W H s & Highlight article {\bf signature}.\\
764 \end{keys}
765 For all hiding-commands: A positive prefix always hides, and a negative
766 prefix will show what was previously hidden.
767 }}
768
769 \newcommand{\MIMEArticleMode}{%
770 {\esamepage
771 \begin{keys}{RET}
772 RET & (BUTTON-2) Toggle display of the MIME object.\\
773 v & Prompt for a method and then view object using this method.\\
774 o & Prompt for a filename and save the MIME object.\\
775 C-o & Prompt for a filename to save the MIME object to and remove it.\\
776 d & {\bf Delete} the MIME object.\\
777 c & {\bf Copy} the MIME object to a new buffer and display this buffer.\\
778 i & Display the MIME object in this buffer.\\
779 C & Copy the MIME object to a new buffer and display this buffer using {\bf Charset} \\
780 E & View internally. \\
781 e & View {\bf externally}. \\
782 t & View the MIME object as a different {\bf type}.\\
783 p & {\bf Print} the MIME object.\\
784 $\mid$ & Pipe the MIME object to a process.\\
785 . & Take action on the MIME object.\\
786 \end{keys}
787 }
788 }
789
790 %% end of article mode for reading ..........................................
791
792 \newcommand{\MarkArticlesGeneral}{% formerly \Msubmap
793 {\esamepage
794 \begin{keys}{M M-C-r}
795 d & (M d, M r) Mark this article as read and move to the next one.
796 [scope]\\
797 D & Mark this article as read and move to the previous one. [scope]\\
798 ! & (u, M !, M t) Tick this article (mark it as interesting) and move
799 to the next one. [scope]\\
800 U & Tick this article and move to the previous one. [scope]\\
801 M ? & (?) Mark this article as dormant (only followups are
802 interesting). [scope]\\
803 M D & Show all {\bf dormant} articles (normally they are hidden unless they
804 have any followups).\\
805 M M-D & Hide all {\bf dormant} articles.\\
806 C-w & Mark all articles between point and mark as read.\\
807 M-u & (M SPC, M c) Clear all marks from this article and move to the next
808 one. [scope]\\
809 M-U & Clear all marks from this article and move to the previous one.
810 [scope]\\
811 %
812 M e & (E, M x) Mark this article as {\bf expirable}. [scope]\\
813 %
814 M k & (k) {\bf Kill} all articles with the same subject then select the
815 next unread one.\\
816 M K & (C-k) {\bf Kill} all articles with the same subject as this one.\\
817 %
818 M C & {\bf Catch-up} the articles that are not ticked and not dormant.\\
819 M C-c & {\bf Catch-up} all articles in this group.\\
820 M H & {\bf Catch-up} (mark read) this group to point (to-{\bf here}).\\
821 %
822 M b & Set a {\bf bookmark} in this article.\\
823 M B & Remove the {\bf bookmark} from this article.\\
824 %
825 M M-r & (x) Expunge all {\bf read} articles from this group.\\
826 M M-C-r & Expunge all articles having a given mark.\\
827 M S & (C-c M-C-s) {\bf Show} all expunged articles.\\
828 M M C-h & Displays some more keys doing ticking slightly differently.\\
829 \end{keys}
830 The variable `gnus-summary-goto-unread' controls what happens after a mark
831 has been set (C-x C-i g Setting Marks RET)
832 }}
833
834 \newcommand{\MarkByScore}{%
835 \begin{keys}{M V m}
836 M V c & {\bf Clear} all marks from all high-scored articles. [score]\\
837 M V k & {\bf Kill} all low-scored articles. [score]\\
838 M V m & Mark all high-scored articles with a given {\bf mark}. [score]\\
839 M V u & Mark all high-scored articles as interesting (tick them). [score]\\
840 \end{keys}
841 }
842 }
843
844\newcommand{\ProcessMark}{%
845 {\esamepage
846 These commands set and remove the process mark (\#). You only need to use
847 it if the set of articles you want to operate on is non-contiguous. Else
848 use a numeric prefix.\\*
849 \begin{keys}{M P R}
850 M P p & (\#, M \#) Mark this article.\\
851 M P u & (M-\#, M M-\#) \textbf{unmark} this article.\\
852 M P b & Mark all articles in {\bf buffer}.\\
853 M P r & Mark all articles in the {\bf region}.\\
854 M P g & Unmark all articles in the region.\\
855 M P R & Mark all articles matching a {\bf regexp}.\\
856 M P G & Unmark all articles matching a regexp.\\
857 M P t & Mark all articles in this (sub){\bf thread}.\\
858 M P T & Unmark all articles in this (sub){\bf thread}.\\
859 M P s & Mark all articles in the current {\bf series}.\\
860 M P S & Mark all {\bf series} that already contain a marked article.\\
861 M P a & Mark {\bf all} articles (in series order).\\
862 M P U & \textbf{unmark} all articles.\\
863 M P i & {\bf Invert} the list of process-marked articles.\\
864 M P k & Push the current process-mark set onto stack and unmark
865 all articles.\\
866 M P y & Pop process-mark set from stack and restore it.\\
867 M P w & Push process-mark set on the stack.\\
868 M P v & Mark all articles with score over the default score. [Prefix: score]\\
869 \end{keys}
870 }
871 }
872
873\newcommand{\Limiting}{%
874 {\esamepage
875 \begin{keys}{/M}
876 // & (/s) Limit the summary-buffer to articles matching {\bf subject}.\\
877 /a & Limit the summary-buffer to articles matching {\bf author}.\\
878 /x & Limit depending on ``extra'' headers.\\
879 /u & (x) Limit to {\bf unread} articles.
880 [Prefix: also exclude ticked and dormant articles]\\
881 /. & Limit to unseen articles.\\
882 /m & Limit to articles marked with specified {\bf mark}.\\
883 /t & Ask for a number and exclude articles younger than that many days.
884 [Prefix: exclude older articles]\\
885 /n & Limit to current article. [p/p]\\
886 /w & Pop the previous limit off the stack and restore it.
887 [Prefix: pop all limits]\\
888 /v & Limit to score. [score]\\
889 /E & (M S) Include all expunged articles in the limit.\\
890 /D & Include all dormant articles in the limit.\\
891 /* & Limit to cached articles.\\
892 Y C & Include all cached articles in the limit.\\
893 /d & Exclude all dormant articles from the limit.\\
894 /M & Exclude all marked articles.\\
895 /T & Include all articles from the current thread in the limit.\\
896 /c & Exclude all dormant articles that have no children from the limit.\\
897 /C & Mark all excluded unread articles as read.
898 [Prefix: also mark ticked and dormant articles]\\
899 /o & Insert all {\bf old} articles. [Prefix: how many]\\
900 /N & Insert all {\bf new} articles.\\
901 /p & Limit to articles {\bf predicated} in the `display' group parameter.\\
902 % /r & Limit to {\bf replied} articles. [Prefix: unreplied]\\ % No Gnus
903 \end{keys}
904 }
905 }
906
907\newcommand{\OutputArticles}{% formerly \Osubmap
908 {\esamepage
909 \begin{keys}{O m}
910 O o & (o, C-o) Save this article using the default article saver. [p/p]\\
911 O b & Save this article's {\bf body} in plain file format [p/p]\\
912 O f & Save this article in plain {\bf file} format. [p/p]\\
913 O F & like O f, but overwrite file's contents. [p/p]\\
914 O h & Save this article in {\bf mh} folder format. [p/p]\\
915 O m & Save this article in {\bf mail} format. [p/p]\\
916 O r & Save this article in {\bf rmail} format. [p/p]\\
917 O v & Save this article in {\bf vm} format. [p/p]\\
918 O p & ($\mid$) {\bf Pipe} this article to a shell command. [p/p]\\
919 O P & \textbf{Print} this article using Muttprint. [p/p]\\
920 \end{keys}
921 }
922 }
923
924\newcommand{\PostReplyetc}{% formerly \Ssubmap
925 {\esamepage
926 These commands put you in a separate news or mail buffer. See the section
927 about composing messages for more information.\\*
928 %After
929 %editing the article, send it by pressing C-c C-c. If you are in a
930 %foreign group and want to post the article using the foreign server, give
931 %a prefix to C-c C-c.\\*
932 \begin{keys}{S O m}
933 S p & (a) {\bf Post} an article to this group.\\
934 S f & (f) Post a {\bf followup} to this article.\\
935 S F & (F) Post a {\bf followup} and include the original. [p/p]\\
936 S o p & Forward this article as a {\bf post} to a newsgroup.\\
937 S M-c & Send a complaint about excessive crossposting to the author of this
938 article. [p/p]\\
939 %
940 S m & (m) Send a {\bf mail} to some other person.\\
941 S r & (r) Mail a {\bf reply} to the author of this article.\\
942 S R & (R) Mail a {\bf reply} and include the original. [p/p]\\
943 S B r & Like S r but ignore the Reply-To: header.\\
944 S B R & Like S R but ignore the Reply-To: header.\\
945 S w & Mail a {\bf wide} reply to this article.\\
946 S W & Mail a {\bf wide} reply to this article and include
947 the original.\\
948 S v & Mail a {\bf very} wide reply to this article.\\
949 S V & Mail a {\bf very} wide reply to this article and include the original.\\
950 S o m & (C-c C-f) Forward this article by {\bf mail} to a person.\\
951 S D b & Resend {\bf bounced} mail.\\
952 S D r & {\bf Resend} mail to a different person.\\
953 S D e & {\bf Edit} and resend.\\
954 %
955 S n & Post a followup via {\bf news} even if you got the message
956 through mail.\\
957 S N & Post a followup via {\bf news} and include the original mail.
958 [p/p]\\
959 %
960 S c & (C) {\bf Cancel} this article (only works if it is
961 your own). [p/p]\\
962 S s & {\bf Supersede} this article with a new one (only for own
963 articles).\\
964 %
965 S O m & Digest these series and forward by {\bf mail}. [p/p]\\
966 S O p & Digest these series and forward as a {\bf post} to a newsgroup.
967 [p/p]\\
968 %
969 S u & {\bf Uuencode} a file and post it as a series.\\
970 \end{keys}
971 If you want to cancel or supersede an article you just posted (before it
972 has appeared on the server), go to the *post-news* buffer, change
973 `Message-ID' to `Cancel' or `Supersedes' and send it again with C-c C-c.
974 }}
975
976\newcommand{\Threading}{% formerly \Tsubmap
977 {\esamepage
978 \begin{keys}{T M-\#}
979 T \# & Mark this thread with the process mark.\\
980 T M-\# & Remove process-marks from this thread.\\
981 %
982 T t & Re-{\bf thread} the current article's thread.\\
983 T \^{} & Make the current article child of the marked (or previous) article.\\
984 % movement
985 T n & (M-C-f, M-down) Go to the {\bf next} thread. [distance]\\
986 T p & (M-C-b, M-up) Go to the {\bf previous} thread. [distance]\\
987 T d & {\bf Descend} this thread. [distance]\\
988 T u & Ascend this thread ({\bf up}-thread). [distance]\\
989 T o & Go to the top of this thread.\\
990 %
991 T s & {\bf Show} the thread hidden under this article.\\
992 T h & {\bf Hide} this (sub)thread.\\
993 %
994 T i & {\bf Increase} the score of this thread.\\
995 T l & (M-C-l) {\bf Lower} the score of this thread.\\
996 %
997 T k & (M-C-k) {\bf Kill} the current (sub)thread. [Negative prefix:
998 tick it, positive prefix: unmark it.]\\
999 %
1000 T H & {\bf Hide} all threads.\\
1001 T S & {\bf Show} all hidden threads.\\
1002 T T & (M-C-t) {\bf Toggle} threading.\\
1003 \end{keys}
1004 }
1005 }
1006
1007\newcommand{\Scoring}{% formerly \Vsubmap
1008 {\esamepage
1009 Read about Adaptive Scoring in the online info.\\*
1010 \begin{keys}{\bf A p m l}
1011 V a & {\bf Add} a new score entry, specifying all elements.\\
1012 V c & Specify a new score file as {\bf current}.\\
1013 V e & {\bf Edit} the current score alist.\\
1014 V f & Edit a score {\bf file} and make it the current one.\\
1015 V m & {\bf Mark} all articles below a given score as read.\\
1016 V s & Set the {\bf score} of this article.\\
1017 V t & Display all score rules applied to this article ({\bf track}).\\
1018 W w & List {\bf words} used in scoring.\\
1019 V x & {\bf Expunge} all low-scored articles. [score]\\
1020 V C & {\bf Customize} the current score file through a user-friendly
1021 interface.\\
1022 V F & {\bf Flush} the cache of score files.\\
1023 V R & {\bf Re-score} the summary buffer.\\
1024 V S & Display the {\bf score} of this article.\\
1025 \bf A p m l& Make a scoring entry based on this article.\\
1026 \end{keys}
1027 The four letters stand for:\\*
1028 \quad \B{A}ction: I)ncrease, L)ower;\\*
1029 \quad \B{p}art: a)uthor (from), s)ubject, x)refs (cross-posting), d)ate, l)ines,
1030 message-i)d, t)references (parent), f)ollowup, b)ody, h)ead (all headers);\\*
1031 \quad \B{m}atch type:\\*
1032 \qquad string: s)ubstring, e)xact, r)egexp, f)uzzy,\\*
1033 \qquad date: b)efore, a)t, n)this,\\*
1034 \qquad number: $<$, =, $>$;\\*
1035 \quad \B{l}ifetime: t)emporary, p)ermanent, i)mmediate.
1036
1037 If you type the second letter in uppercase, the remaining two are assumed
1038 to be s)ubstring and t)emporary.
1039 If you type the third letter in uppercase, the last one is assumed to be
1040 t)emporary.
1041
1042 \quad Extra keys for manual editing of a score file:\\*
1043 \begin{keys}{C-c C-c}
1044 C-c C-c & Finish editing the score file.\\
1045 C-c C-d & Insert the current {\bf date} as number of days.\\
1046 \end{keys}
1047 }
1048 }
1049
1050\newcommand{\ExtractSeries}{% formerly \Xsubmap
1051 {\esamepage
1052 Gnus recognizes if the current article is part of a series (multipart
1053 posting whose parts are identified by numbers in their subjects, e.g.{}
1054 1/10\dots10/10) and processes the series accordingly. You can mark and
1055 process more than one series at a time. If the posting contains any
1056 archives, they are expanded and gathered in a new group.\\*
1057 \begin{keys}{X p}
1058 X b & Un-{\bf binhex} these series. [p/p]\\
1059 X o & Simply {\bf output} these series (no decoding). [p/p]\\
1060 X p & Unpack these {\bf postscript} series. [p/p]\\
1061 X s & Un-{\bf shar} these series. [p/p]\\
1062 X u & {\bf Uudecode} these series. [p/p]\\
1063 \end{keys}
1064
1065 Each one of these commands has four variants:\\*
1066 \begin{keys}{X v \bf Z}
1067 X \bf z & Decode these series. [p/p]\\
1068 X \bf Z & Decode and save these series. [p/p]\\
1069 X v \bf z & Decode and view these series. [p/p]\\
1070 X v \bf Z & Decode, save and view these series. [p/p]\\
1071 \end{keys}
1072 where {\bf z} or {\bf Z} identifies the decoding method (b, o, p, s, u).
1073
1074 An alternative binding for the most-often used of these commands is\\*
1075 \begin{keys}{C-c C-v C-v}
1076 C-c C-v C-v & (X v u) Uudecode and view these series. [p/p]\\
1077 \end{keys}
1078 }}
1079
1080\newcommand{\ExitSummary}{% formerly \Zsubmap
1081 {\esamepage
1082 \begin{keys}{Z G}
1083 Z Z & (q, Z Q) Exit this group.\\
1084 Z E & (Q) {\bf Exit} without updating the group information.\\
1085 %
1086 Z c & (c) Mark all unticked articles as read ({\bf catch-up}) and exit.\\
1087 Z C & Mark all articles as read ({\bf catch-up}) and exit.\\
1088 %
1089 Z n & Mark all articles as read and go to the {\bf next} group.\\
1090 Z N & Exit and go to {\bf the} next group.\\
1091 Z P & Exit and go to the {\bf previous} group.\\
1092 %
1093 Z G & (M-g) Check for new articles in this group ({\bf get}).\\
1094 Z R & (C-x C-s) Exit this group, and then enter it again ({\bf reenter}).
1095 [Prefix: select all articles, read and unread.]\\
1096 Z s & Update and save the dribble buffer. [Prefix: save .newsrc* as well]\\
1097 \end{keys}
1098 }
1099 }
1100
1101\newcommand{\MsgCompositionGeneral}{%
1102 Press C-c ? in the composition-buffer to get this information.\\*
1103 {\esamepage
1104 \begin{keys}{C-c C-m}
1105 % sending
1106 C-c C-c & Send message and exit. [Prefix: send via foreign server]\\
1107 C-c C-s & Send message. [Prefix: send via foreign server]\\
1108 C-c C-d & Don't send message (save as \textbf{draft}).\\
1109 C-c C-k & \textbf{Kill} message-buffer.\\
1110 C-c C-m & {\bf Mail} reply to the address near point.
1111 [Prefix: include the original]\\
1112 % modify headers/body
1113 C-c C-o & Sort headers.\\
1114 C-c C-e & \textbf{Elide} region.\\
1115 C-c C-v & Kill everything outside region.\\
1116 C-c C-r & Do a \textbf{Rot-13} on the body.\\
1117 C-c C-w & Insert signature (from `message-signature-file').\\
1118 C-c C-z & Kill everything up to signature.\\
1119 C-c C-y & \textbf{Yank} original message.\\
1120 C-c C-q & Fill the yanked message.\\
1121 C-c M-C-y & \textbf{Yank} a buffer and quote it.\\
1122 M-RET & Insert four newlines and format quoted text. [Prefix:
1123 justify as well]\\
1124 C-c M-r & \textbf{Rename} message buffer. [Prefix: ask for new name]\\
1125 \end{keys}
1126 }
1127 }
1128
1129\newcommand{\MsgCompositionMovementArticle}{%
1130 The following functions create the header-field if necessary.\\*
1131 {\esamepage
1132 \begin{keys}{C-c C-f C-u}
1133 C-c TAB & Move to \textbf{signature}.\\
1134 C-c C-b & Move to \textbf{body}.\\
1135 C-c C-f C-t & (C-c C-t) Move to \textbf{To:}.\\
1136 C-c C-f C-c & Move to \textbf{Cc:}.\\
1137 C-c C-f C-b & Move to \textbf{Bcc:}.\\
1138 C-c C-f C-w & Move to \textbf{Fcc:}.\\
1139 C-c C-f C-s & Move to \textbf{Subject:}.\\
1140 C-c C-f C-r & Move to \textbf{Reply-To:}.\\
1141 C-c C-f C-f & Move to \textbf{Followup-To:}.\\
1142 C-c C-f C-n & (C-c C-n) Move to \textbf{Newsgroups:}.\\
1143 C-c C-f C-u & Move to \textbf{Summary:}.\\
1144 C-c C-f C-k & Move to \textbf{Keywords:}.\\
1145 C-c C-f C-d & Move to \textbf{Distribution:}.\\
1146 C-c C-f C-m & Move to \textbf{Mail-Followup-To:}.\\
1147 C-c C-f C-o & Move to \textbf{From:}.\\
1148 C-c C-f C-a & Insert a reasonable \textbf{Mail-Followup-To:} for
1149 an unsubscribed list. [Prefix: include addresses in \textbf{Cc:}]\\
1150 C-c C-f TAB & (C-c C-u) Move to \textbf{Importance:}.\\
1151 C-c M-n & Insert \textbf{Disposition-Notification-To:}
1152 (request receipt).\\
1153 \end{keys}
1154 }
1155 }
1156
1157\newcommand{\MsgCompositionMML}{%
1158 {\esamepage
1159 \begin{keys}{C-c C-m P}
1160 C-c C-m f & (C-c C-a) Attach \textbf{file}.\\
1161 C-c C-m b & Attach contents of \textbf{buffer}.\\
1162 C-c C-m e & Attach \textbf{external} file (ftp..).\\
1163 C-c C-m P & Create MIME-\textbf{preview} (new
1164 buffer). [Prefix: show raw MIME preview]\\
1165 C-c C-m v & \textbf{Validate} article.\\
1166 C-c C-m p & Insert \textbf{part}.\\
1167 C-c C-m m & Insert \textbf{multi}-part.\\
1168 C-c C-m q & \textbf{Quote} region.\\
1169 C-c C-m c s & Encrypt message using \textbf{S/MIME}.\\
1170 C-c C-m c o & Encrypt message using PGP.\\
1171 C-c C-m c p & Encrypt message using \textbf{PGP/MIME}.\\
1172 C-c C-m s s & Sign message using \textbf{S/MIME}.\\
1173 C-c C-m s o & Sign message using PGP.\\
1174 C-c C-m s p & Sign message using \textbf{PGP/MIME}.\\
1175 C-c C-m C-n & Remove security related MML tags from message.\\
1176 % TODO: narrow headers (C-c C-m n) ?
1177 \end{keys}
1178 }
1179 }
1180
1181%% TODO:
1182\newcommand{\ServerMode}{%
1183 {\esamepage
1184 To enter this mode, press \^{} while in Group mode.\\*
1185 \begin{keys}{SPC}
1186 SPC & (RET) Browse this server.\\
1187 a & {\bf Add} a new server.\\
1188 c & {\bf Copy} this server.\\
1189 e & {\bf Edit} a server.\\
1190 k & {\bf Kill} this server. [scope]\\
1191 l & {\bf List} all servers.\\
1192 q & Return to the group buffer ({\bf quit}).\\
1193 s & Request that the server scan its sources for new articles.\\
1194 g & Request that the server regenerate its data.\\
1195 y & {\bf Yank} the previously killed server.\\
1196 O & Try to {\bf open} a connection to this server.\\
1197 C & {\bf Close} connection to this server.\\
1198 D & Mark this server as unreachable ({\bf deny}).\\
1199 M-o & {\bf Open} the connection to all servers.\\
1200 M-c & {\bf Close} the connection to all servers.\\
1201 R & Make all denied servers into closed servers.\\
1202 L & Set server status to offline.\\
1203 \end{keys}
1204 }
1205 }
1206
1207\newcommand{\BrowseServer}{%
1208 {\esamepage
1209 To enter this mode, press `B' while in Group mode.\\*
1210 \begin{keys}{RET}
1211 RET & Enter the current group.\\
1212 SPC & Enter the current group and display the first article.\\
1213 ? & Give a very short help message.\\
1214 n & Go to the {\bf next} group. [distance]\\
1215 p & Go to the {\bf previous} group. [distance]\\
1216 q & (l) {\bf Quit} browse mode.\\
1217 u & Subscribe to the current group. [scope]\\
1218 \end{keys}
1219 }
1220 }
1221
1222\newcommand{\GroupUnplugged}{%
1223 {\esamepage
1224 \begin{keys}{J S}
1225 J j & Toggle plugged-state.\\
1226 J s & Fetch articles from all groups for offline-reading.\\
1227 J u & Fetch all eligible articles from this group.\\
1228 J S & \textbf{Send} all sendable messages in the drafts group.\\
1229 %
1230 J c & Enter \textbf{category} buffer.\\
1231 J a & \textbf{Add} this group to an Agent category [p/p].\\
1232 J r & \textbf{Remove} this group from its Agent category [p/p].\\
1233 J Y & Synchronize flags changed while unplugged with remote server.\\
1234 \end{keys}
1235 }
1236 }
1237
1238\newcommand{\SummaryUnplugged}{%
1239 {\esamepage
1240 \begin{keys}{J M-\#}
1241 J \# & \textbf{Mark} the article for downloading.\\
1242 J M-\# & \textbf{Unmark} the article for downloading.\\
1243 @ & \textbf{Toggle} whether to download the article.\\
1244 J c & Mark all undownloaded articles as read (\textbf{catch-up}).\\
1245 J u & Download all downloadable articles from group.\\
1246 \end{keys}
1247 }
1248 }
1249
1250\newcommand{\ServerUnplugged}{%
1251 {\esamepage
1252 \begin{keys}{J a}
1253 J a & \textbf{Add} the current server to the list of servers covered
1254 by the agent.\\
1255 J r & \textbf{Remove} the current server from the list of servers covered
1256 by the agent.\\
1257 \end{keys}
1258 }
1259 }
1260
1261% end {gnusref} % % % % % % % % % % % % % % % % % % % % % % % % % %
1262
1263
1264% o some things might not be updated: scoring and server modes, maybe more
1265% o Gnus Unplugged category-buffer commands need to be written
1266
1267\begin{document}
1268
1269\def\progver{5.10}\def\refver{5.10-1} % program and refcard versions
1270\def\date{Jan 10th, 2004}
1271\def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$}
1272
1273\ifthenelse{\isundefined{\booklettrue}}{ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1274 \raggedbottom\raggedright
1275 \twocolumn
1276 % use \tiny to shrink it to 4 pages (needs a high-resolution printer though)
1277 % \tiny
1278 \scriptsize
1279 \pagestyle{plain}
1280 \Title
1281 \par
1282 \Logo{refcard}
1283}{
1284 \setcounter{page}{0}
1285 \thispagestyle{empty}
1286 \vspace*{\fill}
1287 \Title
1288 \vspace{0.4in}
1289 \Logo{booklet}
1290 \vspace*{\fill}
1291 \pagebreak
1292}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1293
1294% TODO: how does this work ?
1295%\tableofcontents
1296
1297\Notes
1298%
1299
1300\section*{Group-Mode}
1301\GroupModeGeneral
1302 \subsection*{Group Subscribedness-Levels}
1303 \GroupLevels
1304 \subsection*{List Groups}
1305 \ListGroups
1306 \subsection*{Create/Edit Foreign Groups}
1307 \CreateEditGroups
1308 \subsection*{Unsubscribe, Kill and Yank Groups}
1309 \SubscribeKillYankGroups
1310 \subsection*{Mark Groups}
1311 \MarkGroups
1312 \subsection*{Group-Unplugged}
1313 \GroupUnplugged
1314% topics in group-mode
1315 \subsection*{Group Topics}
1316 \GroupTopicsGeneral
1317 \subsubsection*{Topic Sorting}
1318 \TopicSorting
1319
1320% \ifthenelse{\isundefined{\booklettrue}}{}{\pagebreak}
1321
1322% summary-mode
1323\section*{Summary Mode}
1324\SummaryModeGeneral
1325 \subsection*{Select Articles}
1326 \SelectArticles
1327%
1328 \subsection*{Threading}
1329 \Threading
1330%
1331 \subsection*{Limiting}
1332 \Limiting
1333 \subsection*{Sort the Summary-Buffer}
1334 \SortSummary
1335 \subsection*{Score (Value) Commands}
1336 \Scoring
1337
1338\ifthenelse{\isundefined{\booklettrue}}{% ifcard %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1339 \subsection*{Output Articles}
1340 \OutputArticles
1341 \subsection*{Extract Series (Uudecode etc)}
1342 \ExtractSeries
1343}{}%ifcard% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1344
1345 \subsection*{MIME operations from the Summary-Buffer}
1346 \MIMESummary
1347
1348\ifthenelse{\isundefined{\booklettrue}}{}{% ifbooklet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1349 \subsection*{Extract Series (Uudecode etc)}
1350 \ExtractSeries
1351 \subsection*{Output Articles}
1352 \OutputArticles
1353}%ifbooklet% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1354
1355%
1356 \subsection*{Post, Followup, Reply, Forward, Cancel}
1357 \PostReplyetc
1358
1359\ifthenelse{\isundefined{\booklettrue}}{\newpage}{}% newpage ifcard
1360
1361 \subsection*{Message Composition}
1362
1363 \MsgCompositionGeneral
1364 \subsubsection*{Jumping in message-buffer}
1365 \MsgCompositionMovementArticle
1366 \subsubsection*{Attachments/MML}
1367 \MsgCompositionMML
1368% marking articles
1369 \subsection*{Mark Articles}
1370 \MarkArticlesGeneral
1371 \subsubsection*{Mark Based on Score}
1372 \MarkByScore
1373 \subsubsection*{The Process Mark}
1374 \ProcessMark
1375 \subsubsection*{Mark Indication-Characters}
1376 \MarkCharacters
1377%
1378\ifthenelse{\isundefined{\booklettrue}}{\newpage}{}%
1379
1380 \subsection*{Summary-Unplugged}
1381 \SummaryUnplugged
1382 \subsection*{Mail-Group Commands}
1383 \MailGroups
1384 \subsection*{Draft-Group Commands}
1385 \DraftGroup
1386% exiting
1387 \subsection*{Exit the Summary-Buffer}
1388 \ExitSummary
1389%
1390%
1391\section*{Article Mode (reading)}
1392\ArticleModeGeneral
1393 \subsection*{Wash the Article-Buffer}
1394 \WashArticle
1395 \subsubsection*{Blank Lines and Whitespace}
1396 \BlankAndWhitespace
1397 \subsubsection*{Picons, X-faces, Smileys}
1398 \Picons
1399 \subsubsection*{Time and Date}
1400 \TimeAndDate
1401 \subsection*{Hide/Highlight Parts of the Article}
1402 \HideHighlightArticle
1403 \subsection*{MIME operations from the Article-Buffer (reading)}
1404 \MIMEArticleMode
1405%
1406%
1407\section*{Server Mode}
1408\ServerMode
1409 \subsection*{Unplugged-Server}
1410 \ServerUnplugged
1411%
1412%
1413\section*{Browse Server Mode}
1414\BrowseServer
1415
1416%\pagebreak
1417\vspace*{\fill}
1418\Copyright
1419
1420\end{document}
1421
1422%%% Local Variables:
1423%%% mode: latex
1424%%% TeX-master: t
1425%%% End:
1426
1427% arch-tag: be438b0e-6832-4afb-8c56-5f84743e5cd1
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 3c7c3d3d5c4..fe2fcab6643 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,94 @@
12005-03-25 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * message.el (message-resend): Bind rfc2047-encode-encoded-words.
4
5 * mm-util.el (mm-replace-in-string): New function.
6 (mm-xemacs-find-mime-charset-1): Ignore errors while loading
7 latin-unity, which cannot be used with XEmacs 21.1.
8
9 * rfc2047.el (rfc2047-encode-function-alist): Rename from
10 rfc2047-encoding-function-alist in order to avoid conflicting with
11 the old version.
12 (rfc2047-encode-message-header): Remove useless goto-char.
13 (rfc2047-encodable-p): Don't move point.
14 (rfc2047-syntax-table): Treat `(' and `)' as is.
15 (rfc2047-encode-region): Concatenate words containing non-ASCII
16 characters in structured fields; don't encode space-delimited
17 ASCII words even in unstructured fields; don't break words at
18 char-category boundaries; encode encoded words in structured
19 fields; treat text within parentheses as special; show the
20 original text when error has occurred; move point to the end of
21 the region after encoding, suggested by IRIE Tetsuya
22 <irie@t.email.ne.jp>; treat backslash-quoted characters as
23 non-special; check carefully whether to encode special characters;
24 fix some kind of misconfigured headers; signal a real error if
25 debug-on-quit or debug-on-error is non-nil; don't infloop,
26 suggested by Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp>; assume
27 the close parenthesis may be included in the encoded word; encode
28 bogus delimiters.
29 (rfc2047-encode-string): Use mm-with-multibyte-buffer.
30 (rfc2047-encode-max-chars): New variable.
31 (rfc2047-encode-1): New function.
32 (rfc2047-encode): Use it; encode text so that it occupies the
33 maximum width within 76-column; work correctly on Q encoding for
34 iso-2022-* charsets; fold the line before encoding; don't append a
35 space if the encoded word includes close parenthesis.
36 (rfc2047-fold-region): Use existing whitespace for LWSP; make it
37 sure not to break a line just after the header name.
38 (rfc2047-b-encode-region): Remove.
39 (rfc2047-b-encode-string): New function.
40 (rfc2047-q-encode-region): Remove.
41 (rfc2047-q-encode-string): New function.
42 (rfc2047-encode-parameter): New function.
43 (rfc2047-encoded-word-regexp): Don't use shy group.
44 (rfc2047-decode-region): Follow rfc2047-encoded-word-regexp change.
45 (rfc2047-parse-and-decode): Ditto.
46 (rfc2047-decode): Treat the ascii coding-system as raw-text by
47 default.
48
492005-03-25 Lars Magne Ingebrigtsen <larsi@gnus.org>
50
51 * rfc2047.el (rfc2047-encode-encoded-words): New variable.
52 (rfc2047-field-value): Strip props.
53 (rfc2047-encode-message-header): Disabled header folding -- not
54 all headers can be folded, and this should be done by the message
55 composition mode. Probably. I think.
56 (rfc2047-encodable-p): Say that =? needs encoding.
57 (rfc2047-encode-region): Encode =? strings.
58
592005-03-25 Jesper Harder <harder@ifa.au.dk>
60
61 * rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231
62 language tags; remove unnecessary '+'. Reported by Stefan Wiens
63 <s.wi@gmx.net>.
64 (rfc2047-decode-string): Don't cons a string unnecessarily.
65 (rfc2047-parse-and-decode, rfc2047-decode): Use a character for
66 the encoding to avoid consing a string.
67 (rfc2047-decode): Use mm-subst-char-in-string instead of
68 mm-replace-chars-in-string.
69
702005-03-25 TSUCHIYA Masatoshi <tsuchiya@namazu.org>
71
72 * rfc2047.el (rfc2047-encode): Use uppercase letters to specify
73 encodings of MIME-encoded words, in order to improve
74 interoperability with several broken MUAs.
75
762005-03-21 Reiner Steib <Reiner.Steib@gmx.de>
77
78 * gnus-srvr.el (gnus-browse-select-group): Add NUMBER argument and
79 pass it to `gnus-browse-read-group'.
80 (gnus-browse-read-group): Add NUMBER argument and pass it to
81 `gnus-group-read-ephemeral-group'.
82
83 * gnus-group.el (gnus-group-read-ephemeral-group): Add NUMBER
84 argument and pass it to `gnus-group-read-group'.
85
862005-03-19 Aidan Kehoe <kehoea@parhasard.net>
87
88 * mm-util.el (mm-xemacs-find-mime-charset): Only call
89 mm-xemacs-find-mime-charset-1 if we have the mule feature
90 available at runtime.
91
12005-03-25 Werner Lemberg <wl@gnu.org> 922005-03-25 Werner Lemberg <wl@gnu.org>
2 93
3 * nnmaildir.el: Replace `illegal' with `invalid'. 94 * nnmaildir.el: Replace `illegal' with `invalid'.
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 767bdacb78e..6d38626998c 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1984,7 +1984,8 @@ confirmation is required."
1984(defun gnus-group-read-ephemeral-group (group method &optional activate 1984(defun gnus-group-read-ephemeral-group (group method &optional activate
1985 quit-config request-only 1985 quit-config request-only
1986 select-articles 1986 select-articles
1987 parameters) 1987 parameters
1988 number)
1988 "Read GROUP from METHOD as an ephemeral group. 1989 "Read GROUP from METHOD as an ephemeral group.
1989If ACTIVATE, request the group first. 1990If ACTIVATE, request the group first.
1990If QUIT-CONFIG, use that window configuration when exiting from the 1991If QUIT-CONFIG, use that window configuration when exiting from the
@@ -1992,6 +1993,7 @@ ephemeral group.
1992If REQUEST-ONLY, don't actually read the group; just request it. 1993If REQUEST-ONLY, don't actually read the group; just request it.
1993If SELECT-ARTICLES, only select those articles. 1994If SELECT-ARTICLES, only select those articles.
1994If PARAMETERS, use those as the group parameters. 1995If PARAMETERS, use those as the group parameters.
1996If NUMBER, fetch this number of articles.
1995 1997
1996Return the name of the group if selection was successful." 1998Return the name of the group if selection was successful."
1997 (interactive 1999 (interactive
@@ -2039,7 +2041,7 @@ Return the name of the group if selection was successful."
2039 (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup) 2041 (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup)
2040 (gnus-fetch-old-headers 2042 (gnus-fetch-old-headers
2041 gnus-fetch-old-ephemeral-headers)) 2043 gnus-fetch-old-ephemeral-headers))
2042 (gnus-group-read-group t t group select-articles)) 2044 (gnus-group-read-group (or number t) t group select-articles))
2043 group) 2045 group)
2044 ;;(error nil) 2046 ;;(error nil)
2045 (quit 2047 (quit
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index e8c7d354145..7b3c033fddb 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -851,23 +851,26 @@ buffer.
851 (setq buffer-read-only t) 851 (setq buffer-read-only t)
852 (gnus-run-hooks 'gnus-browse-mode-hook)) 852 (gnus-run-hooks 'gnus-browse-mode-hook))
853 853
854(defun gnus-browse-read-group (&optional no-article) 854(defun gnus-browse-read-group (&optional no-article number)
855 "Enter the group at the current line." 855 "Enter the group at the current line.
856 (interactive) 856If NUMBER, fetch this number of articles."
857 (interactive "P")
857 (let ((group (gnus-browse-group-name))) 858 (let ((group (gnus-browse-group-name)))
858 (if (or (not (gnus-get-info group)) 859 (if (or (not (gnus-get-info group))
859 (gnus-ephemeral-group-p group)) 860 (gnus-ephemeral-group-p group))
860 (unless (gnus-group-read-ephemeral-group 861 (unless (gnus-group-read-ephemeral-group
861 group gnus-browse-current-method nil 862 group gnus-browse-current-method nil
862 (cons (current-buffer) 'browse)) 863 (cons (current-buffer) 'browse)
864 nil nil nil number)
863 (error "Couldn't enter %s" group)) 865 (error "Couldn't enter %s" group))
864 (unless (gnus-group-read-group nil no-article group) 866 (unless (gnus-group-read-group nil no-article group)
865 (error "Couldn't enter %s" group))))) 867 (error "Couldn't enter %s" group)))))
866 868
867(defun gnus-browse-select-group () 869(defun gnus-browse-select-group (&optional number)
868 "Select the current group." 870 "Select the current group.
869 (interactive) 871If NUMBER, fetch this number of articles."
870 (gnus-browse-read-group 'no)) 872 (interactive "P")
873 (gnus-browse-read-group 'no number))
871 874
872(defun gnus-browse-next-group (n) 875(defun gnus-browse-next-group (n)
873 "Go to the next group." 876 "Go to the next group."
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index de56fe2be96..9edbce2620e 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -6364,7 +6364,8 @@ Optional DIGEST will use digest to forward."
6364 (replace-match "X-From-Line: ")) 6364 (replace-match "X-From-Line: "))
6365 ;; Send it. 6365 ;; Send it.
6366 (let ((message-inhibit-body-encoding t) 6366 (let ((message-inhibit-body-encoding t)
6367 message-required-mail-headers) 6367 message-required-mail-headers
6368 rfc2047-encode-encoded-words)
6368 (message-send-mail)) 6369 (message-send-mail))
6369 (kill-buffer (current-buffer))) 6370 (kill-buffer (current-buffer)))
6370 (message "Resending message to %s...done" address))) 6371 (message "Resending message to %s...done" address)))
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 5b4200d6d52..3be6444f18f 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -86,6 +86,32 @@
86 (multibyte-char-to-unibyte . identity)))) 86 (multibyte-char-to-unibyte . identity))))
87 87
88(eval-and-compile 88(eval-and-compile
89 (cond
90 ((fboundp 'replace-in-string)
91 (defalias 'mm-replace-in-string 'replace-in-string))
92 ((fboundp 'replace-regexp-in-string)
93 (defun mm-replace-in-string (string regexp newtext &optional literal)
94 "Replace all matches for REGEXP with NEWTEXT in STRING.
95If LITERAL is non-nil, insert NEWTEXT literally. Return a new
96string containing the replacements.
97
98This is a compatibility function for different Emacsen."
99 (replace-regexp-in-string regexp newtext string nil literal)))
100 (t
101 (defun mm-replace-in-string (string regexp newtext &optional literal)
102 "Replace all matches for REGEXP with NEWTEXT in STRING.
103If LITERAL is non-nil, insert NEWTEXT literally. Return a new
104string containing the replacements.
105
106This is a compatibility function for different Emacsen."
107 (let ((start 0) tail)
108 (while (string-match regexp string start)
109 (setq tail (- (length string) (match-end 0)))
110 (setq string (replace-match newtext nil literal string))
111 (setq start (- (length string) tail))))
112 string))))
113
114(eval-and-compile
89 (defalias 'mm-char-or-char-int-p 115 (defalias 'mm-char-or-char-int-p
90 (cond 116 (cond
91 ((fboundp 'char-or-char-int-p) 'char-or-char-int-p) 117 ((fboundp 'char-or-char-int-p) 'char-or-char-int-p)
@@ -606,7 +632,7 @@ But this is very much a corner case, so don't worry about it."
606 632
607 ;; Load the Latin Unity library, if available. 633 ;; Load the Latin Unity library, if available.
608 (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity")) 634 (when (and (not (featurep 'latin-unity)) (locate-library "latin-unity"))
609 (require 'latin-unity)) 635 (ignore-errors (require 'latin-unity)))
610 636
611 ;; Now, can we use it? 637 ;; Now, can we use it?
612 (if (featurep 'latin-unity) 638 (if (featurep 'latin-unity)
@@ -651,7 +677,7 @@ But this is very much a corner case, so don't worry about it."
651 677
652(defmacro mm-xemacs-find-mime-charset (begin end) 678(defmacro mm-xemacs-find-mime-charset (begin end)
653 (when (featurep 'xemacs) 679 (when (featurep 'xemacs)
654 `(mm-xemacs-find-mime-charset-1 ,begin ,end))) 680 `(and (featurep 'mule) (mm-xemacs-find-mime-charset-1 ,begin ,end))))
655 681
656(defun mm-find-mime-charset-region (b e &optional hack-charsets) 682(defun mm-find-mime-charset-region (b e &optional hack-charsets)
657 "Return the MIME charsets needed to encode the region between B and E. 683 "Return the MIME charsets needed to encode the region between B and E.
diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el
index 6086f422abd..538e22e0f88 100644
--- a/lisp/gnus/rfc2047.el
+++ b/lisp/gnus/rfc2047.el
@@ -119,12 +119,15 @@ The values can be:
119Valid encodings are nil, `Q' and `B'. These indicate binary (no) encoding, 119Valid encodings are nil, `Q' and `B'. These indicate binary (no) encoding,
120quoted-printable and base64 respectively.") 120quoted-printable and base64 respectively.")
121 121
122(defvar rfc2047-encoding-function-alist 122(defvar rfc2047-encode-function-alist
123 '((Q . rfc2047-q-encode-region) 123 '((Q . rfc2047-q-encode-string)
124 (B . rfc2047-b-encode-region) 124 (B . rfc2047-b-encode-string)
125 (nil . ignore)) 125 (nil . identity))
126 "Alist of RFC2047 encodings to encoding functions.") 126 "Alist of RFC2047 encodings to encoding functions.")
127 127
128(defvar rfc2047-encode-encoded-words t
129 "Whether encoded words should be encoded again.")
130
128;;; 131;;;
129;;; Functions for encoding RFC2047 messages 132;;; Functions for encoding RFC2047 messages
130;;; 133;;;
@@ -166,7 +169,7 @@ This is either `base64' or `quoted-printable'."
166 (save-restriction 169 (save-restriction
167 (rfc2047-narrow-to-field) 170 (rfc2047-narrow-to-field)
168 (re-search-forward ":[ \t\n]*" nil t) 171 (re-search-forward ":[ \t\n]*" nil t)
169 (buffer-substring (point) (point-max))))) 172 (buffer-substring-no-properties (point) (point-max)))))
170 173
171(defvar rfc2047-encoding-type 'address-mime 174(defvar rfc2047-encoding-type 'address-mime
172 "The type of encoding done by `rfc2047-encode-region'. 175 "The type of encoding done by `rfc2047-encode-region'.
@@ -186,24 +189,25 @@ Should be called narrowed to the head of the message."
186 (rfc2047-narrow-to-field) 189 (rfc2047-narrow-to-field)
187 (if (not (rfc2047-encodable-p)) 190 (if (not (rfc2047-encodable-p))
188 (prog1 191 (prog1
189 (if (and (eq (mm-body-7-or-8) '8bit) 192 (if (and (eq (mm-body-7-or-8) '8bit)
190 (mm-multibyte-p) 193 (mm-multibyte-p)
191 (mm-coding-system-p 194 (mm-coding-system-p
192 (car message-posting-charset))) 195 (car message-posting-charset)))
193 ;; 8 bit must be decoded. 196 ;; 8 bit must be decoded.
194 (mm-encode-coding-region 197 (mm-encode-coding-region
195 (point-min) (point-max) 198 (point-min) (point-max)
196 (mm-charset-to-coding-system 199 (mm-charset-to-coding-system
197 (car message-posting-charset)))) 200 (car message-posting-charset))))
198 ;; No encoding necessary, but folding is nice 201 ;; No encoding necessary, but folding is nice
199 (rfc2047-fold-region 202 (when nil
200 (save-excursion 203 (rfc2047-fold-region
201 (goto-char (point-min)) 204 (save-excursion
202 (skip-chars-forward "^:") 205 (goto-char (point-min))
203 (when (looking-at ": ") 206 (skip-chars-forward "^:")
204 (forward-char 2)) 207 (when (looking-at ": ")
205 (point)) 208 (forward-char 2))
206 (point-max))) 209 (point))
210 (point-max))))
207 ;; We found something that may perhaps be encoded. 211 ;; We found something that may perhaps be encoded.
208 (setq method nil 212 (setq method nil
209 alist rfc2047-header-encoding-alist) 213 alist rfc2047-header-encoding-alist)
@@ -213,7 +217,6 @@ Should be called narrowed to the head of the message."
213 (eq (car elem) t)) 217 (eq (car elem) t))
214 (setq alist nil 218 (setq alist nil
215 method (cdr elem)))) 219 method (cdr elem))))
216 (goto-char (point-min))
217 (re-search-forward "^[^:]+: *" nil t) 220 (re-search-forward "^[^:]+: *" nil t)
218 (cond 221 (cond
219 ((eq method 'address-mime) 222 ((eq method 'address-mime)
@@ -267,8 +270,13 @@ The buffer may be narrowed."
267 (require 'message) ; for message-posting-charset 270 (require 'message) ; for message-posting-charset
268 (let ((charsets 271 (let ((charsets
269 (mm-find-mime-charset-region (point-min) (point-max)))) 272 (mm-find-mime-charset-region (point-min) (point-max))))
270 (and charsets 273 (goto-char (point-min))
271 (not (equal charsets (list (car message-posting-charset))))))) 274 (or (and rfc2047-encode-encoded-words
275 (prog1
276 (search-forward "=?" nil t)
277 (goto-char (point-min))))
278 (and charsets
279 (not (equal charsets (list (car message-posting-charset))))))))
272 280
273;; Use this syntax table when parsing into regions that may need 281;; Use this syntax table when parsing into regions that may need
274;; encoding. Double quotes are string delimiters, backslash is 282;; encoding. Double quotes are string delimiters, backslash is
@@ -292,8 +300,8 @@ The buffer may be narrowed."
292 table)))) 300 table))))
293 (modify-syntax-entry ?\\ "\\" table) 301 (modify-syntax-entry ?\\ "\\" table)
294 (modify-syntax-entry ?\" "\"" table) 302 (modify-syntax-entry ?\" "\"" table)
295 (modify-syntax-entry ?\( "." table) 303 (modify-syntax-entry ?\( "(" table)
296 (modify-syntax-entry ?\) "." table) 304 (modify-syntax-entry ?\) ")" table)
297 (modify-syntax-entry ?\< "." table) 305 (modify-syntax-entry ?\< "." table)
298 (modify-syntax-entry ?\> "." table) 306 (modify-syntax-entry ?\> "." table)
299 (modify-syntax-entry ?\[ "." table) 307 (modify-syntax-entry ?\[ "." table)
@@ -310,183 +318,341 @@ By default, the region is treated as containing RFC2822 addresses.
310Dynamically bind `rfc2047-encoding-type' to change that." 318Dynamically bind `rfc2047-encoding-type' to change that."
311 (save-restriction 319 (save-restriction
312 (narrow-to-region b e) 320 (narrow-to-region b e)
313 (if (eq 'mime rfc2047-encoding-type) 321 (let ((encodable-regexp (if rfc2047-encode-encoded-words
314 ;; Simple case. Treat as single word after any initial ASCII 322 "[^\000-\177]+\\|=\\?"
315 ;; part and before any tailing ASCII part. The leading ASCII 323 "[^\000-\177]+"))
316 ;; is relevant for instance in Subject headers with `Re:' for 324 start ; start of current token
317 ;; interoperability with non-MIME clients, and we might as 325 end begin csyntax
318 ;; well avoid the tail too. 326 ;; Whether there's an encoded word before the current token,
319 (progn 327 ;; either immediately or separated by space.
320 (goto-char (point-min)) 328 last-encoded
321 ;; Does it need encoding? 329 (orig-text (buffer-substring-no-properties b e)))
322 (skip-chars-forward "\000-\177") 330 (if (eq 'mime rfc2047-encoding-type)
323 (unless (eobp) 331 ;; Simple case. Continuous words in which all those contain
324 (skip-chars-backward "^ \n") ; beginning of space-delimited word 332 ;; non-ASCII characters are encoded collectively. Encoding
325 (rfc2047-encode (point) (progn 333 ;; ASCII words, including `Re:' used in Subject headers, is
326 (goto-char e) 334 ;; avoided for interoperability with non-MIME clients and
327 (skip-chars-backward "\000-\177") 335 ;; for making it easy to find keywords.
328 (skip-chars-forward "^ \n") 336 (progn
329 ;; end of space-delimited word 337 (goto-char (point-min))
330 (point))))) 338 (while (progn (skip-chars-forward " \t\n")
331 ;; `address-mime' case -- take care of quoted words, comments. 339 (not (eobp)))
332 (with-syntax-table rfc2047-syntax-table 340 (setq start (point))
333 (let ((start) ; start of current token 341 (while (and (looking-at "[ \t\n]*\\([^ \t\n]+\\)")
334 end ; end of current token 342 (progn
335 ;; Whether there's an encoded word before the current 343 (setq end (match-end 0))
336 ;; token, either immediately or separated by space. 344 (re-search-forward encodable-regexp end t)))
337 last-encoded) 345 (goto-char end))
346 (if (> (point) start)
347 (rfc2047-encode start (point))
348 (goto-char end))))
349 ;; `address-mime' case -- take care of quoted words, comments.
350 (with-syntax-table rfc2047-syntax-table
338 (goto-char (point-min)) 351 (goto-char (point-min))
339 (condition-case nil ; in case of unbalanced quotes 352 (condition-case err ; in case of unbalanced quotes
340 ;; Look for rfc2822-style: sequences of atoms, quoted 353 ;; Look for rfc2822-style: sequences of atoms, quoted
341 ;; strings, specials, whitespace. (Specials mustn't be 354 ;; strings, specials, whitespace. (Specials mustn't be
342 ;; encoded.) 355 ;; encoded.)
343 (while (not (eobp)) 356 (while (not (eobp))
344 (setq start (point))
345 ;; Skip whitespace. 357 ;; Skip whitespace.
346 (unless (= 0 (skip-chars-forward " \t\n")) 358 (skip-chars-forward " \t\n")
347 (setq start (point))) 359 (setq start (point))
348 (cond 360 (cond
349 ((not (char-after))) ; eob 361 ((not (char-after))) ; eob
350 ;; else token start 362 ;; else token start
351 ((eq ?\" (char-syntax (char-after))) 363 ((eq ?\" (setq csyntax (char-syntax (char-after))))
352 ;; Quoted word. 364 ;; Quoted word.
353 (forward-sexp) 365 (forward-sexp)
354 (setq end (point)) 366 (setq end (point))
355 ;; Does it need encoding? 367 ;; Does it need encoding?
356 (goto-char start) 368 (goto-char start)
357 (skip-chars-forward "\000-\177" end) 369 (if (re-search-forward encodable-regexp end 'move)
358 (if (= end (point)) 370 ;; It needs encoding. Strip the quotes first,
359 (setq last-encoded nil) 371 ;; since encoded words can't occur in quotes.
360 ;; It needs encoding. Strip the quotes first, 372 (progn
361 ;; since encoded words can't occur in quotes. 373 (goto-char end)
362 (goto-char end) 374 (delete-backward-char 1)
363 (delete-backward-char 1) 375 (goto-char start)
364 (goto-char start) 376 (delete-char 1)
365 (delete-char 1) 377 (when last-encoded
366 (when last-encoded 378 ;; There was a preceding quoted word. We need
367 ;; There was a preceding quoted word. We need 379 ;; to include any separating whitespace in this
368 ;; to include any separating whitespace in this 380 ;; word to avoid it getting lost.
369 ;; word to avoid it getting lost. 381 (skip-chars-backward " \t")
370 (skip-chars-backward " \t") 382 ;; A space is needed between the encoded words.
371 ;; A space is needed between the encoded words. 383 (insert ? )
372 (insert ? ) 384 (setq start (point)
373 (setq start (point) 385 end (1+ end)))
374 end (1+ end))) 386 ;; Adjust the end position for the deleted quotes.
375 ;; Adjust the end position for the deleted quotes. 387 (rfc2047-encode start (- end 2))
376 (rfc2047-encode start (- end 2)) 388 (setq last-encoded t)) ; record that it was encoded
377 (setq last-encoded t))) ; record that it was encoded 389 (setq last-encoded nil)))
378 ((eq ?. (char-syntax (char-after))) 390 ((eq ?. csyntax)
379 ;; Skip other delimiters, but record that they've 391 ;; Skip other delimiters, but record that they've
380 ;; potentially separated quoted words. 392 ;; potentially separated quoted words.
381 (forward-char) 393 (forward-char)
382 (setq last-encoded nil)) 394 (setq last-encoded nil))
395 ((eq ?\) csyntax)
396 (error "Unbalanced parentheses"))
397 ((eq ?\( csyntax)
398 ;; Look for the end of parentheses.
399 (forward-list)
400 ;; Encode text as an unstructured field.
401 (let ((rfc2047-encoding-type 'mime))
402 (rfc2047-encode-region (1+ start) (1- (point))))
403 (skip-chars-forward ")"))
383 (t ; normal token/whitespace sequence 404 (t ; normal token/whitespace sequence
384 ;; Find the end. 405 ;; Find the end.
385 (forward-word 1) 406 ;; Skip one ASCII word, or encode continuous words
386 (skip-chars-backward " \t") 407 ;; in which all those contain non-ASCII characters.
408 (setq end nil)
409 (while (not (or end (eobp)))
410 (when (looking-at "[\000-\177]+")
411 (setq begin (point)
412 end (match-end 0))
413 (when (progn
414 (while (and (or (re-search-forward
415 "[ \t\n]\\|\\Sw" end 'move)
416 (setq end nil))
417 (eq ?\\ (char-syntax (char-before))))
418 ;; Skip backslash-quoted characters.
419 (forward-char))
420 end)
421 (setq end (match-beginning 0))
422 (if rfc2047-encode-encoded-words
423 (progn
424 (goto-char begin)
425 (when (search-forward "=?" end 'move)
426 (goto-char (match-beginning 0))
427 (setq end nil)))
428 (goto-char end))))
429 ;; Where the value nil of `end' means there may be
430 ;; text to have to be encoded following the point.
431 ;; Otherwise, the point reached to the end of ASCII
432 ;; words separated by whitespace or a special char.
433 (unless end
434 (when (looking-at encodable-regexp)
435 (goto-char (setq begin (match-end 0)))
436 (while (and (looking-at "[ \t\n]+\\([^ \t\n]+\\)")
437 (setq end (match-end 0))
438 (progn
439 (while (re-search-forward
440 encodable-regexp end t))
441 (< begin (point)))
442 (goto-char begin)
443 (or (not (re-search-forward "\\Sw" end t))
444 (progn
445 (goto-char (match-beginning 0))
446 nil)))
447 (goto-char end))
448 (when (looking-at "[^ \t\n]+")
449 (setq end (match-end 0))
450 (if (re-search-forward "\\Sw+" end t)
451 ;; There are special characters better
452 ;; to be encoded so that MTAs may parse
453 ;; them safely.
454 (cond ((= end (point)))
455 ((looking-at (concat "\\sw*\\("
456 encodable-regexp
457 "\\)"))
458 (setq end nil))
459 (t
460 (goto-char (1- (match-end 0)))
461 (unless (= (point) (match-beginning 0))
462 ;; Separate encodable text and
463 ;; delimiter.
464 (insert " "))))
465 (goto-char end)
466 (skip-chars-forward " \t\n")
467 (if (and (looking-at "[^ \t\n]+")
468 (string-match encodable-regexp
469 (match-string 0)))
470 (setq end nil)
471 (goto-char end)))))))
472 (skip-chars-backward " \t\n")
387 (setq end (point)) 473 (setq end (point))
388 ;; Deal with encoding and leading space as for
389 ;; quoted words.
390 (goto-char start) 474 (goto-char start)
391 (skip-chars-forward "\000-\177" end) 475 (if (re-search-forward encodable-regexp end 'move)
392 (if (= end (point)) 476 (progn
393 (setq last-encoded nil) 477 (unless (memq (char-before start) '(nil ?\t ? ))
394 (when last-encoded 478 (if (progn
395 (goto-char start) 479 (goto-char start)
396 (skip-chars-backward " \t") 480 (skip-chars-backward "^ \t\n")
397 (insert ? ) 481 (and (looking-at "\\Sw+")
398 (setq start (point) 482 (= (match-end 0) start)))
399 end (1+ end))) 483 ;; Also encode bogus delimiters.
400 (rfc2047-encode start end) 484 (setq start (point))
401 (setq last-encoded t))))) 485 ;; Separate encodable text and delimiter.
486 (goto-char start)
487 (insert " ")
488 (setq start (1+ start)
489 end (1+ end))))
490 (rfc2047-encode start end)
491 (setq last-encoded t))
492 (setq last-encoded nil)))))
402 (error 493 (error
403 (error "Invalid data for rfc2047 encoding: %s" 494 (if (or debug-on-quit debug-on-error)
404 (buffer-substring b e))))))) 495 (signal (car err) (cdr err))
405 (rfc2047-fold-region b (point)))) 496 (error "Invalid data for rfc2047 encoding: %s"
497 (mm-replace-in-string orig-text "[ \t\n]+" " "))))))))
498 (rfc2047-fold-region b (point))
499 (goto-char (point-max))))
406 500
407(defun rfc2047-encode-string (string) 501(defun rfc2047-encode-string (string)
408 "Encode words in STRING. 502 "Encode words in STRING.
409By default, the string is treated as containing addresses (see 503By default, the string is treated as containing addresses (see
410`rfc2047-encoding-type')." 504`rfc2047-encoding-type')."
411 (with-temp-buffer 505 (mm-with-multibyte-buffer
412 (insert string) 506 (insert string)
413 (rfc2047-encode-region (point-min) (point-max)) 507 (rfc2047-encode-region (point-min) (point-max))
414 (buffer-string))) 508 (buffer-string)))
415 509
510(defvar rfc2047-encode-max-chars 76
511 "Maximum characters of each header line that contain encoded-words.
512If it is nil, encoded-words will not be folded. Too small value may
513cause an error. Don't change this for no particular reason.")
514
515(defun rfc2047-encode-1 (column string cs encoder start crest tail
516 &optional eword)
517 "Subroutine used by `rfc2047-encode'."
518 (cond ((string-equal string "")
519 (or eword ""))
520 ((not rfc2047-encode-max-chars)
521 (concat start
522 (funcall encoder (if cs
523 (mm-encode-coding-string string cs)
524 string))
525 "?="))
526 ((>= column rfc2047-encode-max-chars)
527 (when eword
528 (cond ((string-match "\n[ \t]+\\'" eword)
529 ;; Reomove a superfluous empty line.
530 (setq eword (substring eword 0 (match-beginning 0))))
531 ((string-match "(+\\'" eword)
532 ;; Break the line before the open parenthesis.
533 (setq crest (concat crest (match-string 0 eword))
534 eword (substring eword 0 (match-beginning 0))))))
535 (rfc2047-encode-1 (length crest) string cs encoder start " " tail
536 (concat eword "\n" crest)))
537 (t
538 (let ((index 0)
539 (limit (1- (length string)))
540 (prev "")
541 next len)
542 (while (and prev
543 (<= index limit))
544 (setq next (concat start
545 (funcall encoder
546 (if cs
547 (mm-encode-coding-string
548 (substring string 0 (1+ index))
549 cs)
550 (substring string 0 (1+ index))))
551 "?=")
552 len (+ column (length next)))
553 (if (> len rfc2047-encode-max-chars)
554 (setq next prev
555 prev nil)
556 (if (or (< index limit)
557 (<= (+ len (or (string-match "\n" tail)
558 (length tail)))
559 rfc2047-encode-max-chars))
560 (setq prev next
561 index (1+ index))
562 (if (string-match "\\`)+" tail)
563 ;; Break the line after the close parenthesis.
564 (setq tail (concat (substring tail 0 (match-end 0))
565 "\n "
566 (substring tail (match-end 0)))
567 prev next
568 index (1+ index))
569 (setq next prev
570 prev nil)))))
571 (if (> index limit)
572 (concat eword next tail)
573 (if (= 0 index)
574 (if (and eword
575 (string-match "(+\\'" eword))
576 (setq crest (concat crest (match-string 0 eword))
577 eword (substring eword 0 (match-beginning 0)))
578 (setq eword (concat eword next)))
579 (setq crest " "
580 eword (concat eword next)))
581 (when (string-match "\n[ \t]+\\'" eword)
582 ;; Reomove a superfluous empty line.
583 (setq eword (substring eword 0 (match-beginning 0))))
584 (rfc2047-encode-1 (length crest) (substring string index)
585 cs encoder start " " tail
586 (concat eword "\n" crest)))))))
587
416(defun rfc2047-encode (b e) 588(defun rfc2047-encode (b e)
417 "Encode the word(s) in the region B to E. 589 "Encode the word(s) in the region B to E.
418By default, the region is treated as containing addresses (see 590Point moves to the end of the region."
419`rfc2047-encoding-type')." 591 (let ((mime-charset (or (mm-find-mime-charset-region b e) (list 'us-ascii)))
420 (let* ((mime-charset (mm-find-mime-charset-region b e)) 592 cs encoding tail crest eword)
421 (cs (if (> (length mime-charset) 1) 593 (cond ((> (length mime-charset) 1)
422 ;; Fixme: Instead of this, try to break region into 594 (error "Can't rfc2047-encode `%s'"
423 ;; parts that can be encoded separately. 595 (buffer-substring-no-properties b e)))
424 (error "Can't rfc2047-encode `%s'" 596 ((= (length mime-charset) 1)
425 (buffer-substring b e)) 597 (setq mime-charset (car mime-charset)
426 (setq mime-charset (car mime-charset)) 598 cs (mm-charset-to-coding-system mime-charset))
427 (mm-charset-to-coding-system mime-charset))) 599 (unless (and (mm-multibyte-p)
428 ;; Fixme: Better, calculate the number of non-ASCII 600 (mm-coding-system-p cs))
429 ;; characters, at least for 8-bit charsets. 601 (setq cs nil))
430 (encoding (or (cdr (assq mime-charset 602 (save-restriction
603 (narrow-to-region b e)
604 (setq encoding
605 (or (cdr (assq mime-charset
431 rfc2047-charset-encoding-alist)) 606 rfc2047-charset-encoding-alist))
432 ;; For the charsets that don't have a preferred 607 ;; For the charsets that don't have a preferred
433 ;; encoding, choose the one that's shorter. 608 ;; encoding, choose the one that's shorter.
434 (save-restriction 609 (if (eq (rfc2047-qp-or-base64) 'base64)
435 (narrow-to-region b e) 610 'B
436 (if (eq (rfc2047-qp-or-base64) 'base64) 611 'Q)))
437 'B 612 (widen)
438 'Q)))) 613 (goto-char e)
439 (start (concat 614 (skip-chars-forward "^ \t\n")
440 "=?" (downcase (symbol-name mime-charset)) "?" 615 ;; `tail' may contain a close parenthesis.
441 (downcase (symbol-name encoding)) "?")) 616 (setq tail (buffer-substring-no-properties e (point)))
442 (factor (case mime-charset 617 (goto-char b)
443 ((iso-8859-5 iso-8859-7 iso-8859-8 koi8-r) 1) 618 (setq b (point-marker)
444 ((big5 gb2312 euc-kr) 2) 619 e (set-marker (make-marker) e))
445 (utf-8 4) 620 (rfc2047-fold-region (rfc2047-point-at-bol) b)
446 (t 8))) 621 (goto-char b)
447 (pre (- b (save-restriction 622 (skip-chars-backward "^ \t\n")
448 (widen) 623 (unless (= 0 (skip-chars-backward " \t"))
449 (rfc2047-point-at-bol)))) 624 ;; `crest' may contain whitespace and an open parenthesis.
450 ;; encoded-words must not be longer than 75 characters, 625 (setq crest (buffer-substring-no-properties (point) b)))
451 ;; including charset, encoding etc. This leaves us with 626 (setq eword (rfc2047-encode-1
452 ;; 75 - (length start) - 2 - 2 characters. The last 2 is for 627 (- b (rfc2047-point-at-bol))
453 ;; possible base64 padding. In the worst case (iso-2022-*) 628 (mm-replace-in-string
454 ;; each character expands to 8 bytes which is expanded by a 629 (buffer-substring-no-properties b e)
455 ;; factor of 4/3 by base64 encoding. 630 "\n\\([ \t]?\\)" "\\1")
456 (length (floor (- 75 (length start) 4) (* factor (/ 4.0 3.0)))) 631 cs
457 ;; Limit line length to 76 characters. 632 (or (cdr (assq encoding
458 (length1 (max 1 (floor (- 76 (length start) 4 pre) 633 rfc2047-encode-function-alist))
459 (* factor (/ 4.0 3.0))))) 634 'identity)
460 (first t)) 635 (concat "=?" (downcase (symbol-name mime-charset))
461 (if mime-charset 636 "?" (upcase (symbol-name encoding)) "?")
462 (save-restriction 637 (or crest " ")
463 (narrow-to-region b e) 638 tail))
464 (when (eq encoding 'B) 639 (delete-region (if (eq (aref eword 0) ?\n)
465 ;; break into lines before encoding 640 (if (bolp)
466 (goto-char (point-min)) 641 ;; The line was folded before encoding.
467 (while (not (eobp)) 642 (1- (point))
468 (if first 643 (point))
469 (progn 644 (goto-char b))
470 (goto-char (min (point-max) (+ length1 (point)))) 645 (+ e (length tail)))
471 (setq first nil)) 646 ;; `eword' contains `crest' and `tail'.
472 (goto-char (min (point-max) (+ length (point))))) 647 (insert eword)
473 (unless (eobp) 648 (set-marker b nil)
474 (insert ?\n))) 649 (set-marker e nil)
475 (setq first t)) 650 (unless (or (/= 0 (length tail))
476 (if (and (mm-multibyte-p) 651 (eobp)
477 (mm-coding-system-p cs)) 652 (looking-at "[ \t\n)]"))
478 (mm-encode-coding-region (point-min) (point-max) cs)) 653 (insert " "))))
479 (funcall (cdr (assq encoding rfc2047-encoding-function-alist)) 654 (t
480 (point-min) (point-max)) 655 (goto-char e)))))
481 (goto-char (point-min))
482 (while (not (eobp))
483 (unless first
484 (insert ? ))
485 (setq first nil)
486 (insert start)
487 (end-of-line)
488 (insert "?=")
489 (forward-line 1))))))
490 656
491(defun rfc2047-fold-field () 657(defun rfc2047-fold-field ()
492 "Fold the current header field." 658 "Fold the current header field."
@@ -512,6 +678,7 @@ By default, the region is treated as containing addresses (see
512 (goto-char (or break qword-break)) 678 (goto-char (or break qword-break))
513 (setq break nil 679 (setq break nil
514 qword-break nil) 680 qword-break nil)
681 (skip-chars-backward " \t")
515 (if (looking-at "[ \t]") 682 (if (looking-at "[ \t]")
516 (insert ?\n) 683 (insert ?\n)
517 (insert "\n ")) 684 (insert "\n "))
@@ -533,10 +700,8 @@ By default, the region is treated as containing addresses (see
533 (forward-char 1)) 700 (forward-char 1))
534 ((memq (char-after) '(? ?\t)) 701 ((memq (char-after) '(? ?\t))
535 (skip-chars-forward " \t") 702 (skip-chars-forward " \t")
536 (if first 703 (unless first ;; Don't break just after the header name.
537 ;; Don't break just after the header name. 704 (setq break (point))))
538 (setq first nil)
539 (setq break (1- (point)))))
540 ((not break) 705 ((not break)
541 (if (not (looking-at "=\\?[^=]")) 706 (if (not (looking-at "=\\?[^=]"))
542 (if (eq (char-after) ?=) 707 (if (eq (char-after) ?=)
@@ -547,15 +712,17 @@ By default, the region is treated as containing addresses (see
547 (setq qword-break (point))) 712 (setq qword-break (point)))
548 (skip-chars-forward "^ \t\n\r"))) 713 (skip-chars-forward "^ \t\n\r")))
549 (t 714 (t
550 (skip-chars-forward "^ \t\n\r")))) 715 (skip-chars-forward "^ \t\n\r")))
716 (setq first nil))
551 (when (and (or break qword-break) 717 (when (and (or break qword-break)
552 (> (- (point) bol) 76)) 718 (> (- (point) bol) 76))
553 (goto-char (or break qword-break)) 719 (goto-char (or break qword-break))
554 (setq break nil 720 (setq break nil
555 qword-break nil) 721 qword-break nil)
556 (if (looking-at "[ \t]") 722 (if (or (> 0 (skip-chars-backward " \t"))
557 (insert ?\n) 723 (looking-at "[ \t]"))
558 (insert "\n ")) 724 (insert ?\n)
725 (insert "\n "))
559 (setq bol (1- (point))) 726 (setq bol (1- (point)))
560 ;; Don't break before the first non-LWSP characters. 727 ;; Don't break before the first non-LWSP characters.
561 (skip-chars-forward " \t") 728 (skip-chars-forward " \t")
@@ -590,48 +757,48 @@ By default, the region is treated as containing addresses (see
590 (setq eol (rfc2047-point-at-eol)) 757 (setq eol (rfc2047-point-at-eol))
591 (forward-line 1))))) 758 (forward-line 1)))))
592 759
593(defun rfc2047-b-encode-region (b e) 760(defun rfc2047-b-encode-string (string)
594 "Base64-encode the header contained in region B to E." 761 "Base64-encode the header contained in STRING."
595 (save-restriction 762 (base64-encode-string string t))
596 (narrow-to-region (goto-char b) e) 763
597 (while (not (eobp)) 764(defun rfc2047-q-encode-string (string)
598 (base64-encode-region (point) (progn (end-of-line) (point)) t) 765 "Quoted-printable-encode the header in STRING."
599 (if (and (bolp) (eolp)) 766 (mm-with-unibyte-buffer
600 (delete-backward-char 1)) 767 (insert string)
601 (forward-line)))) 768 (quoted-printable-encode-region
602 769 (point-min) (point-max) nil
603(defun rfc2047-q-encode-region (b e) 770 ;; = (\075), _ (\137), ? (\077) are used in the encoded word.
604 "Quoted-printable-encode the header in region B to E." 771 ;; Avoid using 8bit characters.
605 (save-excursion 772 ;; This list excludes `especials' (see the RFC2047 syntax),
606 (save-restriction 773 ;; meaning that some characters in non-structured fields will
607 (narrow-to-region (goto-char b) e) 774 ;; get encoded when they con't need to be. The following is
608 (let ((bol (save-restriction 775 ;; what it used to be.
609 (widen) 776 ;;; ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?"
610 (rfc2047-point-at-bol)))) 777 ;;; "\010\012\014\040-\074\076\100-\136\140-\177")
611 (quoted-printable-encode-region 778 "-\b\n\f !#-'*+0-9A-Z\\^`-~\d")
612 b e nil 779 (subst-char-in-region (point-min) (point-max) ? ?_)
613 ;; = (\075), _ (\137), ? (\077) are used in the encoded word. 780 (buffer-string)))
614 ;; Avoid using 8bit characters. 781
615 ;; This list excludes `especials' (see the RFC2047 syntax), 782(defun rfc2047-encode-parameter (param value)
616 ;; meaning that some characters in non-structured fields will 783 "Return and PARAM=VALUE string encoded in the RFC2047-like style.
617 ;; get encoded when they con't need to be. The following is 784This is a replacement for the `rfc2231-encode-string' function.
618 ;; what it used to be. 785
619;;; ;; Equivalent to "^\000-\007\011\013\015-\037\200-\377=_?" 786When attaching files as MIME parts, we should use the RFC2231 encoding
620;;; "\010\012\014\040-\074\076\100-\136\140-\177") 787to specify the file names containing non-ASCII characters. However,
621 "-\b\n\f !#-'*+0-9A-Z\\^`-~\d") 788many mail softwares don't support it in practice and recipients won't
622 (subst-char-in-region (point-min) (point-max) ? ?_) 789be able to extract files with correct names. Instead, the RFC2047-like
623 ;; The size of QP encapsulation is about 20, so set limit to 790encoding is acceptable generally. This function provides the very
624 ;; 56=76-20. 791RFC2047-like encoding, resigning to such a regrettable trend. To use
625 (unless (< (- (point-max) (point-min)) 56) 792it, put the following line in your ~/.gnus.el file:
626 ;; Don't break if it could fit in one line. 793
627 ;; Let rfc2047-encode-region break it later. 794\(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
628 (goto-char (1+ (point-min))) 795"
629 (while (and (not (bobp)) (not (eobp))) 796 (let* ((rfc2047-encoding-type 'mime)
630 (goto-char (min (point-max) (+ 56 bol))) 797 (rfc2047-encode-max-chars nil)
631 (search-backward "=" (- (point) 2) t) 798 (string (rfc2047-encode-string value)))
632 (unless (or (bobp) (eobp)) 799 (if (string-match (concat "[" ietf-drums-tspecials "]") string)
633 (insert ?\n) 800 (format "%s=%S" param string)
634 (setq bol (point))))))))) 801 (concat param "=" string))))
635 802
636;;; 803;;;
637;;; Functions for decoding RFC2047 messages 804;;; Functions for decoding RFC2047 messages
@@ -639,8 +806,8 @@ By default, the region is treated as containing addresses (see
639 806
640(eval-and-compile 807(eval-and-compile
641 (defconst rfc2047-encoded-word-regexp 808 (defconst rfc2047-encoded-word-regexp
642 "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\ 809 "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(\\*[^?]+\\)?\
643\\?\\([!->@-~ +]*\\)\\?=")) 810\\?\\(B\\|Q\\)\\?\\([!->@-~ ]*\\)\\?="))
644 811
645(defvar rfc2047-quote-decoded-words-containing-tspecials nil 812(defvar rfc2047-quote-decoded-words-containing-tspecials nil
646 "If non-nil, quote decoded words containing special characters.") 813 "If non-nil, quote decoded words containing special characters.")
@@ -671,7 +838,7 @@ By default, the region is treated as containing addresses (see
671 "\\(\n?[ \t]\\)+" 838 "\\(\n?[ \t]\\)+"
672 "\\(" rfc2047-encoded-word-regexp "\\)")) 839 "\\(" rfc2047-encoded-word-regexp "\\)"))
673 nil t) 840 nil t)
674 (delete-region (goto-char (match-end 1)) (match-beginning 6))) 841 (delete-region (goto-char (match-end 1)) (match-beginning 7)))
675 ;; Decode the encoded words. 842 ;; Decode the encoded words.
676 (setq b (goto-char (point-min))) 843 (setq b (goto-char (point-min)))
677 (while (re-search-forward rfc2047-encoded-word-regexp nil t) 844 (while (re-search-forward rfc2047-encoded-word-regexp nil t)
@@ -774,7 +941,20 @@ By default, the region is treated as containing addresses (see
774 mail-parse-charset 941 mail-parse-charset
775 (not (eq mail-parse-charset 'us-ascii)) 942 (not (eq mail-parse-charset 'us-ascii))
776 (not (eq mail-parse-charset 'gnus-decoded))) 943 (not (eq mail-parse-charset 'gnus-decoded)))
777 (mm-decode-coding-string string mail-parse-charset) 944 ;; `decode-coding-string' in Emacs offers a third optional
945 ;; arg NOCOPY to avoid consing a new string if the decoding
946 ;; is "trivial". Unfortunately it currently doesn't
947 ;; consider anything else than a `nil' coding system
948 ;; trivial.
949 ;; `rfc2047-decode-string' is called multiple times for each
950 ;; article during summary buffer generation, and we really
951 ;; want to avoid unnecessary consing. So we bypass
952 ;; `decode-coding-string' if the string is purely ASCII.
953 (if (and (fboundp 'detect-coding-string)
954 ;; string is purely ASCII
955 (eq (detect-coding-string string t) 'undecided))
956 string
957 (mm-decode-coding-string string mail-parse-charset))
778 (mm-string-as-multibyte string))))) 958 (mm-string-as-multibyte string)))))
779 959
780(defun rfc2047-parse-and-decode (word) 960(defun rfc2047-parse-and-decode (word)
@@ -787,8 +967,8 @@ decodable."
787 (condition-case nil 967 (condition-case nil
788 (rfc2047-decode 968 (rfc2047-decode
789 (match-string 1 word) 969 (match-string 1 word)
790 (upcase (match-string 2 word)) 970 (string-to-char (match-string 3 word))
791 (match-string 3 word)) 971 (match-string 4 word))
792 (error word)) 972 (error word))
793 word))) ; un-decodable 973 word))) ; un-decodable
794 974
@@ -809,7 +989,7 @@ decodable."
809 989
810(defun rfc2047-decode (charset encoding string) 990(defun rfc2047-decode (charset encoding string)
811 "Decode STRING from the given MIME CHARSET in the given ENCODING. 991 "Decode STRING from the given MIME CHARSET in the given ENCODING.
812Valid ENCODINGs are \"B\" and \"Q\". 992Valid ENCODINGs are the characters \"B\" and \"Q\".
813If your Emacs implementation can't decode CHARSET, return nil." 993If your Emacs implementation can't decode CHARSET, return nil."
814 (if (stringp charset) 994 (if (stringp charset)
815 (setq charset (intern (downcase charset)))) 995 (setq charset (intern (downcase charset))))
@@ -824,18 +1004,17 @@ If your Emacs implementation can't decode CHARSET, return nil."
824 (memq 'gnus-unknown mail-parse-ignored-charsets)) 1004 (memq 'gnus-unknown mail-parse-ignored-charsets))
825 (setq cs (mm-charset-to-coding-system mail-parse-charset))) 1005 (setq cs (mm-charset-to-coding-system mail-parse-charset)))
826 (when cs 1006 (when cs
827 (when (and (eq cs 'ascii) 1007 (when (eq cs 'ascii)
828 mail-parse-charset) 1008 (setq cs (or mail-parse-charset 'raw-text)))
829 (setq cs mail-parse-charset))
830 (mm-decode-coding-string 1009 (mm-decode-coding-string
831 (cond 1010 (cond
832 ((equal "B" encoding) 1011 ((char-equal ?B encoding)
833 (base64-decode-string 1012 (base64-decode-string
834 (rfc2047-pad-base64 string))) 1013 (rfc2047-pad-base64 string)))
835 ((equal "Q" encoding) 1014 ((char-equal ?Q encoding)
836 (quoted-printable-decode-string 1015 (quoted-printable-decode-string
837 (mm-replace-chars-in-string string ?_ ? ))) 1016 (mm-subst-char-in-string ?_ ? string t)))
838 (t (error "Invalid encoding: %s" encoding))) 1017 (t (error "Invalid encoding: %c" encoding)))
839 cs)))) 1018 cs))))
840 1019
841(provide 'rfc2047) 1020(provide 'rfc2047)
diff --git a/man/ChangeLog b/man/ChangeLog
index 6da44c9a8e2..8efe3775953 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,12 @@
12005-03-25 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * emacs-mime.texi (Display Customization): Markup fixes.
4 (rfc2047): Update.
5
62005-03-23 Reiner Steib <Reiner.Steib@gmx.de>
7
8 * gnus-faq.texi: Replaced with auto-generated version.
9
12005-03-29 Richard M. Stallman <rms@gnu.org> 102005-03-29 Richard M. Stallman <rms@gnu.org>
2 11
3 * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info. 12 * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info.
diff --git a/man/emacs-mime.texi b/man/emacs-mime.texi
index c128ed096c3..11a07df5361 100644
--- a/man/emacs-mime.texi
+++ b/man/emacs-mime.texi
@@ -387,15 +387,15 @@ The program used to start an external terminal.
387 387
388@item mm-enable-external 388@item mm-enable-external
389@vindex mm-enable-external 389@vindex mm-enable-external
390Indicate whether external MIME handlers should be used. 390Indicate whether external @acronym{MIME} handlers should be used.
391 391
392If @code{t}, all defined external MIME handlers are used. If 392If @code{t}, all defined external @acronym{MIME} handlers are used. If
393@code{nil}, files are saved to disk (@code{mailcap-save-binary-file}). 393@code{nil}, files are saved to disk (@code{mailcap-save-binary-file}).
394If it is the symbol @code{ask}, you are prompted before the external 394If it is the symbol @code{ask}, you are prompted before the external
395@acronym{MIME} handler is invoked. 395@acronym{MIME} handler is invoked.
396 396
397When you launch an attachment through mailcap (@pxref{mailcap}) an 397When you launch an attachment through mailcap (@pxref{mailcap}) an
398attempt is made to use a safe viewer with the safest options--this isn't 398attempt is made to use a safe viewer with the safest options---this isn't
399the case if you save it to disk and launch it in a different way 399the case if you save it to disk and launch it in a different way
400(command line or double-clicking). Anyhow, if you want to be sure not 400(command line or double-clicking). Anyhow, if you want to be sure not
401to launch any external programs, set this variable to @code{nil} or 401to launch any external programs, set this variable to @code{nil} or
@@ -1327,8 +1327,8 @@ RFC2047 specifies two forms of encoding---@code{Q} (a
1327Quoted-Printable-like encoding) and @code{B} (base64). This alist 1327Quoted-Printable-like encoding) and @code{B} (base64). This alist
1328specifies which charset should use which encoding. 1328specifies which charset should use which encoding.
1329 1329
1330@item rfc2047-encoding-function-alist 1330@item rfc2047-encode-function-alist
1331@vindex rfc2047-encoding-function-alist 1331@vindex rfc2047-encode-function-alist
1332This is an alist of encoding / function pairs. The encodings are 1332This is an alist of encoding / function pairs. The encodings are
1333@code{Q}, @code{B} and @code{nil}. 1333@code{Q}, @code{B} and @code{nil}.
1334 1334
@@ -1336,6 +1336,11 @@ This is an alist of encoding / function pairs. The encodings are
1336@vindex rfc2047-encoded-word-regexp 1336@vindex rfc2047-encoded-word-regexp
1337When decoding words, this library looks for matches to this regexp. 1337When decoding words, this library looks for matches to this regexp.
1338 1338
1339@item rfc2047-encode-encoded-words
1340@vindex rfc2047-encode-encoded-words
1341The boolean variable specifies whether encoded words
1342(e.g. @samp{=?hello?=}) should be encoded again.
1343
1339@end table 1344@end table
1340 1345
1341Those were the variables, and these are this functions: 1346Those were the variables, and these are this functions:
@@ -1366,6 +1371,24 @@ Decode the encoded words in the region.
1366@findex rfc2047-decode-string 1371@findex rfc2047-decode-string
1367Decode a string and return the results. 1372Decode a string and return the results.
1368 1373
1374@item rfc2047-encode-parameter
1375@findex rfc2047-encode-parameter
1376Encode a parameter in the RFC2047-like style. This is a replacement for
1377the @code{rfc2231-encode-string} function. @xref{rfc2231}.
1378
1379When attaching files as @acronym{MIME} parts, we should use the RFC2231
1380encoding to specify the file names containing non-@acronym{ASCII}
1381characters. However, many mail softwares don't support it in practice
1382and recipients won't be able to extract files with correct names.
1383Instead, the RFC2047-like encoding is acceptable generally. This
1384function provides the very RFC2047-like encoding, resigning to such a
1385regrettable trend. To use it, put the following line in your
1386@file{~/.gnus.el} file:
1387
1388@lisp
1389(defalias 'mail-header-encode-parameter 'rfc2047-encode-parameter)
1390@end lisp
1391
1369@end table 1392@end table
1370 1393
1371 1394
diff --git a/man/gnus-faq.texi b/man/gnus-faq.texi
index 42266aa4646..742227b64fc 100644
--- a/man/gnus-faq.texi
+++ b/man/gnus-faq.texi
@@ -1,210 +1,203 @@
1@c Insert "\input texinfo" at 1st line before texing this file alone. 1@c \input texinfo @c -*-texinfo-*-
2@c -*-texinfo-*- 2@c Uncomment 1st line before texing this file alone.
3@c Copyright (C) 1995, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. 3@c %**start of header
4@c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5@c
6@c Do not modify this file, it was generated from gnus-faq.xml, available from
7@c <URL:http://my.gnus.org/FAQ/>.
8@c
4@setfilename gnus-faq.info 9@setfilename gnus-faq.info
5 10@settitle Frequently Asked Questions
6@c Frequently Asked Questions, FAQ - Introduction, Emacs for Heathens, Top 11@c %**end of header
12@c
7 13
8@node Frequently Asked Questions 14@node Frequently Asked Questions
9@comment node-name, next, previous, up
10
11@c @chapter Frequently Asked Questions
12@section Frequently Asked Questions 15@section Frequently Asked Questions
13@cindex FAQ
14@cindex Frequently Asked Questions
15
16@c - Uncomment @chapter, comment @section
17@c - run (texinfo-every-node-update)
18@c - revert it.
19 16
20@menu 17@menu
21* FAQ - Introduction:: About Gnus and this FAQ. 18* FAQ - Changes::
22* FAQ 1 - Installation:: Installation of Gnus. 19* FAQ - Introduction:: About Gnus and this FAQ.
23* FAQ 2 - Startup / Group buffer:: Start up questions and the first 20* FAQ 1 - Installation FAQ:: Installation of Gnus.
24 buffer Gnus shows you. 21* FAQ 2 - Startup / Group buffer:: Start up questions and the
25* FAQ 3 - Getting messages:: Making Gnus read your mail and news. 22 first buffer Gnus shows you.
26* FAQ 4 - Reading messages:: How to efficiently read messages. 23* FAQ 3 - Getting Messages:: Making Gnus read your mail
27* FAQ 5 - Composing messages:: Composing mails or Usenet postings. 24 and news.
28* FAQ 6 - Old messages:: Importing, archiving, searching 25* FAQ 4 - Reading messages:: How to efficiently read
29 and deleting messages. 26 messages.
30* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while offline. 27* FAQ 5 - Composing messages:: Composing mails or Usenet
31* FAQ 8 - Getting help:: When this FAQ isn't enough. 28 postings.
32* FAQ 9 - Tuning Gnus:: How to make Gnus faster. 29* FAQ 6 - Old messages:: Importing, archiving,
33* FAQ - Glossary:: Terms used in the FAQ explained. 30 searching and deleting messages.
31* FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while
32 offline.
33* FAQ 8 - Getting help:: When this FAQ isn't enough.
34* FAQ 9 - Tuning Gnus:: How to make Gnus faster.
35* FAQ - Glossary:: Terms used in the FAQ
36 explained.
34@end menu 37@end menu
35 38
36
37@subheading Abstract 39@subheading Abstract
38 40
39 This is the new Gnus Frequently Asked Questions list. If you have a 41This is the new Gnus Frequently Asked Questions list.
40Web browser, the official hypertext version is at 42If you have a Web browser, the official hypertext version is at
41@uref{http://my.gnus.org/FAQ/}, the Docbook source is available from 43@uref{http://my.gnus.org/FAQ/},
42@uref{http://sourceforge.net/projects/gnus/}. 44the Docbook source is available from
43 45@uref{http://sourceforge.net/projects/gnus/, http://sourceforge.net}.
44 46
45 Please submit features and suggestions to the 47Please submit features and suggestions to the
46 @email{faq-discuss@@my.gnus.org,FAQ discussion list}. 48@email{faq-discuss@@my.gnus.org, FAQ discussion list}.
47 The list is protected against junk mail with 49The list is protected against junk mail with
48 @uref{http://smarden.org/qconfirm/index.html,qconfirm, qconfirm}. As 50@uref{http://smarden.org/qconfirm/index.html, qconfirm}. As
49 a subscriber, your submissions will automatically pass. You can 51a subscriber, your submissions will automatically pass. You can
50 also subscribe to the list by sending a blank email to 52also subscribe to the list by sending a blank email to
51 @email{faq-discuss-subscribe@@my.gnus.org} 53@email{faq-discuss-subscribe@@my.gnus.org, faq-discuss-subscribe@@my.gnus.org}
52 and 54and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss, browse
53 @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss,browse 55the archive}.
54 the archive, browse the archive}.
55
56@node FAQ - Introduction, FAQ 1 - Installation, Frequently Asked Questions, Frequently Asked Questions
57@comment node-name, next, previous, up
58@heading Introduction
59 56
60This is the Gnus Frequently Asked Questions list. 57@node FAQ - Changes
58@subheading Changes
61 59
62Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
63 as a part of Emacs. It's been around in some form for almost a decade
64 now, and has been distributed as a standard part of Emacs for much of
65 that time. Gnus 5 is the latest (and greatest) incarnation. The
66 original version was called GNUS, and was written by Masanobu UMEDA.
67 When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
68 decided to rewrite Gnus.
69
70 Its biggest strength is the fact that it is extremely
71 customizable. It is somewhat intimidating at first glance, but
72 most of the complexity can be ignored until you're ready to take
73 advantage of it. If you receive a reasonable volume of e-mail
74 (you're on various mailing lists), or you would like to read
75 high-volume mailing lists but cannot keep up with them, or read
76 high volume newsgroups or are just bored, then Gnus is what you
77 want.
78
79 This FAQ was maintained by Justin Sheehy until March 2002. He
80 would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
81 job with this FAQ before him. We would like to do the same - thanks,
82 Justin!
83
84 60
85 If you have a Web browser, the official hypertext version is at:@*
86 @uref{http://my.gnus.org/FAQ/}.
87 This version is much nicer than the unofficial hypertext
88 versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
89 State, and other FAQ archives. See the resources question below
90 if you want information on obtaining it in another format.
91
92 61
93 The information contained here was compiled with the assistance 62@itemize @bullet
94 of the Gnus development mailing list, and any errors or 63
95 misprints are the my.gnus.org team's fault, sorry. 64@item
65Updated FAQ to reflect release of Gnus 5.10 and start of
66No Gnus development.
67@end itemize
96 68
69@node FAQ - Introduction
70@subheading Introduction
71
72This is the Gnus Frequently Asked Questions list.
97 73
98@ifnottex 74Gnus is a Usenet Newsreader and Electronic Mail User Agent implemented
99@node FAQ 1 - Installation, FAQ 2 - Startup / Group buffer, FAQ - Introduction, Frequently Asked Questions 75as a part of Emacs. It's been around in some form for almost a decade
100@end ifnottex 76now, and has been distributed as a standard part of Emacs for much of
101@subsection Installation 77that time. Gnus 5 is the latest (and greatest) incarnation. The
78original version was called GNUS, and was written by Masanobu UMEDA.
79When autumn crept up in '94, Lars Magne Ingebrigtsen grew bored and
80decided to rewrite Gnus.
81
82Its biggest strength is the fact that it is extremely
83customizable. It is somewhat intimidating at first glance, but
84most of the complexity can be ignored until you're ready to take
85advantage of it. If you receive a reasonable volume of e-mail
86(you're on various mailing lists), or you would like to read
87high-volume mailing lists but cannot keep up with them, or read
88high volume newsgroups or are just bored, then Gnus is what you
89want.
90
91This FAQ was maintained by Justin Sheehy until March 2002. He
92would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
93job with this FAQ before him. We would like to do the same - thanks,
94Justin!
95
96If you have a Web browser, the official hypertext version is at:
97@uref{http://my.gnus.org/FAQ/}.
98This version is much nicer than the unofficial hypertext
99versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
100State, and other FAQ archives. See the resources question below
101if you want information on obtaining it in another format.
102
103The information contained here was compiled with the assistance
104of the Gnus development mailing list, and any errors or
105misprints are the my.gnus.org team's fault, sorry.
106
107@node FAQ 1 - Installation FAQ
108@subsection Installation FAQ
102 109
103@menu 110@menu
104* [1.1]:: What is the latest version of Gnus? 111* [1.1]:: What is the latest version of Gnus?
105* [1.2]:: What's new in 5.10? 112* [1.2]:: What's new in 5.10?
106* [1.3]:: Where and how to get Gnus? 113* [1.3]:: Where and how to get Gnus?
107* [1.4]:: What to do with the tarball now? 114* [1.4]:: What to do with the tarball now?
108* [1.5]:: Which version of Emacs do I need? 115* [1.5]:: I sometimes read references to No Gnus and Oort Gnus, what
109* [1.6]:: How do I run Gnus on both Emacs and XEmacs? 116 are those?
117* [1.6]:: Which version of Emacs do I need?
118* [1.7]:: How do I run Gnus on both Emacs and XEmacs?
110@end menu 119@end menu
111 120
112 121@node [1.1]
113@ifnottex 122@subsubheading Question 1.1
114@node [1.1], [1.2], FAQ 1 - Installation, FAQ 1 - Installation
115@end ifnottex
116@subsubheading Question 1.1:
117 123
118What is the latest version of Gnus? 124What is the latest version of Gnus?
119 125
120Answer: 126@subsubheading Answer
121 127
122 Jingle please: Gnus 5.10 is released, get it while it's 128Jingle please: Gnus 5.10 is released, get it while it's
123 hot! As well as the step in version number is rather 129hot! As well as the step in version number is rather
124 small, Gnus 5.10 has tons of new features which you 130small, Gnus 5.10 has tons of new features which you
125 shouldn't miss, however if you are cautious, you might 131shouldn't miss. The current release (5.10.6) should be at
126 prefer to stay with 5.8.8 respectively 5.9 (they are 132least as stable as the latest release of the 5.8 series.
127 basically the same) until some bugfix releases are out.
128
129@ifnottex
130@node [1.2], [1.3], [1.1], FAQ 1 - Installation
131@end ifnottex
132@subsubheading Question 1.2:
133 133
134What's new in 5.10? 134@node [1.2]
135@subsubheading Question 1.2
135 136
136Answer: 137What's new in 5.10?
137 138
138 First of all, you should have a look into the file 139@subsubheading Answer
139 GNUS-NEWS in the toplevel directory of the Gnus tarball,
140 there the most important changes are listed. Here's a
141 short list of the changes I find especially
142 important/interesting:
143
144 140
145 141First of all, you should have a look into the file
142GNUS-NEWS in the toplevel directory of the Gnus tarball,
143there the most important changes are listed. Here's a
144short list of the changes I find especially
145important/interesting:
146 146
147@itemize @bullet{} 147@itemize @bullet
148 148
149@item 149@item
150 Major rewrite of the Gnus agent, Gnus agent is now 150Major rewrite of the Gnus agent, Gnus agent is now
151 active by default. 151active by default.
152 152
153@item 153@item
154 Many new article washing functions for dealing with 154Many new article washing functions for dealing with
155 ugly formatted articles. 155ugly formatted articles.
156 156
157@item 157@item
158 Anti Spam features. 158Anti Spam features.
159 159
160@item 160@item
161 message-utils now included in Gnus. 161Message-utils now included in Gnus.
162 162
163@item 163@item
164 New format specifiers for summary lines, e.g. %B for 164New format specifiers for summary lines, e.g. %B for
165 a complex trn-style thread tree. 165a complex trn-style thread tree.
166
167@end itemize 166@end itemize
168 167
169@ifnottex 168@node [1.3]
170@node [1.3], [1.4], [1.2], FAQ 1 - Installation 169@subsubheading Question 1.3
171@end ifnottex
172@subsubheading Question 1.3:
173 170
174Where and how to get Gnus? 171Where and how to get Gnus?
175 172
176Answer: 173@subsubheading Answer
177 174
178 The latest released version of Gnus isn't included in 175The latest released version of Gnus isn't included in
179 Emacs 21 and until now it also isn't available through the 176Emacs 21, therefor you should get the Gnus tarball from
180 package system of XEmacs 21.4, therefor you should get the 177@uref{http://www.gnus.org/dist/gnus.tar.gz}
181 Gnus tarball from 178or via anonymous FTP from
182 @uref{http://www.gnus.org/dist/gnus.tar.gz} 179@uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
183 or via anonymous FTP from 180If you use XEmacs instead of Emacs you can use XEmacs'
184 @uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}. 181package system instead.
185
186@ifnottex
187@node [1.4], [1.5], [1.3], FAQ 1 - Installation
188@end ifnottex
189@subsubheading Question 1.4:
190 182
191 What to do with the tarball now? 183@node [1.4]
192 184@subsubheading Question 1.4
193 185
194Answer: 186What to do with the tarball now?
195 187
196 Untar it via @samp{tar xvzf gnus.tar.gz} and do the common 188@subsubheading Answer
197 @samp{./configure; make; make install} circle. 189
198 (under MS-Windows either get the Cygwin environment from 190Untar it via @samp{tar xvzf gnus.tar.gz} and do the common
199 @uref{http://www.cygwin.com} 191@samp{./configure; make; make install} circle.
200 which allows you to do what's described above or unpack the 192(under MS-Windows either get the Cygwin environment from
201 tarball with some packer (e.g. Winace from 193@uref{http://www.cygwin.com}
202 @uref{http://www.winace.com}) 194which allows you to do what's described above or unpack the
203 and use the batch-file make.bat included in the tarball to install 195tarball with some packer (e.g. Winace from
204 Gnus. If you don't want to (or aren't allowed to) install Gnus 196@uref{http://www.winace.com})
205 system-wide, you can install it in your home directory and add the 197and use the batch-file make.bat included in the tarball to install
206 following lines to your ~/.xemacs/init.el or ~/.emacs: 198Gnus.) If you don't want to (or aren't allowed to) install Gnus
207 199system-wide, you can install it in your home directory and add the
200following lines to your ~/.xemacs/init.el or ~/.emacs:
208 201
209@example 202@example
210(add-to-list 'load-path "/path/to/gnus/lisp") 203(add-to-list 'load-path "/path/to/gnus/lisp")
@@ -212,436 +205,395 @@ Answer:
212 (add-to-list 'Info-directory-list "/path/to/gnus/texi/") 205 (add-to-list 'Info-directory-list "/path/to/gnus/texi/")
213 (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/")) 206 (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/"))
214@end example 207@end example
215
216@noindent 208@noindent
217 Make sure that you don't have any Gnus related stuff 209
218 before this line, on MS Windows use something like 210Make sure that you don't have any Gnus related stuff
219 "C:/path/to/lisp" (yes, "/"). 211before this line, on MS Windows use something like
220 212"C:/path/to/lisp" (yes, "/").
221@ifnottex 213
222@node [1.5], [1.6], [1.4], FAQ 1 - Installation 214@node [1.5]
223@end ifnottex 215@subsubheading Question 1.5
224@subsubheading Question 1.5: 216
217I sometimes read references to No Gnus and Oort Gnus,
218what are those?
219
220@subsubheading Answer
221
222Oort Gnus was the name of the development version of
223Gnus, which became Gnus 5.10 in autumn 2003. No Gnus is
224the name of the current development version which will
225once become Gnus 5.12 or Gnus 6. (If you're wondering why
226not 5.11, the odd version numbers are normally used for
227the Gnus versions bundled with Emacs)
228
229@node [1.6]
230@subsubheading Question 1.6
225 231
226Which version of Emacs do I need? 232Which version of Emacs do I need?
227 233
228Answer: 234@subsubheading Answer
229 235
230 Gnus 5.10 requires an Emacs version that is greater 236Gnus 5.10 requires an Emacs version that is greater
231 than or equal to Emacs 20.7 or XEmacs 21.1. 237than or equal to Emacs 20.7 or XEmacs 21.1. The
232 238development versions of Gnus (aka No Gnus) require Emacs
233@ifnottex 23921 or XEmacs 21.4.
234@node [1.6], , [1.5], FAQ 1 - Installation 240
235@end ifnottex 241@node [1.7]
236@subsubheading Question 1.6: 242@subsubheading Question 1.7
237 243
238How do I run Gnus on both Emacs and XEmacs? 244How do I run Gnus on both Emacs and XEmacs?
239 245
240Answer: 246@subsubheading Answer
241 247
242 You can't use the same copy of Gnus in both as the Lisp 248You can't use the same copy of Gnus in both as the Lisp
243 files are byte-compiled to a format which is different 249files are byte-compiled to a format which is different
244 depending on which Emacs did the compilation. Get one copy 250depending on which Emacs did the compilation. Get one copy
245 of Gnus for Emacs and one for XEmacs. 251of Gnus for Emacs and one for XEmacs.
246 252
247@ifnottex 253@node FAQ 2 - Startup / Group buffer
248@node FAQ 2 - Startup / Group buffer, FAQ 3 - Getting messages, FAQ 1 - Installation, Frequently Asked Questions
249@end ifnottex
250@subsection Startup / Group buffer 254@subsection Startup / Group buffer
251 255
252@menu 256@menu
253* [2.1]:: Every time I start Gnus I get a message 257* [2.1]:: Every time I start Gnus I get a message "Gnus auto-save
254 "Gnus auto-save file exists. Do you want to read it?", 258 file exists. Do you want to read it?", what does this mean and
255 what does this mean and how to prevent it? 259 how to prevent it?
256* [2.2]:: Gnus doesn't remember which groups I'm subscribed to, what's this? 260* [2.2]:: Gnus doesn't remember which groups I'm subscribed to,
257* [2.3]:: How to change the format of the lines in Group buffer? 261 what's this?
258* [2.4]:: My group buffer becomes a bit crowded, is there a way to sort my 262* [2.3]:: How to change the format of the lines in Group buffer?
259 groups into categories so I can easier browse through them? 263* [2.4]:: My group buffer becomes a bit crowded, is there a way to
260* [2.5]:: How to manually sort the groups in Group buffer? How to sort the 264 sort my groups into categories so I can easier browse through
261 groups in a topic? 265 them?
266* [2.5]:: How to manually sort the groups in Group buffer? How to
267 sort the groups in a topic?
262@end menu 268@end menu
263 269
264@ifnottex 270@node [2.1]
265@node [2.1], [2.2], FAQ 2 - Startup / Group buffer, FAQ 2 - Startup / Group buffer 271@subsubheading Question 2.1
266@end ifnottex
267@subsubheading Question 2.1:
268 272
269 Every time I start Gnus I get a message "Gnus auto-save 273Every time I start Gnus I get a message "Gnus auto-save
270 file exists. Do you want to read it?", what does this mean 274file exists. Do you want to read it?", what does this mean
271 and how to prevent it? 275and how to prevent it?
272
273 276
274Answer: 277@subsubheading Answer
275 278
276 This message means that the last time you used Gnus, it 279This message means that the last time you used Gnus, it
277 wasn't properly exited and therefor couldn't write its 280wasn't properly exited and therefor couldn't write its
278 informations to disk (e.g. which messages you read), you 281informations to disk (e.g. which messages you read), you
279 are now asked if you want to restore those informations 282are now asked if you want to restore those informations
280 from the auto-save file. 283from the auto-save file.
281
282 284
283 To prevent this message make sure you exit Gnus 285To prevent this message make sure you exit Gnus
284 via @samp{q} in group buffer instead of 286via @samp{q} in group buffer instead of
285 just killing Emacs. 287just killing Emacs.
286
287@ifnottex
288@node [2.2], [2.3], [2.1], FAQ 2 - Startup / Group buffer
289@end ifnottex
290@subsubheading Question: 2.2
291 288
292 Gnus doesn't remember which groups I'm subscribed to, 289@node [2.2]
293 what's this? 290@subsubheading Question 2.2
294
295 291
296Answer: 292Gnus doesn't remember which groups I'm subscribed to,
293what's this?
297 294
298 You get the message described in the q/a pair above while 295@subsubheading Answer
299 starting Gnus, right? It's an other symptom for the same
300 problem, so read the answer above.
301
302@ifnottex
303@node [2.3], [2.4], [2.2], FAQ 2 - Startup / Group buffer
304@end ifnottex
305@subsubheading Question 2.3:
306 296
307 How to change the format of the lines in Group buffer? 297You get the message described in the q/a pair above while
308 298starting Gnus, right? It's an other symptom for the same
299problem, so read the answer above.
309 300
310Answer: 301@node [2.3]
302@subsubheading Question 2.3
311 303
312 You've got to tweak the value of the variable 304How to change the format of the lines in Group buffer?
313 gnus-group-line-format. See the manual node "Group Line
314 Specification" for information on how to do this. An
315 example for this (guess from whose .gnus :-)):
316
317 305
318@example 306@subsubheading Answer
319 307
308You've got to tweak the value of the variable
309gnus-group-line-format. See the manual node "Group Line
310Specification" for information on how to do this. An
311example for this (guess from whose .gnus :-)):
312
313@example
320(setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n") 314(setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n")
321
322@end example 315@end example
323 316@noindent
324@ifnottex
325@node [2.4], [2.5], [2.3], FAQ 2 - Startup / Group buffer
326@end ifnottex
327@subsubheading Question 2.4:
328
329 My group buffer becomes a bit crowded, is there a way to
330 sort my groups into categories so I can easier browse
331 through them?
332
333 317
334Answer: 318@node [2.4]
319@subsubheading Question 2.4
335 320
336 Gnus offers the topic mode, it allows you to sort your 321My group buffer becomes a bit crowded, is there a way to
337 groups in, well, topics, e.g. all groups dealing with 322sort my groups into categories so I can easier browse
338 Linux under the topic linux, all dealing with music under 323through them?
339 the topic music and all dealing with scottish music under
340 the topic scottish which is a subtopic of music.
341
342 324
343 To enter topic mode, just hit t while in Group buffer. Now 325@subsubheading Answer
344 you can use @samp{T n} to create a topic
345 at point and @samp{T m} to move a group to
346 a specific topic. For more commands see the manual or the
347 menu. You might want to include the %P specifier at the
348 beginning of your gnus-group-line-format variable to have
349 the groups nicely indented.
350
351@ifnottex
352@node [2.5], , [2.4], FAQ 2 - Startup / Group buffer
353@end ifnottex
354@subsubheading Question 2.5:
355 326
356 How to manually sort the groups in Group buffer? How to 327Gnus offers the topic mode, it allows you to sort your
357 sort the groups in a topic? 328groups in, well, topics, e.g. all groups dealing with
358 329Linux under the topic linux, all dealing with music under
330the topic music and all dealing with scottish music under
331the topic scottish which is a subtopic of music.
359 332
360Answer: 333To enter topic mode, just hit t while in Group buffer. Now
334you can use @samp{T n} to create a topic
335at point and @samp{T m} to move a group to
336a specific topic. For more commands see the manual or the
337menu. You might want to include the %P specifier at the
338beginning of your gnus-group-line-format variable to have
339the groups nicely indented.
361 340
362 Move point over the group you want to move and 341@node [2.5]
363 hit @samp{C-k}, now move point to the 342@subsubheading Question 2.5
364 place where you want the group to be and 343
365 hit @samp{C-y}. 344How to manually sort the groups in Group buffer? How to
366 345sort the groups in a topic?
367@ifnottex 346
368@node FAQ 3 - Getting messages, FAQ 4 - Reading messages, FAQ 2 - Startup / Group buffer, Frequently Asked Questions 347@subsubheading Answer
369@end ifnottex 348
370@subsection Getting messages 349Move point over the group you want to move and
350hit @samp{C-k}, now move point to the
351place where you want the group to be and
352hit @samp{C-y}.
353
354@node FAQ 3 - Getting Messages
355@subsection Getting Messages
371 356
372@menu 357@menu
373* [3.1]:: I just installed Gnus, started it via M-x gnus but it only says 358* [3.1]:: I just installed Gnus, started it via @samp{M-x gnus}
374 "nntp (news) open error", what to do? 359 but it only says "nntp (news) open error", what to do?
375* [3.2]:: I'm working under Windows and have no idea what ~/.gnus means. 360* [3.2]:: I'm working under Windows and have no idea what ~/.gnus.el
376* [3.3]:: My news server requires authentication, how to store user name 361 means.
377 and password on disk? 362* [3.3]:: My news server requires authentication, how to store user
378* [3.4]:: Gnus seems to start up OK, but I can't find out how to 363 name and password on disk?
379 subscribe to a group. 364* [3.4]:: Gnus seems to start up OK, but I can't find out how to
380* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed to 365 subscribe to a group.
381 post on this server as well as I am, what's that? 366* [3.5]:: Gnus doesn't show all groups / Gnus says I'm not allowed
382* [3.6]:: I want Gnus to fetch news from several servers, is this possible? 367 to post on this server as well as I am, what's that?
383* [3.7]:: And how about local spool files? 368* [3.6]:: I want Gnus to fetch news from several servers, is this
384* [3.8]:: OK, reading news works now, but I want to be able to read my mail 369 possible?
385 with Gnus, too. How to do it? 370* [3.7]:: And how about local spool files?
386* [3.9]:: And what about IMAP? 371* [3.8]:: OK, reading news works now, but I want to be able to read
387* [3.10]:: At the office we use one of those MS Exchange servers, 372 my mail with Gnus, too. How to do it?
388 can I use Gnus to read my mail from it? 373* [3.9]:: And what about IMAP?
389* [3.11]:: Can I tell Gnus not to delete the mails on the server 374* [3.10]:: At the office we use one of those MS Exchange servers, can
390 it retrieves via POP3? 375 I use Gnus to read my mail from it?
376* [3.11]:: Can I tell Gnus not to delete the mails on the server it
377 retrieves via POP3?
391@end menu 378@end menu
392 379
393@ifnottex 380@node [3.1]
394@node [3.1], [3.2], FAQ 3 - Getting messages, FAQ 3 - Getting messages 381@subsubheading Question 3.1
395@end ifnottex
396@subsubheading Question 3.1:
397 382
398 I just installed Gnus, started it via 383I just installed Gnus, started it via
399 @samp{M-x gnus} 384@samp{M-x gnus}
400 but it only says "nntp (news) open error", what to do? 385but it only says "nntp (news) open error", what to do?
401
402 386
403Answer: 387@subsubheading Answer
404 388
405 You've got to tell Gnus where to fetch the news from. Read 389You've got to tell Gnus where to fetch the news from. Read
406 the documentation for information on how to do this. As a 390the documentation for information on how to do this. As a
407 first start, put those lines in ~/.gnus: 391first start, put those lines in ~/.gnus.el:
408
409 392
410@example 393@example
411(setq gnus-select-method '(nntp "news.yourprovider.net")) 394(setq gnus-select-method '(nntp "news.yourprovider.net"))
412(setq user-mail-address "you@@yourprovider.net") 395(setq user-mail-address "you@@yourprovider.net")
413(setq user-full-name "Your Name") 396(setq user-full-name "Your Name")
414@end example 397@end example
415 398@noindent
416@ifnottex
417@node [3.2], [3.3], [3.1], FAQ 3 - Getting messages
418@end ifnottex
419@subsubheading Question 3.2:
420
421 I'm working under Windows and have no idea what ~/.gnus means.
422
423 399
424Answer: 400@node [3.2]
425 401@subsubheading Question 3.2
426 The ~/ means the home directory where Gnus and Emacs look for the 402
427configuration files. However, you don't really need to know what this 403I'm working under Windows and have no idea what ~/.gnus.el means.
428means, it suffices that Emacs knows what it means :-) You can type 404
429@samp{C-x C-f ~/.gnus RET } (yes, with the forward slash, even on 405@subsubheading Answer
430Windows), and Emacs will open the right file for you. (It will most 406
431likely be new, and thus empty.) However, I'd discourage you from 407The ~/ means the home directory where Gnus and Emacs look
432doing so, since the directory Emacs chooses will most certainly not be 408for the configuration files. However, you don't really
433what you want, so let's do it the correct way. The first thing you've 409need to know what this means, it suffices that Emacs knows
434got to do is to create a suitable directory (no blanks in directory 410what it means :-) You can type
435name please) e.g. @file{c:\myhome}. Then you must set the environment 411@samp{C-x C-f ~/.gnus.el RET }
436variable HOME to this directory. To do this under Win9x or Me include 412(yes, with the forward slash, even on Windows), and
437the line 413Emacs will open the right file for you. (It will most
438 414likely be new, and thus empty.)
415However, I'd discourage you from doing so, since the
416directory Emacs chooses will most certainly not be what
417you want, so let's do it the correct way.
418The first thing you've got to do is to
419create a suitable directory (no blanks in directory name
420please) e.g. c:\myhome. Then you must set the environment
421variable HOME to this directory. To do this under Win9x
422or Me include the line
439 423
440@example 424@example
441
442SET HOME=C:\myhome 425SET HOME=C:\myhome
443
444@end example 426@end example
445
446@noindent 427@noindent
447 in your autoexec.bat and reboot. Under NT, 2000 and XP,
448 hit Winkey+Pause/Break to enter system options (if it
449 doesn't work, go to Control Panel -> System). There you'll
450 find the possibility to set environment variables, create
451 a new one with name HOME and value @file{c:\myhome}, a reboot is
452 not necessary.
453
454 428
455 Now to create ~/.gnus, say 429in your autoexec.bat and reboot. Under NT, 2000 and XP,
456 @samp{C-x C-f ~/.gnus RET C-x C-s}. 430hit Winkey+Pause/Break to enter system options (if it
457 in Emacs. 431doesn't work, go to Control Panel -> System). There you'll
458 432find the possibility to set environment variables, create
459@ifnottex 433a new one with name HOME and value C:\myhome, a reboot is
460@node [3.3], [3.4], [3.2], FAQ 3 - Getting messages 434not necessary.
461@end ifnottex
462@subsubheading Question 3.3:
463 435
464 My news server requires authentication, how to store 436Now to create ~/.gnus.el, say
465 user name and password on disk? 437@samp{C-x C-f ~/.gnus.el RET C-x C-s}.
466 438in Emacs.
467 439
468Answer: 440@node [3.3]
441@subsubheading Question 3.3
469 442
470 Create a file ~/.authinfo which includes for each server a line like this 443My news server requires authentication, how to store
471 444user name and password on disk?
445
446@subsubheading Answer
447
448Create a file ~/.authinfo which includes for each server a line like this
472 449
473@example 450@example
474machine news.yourprovider.net login YourUserName password YourPassword 451machine news.yourprovider.net login YourUserName password YourPassword
475@end example 452@end example
476
477@noindent 453@noindent
478. 454.
479 Make sure that the file isn't readable to others if you 455Make sure that the file isn't readable to others if you
480 work on a OS which is capable of doing so. (Under Unix 456work on a OS which is capable of doing so. (Under Unix
481 say 457say
482
483@example 458@example
484chmod 600 ~/.authinfo 459chmod 600 ~/.authinfo
485@end example 460@end example
486
487@noindent 461@noindent
488 in a shell.)
489
490@ifnottex
491@node [3.4], [3.5], [3.3], FAQ 3 - Getting messages
492@end ifnottex
493@subsubheading Question 3.4:
494 462
495 Gnus seems to start up OK, but I can't find out how to 463in a shell.)
496 subscribe to a group.
497
498 464
499Answer: 465@node [3.4]
466@subsubheading Question 3.4
500 467
501 If you know the name of the group say @samp{U 468Gnus seems to start up OK, but I can't find out how to
502 name.of.group RET} in group buffer (use the 469subscribe to a group.
503 tab-completion Luke). Otherwise hit ^ in group buffer,
504 this brings you to the server buffer. Now place point (the
505 cursor) over the server which carries the group you want,
506 hit @samp{RET}, move point to the group
507 you want to subscribe to and say @samp{u}
508 to subscribe to it.
509
510@ifnottex
511@node [3.5], [3.6], [3.4], FAQ 3 - Getting messages
512@end ifnottex
513@subsubheading Question 3.5:
514 470
515 Gnus doesn't show all groups / Gnus says I'm not allowed to 471@subsubheading Answer
516 post on this server as well as I am, what's that?
517
518 472
519Answer: 473If you know the name of the group say @samp{U
474name.of.group RET} in group buffer (use the
475tab-completion Luke). Otherwise hit ^ in group buffer,
476this brings you to the server buffer. Now place point (the
477cursor) over the server which carries the group you want,
478hit @samp{RET}, move point to the group
479you want to subscribe to and say @samp{u}
480to subscribe to it.
520 481
521 Some providers allow restricted anonymous access and full 482@node [3.5]
522 access only after authorization. To make Gnus send authinfo 483@subsubheading Question 3.5
523 to those servers append 484
524 485Gnus doesn't show all groups / Gnus says I'm not allowed to
486post on this server as well as I am, what's that?
487
488@subsubheading Answer
489
490Some providers allow restricted anonymous access and full
491access only after authorization. To make Gnus send authinfo
492to those servers append
525 493
526@example 494@example
527force yes 495force yes
528@end example 496@end example
529
530
531@noindent 497@noindent
532 to the line for those servers in ~/.authinfo.
533 498
534@ifnottex 499to the line for those servers in ~/.authinfo.
535@node [3.6], [3.7], [3.5], FAQ 3 - Getting messages
536@end ifnottex
537@subsubheading Question 3.6:
538 500
539 I want Gnus to fetch news from several servers, is this possible? 501@node [3.6]
540 502@subsubheading Question 3.6
541 503
542Answer: 504I want Gnus to fetch news from several servers, is this possible?
543 505
544 Of course. You can specify more sources for articles in the 506@subsubheading Answer
545 variable gnus-secondary-select-methods. Add something like 507
546 this in ~/.gnus: 508Of course. You can specify more sources for articles in the
547 509variable gnus-secondary-select-methods. Add something like
510this in ~/.gnus.el:
548 511
549@example 512@example
550(add-to-list 'gnus-secondary-select-methods 513(add-to-list 'gnus-secondary-select-methods
551 '(nntp "news.yourSecondProvider.net")) 514 '(nntp "news.yourSecondProvider.net"))
552(add-to-list 'gnus-secondary-select-methods 515(add-to-list 'gnus-secondary-select-methods
553 '(nntp "news.yourThirdProvider.net")) 516 '(nntp "news.yourThirdProvider.net"))
554@end example 517@end example
555 518@noindent
556@ifnottex
557@node [3.7], [3.8], [3.6], FAQ 3 - Getting messages
558@end ifnottex
559@subsubheading Question 3.7:
560 519
561 And how about local spool files? 520@node [3.7]
562 521@subsubheading Question 3.7
563 522
564Answer: 523And how about local spool files?
565 524
566 No problem, this is just one more select method called 525@subsubheading Answer
567 nnspool, so you want this: 526
568 527No problem, this is just one more select method called
528nnspool, so you want this:
569 529
570@example 530@example
571(add-to-list 'gnus-secondary-select-methods '(nnspool "")) 531(add-to-list 'gnus-secondary-select-methods '(nnspool ""))
572@end example 532@end example
573
574@noindent 533@noindent
575 Or this if you don't want an NNTP Server as primary news source: 534
576 535Or this if you don't want an NNTP Server as primary news source:
577 536
578@example 537@example
579(setq gnus-select-method '(nnspool "")) 538(setq gnus-select-method '(nnspool ""))
580@end example 539@end example
581
582@noindent 540@noindent
583 Gnus will look for the spool file in /usr/spool/news, if you 541
584 want something different, change the line above to something like this: 542Gnus will look for the spool file in /usr/spool/news, if you
585 543want something different, change the line above to something like this:
586 544
587@example 545@example
588(add-to-list 'gnus-secondary-select-methods 546(add-to-list 'gnus-secondary-select-methods
589 '(nnspool "" (nnspool-directory "/usr/local/myspoolddir"))) 547 '(nnspool ""
548 (nnspool-directory "/usr/local/myspoolddir")))
590@end example 549@end example
591
592@noindent 550@noindent
593 This sets the spool directory for this server only.
594 You might have to specify more stuff like the program used
595 to post articles, see the Gnus manual on how to do this.
596
597@ifnottex
598@node [3.8], [3.9], [3.7], FAQ 3 - Getting messages
599@end ifnottex
600@subsubheading Question 3.8:
601 551
602 OK, reading news works now, but I want to be able to read my mail 552This sets the spool directory for this server only.
603 with Gnus, too. How to do it? 553You might have to specify more stuff like the program used
604 554to post articles, see the Gnus manual on how to do this.
605 555
606Answer: 556@node [3.8]
607 557@subsubheading Question 3.8
608 That's a bit harder since there are many possible sources 558
609 for mail, many possible ways for storing mail and many 559OK, reading news works now, but I want to be able to read my mail
610 different ways for sending mail. The most common cases are 560with Gnus, too. How to do it?
611 these: 1: You want to read your mail from a pop3 server and 561
612 send them directly to a SMTP Server 2: Some program like 562@subsubheading Answer
613 fetchmail retrieves your mail and stores it on disk from 563
614 where Gnus shall read it. Outgoing mail is sent by 564That's a bit harder since there are many possible sources
615 Sendmail, Postfix or some other MTA. Sometimes, you even 565for mail, many possible ways for storing mail and many
616 need a combination of the above cases. 566different ways for sending mail. The most common cases are
617 567these: 1: You want to read your mail from a pop3 server and
618 568send them directly to a SMTP Server 2: Some program like
619 However, the first thing to do is to tell Gnus in which way 569fetchmail retrieves your mail and stores it on disk from
620 it should store the mail, in Gnus terminology which back end 570where Gnus shall read it. Outgoing mail is sent by
621 to use. Gnus supports many different back ends, the most 571Sendmail, Postfix or some other MTA. Sometimes, you even
622 commonly used one is nnml. It stores every mail in one file 572need a combination of the above cases.
623 and is therefor quite fast. However you might prefer a one 573
624 file per group approach if your file system has problems with 574However, the first thing to do is to tell Gnus in which way
625 many small files, the nnfolder back end is then probably the 575it should store the mail, in Gnus terminology which back end
626 choice for you. To use nnml add the following to ~/.gnus: 576to use. Gnus supports many different back ends, the most
627 577commonly used one is nnml. It stores every mail in one file
578and is therefor quite fast. However you might prefer a one
579file per group approach if your file system has problems with
580many small files, the nnfolder back end is then probably the
581choice for you. To use nnml add the following to ~/.gnus.el:
628 582
629@example 583@example
630(add-to-list 'gnus-secondary-select-methods '(nnml "")) 584(add-to-list 'gnus-secondary-select-methods '(nnml ""))
631@end example 585@end example
632
633@noindent 586@noindent
634 As you might have guessed, if you want nnfolder, it's 587
635 588As you might have guessed, if you want nnfolder, it's
636 589
637@example 590@example
638(add-to-list 'gnus-secondary-select-methods '(nnfolder "")) 591(add-to-list 'gnus-secondary-select-methods '(nnfolder ""))
639@end example 592@end example
640 593@noindent
641 594
642 Now we need to tell Gnus, where to get it's mail from. If 595Now we need to tell Gnus, where to get it's mail from. If
643 it's a POP3 server, then you need something like this: 596it's a POP3 server, then you need something like this:
644
645 597
646@example 598@example
647(eval-after-load "mail-source" 599(eval-after-load "mail-source"
@@ -649,75 +601,68 @@ Answer:
649 :user "yourUserName" 601 :user "yourUserName"
650 :password "yourPassword"))) 602 :password "yourPassword")))
651@end example 603@end example
652
653@noindent 604@noindent
654 Make sure ~/.gnus isn't readable to others if you store 605
655 your password there. If you want to read your mail from a 606Make sure ~/.gnus.el isn't readable to others if you store
656 traditional spool file on your local machine, it's 607your password there. If you want to read your mail from a
657 608traditional spool file on your local machine, it's
658 609
659@example 610@example
660(eval-after-load "mail-source" 611(eval-after-load "mail-source"
661 '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))) 612 '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))
662@end example 613@end example
663
664@noindent 614@noindent
665 If it's a Maildir, with one file per message as used by 615
666 postfix, Qmail and (optionally) fetchmail it's 616If it's a Maildir, with one file per message as used by
667 617postfix, Qmail and (optionally) fetchmail it's
668 618
669@example 619@example
670(eval-after-load "mail-source" 620(eval-after-load "mail-source"
671 '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/" 621 '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"
672 :subdirs ("cur" "new"))) 622 :subdirs ("cur" "new")))
673@end example 623@end example
674
675@noindent 624@noindent
676 And finally if you want to read your mail from several files 625
677 in one directory, for example because procmail already split your 626And finally if you want to read your mail from several files
678 mail, it's 627in one directory, for example because procmail already split your
679 628mail, it's
680 629
681@example 630@example
682(eval-after-load "mail-source" 631(eval-after-load "mail-source"
683 '(add-to-list 'mail-sources '(directory :path "/path/to/procmail-dir/" 632 '(add-to-list 'mail-sources
684 :suffix ".prcml")) 633 '(directory :path "/path/to/procmail-dir/"
634 :suffix ".prcml")))
685@end example 635@end example
686
687@noindent 636@noindent
688 Where :suffix ".prcml" tells Gnus only to use files with the
689 suffix .prcml.
690
691 637
692 OK, now you only need to tell Gnus how to send mail. If you 638Where :suffix ".prcml" tells Gnus only to use files with the
693 want to send mail via sendmail (or whichever MTA is playing 639suffix .prcml.
694 the role of sendmail on your system), you don't need to do 640
695 anything. However, if you want to send your mail to an 641OK, now you only need to tell Gnus how to send mail. If you
696 SMTP Server you need the following in your ~/.gnus 642want to send mail via sendmail (or whichever MTA is playing
697 643the role of sendmail on your system), you don't need to do
644anything. However, if you want to send your mail to an
645SMTP Server you need the following in your ~/.gnus.el
698 646
699@example 647@example
700(setq send-mail-function 'smtpmail-send-it) 648(setq send-mail-function 'smtpmail-send-it)
701(setq message-send-mail-function 'smtpmail-send-it) 649(setq message-send-mail-function 'smtpmail-send-it)
702(setq smtpmail-default-smtp-server "smtp.yourProvider.net") 650(setq smtpmail-default-smtp-server "smtp.yourProvider.net")
703@end example 651@end example
704 652@noindent
705@ifnottex
706@node [3.9], [3.10], [3.8], FAQ 3 - Getting messages
707@end ifnottex
708@subsubheading Question 3.9:
709 653
710 And what about IMAP? 654@node [3.9]
711 655@subsubheading Question 3.9
712 656
713Answer: 657And what about IMAP?
714 658
715 There are two ways of using IMAP with Gnus. The first one is 659@subsubheading Answer
716 to use IMAP like POP3, that means Gnus fetches the mail from 660
717 the IMAP server and stores it on disk. If you want to do 661There are two ways of using IMAP with Gnus. The first one is
718 this (you don't really want to do this) add the following to 662to use IMAP like POP3, that means Gnus fetches the mail from
719 ~/.gnus 663the IMAP server and stores it on disk. If you want to do
720 664this (you don't really want to do this) add the following to
665~/.gnus.el
721 666
722@example 667@example
723(add-to-list 'mail-sources '(imap :server "mail.mycorp.com" 668(add-to-list 'mail-sources '(imap :server "mail.mycorp.com"
@@ -728,249 +673,215 @@ Answer:
728 :mailbox "INBOX" 673 :mailbox "INBOX"
729 :fetchflag "\\Seen")) 674 :fetchflag "\\Seen"))
730@end example 675@end example
731
732@noindent 676@noindent
733 You might have to tweak the values for stream and/or
734 authentification, see the Gnus manual node "Mail Source
735 Specifiers" for possible values.
736
737 677
738 If you want to use IMAP the way it's intended, you've got to 678You might have to tweak the values for stream and/or
739 follow a different approach. You've got to add the nnimap 679authentification, see the Gnus manual node "Mail Source
740 back end to your select method and give the information 680Specifiers" for possible values.
741 about the server there. 681
742 682If you want to use IMAP the way it's intended, you've got to
683follow a different approach. You've got to add the nnimap
684back end to your select method and give the information
685about the server there.
743 686
744@example 687@example
745(add-to-list 688(add-to-list 'gnus-secondary-select-methods
746 'gnus-secondary-select-methods 689 '(nnimap "Give the baby a name"
747 '(nnimap "Give the baby a name" 690 (nnimap-address "imap.yourProvider.net")
748 (nnimap-address "imap.yourProvider.net") 691 (nnimap-port 143)
749 (nnimap-port 143) 692 (nnimap-list-pattern "archive.*")))
750 (nnimap-list-pattern "archive.*")))
751@end example 693@end example
752
753@noindent 694@noindent
754 Again, you might have to specify how to authenticate to the
755 server if Gnus can't guess the correct way, see the Manual
756 Node "IMAP" for detailed information.
757
758@ifnottex
759@node [3.10], [3.11], [3.9], FAQ 3 - Getting messages
760@end ifnottex
761@subsubheading Question 3.10:
762
763 At the office we use one of those MS Exchange servers, can I use
764 Gnus to read my mail from it?
765
766
767Answer:
768 695
769 Offer your administrator a pair of new running shoes for 696Again, you might have to specify how to authenticate to the
770 activating IMAP on the server and follow the instructions 697server if Gnus can't guess the correct way, see the Manual
771 above. 698Node "IMAP" for detailed information.
772 699
773@ifnottex 700@node [3.10]
774@node [3.11], , [3.10], FAQ 3 - Getting messages 701@subsubheading Question 3.10
775@end ifnottex 702
776@subsubheading Question 3.11: 703At the office we use one of those MS Exchange servers, can I use
777 704Gnus to read my mail from it?
778 Can I tell Gnus not to delete the mails on the server it 705
779 retrieves via POP3? 706@subsubheading Answer
780 707
781 708Offer your administrator a pair of new running shoes for
782Answer: 709activating IMAP on the server and follow the instructions
783 710above.
784 First of all, that's not the way POP3 is intended to work, 711
785 if you have the possibility, you should use the IMAP 712@node [3.11]
786 Protocol if you want your messages to stay on the 713@subsubheading Question 3.11
787 server. Nevertheless there might be situations where you 714
788 need the feature, but sadly Gnus itself has no predefined 715Can I tell Gnus not to delete the mails on the server it
789 functionality to do so. 716retrieves via POP3?
790 717
791 718@subsubheading Answer
792 However this is Gnus county so there are possibilities to 719
793 achieve what you want. The easiest way is to get an external 720First of all, that's not the way POP3 is intended to work,
794 program which retrieves copies of the mail and stores them 721if you have the possibility, you should use the IMAP
795 on disk, so Gnus can read it from there. On Unix systems you 722Protocol if you want your messages to stay on the
796 could use e.g. fetchmail for this, on MS Windows you can use 723server. Nevertheless there might be situations where you
797 Hamster, an excellent local news and mail server. 724need the feature, but sadly Gnus itself has no predefined
798 725functionality to do so.
799 726
800 The other solution would be, to replace the method Gnus 727However this is Gnus county so there are possibilities to
801 uses to get mail from POP3 servers by one which is capable 728achieve what you want. The easiest way is to get an external
802 of leaving the mail on the server. If you use XEmacs, get 729program which retrieves copies of the mail and stores them
803 the package mail-lib, it includes an enhanced pop3.el, 730on disk, so Gnus can read it from there. On Unix systems you
804 look in the file, there's documentation on how to tell 731could use e.g. fetchmail for this, on MS Windows you can use
805 Gnus to use it and not to delete the retrieved mail. For 732Hamster, an excellent local news and mail server.
806 GNU Emacs look for the file epop3.el which can do the same 733
807 (If you know the home of this file, please send me an 734The other solution would be, to replace the method Gnus
808 e-mail). You can also tell Gnus to use an external program 735uses to get mail from POP3 servers by one which is capable
809 (e.g. fetchmail) to fetch your mail, see the info node 736of leaving the mail on the server. If you use XEmacs, get
810 "Mail Source Specifiers" in the Gnus manual on how to do 737the package mail-lib, it includes an enhanced pop3.el,
811 it. 738look in the file, there's documentation on how to tell
812 739Gnus to use it and not to delete the retrieved mail. For
813 740GNU Emacs look for the file epop3.el which can do the same
814@ifnottex 741(If you know the home of this file, please send me an
815@node FAQ 4 - Reading messages, FAQ 5 - Composing messages, FAQ 3 - Getting messages, Frequently Asked Questions 742e-mail). You can also tell Gnus to use an external program
816@end ifnottex 743(e.g. fetchmail) to fetch your mail, see the info node
744"Mail Source Specifiers" in the Gnus manual on how to do
745it.
746
747@node FAQ 4 - Reading messages
817@subsection Reading messages 748@subsection Reading messages
818 749
819@menu 750@menu
820* [4.1]:: When I enter a group, all read messages are gone. 751* [4.1]:: When I enter a group, all read messages are gone. How to
821 How to view them again? 752 view them again?
822* [4.2]:: How to tell Gnus to show an important message every time 753* [4.2]:: How to tell Gnus to show an important message every time I
823 I enter a group, even when it's read? 754 enter a group, even when it's read?
824* [4.3]:: How to view the headers of a message? 755* [4.3]:: How to view the headers of a message?
825* [4.4]:: How to view the raw unformatted message? 756* [4.4]:: How to view the raw unformatted message?
826* [4.5]:: How can I change the headers Gnus displays by default at the 757* [4.5]:: How can I change the headers Gnus displays by default at
827 top of the article buffer? 758 the top of the article buffer?
828* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the 759* [4.6]:: I'd like Gnus NOT to render HTML-mails but show me the
829 text part if it's available. How to do it? 760 text part if it's available. How to do it?
830* [4.7]:: Can I use some other browser than w3 to render my HTML-mails? 761* [4.7]:: Can I use some other browser than w3 to render my
831* [4.8]:: Is there anything I can do to make poorly formatted mails 762 HTML-mails?
832 more readable? 763* [4.8]:: Is there anything I can do to make poorly formatted mails
833* [4.9]:: Is there a way to automatically ignore posts by specific authors 764 more readable?
834 or with specific words in the subject? And can I highlight more 765* [4.9]:: Is there a way to automatically ignore posts by specific
835 interesting ones in some way? 766 authors or with specific words in the subject? And can I highlight
836* [4.10]:: How can I disable threading in some (e.g. mail-) groups, or set 767 more interesting ones in some way?
837 other variables specific for some groups? 768* [4.10]:: How can I disable threading in some (e.g. mail-) groups,
838* [4.11]:: Can I highlight messages written by me and follow-ups to those? 769 or set other variables specific for some groups?
839* [4.12]:: The number of total messages in a group which Gnus displays in 770* [4.11]:: Can I highlight messages written by me and follow-ups to
840 group buffer is by far to high, especially in mail groups. 771 those?
841 Is this a bug? 772* [4.12]:: The number of total messages in a group which Gnus
842* [4.13]:: I don't like the layout of summary and article buffer, 773 displays in group buffer is by far to high, especially in mail
843 how to change it? Perhaps even a three pane display? 774 groups. Is this a bug?
844* [4.14]:: I don't like the way the Summary buffer looks, how to tweak it? 775* [4.13]:: I don't like the layout of summary and article buffer, how
845* [4.15]:: How to split incoming mails in several groups? 776 to change it? Perhaps even a three pane display?
777* [4.14]:: I don't like the way the Summary buffer looks, how to
778 tweak it?
779* [4.15]:: How to split incoming mails in several groups?
846@end menu 780@end menu
847 781
848@ifnottex 782@node [4.1]
849@node [4.1], [4.2], FAQ 4 - Reading messages, FAQ 4 - Reading messages 783@subsubheading Question 4.1
850@end ifnottex
851@subsubheading Question 4.1:
852 784
853 When I enter a group, all read messages are gone. How to view them again? 785When I enter a group, all read messages are gone. How to view them again?
854
855 786
856Answer: 787@subsubheading Answer
857 788
858 If you enter the group by saying 789If you enter the group by saying
859 @samp{RET} 790@samp{RET}
860 in group buffer with point over the group, only unread and ticked messages are loaded. Say 791in group buffer with point over the group, only unread and ticked messages are loaded. Say
861 @samp{C-u RET} 792@samp{C-u RET}
862 instead to load all available messages. If you want only the e.g. 300 newest say 793instead to load all available messages. If you want only the e.g. 300 newest say
863 @samp{C-u 300 RET} 794@samp{C-u 300 RET}
864
865 795
866 Loading only unread messages can be annoying if you have threaded view enabled, say 796Loading only unread messages can be annoying if you have threaded view enabled, say
867
868 797
869@example 798@example
870(setq gnus-fetch-old-headers 'some) 799(setq gnus-fetch-old-headers 'some)
871@end example 800@end example
872
873
874@noindent 801@noindent
875 in ~/.gnus to load enough old articles to prevent teared threads, replace 'some with t to load
876 all articles (Warning: Both settings enlarge the amount of data which is
877 fetched when you enter a group and slow down the process of entering a group).
878 802
803in ~/.gnus.el to load enough old articles to prevent teared threads, replace 'some with t to load
804all articles (Warning: Both settings enlarge the amount of data which is
805fetched when you enter a group and slow down the process of entering a group).
879 806
880 If you already use Gnus 5.10, you can say 807If you already use Gnus 5.10, you can say
881 @samp{/o N} 808@samp{/o N}
882 In summary buffer to load the last N messages, this feature is not available in 5.8.8 809In summary buffer to load the last N messages, this feature is not available in 5.8.8
883
884 810
885 If you don't want all old messages, but the parent of the message you're just reading, 811If you don't want all old messages, but the parent of the message you're just reading,
886 you can say @samp{^}, if you want to retrieve the whole thread 812you can say @samp{^}, if you want to retrieve the whole thread
887 the message you're just reading belongs to, @samp{A T} is your friend. 813the message you're just reading belongs to, @samp{A T} is your friend.
888
889@ifnottex
890@node [4.2], [4.3], [4.1], FAQ 4 - Reading messages
891@end ifnottex
892@subsubheading Question 4.2:
893 814
894 How to tell Gnus to show an important message every time I 815@node [4.2]
895 enter a group, even when it's read? 816@subsubheading Question 4.2
896
897 817
898Answer: 818How to tell Gnus to show an important message every time I
819enter a group, even when it's read?
899 820
900 You can tick important messages. To do this hit 821@subsubheading Answer
901 @samp{u} while point is in summary buffer
902 over the message. When you want to remove the mark, hit
903 either @samp{d} (this deletes the tick
904 mark and set's unread mark) or @samp{M c}
905 (which deletes all marks for the message).
906
907@ifnottex
908@node [4.3], [4.4], [4.2], FAQ 4 - Reading messages
909@end ifnottex
910@subsubheading Question 4.3:
911 822
912 How to view the headers of a message? 823You can tick important messages. To do this hit
913 824@samp{u} while point is in summary buffer
825over the message. When you want to remove the mark, hit
826either @samp{d} (this deletes the tick
827mark and set's unread mark) or @samp{M c}
828(which deletes all marks for the message).
914 829
915Answer: 830@node [4.3]
831@subsubheading Question 4.3
916 832
917 Say @samp{t} 833How to view the headers of a message?
918 to show all headers, one more
919 @samp{t}
920 hides them again.
921
922@ifnottex
923@node [4.4], [4.5], [4.3], FAQ 4 - Reading messages
924@end ifnottex
925@subsubheading Question 4.4:
926 834
927 How to view the raw unformatted message? 835@subsubheading Answer
928
929 836
930Answer: 837Say @samp{t}
838to show all headers, one more
839@samp{t}
840hides them again.
931 841
932 Say 842@node [4.4]
933 @samp{C-u g} 843@subsubheading Question 4.4
934 to show the raw message
935 @samp{g}
936 returns to normal view.
937
938@ifnottex
939@node [4.5], [4.6], [4.4], FAQ 4 - Reading messages
940@end ifnottex
941@subsubheading Question 4.5:
942 844
943 How can I change the headers Gnus displays by default at 845How to view the raw unformatted message?
944 the top of the article buffer?
945
946 846
947Answer: 847@subsubheading Answer
848
849Say
850@samp{C-u g}
851to show the raw message
852@samp{g}
853returns to normal view.
854
855@node [4.5]
856@subsubheading Question 4.5
857
858How can I change the headers Gnus displays by default at
859the top of the article buffer?
860
861@subsubheading Answer
862
863The variable gnus-visible-headers controls which headers
864are shown, its value is a regular expression, header lines
865which match it are shown. So if you want author, subject,
866date, and if the header exists, Followup-To and MUA / NUA
867say this in ~/.gnus.el:
948 868
949 The variable gnus-visible-headers controls which headers
950 are shown, its value is a regular expression, header lines
951 which match it are shown. So if you want author, subject,
952 date, and if the header exists, Followup-To and MUA / NUA
953 say this in ~/.gnus:
954
955@example 869@example
956(setq gnus-visible-headers 870(setq gnus-visible-headers
957 "^\\(From:\\|Subject:\\|Date:\\|Followup-To:\ 871 '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To"
958\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)") 872 "^User-Agent" "^X-Newsreader" "^X-Mailer"))
959@end example 873@end example
960 874@noindent
961@ifnottex
962@node [4.6], [4.7], [4.5], FAQ 4 - Reading messages
963@end ifnottex
964@subsubheading Question 4.6:
965 875
966 I'd like Gnus NOT to render HTML-mails but show me the 876@node [4.6]
967 text part if it's available. How to do it? 877@subsubheading Question 4.6
968
969 878
970Answer: 879I'd like Gnus NOT to render HTML-mails but show me the
880text part if it's available. How to do it?
971 881
972 Say 882@subsubheading Answer
973 883
884Say
974 885
975@example 886@example
976(eval-after-load "mm-decode" 887(eval-after-load "mm-decode"
@@ -978,240 +889,206 @@ Answer:
978 (add-to-list 'mm-discouraged-alternatives "text/html") 889 (add-to-list 'mm-discouraged-alternatives "text/html")
979 (add-to-list 'mm-discouraged-alternatives "text/richtext"))) 890 (add-to-list 'mm-discouraged-alternatives "text/richtext")))
980@end example 891@end example
981
982@noindent 892@noindent
983 in ~/.gnus. If you don't want HTML rendered, even if there's no text alternative add 893
984 894in ~/.gnus.el. If you don't want HTML rendered, even if there's no text alternative add
985 895
986@example 896@example
987(setq mm-automatic-display (remove "text/html" mm-automatic-display)) 897(setq mm-automatic-display (remove "text/html" mm-automatic-display))
988@end example 898@end example
989
990@noindent 899@noindent
991 too.
992
993@ifnottex
994@node [4.7], [4.8], [4.6], FAQ 4 - Reading messages
995@end ifnottex
996@subsubheading Question 4.7:
997 900
998 Can I use some other browser than w3 to render my HTML-mails? 901too.
999
1000 902
1001Answer: 903@node [4.7]
904@subsubheading Question 4.7
1002 905
1003 Only if you use Gnus 5.10 or younger. In this case you've got the 906Can I use some other browser than w3 to render my HTML-mails?
1004 choice between w3, w3m, links, lynx and html2text, which 907
1005 one is used can be specified in the variable 908@subsubheading Answer
1006 mm-text-html-renderer, so if you want links to render your 909
1007 mail say 910Only if you use Gnus 5.10 or younger. In this case you've got the
1008 911choice between w3, w3m, links, lynx and html2text, which
912one is used can be specified in the variable
913mm-text-html-renderer, so if you want links to render your
914mail say
1009 915
1010@example 916@example
1011(setq mm-text-html-renderer 'links) 917(setq mm-text-html-renderer 'links)
1012@end example 918@end example
1013 919@noindent
1014@ifnottex
1015@node [4.8], [4.9], [4.7], FAQ 4 - Reading messages
1016@end ifnottex
1017@subsubheading Question 4.8:
1018
1019 Is there anything I can do to make poorly formatted mails
1020 more readable?
1021
1022
1023Answer:
1024
1025 Gnus offers you several functions to "wash" incoming mail,
1026 you can find them if you browse through the menu, item Article->Washing. The most
1027 interesting ones are probably "Wrap long lines" (
1028 @samp{W w}
1029 ), "Decode ROT13" (
1030 @samp{W r}
1031 ) and "Outlook Deuglify" which repairs the dumb quoting used
1032 by many users of Microsoft products (
1033 @samp{W Y f} gives you full deuglify.
1034 See @samp{W Y C-h} or
1035 have a look at the menus for other deuglifications).
1036 Outlook deuglify is only available since Gnus 5.10.
1037
1038@ifnottex
1039@node [4.9], [4.10], [4.8], FAQ 4 - Reading messages
1040@end ifnottex
1041@subsubheading Question 4.9:
1042
1043 Is there a way to automatically ignore posts by specific
1044 authors or with specific words in the subject? And can I
1045 highlight more interesting ones in some way?
1046
1047
1048Answer:
1049
1050 You want Scoring. Scoring means, that you define rules
1051 which assign each message an integer value. Depending on
1052 the value the message is highlighted in summary buffer (if
1053 it's high, say +2000) or automatically marked read (if the
1054 value is low, say -800) or some other action happens.
1055
1056
1057 There are basically three ways of setting up rules which assign
1058 the scoring-value to messages. The first and easiest way is to set
1059 up rules based on the article you are just reading. Say you're
1060 reading a message by a guy who always writes nonsense and you want
1061 to ignore his messages in the future. Hit
1062 @samp{L}, to set up a rule which lowers the score.
1063 Now Gnus asks you which the criteria for lowering the Score shall
1064 be. Hit @samp{?} twice to see all possibilities,
1065 we want @samp{a} which means the author (the from
1066 header). Now Gnus wants to know which kind of matching we want.
1067 Hit either @samp{e} for an exact match or
1068 @samp{s} for substring-match and delete afterwards
1069 everything but the name to score down all authors with the given
1070 name no matter which email address is used. Now you need to tell
1071 Gnus when to apply the rule and how long it should last, hit e.g.
1072 @samp{p} to apply the rule now and let it last
1073 forever. If you want to raise the score instead of lowering it say
1074 @samp{I} instead of @samp{L}.
1075
1076 920
1077 You can also set up rules by hand. To do this say @samp{V 921@node [4.8]
1078 f} in summary buffer. Then you are asked for the name 922@subsubheading Question 4.8
1079 of the score file, it's name.of.group.SCORE for rules valid in 923
1080 only one group or all.Score for rules valid in all groups. See the 924Is there anything I can do to make poorly formatted mails
1081 Gnus manual for the exact syntax, basically it's one big list 925more readable?
1082 whose elements are lists again. the first element of those lists 926
1083 is the header to score on, then one more list with what to match, 927@subsubheading Answer
1084 which score to assign, when to expire the rule and how to do the 928
1085 matching. If you find me very interesting, you could e.g. add the 929Gnus offers you several functions to "wash" incoming mail, you can
1086 following to your all.Score: 930find them if you browse through the menu, item
1087 931Article->Washing. The most interesting ones are probably "Wrap
932long lines" (@samp{W w}), "Decode ROT13"
933(@samp{W r}) and "Outlook Deuglify" which repairs
934the dumb quoting used by many users of Microsoft products
935(@samp{W Y f} gives you full deuglify.
936See @samp{W Y C-h} or have a look at the menus for
937other deuglifications). Outlook deuglify is only available since
938Gnus 5.10.
939
940@node [4.9]
941@subsubheading Question 4.9
942
943Is there a way to automatically ignore posts by specific
944authors or with specific words in the subject? And can I
945highlight more interesting ones in some way?
946
947@subsubheading Answer
948
949You want Scoring. Scoring means, that you define rules
950which assign each message an integer value. Depending on
951the value the message is highlighted in summary buffer (if
952it's high, say +2000) or automatically marked read (if the
953value is low, say -800) or some other action happens.
954
955There are basically three ways of setting up rules which assign
956the scoring-value to messages. The first and easiest way is to set
957up rules based on the article you are just reading. Say you're
958reading a message by a guy who always writes nonsense and you want
959to ignore his messages in the future. Hit
960@samp{L}, to set up a rule which lowers the score.
961Now Gnus asks you which the criteria for lowering the Score shall
962be. Hit @samp{?} twice to see all possibilities,
963we want @samp{a} which means the author (the from
964header). Now Gnus wants to know which kind of matching we want.
965Hit either @samp{e} for an exact match or
966@samp{s} for substring-match and delete afterwards
967everything but the name to score down all authors with the given
968name no matter which email address is used. Now you need to tell
969Gnus when to apply the rule and how long it should last, hit e.g.
970@samp{p} to apply the rule now and let it last
971forever. If you want to raise the score instead of lowering it say
972@samp{I} instead of @samp{L}.
973
974You can also set up rules by hand. To do this say @samp{V
975f} in summary buffer. Then you are asked for the name
976of the score file, it's name.of.group.SCORE for rules valid in
977only one group or all.Score for rules valid in all groups. See the
978Gnus manual for the exact syntax, basically it's one big list
979whose elements are lists again. the first element of those lists
980is the header to score on, then one more list with what to match,
981which score to assign, when to expire the rule and how to do the
982matching. If you find me very interesting, you could e.g. add the
983following to your all.Score:
1088 984
1089@example 985@example
1090(("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s)) 986(("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s))
1091 ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s))) 987 ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s)))
1092@end example 988@end example
1093
1094@noindent 989@noindent
1095 This would add 999 to the score of messages written by me
1096 and 500 to the score of messages which are a (possibly
1097 indirect) answer to a message written by me. Of course
1098 nobody with a sane mind would do this :-)
1099
1100 990
1101 The third alternative is adaptive scoring. This means Gnus 991This would add 999 to the score of messages written by me
1102 watches you and tries to find out what you find 992and 500 to the score of messages which are a (possibly
1103 interesting and what annoying and sets up rules 993indirect) answer to a message written by me. Of course
1104 which reflect this. Adaptive scoring can be a huge help 994nobody with a sane mind would do this :-)
1105 when reading high traffic groups. If you want to activate 995
1106 adaptive scoring say 996The third alternative is adaptive scoring. This means Gnus
1107 997watches you and tries to find out what you find
998interesting and what annoying and sets up rules
999which reflect this. Adaptive scoring can be a huge help
1000when reading high traffic groups. If you want to activate
1001adaptive scoring say
1108 1002
1109@example 1003@example
1110(setq gnus-use-adaptive-scoring t) 1004(setq gnus-use-adaptive-scoring t)
1111@end example 1005@end example
1112
1113@noindent 1006@noindent
1114 in ~/.gnus.
1115
1116@ifnottex
1117@node [4.10], [4.11], [4.9], FAQ 4 - Reading messages
1118@end ifnottex
1119@subsubheading Question 4.10:
1120 1007
1121 How can I disable threading in some (e.g. mail-) groups, or 1008in ~/.gnus.el.
1122 set other variables specific for some groups?
1123
1124 1009
1125Answer: 1010@node [4.10]
1011@subsubheading Question 4.10
1126 1012
1127 While in group buffer move point over the group and hit 1013How can I disable threading in some (e.g. mail-) groups, or
1128 @samp{G c}, this opens a buffer where you 1014set other variables specific for some groups?
1129 can set options for the group. At the bottom of the buffer
1130 you'll find an item that allows you to set variables
1131 locally for the group. To disable threading enter
1132 gnus-show-threads as name of variable and nil as
1133 value. Hit button done at the top of the buffer when
1134 you're ready.
1135
1136@ifnottex
1137@node [4.11], [4.12], [4.10], FAQ 4 - Reading messages
1138@end ifnottex
1139@subsubheading Question 4.11:
1140 1015
1141 Can I highlight messages written by me and follow-ups to 1016@subsubheading Answer
1142 those?
1143
1144 1017
1145Answer: 1018While in group buffer move point over the group and hit
1019@samp{G c}, this opens a buffer where you
1020can set options for the group. At the bottom of the buffer
1021you'll find an item that allows you to set variables
1022locally for the group. To disable threading enter
1023gnus-show-threads as name of variable and nil as
1024value. Hit button done at the top of the buffer when
1025you're ready.
1146 1026
1147 Stop those "Can I ..." questions, the answer is always yes 1027@node [4.11]
1148 in Gnus Country :-). It's a three step process: First we 1028@subsubheading Question 4.11
1149 make faces (specifications of how summary-line shall look
1150 like) for those postings, then we'll give them some
1151 special score and finally we'll tell Gnus to use the new
1152 faces. You can find detailed instructions on how to do it on
1153 @uref{http://my.gnus.org/Members/dzimmerm/HowTo%2C2002-07-25%2C1027619165012198456/view,my.gnus.org}
1154
1155@ifnottex
1156@node [4.12], [4.13], [4.11], FAQ 4 - Reading messages
1157@end ifnottex
1158@subsubheading Question 4.12:
1159
1160 The number of total messages in a group which Gnus
1161 displays in group buffer is by far to high, especially in
1162 mail groups. Is this a bug?
1163
1164 1029
1165Answer: 1030Can I highlight messages written by me and follow-ups to
1166 1031those?
1167 No, that's a matter of design of Gnus, fixing this would
1168 mean reimplementation of major parts of Gnus'
1169 back ends. Gnus thinks "highest-article-number -
1170 lowest-article-number = total-number-of-articles". This
1171 works OK for Usenet groups, but if you delete and move
1172 many messages in mail groups, this fails. To cure the
1173 symptom, enter the group via @samp{C-u RET}
1174 (this makes Gnus get all messages), then
1175 hit @samp{M P b} to mark all messages and
1176 then say @samp{B m name.of.group} to move
1177 all messages to the group they have been in before, they
1178 get new message numbers in this process and the count is
1179 right again (until you delete and move your mail to other
1180 groups again).
1181
1182@ifnottex
1183@node [4.13], [4.14], [4.12], FAQ 4 - Reading messages
1184@end ifnottex
1185@subsubheading Question 4.13:
1186 1032
1187 I don't like the layout of summary and article buffer, how 1033@subsubheading Answer
1188 to change it? Perhaps even a three pane display?
1189
1190 1034
1191Answer: 1035Stop those "Can I ..." questions, the answer is always yes
1036in Gnus Country :-). It's a three step process: First we
1037make faces (specifications of how summary-line shall look
1038like) for those postings, then we'll give them some
1039special score and finally we'll tell Gnus to use the new
1040faces. You can find detailed instructions on how to do it on
1041@uref{http://my.gnus.org/node/view/224, my.gnus.org}
1192 1042
1193 You can control the windows configuration by calling the 1043@node [4.12]
1194 function gnus-add-configuration. The syntax is a bit 1044@subsubheading Question 4.12
1195 complicated but explained very well in the manual node
1196 "Window Layout". Some popular examples:
1197
1198 1045
1199 Instead 25% summary 75% article buffer 35% summary and 65% 1046The number of total messages in a group which Gnus
1200 article (the 1.0 for article means "take the remaining 1047displays in group buffer is by far to high, especially in
1201 space"): 1048mail groups. Is this a bug?
1202 1049
1050@subsubheading Answer
1051
1052No, that's a matter of design of Gnus, fixing this would
1053mean reimplementation of major parts of Gnus'
1054back ends. Gnus thinks "highest-article-number -
1055lowest-article-number = total-number-of-articles". This
1056works OK for Usenet groups, but if you delete and move
1057many messages in mail groups, this fails. To cure the
1058symptom, enter the group via @samp{C-u RET}
1059(this makes Gnus get all messages), then
1060hit @samp{M P b} to mark all messages and
1061then say @samp{B m name.of.group} to move
1062all messages to the group they have been in before, they
1063get new message numbers in this process and the count is
1064right again (until you delete and move your mail to other
1065groups again).
1066
1067@node [4.13]
1068@subsubheading Question 4.13
1069
1070I don't like the layout of summary and article buffer, how
1071to change it? Perhaps even a three pane display?
1072
1073@subsubheading Answer
1074
1075You can control the windows configuration by calling the
1076function gnus-add-configuration. The syntax is a bit
1077complicated but explained very well in the manual node
1078"Window Layout". Some popular examples:
1079
1080Instead 25% summary 75% article buffer 35% summary and 65%
1081article (the 1.0 for article means "take the remaining
1082space"):
1203 1083
1204@example 1084@example
1205(gnus-add-configuration 1085(gnus-add-configuration
1206 '(article (vertical 1.0 1086 '(article (vertical 1.0 (summary .35 point) (article 1.0))))
1207 (summary .35 point)
1208 (article 1.0))))
1209@end example 1087@end example
1210 1088@noindent
1211 1089
1212 A three pane layout, Group buffer on the left, summary 1090A three pane layout, Group buffer on the left, summary
1213 buffer top-right, article buffer bottom-right: 1091buffer top-right, article buffer bottom-right:
1214
1215 1092
1216@example 1093@example
1217(gnus-add-configuration 1094(gnus-add-configuration
@@ -1228,46 +1105,40 @@ Answer:
1228 (vertical 25 1105 (vertical 25
1229 (group 1.0)) 1106 (group 1.0))
1230 (vertical 1.0 1107 (vertical 1.0
1231 (summary 1.0 point))))) 1108 (summary 1.0 point)))))
1232@end example 1109@end example
1233 1110@noindent
1234@ifnottex
1235@node [4.14], [4.15], [4.13], FAQ 4 - Reading messages
1236@end ifnottex
1237@subsubheading Question 4.14:
1238 1111
1239 I don't like the way the Summary buffer looks, how to tweak it? 1112@node [4.14]
1240 1113@subsubheading Question 4.14
1241 1114
1242Answer: 1115I don't like the way the Summary buffer looks, how to tweak it?
1243
1244 You've got to play around with the variable
1245 gnus-summary-line-format. It's value is a string of
1246 symbols which stand for things like author, date, subject
1247 etc. A list of the available specifiers can be found in the
1248 manual node "Summary Buffer Lines" and the often forgotten
1249 node "Formatting Variables" and it's sub-nodes. There
1250 you'll find useful things like positioning the cursor and
1251 tabulators which allow you a summary in table form, but
1252 sadly hard tabulators are broken in 5.8.8.
1253
1254 1116
1255 Since 5.10, Gnus offers you some very nice new specifiers, 1117@subsubheading Answer
1256 e.g. %B which draws a thread-tree and %&user-date which 1118
1257 gives you a date where the details are dependent of the 1119You've got to play around with the variable
1258 articles age. Here's an example which uses both: 1120gnus-summary-line-format. It's value is a string of
1259 1121symbols which stand for things like author, date, subject
1122etc. A list of the available specifiers can be found in the
1123manual node "Summary Buffer Lines" and the often forgotten
1124node "Formatting Variables" and it's sub-nodes. There
1125you'll find useful things like positioning the cursor and
1126tabulators which allow you a summary in table form, but
1127sadly hard tabulators are broken in 5.8.8.
1128
1129Since 5.10, Gnus offers you some very nice new specifiers,
1130e.g. %B which draws a thread-tree and %&user-date which
1131gives you a date where the details are dependent of the
1132articles age. Here's an example which uses both:
1260 1133
1261@example 1134@example
1262(setq gnus-summary-line-format 1135(setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
1263 ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
1264@end example 1136@end example
1265
1266@noindent 1137@noindent
1267 resulting in:
1268
1269 1138
1270@smallexample 1139resulting in:
1140
1141@example
1271:O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06 1142:O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06
1272:O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12 1143:O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12
1273:R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16 1144:R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16
@@ -1280,54 +1151,48 @@ Answer:
1280:R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57 1151:R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57
1281:O \-> ... | 18 |Kai Grossjohann | 0:35 1152:O \-> ... | 18 |Kai Grossjohann | 0:35
1282:O \-> ... | 13 |Lars Magne Ingebrigt | 0:56 1153:O \-> ... | 13 |Lars Magne Ingebrigt | 0:56
1283@end smallexample 1154@end example
1284 1155@noindent
1285@ifnottex
1286@node [4.15], , [4.14], FAQ 4 - Reading messages
1287@end ifnottex
1288@subsubheading Question 4.15:
1289 1156
1290 How to split incoming mails in several groups? 1157@node [4.15]
1291 1158@subsubheading Question 4.15
1292 1159
1293Answer: 1160How to split incoming mails in several groups?
1294 1161
1295 Gnus offers two possibilities for splitting mail, the easy 1162@subsubheading Answer
1296 nnmail-split-methods and the more powerful Fancy Mail
1297 Splitting. I'll only talk about the first one, refer to
1298 the manual, node "Fancy Mail Splitting" for the latter.
1299
1300 1163
1301 The value of nnmail-split-methods is a list, each element 1164Gnus offers two possibilities for splitting mail, the easy
1302 is a list which stands for a splitting rule. Each rule has 1165nnmail-split-methods and the more powerful Fancy Mail
1303 the form "group where matching articles should go to", 1166Splitting. I'll only talk about the first one, refer to
1304 "regular expression which has to be matched", the first 1167the manual, node "Fancy Mail Splitting" for the latter.
1305 rule which matches wins. The last rule must always be a 1168
1306 general rule (regular expression .*) which denotes where 1169The value of nnmail-split-methods is a list, each element
1307 articles should go which don't match any other rule. If 1170is a list which stands for a splitting rule. Each rule has
1308 the folder doesn't exist yet, it will be created as soon 1171the form "group where matching articles should go to",
1309 as an article lands there. By default the mail will be 1172"regular expression which has to be matched", the first
1310 send to all groups whose rules match. If you 1173rule which matches wins. The last rule must always be a
1311 don't want that (you probably don't want), say 1174general rule (regular expression .*) which denotes where
1312 1175articles should go which don't match any other rule. If
1176the folder doesn't exist yet, it will be created as soon
1177as an article lands there. By default the mail will be
1178send to all groups whose rules match. If you
1179don't want that (you probably don't want), say
1313 1180
1314@example 1181@example
1315(setq nnmail-crosspost nil) 1182(setq nnmail-crosspost nil)
1316@end example 1183@end example
1317
1318@noindent 1184@noindent
1319 in ~/.gnus.
1320
1321 1185
1322 An example might be better than thousand words, so here's 1186in ~/.gnus.el.
1323 my nnmail-split-methods. Note that I send duplicates in a 1187
1324 special group and that the default group is spam, since I 1188An example might be better than thousand words, so here's
1325 filter all mails out which are from some list I'm 1189my nnmail-split-methods. Note that I send duplicates in a
1326 subscribed to or which are addressed directly to me 1190special group and that the default group is spam, since I
1327 before. Those rules kill about 80% of the Spam which 1191filter all mails out which are from some list I'm
1328 reaches me (Email addresses are changed to prevent spammers 1192subscribed to or which are addressed directly to me
1329 from using them): 1193before. Those rules kill about 80% of the Spam which
1330 1194reaches me (Email addresses are changed to prevent spammers
1195from using them):
1331 1196
1332@example 1197@example
1333(setq nnmail-split-methods 1198(setq nnmail-split-methods
@@ -1336,133 +1201,114 @@ Answer:
1336 ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*") 1201 ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@@socha.bla.*")
1337 ("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*") 1202 ("tcsh" "^\\(To:\\|CC:\\).*localpart@@mx.gw.bla.*")
1338 ("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*") 1203 ("BAfH" "^\\(To:\\|CC:\\).*localpart@@.*uni-muenchen.bla.*")
1339 ("Hamster-src" 1204 ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
1340 "^\\(CC:\\|To:\\).*hamster-sourcen@@yahoogroups.\\(de\\|com\\).*")
1341 ("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$") 1205 ("Tagesschau" "^From: tagesschau <localpart@@www.tagesschau.bla>$")
1342 ("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*") 1206 ("Replies" "^\\(CC:\\|To:\\).*localpart@@Frank-Schmitt.bla.*")
1343 ("EK" 1207 ("EK" "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*")
1344 "^From:.*\\(localpart@@privateprovider.bla\\|localpart@@workplace.bla\\).*") 1208 ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
1345 ("Spam" 1209 ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
1346 "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*") 1210 ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
1347 ("Spam"
1348 "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
1349 ("Spam"
1350 "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
1351 ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)") 1211 ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)")
1352 ("Spam" 1212 ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
1353 "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)") 1213 ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
1354 ("Spam"
1355 "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
1356 ("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$") 1214 ("Spam" "^Delivered-To: GMX delivery to spamtrap@@gmx.bla$")
1357 ("Spam" "^Received: from link2buy.com") 1215 ("Spam" "^Received: from link2buy.com")
1358 ("Spam" "^CC: .*azzrael@@t-online.bla") 1216 ("Spam" "^CC: .*azzrael@@t-online.bla")
1359 ("Spam" "^X-Mailer-Version: 1.50 BETA") 1217 ("Spam" "^X-Mailer-Version: 1.50 BETA")
1360 ("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*") 1218 ("Uni" "^\\(CC:\\|To:\\).*localpart@@uni-koblenz.bla.*")
1361 ("Inbox" 1219 ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
1362 "^\\(CC:\\|To:\\).*\\(my\ name\\|address@@one.bla\\|adress@@two.bla\\)")
1363 ("Spam" ""))) 1220 ("Spam" "")))
1364@end example 1221@end example
1365 1222@noindent
1366 1223
1367@ifnottex 1224@node FAQ 5 - Composing messages
1368@node FAQ 5 - Composing messages, FAQ 6 - Old messages, FAQ 4 - Reading messages, Frequently Asked Questions
1369@end ifnottex
1370@subsection Composing messages 1225@subsection Composing messages
1371 1226
1372@menu 1227@menu
1373* [5.1]:: What are the basic commands I need to know for sending mail and 1228* [5.1]:: What are the basic commands I need to know for sending
1374 postings? 1229 mail and postings?
1375* [5.2]:: How to enable automatic word-wrap when composing messages? 1230* [5.2]:: How to enable automatic word-wrap when composing messages?
1376* [5.3]:: How to set stuff like From, Organization, Reply-To, signature...? 1231* [5.3]:: How to set stuff like From, Organization, Reply-To,
1377* [5.4]:: Can I set things like From, Signature etc group based on the 1232 signature...?
1378 group I post too? 1233* [5.4]:: Can I set things like From, Signature etc group based on
1379* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly spell-checking? 1234 the group I post too?
1380* [5.6]:: Can I set the dictionary based on the group I'm posting to? 1235* [5.5]:: Is there a spell-checker? Perhaps even on-the-fly
1381* [5.7]:: Is there some kind of address-book, so I needn't remember all 1236 spell-checking?
1382 those email addresses? 1237* [5.6]:: Can I set the dictionary based on the group I'm posting
1383* [5.8]:: Sometimes I see little images at the top of article buffer. 1238 to?
1384 What's that and how can I send one with my postings, too? 1239* [5.7]:: Is there some kind of address-book, so I needn't remember
1385* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups. 1240 all those email addresses?
1386 Can Gnus warn me, when I'm replying by mail in newsgroups? 1241* [5.8]:: Sometimes I see little images at the top of article
1387* [5.10]:: How to tell Gnus not to generate a sender header? 1242 buffer. What's that and how can I send one with my postings, too?
1388* [5.11]:: I want Gnus to locally store copies of my send mail and news, 1243* [5.9]:: Sometimes I accidentally hit r instead of f in newsgroups.
1389 how to do it? 1244 Can Gnus warn me, when I'm replying by mail in newsgroups?
1390* [5.12]:: People tell me my Message-IDs are not correct, 1245* [5.10]:: How to tell Gnus not to generate a sender header?
1391 why aren't they and how to fix it? 1246* [5.11]:: I want Gnus to locally store copies of my send mail and
1247 news, how to do it?
1248* [5.12]:: People tell me my Message-IDs are not correct, why aren't
1249 they and how to fix it?
1392@end menu 1250@end menu
1393 1251
1394@ifnottex 1252@node [5.1]
1395@node [5.1], [5.2], FAQ 5 - Composing messages, FAQ 5 - Composing messages 1253@subsubheading Question 5.1
1396@end ifnottex
1397@subsubheading Question 5.1:
1398 1254
1399 What are the basic commands I need to know for sending mail and postings? 1255What are the basic commands I need to know for sending mail and postings?
1400
1401 1256
1402Answer: 1257@subsubheading Answer
1403
1404 To start composing a new mail hit @samp{m}
1405 either in Group or Summary buffer, for a posting, it's
1406 either @samp{a} in Group buffer and
1407 filling the Newsgroups header manually
1408 or @samp{a} in the Summary buffer of the
1409 group where the posting shall be send to. Replying by mail
1410 is
1411 @samp{r} if you don't want to cite the
1412 author, or import the cited text manually and
1413 @samp{R} to cite the text of the original
1414 message. For a follow up to a newsgroup, it's
1415 @samp{f} and @samp{F}
1416 (analog to @samp{r} and
1417 @samp{R}).
1418
1419 1258
1420 Enter new headers above the line saying "--text follows 1259To start composing a new mail hit @samp{m}
1421 this line--", enter the text below the line. When ready 1260either in Group or Summary buffer, for a posting, it's
1422 hit @samp{C-c C-c}, to send the message, 1261either @samp{a} in Group buffer and
1423 if you want to finish it later hit @samp{C-c 1262filling the Newsgroups header manually
1424 C-d} to save it in the drafts group, where you 1263or @samp{a} in the Summary buffer of the
1425 can start editing it again by saying @samp{D 1264group where the posting shall be send to. Replying by mail
1426 e}. 1265is
1427 1266@samp{r} if you don't want to cite the
1428@ifnottex 1267author, or import the cited text manually and
1429@node [5.2], [5.3], [5.1], FAQ 5 - Composing messages 1268@samp{R} to cite the text of the original
1430@end ifnottex 1269message. For a follow up to a newsgroup, it's
1431@subsubheading Question 5.2: 1270@samp{f} and @samp{F}
1271(analogously to @samp{r} and
1272@samp{R}).
1432 1273
1433 How to enable automatic word-wrap when composing messages? 1274Enter new headers above the line saying "--text follows
1434 1275this line--", enter the text below the line. When ready
1276hit @samp{C-c C-c}, to send the message,
1277if you want to finish it later hit @samp{C-c
1278C-d} to save it in the drafts group, where you
1279can start editing it again by saying @samp{D
1280e}.
1435 1281
1436Answer: 1282@node [5.2]
1283@subsubheading Question 5.2
1437 1284
1438 Say 1285How to enable automatic word-wrap when composing messages?
1439 1286
1287@subsubheading Answer
1288
1289Say
1440 1290
1441@example 1291@example
1442(add-hook 'message-mode-hook 1292(add-hook 'message-mode-hook
1443 (lambda () 1293 (lambda ()
1444 (setq fill-column 72) 1294 (setq fill-column 72)
1445 (turn-on-auto-fill))) 1295 (turn-on-auto-fill)))
1446@end example 1296@end example
1447
1448@noindent 1297@noindent
1449 in ~/.gnus. You can reformat a paragraph by hitting
1450 @samp{M-q} (as usual)
1451
1452@ifnottex
1453@node [5.3], [5.4], [5.2], FAQ 5 - Composing messages
1454@end ifnottex
1455@subsubheading Question 5.3:
1456 1298
1457 How to set stuff like From, Organization, Reply-To, signature...? 1299in ~/.gnus.el. You can reformat a paragraph by hitting
1458 1300@samp{M-q} (as usual)
1459 1301
1460Answer: 1302@node [5.3]
1303@subsubheading Question 5.3
1461 1304
1462 There are other ways, but you should use posting styles 1305How to set stuff like From, Organization, Reply-To, signature...?
1463 for this. (See below why). 1306
1464 This example should make the syntax clear: 1307@subsubheading Answer
1465 1308
1309There are other ways, but you should use posting styles
1310for this. (See below why).
1311This example should make the syntax clear:
1466 1312
1467@example 1313@example
1468(setq gnus-posting-styles 1314(setq gnus-posting-styles
@@ -1474,146 +1320,121 @@ Answer:
1474 ("X-SampleHeader" "foobar") 1320 ("X-SampleHeader" "foobar")
1475 (eval (setq some-variable "Foo bar"))))) 1321 (eval (setq some-variable "Foo bar")))))
1476@end example 1322@end example
1477
1478@noindent 1323@noindent
1479 The ".*" means that this settings are the default ones
1480 (see below), valid values for the first element of the
1481 following lists are signature, signature-file,
1482 organization, address, name or body. The attribute name
1483 can also be a string. In that case, this will be used as
1484 a header name, and the value will be inserted in the
1485 headers of the article; if the value is `nil', the header
1486 name will be removed. You can also say (eval (foo bar)),
1487 then the function foo will be evaluated with argument bar
1488 and the result will be thrown away.
1489
1490@ifnottex
1491@node [5.4], [5.5], [5.3], FAQ 5 - Composing messages
1492@end ifnottex
1493@subsubheading Question 5.4:
1494
1495 Can I set things like From, Signature etc group based on the group I post too?
1496
1497 1324
1498Answer: 1325The ".*" means that this settings are the default ones
1499 1326(see below), valid values for the first element of the
1500 That's the strength of posting styles. Before, we used ".*" 1327following lists are signature, signature-file,
1501 to set the default for all groups. You can use a regexp 1328organization, address, name or body. The attribute name
1502 like "^gmane" and the following settings are only applied 1329can also be a string. In that case, this will be used as
1503 to postings you send to the gmane hierarchy, use 1330a header name, and the value will be inserted in the
1504 ".*binaries" instead and they will be applied to postings 1331headers of the article; if the value is `nil', the header
1505 send to groups containing the string binaries in their 1332name will be removed. You can also say (eval (foo bar)),
1506 name etc. 1333then the function foo will be evaluated with argument bar
1507 1334and the result will be thrown away.
1508 1335
1509 You can instead of specifying a regexp specify a function 1336@node [5.4]
1510 which is evaluated, only if it returns true, the 1337@subsubheading Question 5.4
1511 corresponding settings take effect. Two interesting 1338
1512 candidates for this are message-news-p which returns t if 1339Can I set things like From, Signature etc group based on the group I post too?
1513 the current Group is a newsgroup and the corresponding 1340
1514 message-mail-p. 1341@subsubheading Answer
1515 1342
1516 1343That's the strength of posting styles. Before, we used ".*"
1517 Note that all forms that match are applied, that means in 1344to set the default for all groups. You can use a regexp
1518 the example below, when I post to 1345like "^gmane" and the following settings are only applied
1519 gmane.mail.spam.spamassassin.general, the settings under 1346to postings you send to the gmane hierarchy, use
1520 ".*" are applied and the settings under message-news-p and 1347".*binaries" instead and they will be applied to postings
1521 those under "^gmane" and those under 1348send to groups containing the string binaries in their
1522 "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because 1349name etc.
1523 of this put general settings at the top and specific ones 1350
1524 at the bottom. 1351You can instead of specifying a regexp specify a function
1525 1352which is evaluated, only if it returns true, the
1353corresponding settings take effect. Two interesting
1354candidates for this are message-news-p which returns t if
1355the current Group is a newsgroup and the corresponding
1356message-mail-p.
1357
1358Note that all forms that match are applied, that means in
1359the example below, when I post to
1360gmane.mail.spam.spamassassin.general, the settings under
1361".*" are applied and the settings under message-news-p and
1362those under "^gmane" and those under
1363"^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because
1364of this put general settings at the top and specific ones
1365at the bottom.
1526 1366
1527@example 1367@example
1528(setq gnus-posting-styles 1368(setq gnus-posting-styles
1529 '((".*" ;;default 1369 '((".*" ;;default
1530 (name "Frank Schmitt") 1370 (name "Frank Schmitt")
1531 (organization "Hamme net, kren mer och nimmi") 1371 (organization "Hamme net, kren mer och nimmi")
1532 (signature-file "~/.signature")) 1372 (signature-file "~/.signature") )
1533 ((message-news-p) ;;Usenet news? 1373 ((message-news-p) ;;Usenet news?
1534 (address "mySpamTrap@@Frank-Schmitt.bla") 1374 (address "mySpamTrap@@Frank-Schmitt.bla")
1535 ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla")) 1375 ("Reply-To" "hereRealRepliesOnlyPlease@@Frank-Schmitt.bla") )
1536 ((message-mail-p) ;;mail? 1376 ((message-mail-p) ;;mail?
1537 (address "usedForMails@@Frank-Schmitt.bla")) 1377 (address "usedForMails@@Frank-Schmitt.bla") )
1538 ("^gmane" ;;this is mail, too in fact 1378 ("^gmane" ;;this is mail, too in fact
1539 (address "usedForMails@@Frank-Schmitt.net") 1379 (address "usedForMails@@Frank-Schmitt.net")
1540 ("Reply-To" nil)) 1380 ("Reply-To" nil) )
1541 ("^gmane.mail.spam.spamassassin.general$" 1381 ("^gmane.mail.spam.spamassassin.general$"
1542 (eval (setq mail-envelope-from "Azzrael@@rz-online.de")) 1382 (eval (setq mail-envelope-from "Azzrael@@rz-online.de"))
1543 (address "Azzrael@@rz-online.de")))) 1383 (address "Azzrael@@rz-online.de")) ))
1544@end example 1384@end example
1545 1385@noindent
1546@ifnottex
1547@node [5.5], [5.6], [5.4], FAQ 5 - Composing messages
1548@end ifnottex
1549@subsubheading Question 5.5:
1550 1386
1551 Is there a spell-checker? Perhaps even on-the-fly spell-checking? 1387@node [5.5]
1552 1388@subsubheading Question 5.5
1553 1389
1554Answer: 1390Is there a spell-checker? Perhaps even on-the-fly spell-checking?
1555 1391
1556You can use ispell.el to spell-check stuff in Emacs. So the first 1392@subsubheading Answer
1557thing to do is to make sure that you've got either
1558@itemize @bullet
1559@item
1560@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html,ispell}
1561or
1562@item
1563@uref{http://aspell.sourceforge.net/,aspell}
1564@end itemize
1565@noindent
1566installed and in your Path.
1567
1568Then you need
1569@uref{http://www.kdstevens.com/~stevens/ispell-page.html,ispell.el,ispell.el}
1570and for on-the-fly spell-checking
1571@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html,flyspell.el,flyspell.el}.
1572Ispell.el is shipped with Gnus Emacs and available through the Emacs
1573package system, flyspell.el is shipped with Emacs and part of XEmacs
1574text-modes package which is available through the package system, so
1575there should be no need to install them manually.
1576
1577 1393
1578 Ispell.el assumes you use ispell, if you choose aspell say 1394You can use ispell.el to spell-check stuff in Emacs. So the
1579 1395first thing to do is to make sure that you've got either
1396@uref{http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html, ispell}
1397or @uref{http://aspell.sourceforge.net/, aspell}
1398installed and in your Path. Then you need
1399@uref{http://www.kdstevens.com/~stevens/ispell-page.html, ispell.el}
1400and for on-the-fly spell-checking
1401@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
1402Ispell.el is shipped with Emacs and available through the XEmacs package system,
1403flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is
1404available through the package system, so there should be no need to install them
1405manually.
1406
1407Ispell.el assumes you use ispell, if you choose aspell say
1580 1408
1581@example 1409@example
1582(setq ispell-program-name "aspell") 1410(setq ispell-program-name "aspell")
1583@end example 1411@end example
1584
1585
1586@noindent 1412@noindent
1587 in your Emacs configuration file.
1588 1413
1414in your Emacs configuration file.
1589 1415
1590 If you want your outgoing messages to be spell-checked, say 1416If you want your outgoing messages to be spell-checked, say
1591
1592 1417
1593@example 1418@example
1594(add-hook 'message-send-hook 'ispell-message) 1419(add-hook 'message-send-hook 'ispell-message)
1595@end example 1420@end example
1596
1597@noindent 1421@noindent
1598 In your ~/.gnus, if you prefer on-the-fly spell-checking say 1422
1599 1423In your ~/.gnus.el, if you prefer on-the-fly spell-checking say
1600 1424
1601@example 1425@example
1602(add-hook 'message-mode-hook (lambda () (flyspell-mode 1))) 1426(add-hook 'message-mode-hook (lambda () (flyspell-mode 1)))
1603@end example 1427@end example
1604 1428@noindent
1605@ifnottex
1606@node [5.6], [5.7], [5.5], FAQ 5 - Composing messages
1607@end ifnottex
1608@subsubheading Question 5.6:
1609 1429
1610 Can I set the dictionary based on the group I'm posting to? 1430@node [5.6]
1611 1431@subsubheading Question 5.6
1612 1432
1613Answer: 1433Can I set the dictionary based on the group I'm posting to?
1614 1434
1615 Yes, say something like 1435@subsubheading Answer
1616 1436
1437Yes, say something like
1617 1438
1618@example 1439@example
1619(add-hook 'gnus-select-group-hook 1440(add-hook 'gnus-select-group-hook
@@ -1625,55 +1446,47 @@ Answer:
1625 (t 1446 (t
1626 (ispell-change-dictionary "english"))))) 1447 (ispell-change-dictionary "english")))))
1627@end example 1448@end example
1628
1629
1630@noindent 1449@noindent
1631 in ~/.gnus. Change "^de\\." and "deutsch8" to something
1632 that suits your needs.
1633 1450
1634@ifnottex 1451in ~/.gnus.el. Change "^de\\." and "deutsch8" to something
1635@node [5.7], [5.8], [5.6], FAQ 5 - Composing messages 1452that suits your needs.
1636@end ifnottex
1637@subsubheading Question 5.7:
1638 1453
1639 Is there some kind of address-book, so I needn't remember 1454@node [5.7]
1640 all those email addresses? 1455@subsubheading Question 5.7
1641
1642 1456
1643Answer: 1457Is there some kind of address-book, so I needn't remember
1458all those email addresses?
1644 1459
1645 There's an very basic solution for this, mail aliases. 1460@subsubheading Answer
1646 You can store your mail addresses in a ~/.mailrc file using a simple 1461
1647 alias syntax: 1462There's an very basic solution for this, mail aliases.
1648 1463You can store your mail addresses in a ~/.mailrc file using a simple
1464alias syntax:
1649 1465
1650@example 1466@example
1651alias al "Al <al@@english-heritage.bla>" 1467alias al "Al <al@@english-heritage.bla>"
1652@end example 1468@end example
1653
1654@noindent 1469@noindent
1655 Then typing your alias (followed by a space or punctuation
1656 character) on a To: or Cc: line in the message buffer will
1657 cause Gnus to insert the full address for you. See the
1658 node "Mail Aliases" in Message (not Gnus) manual for
1659 details.
1660
1661 1470
1662 However, what you really want is the Insidious Big Brother 1471Then typing your alias (followed by a space or punctuation
1663 Database bbdb. Get it through the XEmacs package system or from 1472character) on a To: or Cc: line in the message buffer will
1664 @uref{http://bbdb.sourceforge.net/,bbdb's homepage}. 1473cause Gnus to insert the full address for you. See the
1665 Now place the following in ~/.gnus, to activate bbdb for Gnus: 1474node "Mail Aliases" in Message (not Gnus) manual for
1666 1475details.
1476
1477However, what you really want is the Insidious Big Brother
1478Database bbdb. Get it through the XEmacs package system or from
1479@uref{http://bbdb.sourceforge.net/, bbdb's homepage}.
1480Now place the following in ~/.gnus.el, to activate bbdb for Gnus:
1667 1481
1668@example 1482@example
1669(require 'bbdb) 1483(require 'bbdb)
1670(bbdb-initialize 'gnus 'message) 1484(bbdb-initialize 'gnus 'message)
1671@end example 1485@end example
1672
1673@noindent 1486@noindent
1674 Now you probably want some general bbdb configuration, 1487
1675 place them in ~/.emacs: 1488Now you probably want some general bbdb configuration,
1676 1489place them in ~/.emacs:
1677 1490
1678@example 1491@example
1679(require 'bbdb) 1492(require 'bbdb)
@@ -1689,56 +1502,50 @@ alias al "Al <al@@english-heritage.bla>"
1689;;No popup-buffers 1502;;No popup-buffers
1690(setq bbdb-use-pop-up nil) 1503(setq bbdb-use-pop-up nil)
1691@end example 1504@end example
1692
1693@noindent 1505@noindent
1694 Now you should be ready to go. Say @samp{M-x bbdb RET
1695 RET} to open a bbdb buffer showing all
1696 entries. Say @samp{c} to create a new
1697 entry, @samp{b} to search your BBDB and
1698 @samp{C-o} to add a new field to an
1699 entry. If you want to add a sender to the BBDB you can
1700 also just hit `:' on the posting in the summary buffer and
1701 you are done. When you now compose a new mail,
1702 hit @samp{TAB} to cycle through know
1703 recipients.
1704
1705@ifnottex
1706@node [5.8], [5.9], [5.7], FAQ 5 - Composing messages
1707@end ifnottex
1708@subsubheading Question 5.8:
1709
1710 Sometimes I see little images at the top of article
1711 buffer. What's that and how can I send one with my
1712 postings, too?
1713
1714 1506
1715Answer: 1507Now you should be ready to go. Say @samp{M-x bbdb RET
1716 1508RET} to open a bbdb buffer showing all
1717 Those images are called X-Faces. They are 48*48 pixel b/w 1509entries. Say @samp{c} to create a new
1718 pictures, encoded in a header line. If you want to include 1510entry, @samp{b} to search your BBDB and
1719 one in your posts, you've got to convert some image to a 1511@samp{C-o} to add a new field to an
1720 X-Face. So fire up some image manipulation program (say 1512entry. If you want to add a sender to the BBDB you can
1721 Gimp), open the image you want to include, cut out the 1513also just hit `:' on the posting in the summary buffer and
1722 relevant part, reduce color depth to 1 bit, resize to 1514you are done. When you now compose a new mail,
1723 48*48 and save as bitmap. Now you should get the compface 1515hit @samp{TAB} to cycle through know
1724 package from 1516recipients.
1725 @uref{ftp://ftp.cs.indiana.edu:/pub/faces/,this site}. 1517
1726 and create the actual X-face by saying 1518@node [5.8]
1727 1519@subsubheading Question 5.8
1520
1521Sometimes I see little images at the top of article
1522buffer. What's that and how can I send one with my
1523postings, too?
1524
1525@subsubheading Answer
1526
1527Those images are called X-Faces. They are 48*48 pixel b/w
1528pictures, encoded in a header line. If you want to include
1529one in your posts, you've got to convert some image to a
1530X-Face. So fire up some image manipulation program (say
1531Gimp), open the image you want to include, cut out the
1532relevant part, reduce color depth to 1 bit, resize to
153348*48 and save as bitmap. Now you should get the compface
1534package from
1535@uref{ftp://ftp.cs.indiana.edu:/pub/faces/, this site}.
1536and create the actual X-face by saying
1728 1537
1729@example 1538@example
1730cat file.xbm | xbm2ikon |compface > file.face 1539cat file.xbm | xbm2ikon | compface > file.face
1731cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted 1540cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted
1732@end example 1541@end example
1733
1734@noindent 1542@noindent
1735If you can't use compface, there's an online X-face converter at@*
1736@uref{http://www.dairiki.org/xface/}. If you use MS Windows, you
1737could also use the WinFace program from
1738@uref{http://www.xs4all.nl/~walterln/winface/}.
1739 1543
1740Now you only have to tell Gnus to include the X-face in your postings 1544If you can't use compface, there's an online X-face converter at
1741by saying 1545@uref{http://www.dairiki.org/xface/}.
1546If you use MS Windows, you could also use the WinFace program from
1547@uref{http://www.xs4all.nl/~walterln/winface/}.
1548Now you only have to tell Gnus to include the X-face in your postings by saying
1742 1549
1743@example 1550@example
1744(setq message-default-headers 1551(setq message-default-headers
@@ -1747,33 +1554,28 @@ by saying
1747 (insert-file-contents "~/.xemacs/xface") 1554 (insert-file-contents "~/.xemacs/xface")
1748 (buffer-string))) 1555 (buffer-string)))
1749@end example 1556@end example
1750
1751@noindent 1557@noindent
1752 in ~/.gnus.
1753
1754@ifnottex
1755@node [5.9], [5.10], [5.8], FAQ 5 - Composing messages
1756@end ifnottex
1757@subsubheading Question 5.9:
1758
1759 Sometimes I accidentally hit r instead of f in
1760 newsgroups. Can Gnus warn me, when I'm replying by mail in
1761 newsgroups?
1762
1763 1558
1764Answer: 1559in ~/.gnus.el.
1765 1560
1766 Put this in ~/.gnus: 1561@node [5.9]
1767 1562@subsubheading Question 5.9
1563
1564Sometimes I accidentally hit r instead of f in
1565newsgroups. Can Gnus warn me, when I'm replying by mail in
1566newsgroups?
1567
1568@subsubheading Answer
1569
1570Put this in ~/.gnus.el:
1768 1571
1769@example 1572@example
1770(setq gnus-confirm-mail-reply-to-news t) 1573(setq gnus-confirm-mail-reply-to-news t)
1771@end example 1574@end example
1772
1773@noindent 1575@noindent
1774 if you already use Gnus 5.10, if you still use 5.8.8 or 1576
1775 5.9 try this instead: 1577if you already use Gnus 5.10, if you still use 5.8.8 or
1776 15785.9 try this instead:
1777 1579
1778@example 1580@example
1779(eval-after-load "gnus-msg" 1581(eval-after-load "gnus-msg"
@@ -1785,44 +1587,37 @@ Answer:
1785 (y-or-n-p "Really reply by mail to article author? ")) 1587 (y-or-n-p "Really reply by mail to article author? "))
1786 ad-do-it)))) 1588 ad-do-it))))
1787@end example 1589@end example
1788 1590@noindent
1789@ifnottex
1790@node [5.10], [5.11], [5.9], FAQ 5 - Composing messages
1791@end ifnottex
1792@subsubheading Question 5.10:
1793 1591
1794 How to tell Gnus not to generate a sender header? 1592@node [5.10]
1795 1593@subsubheading Question 5.10
1796 1594
1797Answer: 1595How to tell Gnus not to generate a sender header?
1798 1596
1799 Since 5.10 Gnus doesn't generate a sender header by 1597@subsubheading Answer
1800 default. For older Gnus' try this in ~/.gnus: 1598
1801 1599Since 5.10 Gnus doesn't generate a sender header by
1600default. For older Gnus' try this in ~/.gnus.el:
1802 1601
1803@example 1602@example
1804(eval-after-load "message" 1603(eval-after-load "message"
1805 '(add-to-list 'message-syntax-checks '(sender . disabled))) 1604 '(add-to-list 'message-syntax-checks '(sender . disabled)))
1806@end example 1605@end example
1807 1606@noindent
1808
1809@ifnottex
1810@node [5.11], [5.12], [5.10], FAQ 5 - Composing messages
1811@end ifnottex
1812@subsubheading Question 5.11:
1813 1607
1814 I want gnus to locally store copies of my send mail and 1608@node [5.11]
1815 news, how to do it? 1609@subsubheading Question 5.11
1816
1817 1610
1818Answer: 1611I want Gnus to locally store copies of my send mail and
1612news, how to do it?
1819 1613
1820 You must set the variable gnus-message-archive-group to do 1614@subsubheading Answer
1821 this. You can set it to a string giving the name of the 1615
1822 group where the copies shall go or like in the example 1616You must set the variable gnus-message-archive-group to do
1823 below use a function which is evaluated and which returns 1617this. You can set it to a string giving the name of the
1824 the group to use. 1618group where the copies shall go or like in the example
1825 1619below use a function which is evaluated and which returns
1620the group to use.
1826 1621
1827@example 1622@example
1828(setq gnus-message-archive-group 1623(setq gnus-message-archive-group
@@ -1830,31 +1625,31 @@ Answer:
1830 "nnml:Send-News" 1625 "nnml:Send-News"
1831 "nnml:Send-Mail"))) 1626 "nnml:Send-Mail")))
1832@end example 1627@end example
1833 1628@noindent
1834
1835@ifnottex
1836@node [5.12], , [5.11], FAQ 5 - Composing messages
1837@end ifnottex
1838@subsubheading Question 5.12:
1839 1629
1840 People tell me my Message-IDs are not correct, why 1630@node [5.12]
1841 aren't they and how to fix it? 1631@subsubheading Question 5.12
1842 1632
1633People tell me my Message-IDs are not correct, why
1634aren't they and how to fix it?
1843 1635
1844Answer: 1636@subsubheading Answer
1637
1638The message-ID is an unique identifier for messages you
1639send. To make it unique, Gnus need to know which machine
1640name to put after the "@@". If the name of the machine
1641where Gnus is running isn't suitable (it probably isn't
1642at most private machines) you can tell Gnus what to use
1643by saying:
1845 1644
1846 The message-ID is an unique identifier for messages you
1847 send. To make it unique, Gnus need to know which machine
1848 name to put after the "@@". If the name of the machine
1849 where Gnus is running isn't suitable (it probably isn't
1850 at most private machines) you can tell Gnus what to use
1851 by saying
1852@example 1645@example
1853(setq message-user-fqdn "yourmachine.yourdomain.tld") 1646(setq message-user-fqdn "yourmachine.yourdomain.tld")
1854@end example 1647@end example
1855@noindent 1648@noindent
1856 in ~/.gnus. If you use Gnus 5.9 or ealier, you can use this 1649
1857instead (works for newer versions a well): 1650in ~/.gnus.el. If you use Gnus 5.9 or ealier, you can use this
1651instead (works for newer versions a well):
1652
1858@example 1653@example
1859(eval-after-load "message" 1654(eval-after-load "message"
1860 '(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this! 1655 '(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this!
@@ -1865,110 +1660,97 @@ instead (works for newer versions a well):
1865 "Return user's fully qualified domain name." 1660 "Return user's fully qualified domain name."
1866 fqdn)))) 1661 fqdn))))
1867@end example 1662@end example
1663@noindent
1868 1664
1869 If you have no idea what to insert for 1665If you have no idea what to insert for
1870 "yourmachine.yourdomain.tld", you've got several 1666"yourmachine.yourdomain.tld", you've got several
1871 choices. You can either ask your provider if he allows 1667choices. You can either ask your provider if he allows
1872 you to use something like 1668you to use something like
1873 yourUserName.userfqdn.provider.net, or you can use 1669yourUserName.userfqdn.provider.net, or you can use
1874 somethingUnique.yourdomain.tld if you own the domain 1670somethingUnique.yourdomain.tld if you own the domain
1875 yourdomain.tld, or you can register at a service which 1671yourdomain.tld, or you can register at a service which
1876 gives private users a FQDN for free, e.g. 1672gives private users a FQDN for free, e.g.
1877 @uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}. 1673@uref{http://www.stura.tu-freiberg.de/~dlx/addfqdn.html}.
1878 (Sorry but this website is in German, if you know of an 1674(Sorry but this website is in German, if you know of an
1879 English one offering the same, drop me a note). 1675English one offering the same, drop me a note).
1880 1676
1881 1677Finally you can tell Gnus not to generate a Message-ID
1882 Finally you can tell Gnus not to generate a Message-ID 1678for News at all (and letting the server do the job) by saying
1883 for News at all (and letting the server do the job) by saying
1884
1885 1679
1886@example 1680@example
1887(setq message-required-news-headers 1681(setq message-required-news-headers
1888 (remove' Message-ID message-required-news-headers)) 1682 (remove' Message-ID message-required-news-headers))
1889@end example 1683@end example
1890
1891@noindent 1684@noindent
1892 you can also tell Gnus not to generate Message-IDs for mail by saying 1685
1893 1686you can also tell Gnus not to generate Message-IDs for mail by saying
1894 1687
1895@example 1688@example
1896(setq message-required-mail-headers 1689(setq message-required-mail-headers
1897 (remove' Message-ID message-required-mail-headers)) 1690 (remove' Message-ID message-required-mail-headers))
1898@end example 1691@end example
1899
1900@noindent 1692@noindent
1901 , however some mail servers don't generate proper
1902 Message-IDs, too, so test if your Mail Server behaves
1903 correctly by sending yourself a Mail and looking at the Message-ID.
1904
1905 1693
1906@ifnottex 1694, however some mail servers don't generate proper
1907@node FAQ 6 - Old messages, FAQ 7 - Gnus in a dial-up environment, FAQ 5 - Composing messages, Frequently Asked Questions 1695Message-IDs, too, so test if your Mail Server behaves
1908@end ifnottex 1696correctly by sending yourself a Mail and looking at the Message-ID.
1697
1698@node FAQ 6 - Old messages
1909@subsection Old messages 1699@subsection Old messages
1910 1700
1911@menu 1701@menu
1912* [6.1]:: How to import my old mail into Gnus? 1702* [6.1]:: How to import my old mail into Gnus?
1913* [6.2]:: How to archive interesting messages? 1703* [6.2]:: How to archive interesting messages?
1914* [6.3]:: How to search for a specific message? 1704* [6.3]:: How to search for a specific message?
1915* [6.4]:: How to get rid of old unwanted mail? 1705* [6.4]:: How to get rid of old unwanted mail?
1916* [6.5]:: I want that all read messages are expired (at least in some 1706* [6.5]:: I want that all read messages are expired (at least in some
1917 groups). How to do it? 1707 groups). How to do it?
1918* [6.6]:: I don't want expiration to delete my mails but to move them 1708* [6.6]:: I don't want expiration to delete my mails but to move them
1919 to another group. 1709 to another group.
1920@end menu 1710@end menu
1921 1711
1922@ifnottex 1712@node [6.1]
1923@node [6.1], [6.2], FAQ 6 - Old messages, FAQ 6 - Old messages 1713@subsubheading Question 6.1
1924@end ifnottex 1714
1925@subsubheading Question 6.1: 1715How to import my old mail into Gnus?
1926 1716
1927 How to import my old mail into Gnus? 1717@subsubheading Answer
1928 1718
1929 1719The easiest way is to tell your old mail program to
1930Answer: 1720export the messages in mbox format. Most Unix mailers
1931 1721are able to do this, if you come from the MS Windows
1932 The easiest way is to tell your old mail program to 1722world, you may find tools at
1933 export the messages in mbox format. Most Unix mailers 1723@uref{http://mbx2mbox.sourceforge.net/}.
1934 are able to do this, if you come from the MS Windows 1724
1935 world, you may find tools at 1725Now you've got to import this mbox file into Gnus. To do
1936 @uref{http://mbx2mbox.sourceforge.net/}. 1726this, create a nndoc group based on the mbox file by
1937 1727saying @samp{G f /path/file.mbox RET} in
1938 1728Group buffer. You now have read-only access to your
1939 Now you've got to import this mbox file into Gnus. To do 1729mail. If you want to import the messages to your normal
1940 this, create a nndoc group based on the mbox file by 1730Gnus mail groups hierarchy, enter the nndoc group you've
1941 saying @samp{G f /path/file.mbox RET} in 1731just created by saying @samp{C-u RET}
1942 Group buffer. You now have read-only access to your 1732(thus making sure all messages are retrieved), mark all
1943 mail. If you want to import the messages to your normal 1733messages by saying @samp{M P b} and
1944 Gnus mail groups hierarchy, enter the nndoc group you've 1734either copy them to the desired group by saying
1945 just created by saying @samp{C-u RET} 1735@samp{B c name.of.group RET} or send them
1946 (thus making sure all messages are retrieved), mark all 1736through nnmail-split-methods (respool them) by saying
1947 messages by saying @samp{M P b} and 1737@samp{B r}.
1948 either copy them to the desired group by saying 1738
1949 @samp{B c name.of.group RET} or send them 1739@node [6.2]
1950 through nnmail-split-methods (respool them) by saying 1740@subsubheading Question 6.2
1951 @samp{B r}. 1741
1952 1742How to archive interesting messages?
1953@ifnottex 1743
1954@node [6.2], [6.3], [6.1], FAQ 6 - Old messages 1744@subsubheading Answer
1955@end ifnottex 1745
1956@subsubheading Question 6.2: 1746If you stumble across an interesting message, say in
1957 1747gnu.emacs.gnus and want to archive it there are several
1958 How to archive interesting messages? 1748solutions. The first and easiest is to save it to a file
1959 1749by saying @samp{O f}. However, wouldn't
1960 1750it be much more convenient to have more direct access to
1961Answer: 1751the archived message from Gnus? If you say yes, put this
1962 1752snippet by Frank Haun <pille3003@@fhaun.de> in
1963 If you stumble across an interesting message, say in 1753~/.gnus.el:
1964 gnu.emacs.gnus and want to archive it there are several
1965 solutions. The first and easiest is to save it to a file
1966 by saying @samp{O f}. However, wouldn't
1967 it be much more convenient to have more direct access to
1968 the archived message from Gnus? If you say yes, put this
1969 snippet by Frank Haun <pille3003@@fhaun.de> in
1970 ~/.gnus:
1971
1972 1754
1973@example 1755@example
1974(defun my-archive-article (&optional n) 1756(defun my-archive-article (&optional n)
@@ -1987,624 +1769,531 @@ more then one article."
1987 (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name))))) 1769 (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name)))))
1988 (gnus-summary-copy-article n archive-name))) 1770 (gnus-summary-copy-article n archive-name)))
1989@end example 1771@end example
1990
1991@noindent 1772@noindent
1992 You can now say @samp{M-x
1993 my-archive-article} in summary buffer to
1994 archive the article under the cursor in a nnml
1995 group. (Change nnml to your preferred back end)
1996
1997 1773
1998 Of course you can also make sure the cache is enabled by saying 1774You can now say @samp{M-x
1999 1775my-archive-article} in summary buffer to
1776archive the article under the cursor in a nnml
1777group. (Change nnml to your preferred back end)
1778
1779Of course you can also make sure the cache is enabled by saying
2000 1780
2001@example 1781@example
2002(setq gnus-use-cache t) 1782(setq gnus-use-cache t)
2003@end example 1783@end example
2004
2005@noindent 1784@noindent
2006 then you only have to set either the tick or the dormant
2007 mark for articles you want to keep, setting the read
2008 mark will remove them from cache.
2009
2010@ifnottex
2011@node [6.3], [6.4], [6.2], FAQ 6 - Old messages
2012@end ifnottex
2013@subsubheading Question 6.3:
2014
2015 How to search for a specific message?
2016
2017
2018Answer:
2019
2020 There are several ways for this, too. For a posting from
2021 a Usenet group the easiest solution is probably to ask
2022 @uref{http://groups.google.com,groups.google.com},
2023 if you found the posting there, tell Google to display
2024 the raw message, look for the message-id, and say
2025 @samp{M-^ the@@message.id RET} in a
2026 summary buffer.
2027 Since Gnus 5.10 there's also a Gnus interface for
2028 groups.google.com which you can call with
2029 @samp{G W}) in group buffer.
2030
2031
2032 Another idea which works for both mail and news groups
2033 is to enter the group where the message you are
2034 searching is and use the standard Emacs search
2035 @samp{C-s}, it's smart enough to look at
2036 articles in collapsed threads, too. If you want to
2037 search bodies, too try @samp{M-s}
2038 instead. Further on there are the
2039 gnus-summary-limit-to-foo functions, which can help you,
2040 too.
2041
2042 1785
2043 Of course you can also use grep to search through your 1786then you only have to set either the tick or the dormant
2044 local mail, but this is both slow for big archives and 1787mark for articles you want to keep, setting the read
2045 inconvenient since you are not displaying the found mail 1788mark will remove them from cache.
2046 in Gnus. Here comes nnir into action. Nnir is a front end 1789
2047 to search engines like swish-e or swish++ and 1790@node [6.3]
2048 others. You index your mail with one of those search 1791@subsubheading Question 6.3
2049 engines and with the help of nnir you can search trough 1792
2050 the indexed mail and generate a temporary group with all 1793How to search for a specific message?
2051 messages which met your search criteria. If this sound 1794
2052 cool to you get nnir.el from the contrib directory of the Gnus 1795@subsubheading Answer
2053 distribution or 1796
2054 @uref{http://quimby.gnus.org/cgi-bin/cvsweb.cgi/~checkout~/gnus/contrib/nnir.el?rev=HEAD&content-type=text/plain} 1797There are several ways for this, too. For a posting from
2055 Instructions on how to use it are at the top of the file. 1798a Usenet group the easiest solution is probably to ask
2056 1799@uref{http://groups.google.com, groups.google.com},
2057@ifnottex 1800if you found the posting there, tell Google to display
2058@node [6.4], [6.5], [6.3], FAQ 6 - Old messages 1801the raw message, look for the message-id, and say
2059@end ifnottex 1802@samp{M-^ the@@message.id RET} in a
2060@subsubheading Question 6.4: 1803summary buffer.
2061 1804Since Gnus 5.10 there's also a Gnus interface for
2062 How to get rid of old unwanted mail? 1805groups.google.com which you can call with
2063 1806@samp{G W}) in group buffer.
2064 1807
2065Answer: 1808Another idea which works for both mail and news groups
2066 1809is to enter the group where the message you are
2067 You can of course just mark the mail you don't need 1810searching is and use the standard Emacs search
2068 anymore by saying @samp{#} with point 1811@samp{C-s}, it's smart enough to look at
2069 over the mail and then say @samp{B DEL} 1812articles in collapsed threads, too. If you want to
2070 to get rid of them forever. You could also instead of 1813search bodies, too try @samp{M-s}
2071 actually deleting them, send them to a junk-group by 1814instead. Further on there are the
2072 saying @samp{B m nnml:trash-bin} which 1815gnus-summary-limit-to-foo functions, which can help you,
2073 you clear from time to time, but both are not the intended 1816too.
2074 way in Gnus. 1817
2075 1818Of course you can also use grep to search through your
2076 1819local mail, but this is both slow for big archives and
2077 In Gnus, we let mail expire like news expires on a news 1820inconvenient since you are not displaying the found mail
2078 server. That means you tell Gnus the message is 1821in Gnus. Here comes nnir into action. Nnir is a front end
2079 expirable (you tell Gnus "I don't need this mail 1822to search engines like swish-e or swish++ and
2080 anymore") by saying @samp{E} with point 1823others. You index your mail with one of those search
2081 over the mail in summary buffer. Now when you leave the 1824engines and with the help of nnir you can search trough
2082 group, Gnus looks at all messages which you marked as 1825the indexed mail and generate a temporary group with all
2083 expirable before and if they are old enough (default is 1826messages which met your search criteria. If this sound
2084 older than a week) they are deleted. 1827cool to you get nnir.el from
2085 1828@uref{ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/}
2086@ifnottex 1829or @uref{ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/}.
2087@node [6.5], [6.6], [6.4], FAQ 6 - Old messages 1830Instructions on how to use it are at the top of the file.
2088@end ifnottex 1831
2089@subsubheading Question 6.5: 1832@node [6.4]
2090 1833@subsubheading Question 6.4
2091 I want that all read messages are expired (at least in 1834
2092 some groups). How to do it? 1835How to get rid of old unwanted mail?
2093 1836
2094 1837@subsubheading Answer
2095Answer: 1838
2096 1839You can of course just mark the mail you don't need
2097 If you want all read messages to be expired (e.g. in 1840anymore by saying @samp{#} with point
2098 mailing lists where there's an online archive), you've 1841over the mail and then say @samp{B DEL}
2099 got two choices: auto-expire and 1842to get rid of them forever. You could also instead of
2100 total-expire. Auto-expire means, that every article 1843actually deleting them, send them to a junk-group by
2101 which has no marks set and is selected for reading is 1844saying @samp{B m nnml:trash-bin} which
2102 marked as expirable, Gnus hits @samp{E} 1845you clear from time to time, but both are not the intended
2103 for you every time you read a message. Total-expire 1846way in Gnus.
2104 follows a slightly different approach, here all article 1847
2105 where the read mark is set are expirable. 1848In Gnus, we let mail expire like news expires on a news
2106 1849server. That means you tell Gnus the message is
2107 1850expirable (you tell Gnus "I don't need this mail
2108 To activate auto-expire, include auto-expire in the 1851anymore") by saying @samp{E} with point
2109 Group parameters for the group. (Hit @samp{G 1852over the mail in summary buffer. Now when you leave the
2110 c} in summary buffer with point over the 1853group, Gnus looks at all messages which you marked as
2111 group to change group parameters). For total-expire add 1854expirable before and if they are old enough (default is
2112 total-expire to the group-parameters. 1855older than a week) they are deleted.
2113 1856
2114 1857@node [6.5]
2115 Which method you choose is merely a matter of taste: 1858@subsubheading Question 6.5
2116 Auto-expire is faster, but it doesn't play together with 1859
2117 Adaptive Scoring, so if you want to use this feature, 1860I want that all read messages are expired (at least in
2118 you should use total-expire. 1861some groups). How to do it?
2119 1862
2120 1863@subsubheading Answer
2121 If you want a message to be excluded from expiration in 1864
2122 a group where total or auto expire is active, set either 1865If you want all read messages to be expired (e.g. in
2123 tick (hit @samp{u}) or dormant mark (hit 1866mailing lists where there's an online archive), you've
2124 @samp{u}), when you use auto-expire, you 1867got two choices: auto-expire and
2125 can also set the read mark (hit 1868total-expire. Auto-expire means, that every article
2126 @samp{d}). 1869which has no marks set and is selected for reading is
2127 1870marked as expirable, Gnus hits @samp{E}
2128@ifnottex 1871for you every time you read a message. Total-expire
2129@node [6.6], , [6.5], FAQ 6 - Old messages 1872follows a slightly different approach, here all article
2130@end ifnottex 1873where the read mark is set are expirable.
2131@subsubheading Question 6.6: 1874
2132 1875To activate auto-expire, include auto-expire in the
2133 I don't want expiration to delete my mails but to move them 1876Group parameters for the group. (Hit @samp{G
2134 to another group. 1877c} in summary buffer with point over the
2135 1878group to change group parameters). For total-expire add
2136 1879total-expire to the group-parameters.
2137Answer: 1880
2138 1881Which method you choose is merely a matter of taste:
2139 Say something like this in ~/.gnus: 1882Auto-expire is faster, but it doesn't play together with
2140 1883Adaptive Scoring, so if you want to use this feature,
1884you should use total-expire.
1885
1886If you want a message to be excluded from expiration in
1887a group where total or auto expire is active, set either
1888tick (hit @samp{u}) or dormant mark (hit
1889@samp{u}), when you use auto-expire, you
1890can also set the read mark (hit
1891@samp{d}).
1892
1893@node [6.6]
1894@subsubheading Question 6.6
1895
1896I don't want expiration to delete my mails but to move them
1897to another group.
1898
1899@subsubheading Answer
1900
1901Say something like this in ~/.gnus.el:
2141 1902
2142@example 1903@example
2143(setq nnmail-expiry-target "nnml:expired") 1904(setq nnmail-expiry-target "nnml:expired")
2144@end example 1905@end example
2145
2146@noindent 1906@noindent
2147 (If you want to change the value of nnmail-expiry-target
2148 on a per group basis see the question "How can I disable
2149 threading in some (e.g. mail-) groups, or set other
2150 variables specific for some groups?")
2151
2152 1907
2153@ifnottex 1908(If you want to change the value of nnmail-expiry-target
2154@node FAQ 7 - Gnus in a dial-up environment, FAQ 8 - Getting help, FAQ 6 - Old messages, Frequently Asked Questions 1909on a per group basis see the question "How can I disable
2155@end ifnottex 1910threading in some (e.g. mail-) groups, or set other
1911variables specific for some groups?")
1912
1913@node FAQ 7 - Gnus in a dial-up environment
2156@subsection Gnus in a dial-up environment 1914@subsection Gnus in a dial-up environment
2157 1915
2158@menu 1916@menu
2159* [7.1]:: I don't have a permanent connection to the net, how can I 1917* [7.1]:: I don't have a permanent connection to the net, how can I
2160 minimize the time I've got to be connected? 1918 minimize the time I've got to be connected?
2161* [7.2]:: So what was this thing about the Agent? 1919* [7.2]:: So what was this thing about the Agent?
2162* [7.3]:: I want to store article bodies on disk, too. How to do it? 1920* [7.3]:: I want to store article bodies on disk, too. How to do it?
2163* [7.4]:: How to tell Gnus not to try to send mails / postings while 1921* [7.4]:: How to tell Gnus not to try to send mails / postings while
2164 I'm offline? 1922 I'm offline?
2165@end menu 1923@end menu
2166 1924
2167 1925@node [7.1]
2168@ifnottex 1926@subsubheading Question 7.1
2169@node [7.1], [7.2], FAQ 7 - Gnus in a dial-up environment, FAQ 7 - Gnus in a dial-up environment 1927
2170@end ifnottex 1928I don't have a permanent connection to the net, how can
2171@subsubheading Question 7.1: 1929I minimize the time I've got to be connected?
2172 1930
2173 I don't have a permanent connection to the net, how can 1931@subsubheading Answer
2174 I minimize the time I've got to be connected? 1932
2175 1933You've got basically two options: Either you use the
2176 1934Gnus Agent (see below) for this, or you can install
2177Answer: 1935programs which fetch your news and mail to your local
2178 1936disk and Gnus reads the stuff from your local
2179 You've got basically two options: Either you use the 1937machine.
2180 Gnus Agent (see below) for this, or you can install 1938
2181 programs which fetch your news and mail to your local 1939If you want to follow the second approach, you need a
2182 disk and Gnus reads the stuff from your local 1940program which fetches news and offers them to Gnus, a
2183 machine. 1941program which does the same for mail and a program which
2184 1942receives the mail you write from Gnus and sends them
2185 1943when you're online.
2186 If you want to follow the second approach, you need a 1944
2187 program which fetches news and offers them to Gnus, a 1945Let's talk about Unix systems first: For the news part,
2188 program which does the same for mail and a program which 1946the easiest solution is a small nntp server like
2189 receives the mail you write from Gnus and sends them 1947@uref{http://www.leafnode.org/, Leafnode} or
2190 when you're online. 1948@uref{http://infa.abo.fi/~patrik/sn/, sn},
2191 1949of course you can also install a full featured news
2192 1950server like
2193Let's talk about Unix systems first: For the news part, the easiest 1951@uref{http://www.isc.org/products/INN/, inn}.
2194solution is a small nntp server like 1952Then you want to fetch your Mail, popular choices
2195@uref{http://www.leafnode.org/,Leafnode} or 1953are @uref{http://www.catb.org/~esr/fetchmail/, fetchmail}
2196@uref{http://infa.abo.fi/~patrik/sn/,sn}, of course you can also 1954and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/, getmail}.
2197install a full featured news server like 1955You should tell those to write the mail to your disk and
2198@uref{http://www.isc.org/products/INN/,inn}. 1956Gnus to read it from there. Last but not least the mail
2199 1957sending part: This can be done with every MTA like
2200Then you want to fetch your Mail, popular choices are 1958@uref{http://www.sendmail.org/, sendmail},
2201@itemize @bullet 1959@uref{http://www.qmail.org/, postfix},
2202@item 1960@uref{http://www.exim.org/, exim} or
2203@uref{http://www.catb.org/~esr/fetchmail/,fetchmail} and 1961@uref{http://www.qmail.org/, qmail}.
2204@item 1962
2205@uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/,getmail}. 1963On windows boxes I'd vote for
2206@end itemize 1964@uref{http://www.tglsoft.de/, Hamster},
2207You should tell those to write the mail to your disk and Gnus to read 1965it's a small freeware, open-source program which fetches
2208it from there. Last but not least the mail sending part: This can be 1966your mail and news from remote servers and offers them
2209done with every MTA like @uref{http://www.sendmail.org/,sendmail}, 1967to Gnus (or any other mail and/or news reader) via nntp
2210@uref{http://www.qmail.org/,postfix}, @uref{http://www.exim.org/,exim} 1968respectively POP3 or IMAP. It also includes a smtp
2211or @uref{http://www.qmail.org/,qmail}. 1969server for receiving mails from Gnus.
2212 1970
2213 1971@node [7.2]
2214 On windows boxes I'd vote for 1972@subsubheading Question 7.2
2215 @uref{http://www.tglsoft.de/,Hamster}, 1973
2216 it's a small freeware, open-source program which fetches 1974So what was this thing about the Agent?
2217 your mail and news from remote servers and offers them 1975
2218 to Gnus (or any other mail and/or news reader) via nntp 1976@subsubheading Answer
2219 respectively POP3 or IMAP. It also includes a smtp 1977
2220 server for receiving mails from Gnus. 1978The Gnus agent is part of Gnus, it allows you to fetch
2221 1979mail and news and store them on disk for reading them
2222@ifnottex 1980later when you're offline. It kind of mimics offline
2223@node [7.2], [7.3], [7.1], FAQ 7 - Gnus in a dial-up environment 1981newsreaders like e.g. Forte Agent. If you want to use
2224@end ifnottex 1982the Agent place the following in ~/.gnus.el if you are
2225@subsubheading Question 7.2: 1983still using 5.8.8 or 5.9 (it's the default since 5.10):
2226
2227 So what was this thing about the Agent?
2228
2229
2230Answer:
2231
2232 The Gnus agent is part of Gnus, it allows you to fetch
2233 mail and news and store them on disk for reading them
2234 later when you're offline. It kind of mimics offline
2235 newsreaders like e.g. Forte Agent. If you want to use
2236 the Agent place the following in ~/.gnus if you are
2237 still using 5.8.8 or 5.9 (it's the default since 5.10):
2238
2239 1984
2240@example 1985@example
2241(setq gnus-agent t) 1986(setq gnus-agent t)
2242@end example 1987@end example
2243 1988@noindent
2244 1989
2245 Now you've got to select the servers whose groups can be 1990Now you've got to select the servers whose groups can be
2246 stored locally. To do this, open the server buffer 1991stored locally. To do this, open the server buffer
2247 (that is press @samp{^} while in the 1992(that is press @samp{^} while in the
2248 group buffer). Now select a server by moving point to 1993group buffer). Now select a server by moving point to
2249 the line naming that server. Finally, agentize the 1994the line naming that server. Finally, agentize the
2250 server by typing @samp{J a}. If you 1995server by typing @samp{J a}. If you
2251 make a mistake, or change your mind, you can undo this 1996make a mistake, or change your mind, you can undo this
2252 action by typing @samp{J r}. When 1997action by typing @samp{J r}. When
2253 you're done, type 'q' to return to the group buffer. 1998you're done, type 'q' to return to the group buffer.
2254 Now the next time you enter a group on a agentized 1999Now the next time you enter a group on a agentized
2255 server, the headers will be stored on disk and read from 2000server, the headers will be stored on disk and read from
2256 there the next time you enter the group. 2001there the next time you enter the group.
2257 2002
2258@ifnottex 2003@node [7.3]
2259@node [7.3], [7.4], [7.2], FAQ 7 - Gnus in a dial-up environment 2004@subsubheading Question 7.3
2260@end ifnottex 2005
2261@subsubheading Question 7.3: 2006I want to store article bodies on disk, too. How to do it?
2007
2008@subsubheading Answer
2009
2010You can tell the agent to automatically fetch the bodies
2011of articles which fulfill certain predicates, this is
2012done in a special buffer which can be reached by
2013saying @samp{J c} in group
2014buffer. Please refer to the documentation for
2015information which predicates are possible and how
2016exactly to do it.
2017
2018Further on you can tell the agent manually which
2019articles to store on disk. There are two ways to do
2020this: Number one: In the summary buffer, process mark a
2021set of articles that shall be stored in the agent by
2022saying @samp{#} with point over the
2023article and then type @samp{J s}. The
2024other possibility is to set, again in the summary
2025buffer, downloadable (%) marks for the articles you
2026want by typing @samp{@@} with point over
2027the article and then typing @samp{J u}.
2028What's the difference? Well, process marks are erased as
2029soon as you exit the summary buffer while downloadable
2030marks are permanent. You can actually set downloadable
2031marks in several groups then use fetch session ('J s' in
2032the GROUP buffer) to fetch all of those articles. The
2033only downside is that fetch session also fetches all of
2034the headers for every selected group on an agentized
2035server. Depending on the volume of headers, the initial
2036fetch session could take hours.
2037
2038@node [7.4]
2039@subsubheading Question 7.4
2040
2041How to tell Gnus not to try to send mails / postings
2042while I'm offline?
2043
2044@subsubheading Answer
2045
2046All you've got to do is to tell Gnus when you are online
2047(plugged) and when you are offline (unplugged), the rest
2048works automatically. You can toggle plugged/unplugged
2049state by saying @samp{J j} in group
2050buffer. To start Gnus unplugged say @samp{M-x
2051gnus-unplugged} instead of
2052@samp{M-x gnus}. Note that for this to
2053work, the agent must be active.
2054
2055@node FAQ 8 - Getting help
2056@subsection Getting help
2262 2057
2263 I want to store article bodies on disk, too. How to do it? 2058@menu
2264 2059* [8.1]:: How to find information and help inside Emacs?
2060* [8.2]:: I can't find anything in the Gnus manual about X (e.g.
2061 attachments, PGP, MIME...), is it not documented?
2062* [8.3]:: Which websites should I know?
2063* [8.4]:: Which mailing lists and newsgroups are there?
2064* [8.5]:: Where to report bugs?
2065* [8.6]:: I need real-time help, where to find it?
2066@end menu
2265 2067
2266Answer: 2068@node [8.1]
2069@subsubheading Question 8.1
2267 2070
2268 You can tell the agent to automatically fetch the bodies 2071How to find information and help inside Emacs?
2269 of articles which fulfill certain predicates, this is
2270 done in a special buffer which can be reached by
2271 saying @samp{J c} in group
2272 buffer. Please refer to the documentation for
2273 information which predicates are possible and how
2274 exactly to do it.
2275
2276 2072
2277 Further on you can tell the agent manually which 2073@subsubheading Answer
2278 articles to store on disk. There are two ways to do
2279 this: Number one: In the summary buffer, process mark a
2280 set of articles that shall be stored in the agent by
2281 saying @samp{#} with point over the
2282 article and then type @samp{J s}. The
2283 other possibility is to set, again in the summary
2284 buffer, downloadable (%) marks for the articles you
2285 want by typing @samp{@@} with point over
2286 the article and then typing @samp{J u}.
2287 What's the difference? Well, process marks are erased as
2288 soon as you exit the summary buffer while downloadable
2289 marks are permanent. You can actually set downloadable
2290 marks in several groups then use fetch session ('J s' in
2291 the GROUP buffer) to fetch all of those articles. The
2292 only downside is that fetch session also fetches all of
2293 the headers for every selected group on an agentized
2294 server. Depending on the volume of headers, the initial
2295 fetch session could take hours.
2296
2297@ifnottex
2298@node [7.4], , [7.3], FAQ 7 - Gnus in a dial-up environment
2299@end ifnottex
2300@subsubheading Question 7.4:
2301 2074
2302 How to tell Gnus not to try to send mails / postings 2075The first stop should be the Gnus manual (Say
2303 while I'm offline? 2076@samp{C-h i d m Gnus RET} to start the
2304 2077Gnus manual, then walk through the menus or do a
2078full-text search with @samp{s}). Then
2079there are the general Emacs help commands starting with
2080C-h, type @samp{C-h ? ?} to get a list
2081of all available help commands and their meaning. Finally
2082@samp{M-x apropos-command} lets you
2083search through all available functions and @samp{M-x
2084apropos} searches the bound variables.
2305 2085
2306Answer: 2086@node [8.2]
2087@subsubheading Question 8.2
2307 2088
2308 All you've got to do is to tell Gnus when you are online 2089I can't find anything in the Gnus manual about X
2309 (plugged) and when you are offline (unplugged), the rest 2090(e.g. attachments, PGP, MIME...), is it not documented?
2310 works automatically. You can toggle plugged/unplugged
2311 state by saying @samp{J j} in group
2312 buffer. To start Gnus unplugged say @samp{M-x
2313 gnus-unplugged} instead of
2314 @samp{M-x gnus}. Note that for this to
2315 work, the agent must be active.
2316
2317 2091
2318@ifnottex 2092@subsubheading Answer
2319@node FAQ 8 - Getting help, FAQ 9 - Tuning Gnus, FAQ 7 - Gnus in a dial-up environment, Frequently Asked Questions
2320@end ifnottex
2321@subsection Getting help
2322 2093
2323@menu 2094There's not only the Gnus manual but also the manuals
2324* [8.1]:: How to find information and help inside Emacs? 2095for message, emacs-mime, sieve and pgg. Those packages
2325* [8.2]:: I can't find anything in the Gnus manual about X 2096are distributed with Gnus and used by Gnus but aren't
2326 (e.g. attachments, PGP, MIME...), is it not documented? 2097really part of core Gnus, so they are documented in
2327* [8.3]:: Which websites should I know? 2098different info files, you should have a look in those
2328* [8.4]:: Which mailing lists and newsgroups are there? 2099manuals, too.
2329* [8.5]:: Where to report bugs?
2330* [8.6]:: I need real-time help, where to find it?
2331@end menu
2332 2100
2333@ifnottex 2101@node [8.3]
2334@node [8.1], [8.2], FAQ 8 - Getting help, FAQ 8 - Getting help 2102@subsubheading Question 8.3
2335@end ifnottex
2336@subsubheading Question 8.1:
2337 2103
2338 How to find information and help inside Emacs? 2104Which websites should I know?
2339
2340 2105
2341Answer: 2106@subsubheading Answer
2342
2343 The first stop should be the Gnus manual (Say
2344 @samp{C-h i d m Gnus RET} to start the
2345 Gnus manual, then walk through the menus or do a
2346 full-text search with @samp{s}). Then
2347 there are the general Emacs help commands starting with
2348 C-h, type @samp{C-h ? ?} to get a list
2349 of all available help commands and their meaning. Finally
2350 @samp{M-x apropos-command} lets you
2351 search through all available functions and @samp{M-x
2352 apropos} searches the bound variables.
2353
2354@ifnottex
2355@node [8.2], [8.3], [8.1], FAQ 8 - Getting help
2356@end ifnottex
2357@subsubheading Question 8.2:
2358 2107
2359 I can't find anything in the Gnus manual about X 2108The two most important ones are the
2360 (e.g. attachments, PGP, MIME...), is it not documented? 2109@uref{http://www.gnus.org, official Gnus website}.
2361 2110and it's sister site
2111@uref{http://my.gnus.org, my.gnus.org (MGO)},
2112hosting an archive of lisp snippets, howtos, a (not
2113really finished) tutorial and this FAQ.
2362 2114
2363Answer: 2115Tell me about other sites which are interesting.
2364 2116
2365 There's not only the Gnus manual but also the manuals 2117@node [8.4]
2366 for message, emacs-mime, sieve and pgg. Those packages 2118@subsubheading Question 8.4
2367 are distributed with Gnus and used by Gnus but aren't
2368 really part of core Gnus, so they are documented in
2369 different info files, you should have a look in those
2370 manuals, too.
2371
2372@ifnottex
2373@node [8.3], [8.4], [8.2], FAQ 8 - Getting help
2374@end ifnottex
2375@subsubheading Question 8.3:
2376 2119
2377 Which websites should I know? 2120Which mailing lists and newsgroups are there?
2378
2379 2121
2380Answer: 2122@subsubheading Answer
2381 2123
2382 The two most important ones are the 2124There's the newsgroup gnu.emacs.gnus (pull it from
2383 @uref{http://www.gnus.org,official Gnus website}. 2125e.g. news.gnus.org) which deals with general questions and the
2384 and it's sister site 2126ding mailing list (ding@@gnus.org) dealing with development of
2385 @uref{http://my.gnus.org,my.gnus.org (MGO)}, 2127Gnus. You can read the ding list via NNTP, too under the name
2386 hosting an archive of lisp snippets, howtos, a (not 2128gmane.emacs.gnus.general from news.gmane.org.
2387 really finished) tutorial and this FAQ.
2388
2389 2129
2390 Tell me about other sites which are interesting. 2130If you want to stay in the big8,
2391 2131news.software.newssreaders is also read by some Gnus
2392@ifnottex 2132users (but chances for qualified help are much better in
2393@node [8.4], [8.5], [8.3], FAQ 8 - Getting help 2133the above groups) and if you speak German, there's
2394@end ifnottex 2134de.comm.software.gnus.
2395@subsubheading Question 8.4:
2396 2135
2397 Which mailing lists and newsgroups are there? 2136@node [8.5]
2398 2137@subsubheading Question 8.5
2399 2138
2400Answer: 2139Where to report bugs?
2401 2140
2402 There's the newsgroup gnu.emacs.gnus (pull it from 2141@subsubheading Answer
2403 e.g. news.gnus.org) which deals with general questions
2404 and the ding mailing list (ding@@gnus.org) dealing with
2405 development of Gnus. You can read the ding list via
2406 NNTP, too under the name gnus.ding from news.gnus.org.
2407
2408 2142
2409 If you want to stay in the big8, 2143Say @samp{M-x gnus-bug}, this will start
2410 news.software.newssreaders is also read by some Gnus 2144a message to the
2411 users (but chances for qualified help are much better in 2145@email{bugs@@gnus.org, gnus bug mailing list}
2412 the above groups) and if you speak German, there's 2146including information about your environment which make
2413 de.comm.software.gnus. 2147it easier to help you.
2414
2415@ifnottex
2416@node [8.5], [8.6], [8.4], FAQ 8 - Getting help
2417@end ifnottex
2418@subsubheading Question 8.5:
2419 2148
2420 Where to report bugs? 2149@node [8.6]
2421 2150@subsubheading Question 8.6
2422 2151
2423Answer: 2152I need real-time help, where to find it?
2424 2153
2425Say @samp{M-x gnus-bug}, this will start a message to the 2154@subsubheading Answer
2426@email{bugs@@gnus.org,gnus bug mailing list} including information
2427about your environment which make it easier to help you.
2428
2429@ifnottex
2430@node [8.6], , [8.5], FAQ 8 - Getting help
2431@end ifnottex
2432@subsubheading Question 8.6:
2433 2155
2434 I need real-time help, where to find it? 2156Point your IRC client to irc.my.gnus.org channel
2435 2157#mygnus. Don't be afraid if people there speak German,
2436 2158they are willing and capable of switching to
2437Answer: 2159English when people from outside Germany enter.
2438
2439 Point your IRC client to irc.my.gnus.org channel
2440 #mygnus. Don't be afraid if people there speak German,
2441 they are willing and capable of switching to
2442 English when people from outside Germany enter.
2443
2444 2160
2445@ifnottex 2161@node FAQ 9 - Tuning Gnus
2446@node FAQ 9 - Tuning Gnus, FAQ - Glossary, FAQ 8 - Getting help, Frequently Asked Questions
2447@end ifnottex
2448@subsection Tuning Gnus 2162@subsection Tuning Gnus
2449 2163
2450@menu 2164@menu
2451* [9.1]:: Starting Gnus is really slow, how to speed it up? 2165* [9.1]:: Starting Gnus is really slow, how to speed it up?
2452* [9.2]:: How to speed up the process of entering a group? 2166* [9.2]:: How to speed up the process of entering a group?
2453* [9.3]:: Sending mail becomes slower and slower, what's up? 2167* [9.3]:: Sending mail becomes slower and slower, what's up?
2454@end menu 2168@end menu
2455 2169
2456@ifnottex 2170@node [9.1]
2457@node [9.1], [9.2], FAQ 9 - Tuning Gnus, FAQ 9 - Tuning Gnus 2171@subsubheading Question 9.1
2458@end ifnottex
2459@subsubheading Question 9.1:
2460 2172
2461 Starting Gnus is really slow, how to speed it up? 2173Starting Gnus is really slow, how to speed it up?
2462
2463 2174
2464Answer: 2175@subsubheading Answer
2465 2176
2466 The reason for this could be the way Gnus reads it's 2177The reason for this could be the way Gnus reads it's
2467 active file, see the node "The Active File" in the Gnus 2178active file, see the node "The Active File" in the Gnus
2468 manual for things you might try to speed the process up. 2179manual for things you might try to speed the process up.
2469 An other idea would be to byte compile your ~/.gnus (say 2180An other idea would be to byte compile your ~/.gnus.el (say
2470 @samp{M-x byte-compile-file RET ~/.gnus 2181@samp{M-x byte-compile-file RET ~/.gnus.el
2471 RET} to do it). Finally, if you have require 2182RET} to do it). Finally, if you have require
2472 statements in your .gnus, you could replace them with 2183statements in your .gnus, you could replace them with
2473 eval-after-load, which loads the stuff not at startup 2184eval-after-load, which loads the stuff not at startup
2474 time, but when it's needed. Say you've got this in your 2185time, but when it's needed. Say you've got this in your
2475 ~/.gnus: 2186~/.gnus.el:
2476
2477 2187
2478@example 2188@example
2479(require 'message) 2189(require 'message)
2480(add-to-list 'message-syntax-checks '(sender . disabled)) 2190(add-to-list 'message-syntax-checks '(sender . disabled))
2481@end example 2191@end example
2482
2483@noindent 2192@noindent
2484 then as soon as you start Gnus, message.el is loaded. If 2193
2485 you replace it with 2194then as soon as you start Gnus, message.el is loaded. If
2486 2195you replace it with
2487 2196
2488@example 2197@example
2489(eval-after-load "message" 2198(eval-after-load "message"
2490 '(add-to-list 'message-syntax-checks '(sender . disabled))) 2199 '(add-to-list 'message-syntax-checks '(sender . disabled)))
2491@end example 2200@end example
2492
2493@noindent 2201@noindent
2494 it's loaded when it's needed.
2495
2496@ifnottex
2497@node [9.2], [9.3], [9.1], FAQ 9 - Tuning Gnus
2498@end ifnottex
2499@subsubheading Question 9.2:
2500 2202
2501 How to speed up the process of entering a group? 2203it's loaded when it's needed.
2502
2503 2204
2504Answer: 2205@node [9.2]
2206@subsubheading Question 9.2
2505 2207
2506 A speed killer is setting the variable 2208How to speed up the process of entering a group?
2507 gnus-fetch-old-headers to anything different from nil, 2209
2508 so don't do this if speed is an issue. To speed up 2210@subsubheading Answer
2509 building of summary say 2211
2510 2212A speed killer is setting the variable
2213gnus-fetch-old-headers to anything different from nil,
2214so don't do this if speed is an issue. To speed up
2215building of summary say
2511 2216
2512@example 2217@example
2513(gnus-compile) 2218(gnus-compile)
2514@end example 2219@end example
2515
2516@noindent 2220@noindent
2517 at the bottom of your ~/.gnus, this will make gnus 2221
2518 byte-compile things like 2222at the bottom of your ~/.gnus.el, this will make gnus
2519 gnus-summary-line-format. 2223byte-compile things like
2520 then you could increase the value of gc-cons-threshold 2224gnus-summary-line-format.
2521 by saying something like 2225then you could increase the value of gc-cons-threshold
2522 2226by saying something like
2523 2227
2524@example 2228@example
2525(setq gc-cons-threshold 3500000) 2229(setq gc-cons-threshold 3500000)
2526@end example 2230@end example
2527
2528@noindent 2231@noindent
2529 in ~/.emacs. If you don't care about width of CJK 2232
2530 characters or use Gnus 5.10 or younger together with a 2233in ~/.emacs. If you don't care about width of CJK
2531 recent GNU Emacs, you should say 2234characters or use Gnus 5.10 or younger together with a
2532 2235recent GNU Emacs, you should say
2533 2236
2534@example 2237@example
2535(setq gnus-use-correct-string-widths nil) 2238(setq gnus-use-correct-string-widths nil)
2536@end example 2239@end example
2537
2538
2539@noindent 2240@noindent
2540 in ~/.gnus (thanks to Jesper harder for the last
2541 two suggestions). Finally if you are still using 5.8.8
2542 or 5.9 and experience speed problems with summary
2543 buffer generation, you definitely should update to
2544 5.10 since there quite some work on improving it has
2545 been done.
2546 2241
2547@ifnottex 2242in ~/.gnus.el (thanks to Jesper harder for the last
2548@node [9.3], , [9.2], FAQ 9 - Tuning Gnus 2243two suggestions). Finally if you are still using 5.8.8
2549@end ifnottex 2244or 5.9 and experience speed problems with summary
2550@subsubheading Question 9.3: 2245buffer generation, you definitely should update to
22465.10 since there quite some work on improving it has
2247been done.
2551 2248
2552 Sending mail becomes slower and slower, what's up? 2249@node [9.3]
2553 2250@subsubheading Question 9.3
2554 2251
2555Answer: 2252Sending mail becomes slower and slower, what's up?
2556 2253
2557 The reason could be that you told Gnus to archive the 2254@subsubheading Answer
2558 messages you wrote by setting
2559 gnus-message-archive-group. Try to use a nnml group
2560 instead of an archive group, this should bring you back
2561 to normal speed.
2562
2563 2255
2564@ifnottex 2256The reason could be that you told Gnus to archive the
2565@node FAQ - Glossary, , FAQ 9 - Tuning Gnus, Frequently Asked Questions 2257messages you wrote by setting
2566@end ifnottex 2258gnus-message-archive-group. Try to use a nnml group
2259instead of an archive group, this should bring you back
2260to normal speed.
2261
2262@node FAQ - Glossary
2567@subsection Glossary 2263@subsection Glossary
2568 2264
2569@table @dfn 2265@table @dfn
2570 2266
2571@item ~/.gnus 2267@item ~/.gnus.el
2572 When the term ~/.gnus is used it just means your Gnus 2268When the term ~/.gnus.el is used it just means your Gnus
2573 configuration file. You might as well call it ~/.gnus.el or 2269configuration file. You might as well call it ~/.gnus or
2574 specify another name. 2270specify another name.
2575
2576 2271
2577@item Back End 2272@item Back End
2578 In Gnus terminology a back end is a virtual server, a layer 2273In Gnus terminology a back end is a virtual server, a layer
2579 between core Gnus and the real NNTP-, POP3-, IMAP- or 2274between core Gnus and the real NNTP-, POP3-, IMAP- or
2580 whatever-server which offers Gnus a standardized interface 2275whatever-server which offers Gnus a standardized interface
2581 to functions like "get message", "get Headers" etc. 2276to functions like "get message", "get Headers" etc.
2582
2583 2277
2584@item Emacs 2278@item Emacs
2585 When the term Emacs is used in this FAQ, it means either GNU 2279When the term Emacs is used in this FAQ, it means either GNU
2586 Emacs or XEmacs. 2280Emacs or XEmacs.
2587
2588 2281
2589@item Message 2282@item Message
2590 In this FAQ message means a either a mail or a posting to a 2283In this FAQ message means a either a mail or a posting to a
2591 Usenet Newsgroup or to some other fancy back end, no matter 2284Usenet Newsgroup or to some other fancy back end, no matter
2592 of which kind it is. 2285of which kind it is.
2593
2594 2286
2595@item MUA 2287@item MUA
2596 MUA is an acronym for Mail User Agent, it's the program you 2288MUA is an acronym for Mail User Agent, it's the program you
2597 use to read and write e-mails. 2289use to read and write e-mails.
2598
2599 2290
2600@item NUA 2291@item NUA
2601 NUA is an acronym for News User Agent, it's the program you 2292NUA is an acronym for News User Agent, it's the program you
2602 use to read and write Usenet news. 2293use to read and write Usenet news.
2603
2604@end table
2605 2294
2606@c @bye 2295@end table
2607 2296
2608@ignore 2297@ignore
2609 arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8 2298arch-tag: 64dc5692-edb4-4848-a965-7aa0181acbb8
2610@end ignore 2299@end ignore
diff --git a/man/message.texi b/man/message.texi
index 5e488b0e7cf..8a10ea2445d 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -8,7 +8,7 @@
8@copying 8@copying
9This file documents Message, the Emacs message composition mode. 9This file documents Message, the Emacs message composition mode.
10 10
11Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 11Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
12Free Software Foundation, Inc. 12Free Software Foundation, Inc.
13 13
14@quotation 14@quotation